Ардуино due - последоватльные порты.
- Войдите на сайт для отправки комментариев
Пнд, 06/06/2016 - 14:51
В дуе не работает библиотека Softwareserial - а данный скетч её использует. Можно ли как то связаться с мп 3 шилдом без этих библиотек - SoftwareSerial и DFPlayer_Mini_Mp3.h ?
#include <SoftwareSerial.h> #include <DFPlayer_Mini_Mp3.h> void setup () { Serial.begin (9600); mp3_set_serial (Serial); } void loop () { mp3_play (1); }
Arduino Due отличается от других ардуино тем, что там стоит ARM, а не AVR. Соответственно многие библиотеки не подходят.
1. Зачем Вам Softwareserial? Используйте обычный "железный" сериал, в Due их аж четыре штуки.
2. Ищите для MP3-плеера библиотеку с поддержкой Arduino Due.
Библиотеки такой под дуе нет. Где можно почитать про то, как можно отредактировать библиотеку? Значит я могу функциями с этого раздела http://arduino.ru/Reference/Serial полностью через железные сериал порты управлять платой плеера?
Вот нашел шестнадцатистеричные данные для этой латы -
7E FF 04 43 00 FE BA EF
Rqst Vol
7E FF 04 01 01 FE FB EF
next
7E FF 04 02 01 FE FA EF
Previous
7E FF 04 04 01 FE F8 EF
Inclrease Volume
7E FF 04 05 01 FE F7 EF
Decrease Volume
7E FF 04 0D 01 FE EF EF
play
7E FF 04 0E 01 FE EE EF
pause
7E FF 04 41 00 FE BC EF
Replay
7E FF 04 42 00 FE BB EF
status
7E FF 04 44 00 FE B9 EF
EQ
7E FF 04 45 00 FE B8 EF
playback mode
7E FF 04 46 00 FE B7 EF
software version
7E FF 04 47 00 FE B6 EF
nomber of file
7E FF 04 48 00 FE B5 EF
Number of files
7E FF 04 4C 00 FE B1 EF
the current track number
Как можно сделать управление ими из скетча? Куда копать?
Я когда отвечал спешил и невнимательно всё прочитал, давйте сначала. Software serial необязателен, должно работать через hardware serial.
Значит я могу функциями с этого раздела http://arduino.ru/Reference/Serial полностью через железные сериал порты управлять платой плеера?
Да, можете.
Посмотрел библиотеку - ничего специфичного там нет, должно работать и на Due. А в Вашем скетче ошибка - после mp3_play(1); надо либо ставить задержку, либо переносить в setup(). Потому что в loop() у Вас эта команда выполняется с очень большой частотой в секунду и Вы постоянно дёргаете плеер, не давая ему проиграть трек.
P.S. И если что-то не работает, то расписывайте подробно - как именно не работает, что при этом происходит и какие выдаёт ошибки.
Да, вот так работает нормально. На уно. На дуе при компиляции происходит вот это - fatal error: SoftwareSerial.h: No such file or directory
compilation terminated. я как понимаю - библиотека плеера и SoftwareSerial.h неразрывно связаны?
А как вы смотрите библиотеку? У меня Ардуино иде не открывает .h.
На дуе при компиляции происходит вот это - fatal error: SoftwareSerial.h: No such file or directory compilation terminated.
Удалите в скетче строку #include <SoftwareSerial.h>
Ну я вообще на гитхабе смотрел :-), но файлы *.h открываются любым текстовым редактором (только Word'ом не пользуйтесь). А ещё можно перетянуть на открытое окошко Arduino IDE, должно открыться в новой вкладке рядом со скетчем.
В файле DFPlayer_Mini_Mp3.h также удалить #include "SoftwareSerial.h" и void mp3_set_serial (SoftwareSerial &theSerial).
Удалите в скетче строку #include <SoftwareSerial.h>
Удалял - та же самая ошибка...Видимо DFPlayer_Mini_Mp3.h внутри себя вызывает SoftwareSerial.h
upd:
Да, вот здесь она подключена - https://github.com/DFRobot/DFPlayer-Mini-mp3/blob/master/DFPlayer_Mini_M.... Осталось разобраться - для чего. Чтобы из одного TX RX сделать несколько?
Удалял - та же самая ошибка...Видимо DFPlayer_Mini_Mp3.h внутри себя вызывает SoftwareSerial.h
Там тоже есть softwareserial, выше написал. А ещё в DFPlayer_Mini_Mp3.cpp, строки:
P.S. Поставьте себе Notepad++, это "продвинутый блокнот" с подстветкой синтаксиса. В нём удобно редактировать исходники.
Осталось разобраться - для чего. Чтобы из одного TX RX сделать несколько?
SoftwareSerial придумали для тех, кому не хватает "железного" сериала. У Arduino UNO, NANO, Pro Mini всего один "железный" сериал. А например у Arduino Mega 2560 их уже четыре. Или к нужным пинам нет доступа (закрыты каким-нибудь шилдом) - можно задействовать SoftwareSerial на других пинах.
Спасибо! Да, все поудалял, связанное с софтсериал.. Скетч начал компилиться. Как теперь направить сигналы на нужные rx tx железные due порты?
upd:
Нашел - для дуе порт указывается в виде SerialX.begin (9600) - где икс номер последовательного порта.
Я только не пойму, зачем включать библиотеку софтсериал, если в уно есть один порт последовательый - а больше для плеера и не надо.
Я только не пойму, зачем включать библиотеку софтсериал, если в уно есть один порт последовательый - а больше для плеера и не надо.
Ну например для того, если этот последовательный порт уже используется для какого-нибудь другого устройства.
Я только не пойму, зачем включать библиотеку софтсериал, если в уно есть один порт последовательый - а больше для плеера и не надо.
Ну например для того, если этот последовательный порт уже используется для какого-нибудь другого устройства.
Как? Если физически подключено уже устройство. Разве можно плдключить несколько устройств к одному порту?
Вы не поняли, SoftwareSerial вообще не использует "железный" (аппаратный) сериал и никак от него не зависит. С помощью этой библиотеки последовательный порт эмулируется программно на любых цифровых пинах методом ногодрыга. То есть, к ардуино можно подключить одновременно несколько устройств, работающих через последовательный порт.