Ардуино due - последоватльные порты.

krosslove
Offline
Зарегистрирован: 12.06.2015

В дуе не работает библиотека 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);

}

 

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

Arduino Due отличается от других ардуино тем, что там стоит ARM, а не AVR. Соответственно многие библиотеки не подходят.

1. Зачем Вам Softwareserial? Используйте обычный "железный" сериал, в Due их аж четыре штуки.

2. Ищите для MP3-плеера библиотеку с поддержкой Arduino Due.

krosslove
Offline
Зарегистрирован: 12.06.2015

Библиотеки такой под дуе нет. Где можно почитать про то, как можно отредактировать библиотеку? Значит я могу функциями с этого раздела http://arduino.ru/Reference/Serial полностью через железные сериал порты управлять платой плеера?

krosslove
Offline
Зарегистрирован: 12.06.2015

Вот нашел шестнадцатистеричные данные для этой латы -

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
 

Как можно сделать управление ими из скетча? Куда копать?

 

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

Я когда отвечал спешил и невнимательно всё прочитал, давйте сначала. Software serial необязателен, должно работать через hardware serial.

krosslove пишет:

Значит я могу функциями с этого раздела http://arduino.ru/Reference/Serial полностью через железные сериал порты управлять платой плеера?

Да, можете.

Посмотрел библиотеку - ничего специфичного там нет, должно работать и на Due. А в Вашем скетче ошибка - после mp3_play(1); надо либо ставить задержку, либо переносить в setup(). Потому что в loop() у Вас эта команда выполняется с очень большой частотой в секунду и Вы постоянно дёргаете плеер, не давая ему проиграть трек.

P.S. И если что-то не работает, то расписывайте подробно  - как именно не работает, что при этом происходит и какие выдаёт ошибки.

krosslove
Offline
Зарегистрирован: 12.06.2015
#include <SoftwareSerial.h>
#include <DFPlayer_Mini_Mp3.h>
void setup () {
    Serial.begin (9600);
    mp3_set_serial (Serial);
 
}
void loop () {        

 mp3_play (1);
 delay 100000;
}

Да, вот так работает нормально. На уно. На дуе при компиляции происходит вот это - fatal error: SoftwareSerial.h: No such file or directory
compilation terminated. я как понимаю - библиотека плеера и SoftwareSerial.h неразрывно связаны?

А как вы смотрите библиотеку? У меня Ардуино иде не открывает .h.

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

krosslove пишет:

На дуе при компиляции происходит вот это - fatal error: SoftwareSerial.h: No such file or directory compilation terminated.

Удалите в скетче строку #include <SoftwareSerial.h>

krosslove пишет:

А как вы смотрите библиотеку? У меня Ардуино иде не открывает .h.

Ну я вообще на гитхабе смотрел :-), но файлы *.h открываются любым текстовым редактором (только Word'ом не пользуйтесь). А ещё можно перетянуть на открытое окошко Arduino IDE, должно открыться в новой вкладке рядом со скетчем.

В файле DFPlayer_Mini_Mp3.h также удалить #include "SoftwareSerial.h" и void mp3_set_serial (SoftwareSerial &theSerial).

krosslove
Offline
Зарегистрирован: 12.06.2015

Jeka_M пишет:

Удалите в скетче строку #include <SoftwareSerial.h>

 

Удалял - та же самая ошибка...Видимо DFPlayer_Mini_Mp3.h внутри себя вызывает SoftwareSerial.h

upd:

Да, вот здесь она подключена - https://github.com/DFRobot/DFPlayer-Mini-mp3/blob/master/DFPlayer_Mini_M.... Осталось разобраться - для чего. Чтобы из одного TX RX сделать несколько?

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

krosslove пишет:

Удалял - та же самая ошибка...Видимо DFPlayer_Mini_Mp3.h внутри себя вызывает SoftwareSerial.h

Там тоже есть softwareserial, выше написал. А ещё в DFPlayer_Mini_Mp3.cpp, строки:

#include <SoftwareSerial.h>
static SoftwareSerial * _software_serial = NULL;

void s_send_func () {
	for (int i=0; i<10; i++) {
		_software_serial->write (send_buf[i]);
	}
}
void mp3_set_serial (SoftwareSerial &theSerial) {
_software_serial = &theSerial;
send_func = s_send_func;
}

P.S.  Поставьте себе Notepad++, это "продвинутый блокнот" с подстветкой синтаксиса. В нём удобно редактировать исходники.

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

krosslove пишет:

Осталось разобраться - для чего. Чтобы из одного TX RX сделать несколько?

SoftwareSerial придумали для тех, кому не хватает "железного" сериала. У Arduino UNO, NANO, Pro Mini всего один "железный" сериал. А например у Arduino Mega 2560 их уже четыре. Или к нужным пинам нет доступа (закрыты каким-нибудь шилдом) - можно задействовать SoftwareSerial на других пинах.

krosslove
Offline
Зарегистрирован: 12.06.2015

Спасибо! Да, все поудалял, связанное с софтсериал.. Скетч начал компилиться. Как теперь направить сигналы на нужные rx tx железные due порты?

 

upd:

Нашел - для дуе порт указывается в виде SerialX.begin (9600) - где икс номер последовательного порта.

  • Порт 1: 0 (RX) и 1 (TX)
  • Порт 2: 19 (RX) и 18 (TX)
  • Порт 3: 17 (RX) и 16 (TX)
  • Порт4: 15 (RX) и 14 (TX)

Я только не пойму, зачем включать библиотеку софтсериал, если в уно есть один порт последовательый - а больше для плеера и не надо.

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

krosslove пишет:

Я только не пойму, зачем включать библиотеку софтсериал, если в уно есть один порт последовательый - а больше для плеера и не надо.

Ну например для того, если этот последовательный порт уже используется для какого-нибудь другого устройства.

krosslove
Offline
Зарегистрирован: 12.06.2015

Jeka_M пишет:

krosslove пишет:

Я только не пойму, зачем включать библиотеку софтсериал, если в уно есть один порт последовательый - а больше для плеера и не надо.

Ну например для того, если этот последовательный порт уже используется для какого-нибудь другого устройства.

 

Как? Если физически подключено уже устройство. Разве можно плдключить несколько устройств к одному порту?

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

Вы не поняли, SoftwareSerial вообще не использует "железный" (аппаратный) сериал и никак от него не зависит. С помощью этой библиотеки последовательный порт эмулируется программно на любых цифровых пинах методом ногодрыга. То есть, к ардуино можно подключить одновременно несколько устройств, работающих через последовательный порт.