проблема Servo + Speaker
- Войдите на сайт для отправки комментариев
Пт, 17/12/2021 - 14:49
Приветствую всех, у меня вопрос.
Есть ли разумный способ заставить работать одновременно Servo и Speaker ???
Если нужен примерный код то вот:
(В данном коде используется серво на 8 порту, спикер на 9 порту, и SD карта откуда берём аудио файл в формате Wav, так же дабы не плодить задержки убраны все delay(); они заменены на millis() весь код в комментах для лучшего понимания.
#include <Servo.h> //подключаем библиотеку серво #include <SD.h> // включить библиотеку использования SD карт #include <TMRpcm.h> // библиотека воспроизведения PCM/WAV файлов напрямую с SD карты #include <SPI.h> // включить библиотеку протокола SPI const int chipSelect = 4; //переменная для порта CS модуля SD TMRpcm music; // создать объект для использования WAV файлов Servo myServo1; // задаём объект типа серво unsigned long MyTime1; // Переменная MyTime для хранения времени unsigned long MyTime2; void setup(){ Serial.begin(9600); //открываем общение com порта myServo1.attach(8); //подключаем серво на 8 порт /////для SD карты и вывода звуков Serial.println("Инициализация SD-карты..."); if (!SD.begin(chipSelect)) { Serial.println("Инициализация НЕ удалась!"); while (1); } Serial.println("Инициализация выполнена."); music.speakerPin = 9; //строго порт 9 на Uno, Nano и т.д. (порт звукового динамика) music.setVolume(5); // от 0 до 7. Установка уровня громкости music.quality(1); // 1 для 2x передескритезации, 0 для нормального режима ////// } void loop(){ //////Поворот серво if (millis() - MyTime1 >= 800){ //каждые 800 мс. выполнить MyTime1 = millis(); // сброс таймера myServo1.write(random(40, 111)); //поворот серво на рандомный угол от 40 до 110 гр. } ////// /////Запускаем звуки if (millis() - MyTime2 >= 2500){ //каждые 2500 мс. выполнить MyTime2 = millis(); // скинуть таймер music.play("MY_FILE1.WAV"); //Запускаем звуковой файл с SD карты } ////// }
Конечно есть.
Приветствую всех
И Вам не хворать!
Есть ли разумный способ заставить работать одновременно Servo и Speaker ???
Конечно, есть.
код
И что с ним не так? Что именно не работает?
С кодом всё ок. НО как бы я не изголялся заставить одновременно работать серво и спикер не удаётся, пробовал разные способы программирования.
Если вы утверждаете что способ есть. Можете представить любой способ одновременной работы серво и спикера?
Rintslerr,
Вы здесь новенький и, конечно же, не прочитали стартовую тему раздела "Пеочница". Потому вопрос задан отвратительно. Вы не только не написали в чём именно проблема и работают ли они (серва и спикер) у Вас по отдельности, но Вы также не написали, что Ардуина у Вас, откуда взята библиотека TMRpcm, родная ли библиотека для Servo и т.п.
Всё это приходится предполагать, путём трения хрустального шара (ХШ). А в случае ошибки, получится, что я бил пальцы об клавиши зазря, т.к. я решил, что у Вас Uno. а у Вас, оказывается Due!
Ну, хрен с Вами, ХШ подсказывает, что у Вас Uno, а библиотека вот отсюда. Так?
Если не так, то уж будьте любезны всё подробненько, т.к. однажды написав зря, второй раз я наугад писать не буду.
Итак, если у Вас та библиотека, что я привёл, плата типа Uno/Nano, по отдельности всё работает и т.п., то полезьте в файл "pcmConfig.h" библиотеки и раскомментируйте строку №42. У меня она такая
Потому что сейчас у Вас серва и плейер сидят на одном таймере и конфигурируют его каждый по-своему. И чего Вы сами этого не сделали? Там же комментарий есть (строка №41) - всё написано.
Таймеры спикера на сколько я знаю сидят по разным пинам:
Таймер 0 на портах D5 и D6
Таймер 1 на портах D9 и D10
Таймер 2 на портах D3 и D11
Вопрос не в библиотеках и всём остальном вы можете мне тупо дать любой код в котором серво и спикер работают вместе.
Я же в первом посте сказал что вопрос в том Есть ли разумный способ заставить работать одновременно Servo и Speaker ??? Если есть то какой? Потому что в интернете я не нашёл ни одной статьи где бы это показывали.
Код тут чисто только для примера, что если так сделать то работать не будет.
Итак, если у Вас та библиотека, что я привёл, плата типа Uno/Nano, по отдельности всё работает и т.п., то полезьте в файл "pcmConfig.h" библиотеки и раскомментируйте строку №42. У меня она такая
Не учите его жить, просто помогите материально ))
[/quote] Не учите его жить, просто помогите материально ))[/quote]
Я смотрю на этом форуме одни троли, умных людей нет. Ясно понятно. и вас туда же
Да, все дураки какие-то лезут, отбиваться не успеваем.
Таймеры спикера на сколько я знаю сидят по разным пинам:
Таймер 0 на портах D5 и D6
Таймер 1 на портах D9 и D10
Таймер 2 на портах D3 и D11
При чём тут это? При чём тут шимовские пины, если две библиотеки настраивают один и тот же первый таймер - каждая по своему! Вы сюда пришли поспорить со мною?
Вопрос не в библиотеках и всём остальном
Если бы Вы действительно знали в чём "вопрос", то этого поста бы не было. Разве не так?
вы можете мне тупо дать любой код
Я Ват тупо сказал, что раскомментировать. Вы можете это тупо сделать?
Я же в первом посте сказал что вопрос в том Есть ли разумный способ заставить работать одновременно Servo и Speaker ??? Если есть то какой? Потому что в интернете я не нашёл ни одной статьи где бы это показывали.
если так сделать то работать не будет.
По отдельности работает? Если одно закомментировать, а другое оставить? Тогда "тупо" делайте, что Вам говорят и выкладывайте результат. Или у Вас вообще ничего не работает и по отдельности тоже? Тогда сначала заставьте работать по отдельности, а потому делайте, что я Вам сказал.
Дак по местному обычаю - неправильно. Он же просит код, а Вы ему что? Дефайн какой-то. Этак и универсальный void впарите.
а потому делайте, что я Вам сказал.
вы забыли добавить - щажже )))
Дак по местному обычаю - неправильно. Он же просит код, а Вы ему что? Дефайн какой-то. Этак и универсальный void впарите.
ты хочешь сказать, что у Евгения время разбрасывать камни закончилось, пришло время собирать камни?
а ТС скорее всего раскомментировал строку, чтобы можно было использовать 2-й таймер и смылся )))
Ну от. Разогнали пятничного авнаметателя. А я тока вентилятор достал, чтоб отражать. :)
Я смотрю на этом форуме одни троли, умных людей нет. Ясно понятно. и вас туда же
ну ты и дебил....
На всякий случай, если вдруг свершится чудо и тебе станет стыдно - тебе дали четкий ответ, КАК ЗАСТАВИТЬ СПИКЕР И СЕРВО работать одновременно - а ты вместо благодарности человеку нахамил....
Ну, блиииин! Я тока вискарика принял, вернулся к компьютеру, а тема-то и затухла :-(((
Ну, блиииин! Я тока вискарика принял, вернулся к компьютеру, а тема-то и затухла :-(((
это да, пятница не задалась )))
Зря вчера пятничную тему прихлопнули. Поциент как раз созревал :-(