wtv020sd16p странности работы девайса или библы
- Войдите на сайт для отправки комментариев
Подключал WTV020M01 к UNO и MEGA по стандартной схеме:
Классический пример из, вроде, единственной библы работает странно. Воспроизводит только звук 0002.ad4 вначали и потом в цикле 0000.ad4
Попробывал пустой скетч:
#include <Wtv020sd16p.h> int resetPin = 7; // The pin number of the reset pin. int clockPin = 6; // The pin number of the clock pin. int dataPin = 4; // The pin number of the data pin. int busyPin = 5; // The pin number of the busy pin. /* Create an instance of the Wtv020sd16p class. 1st parameter: Reset pin number. 2nd parameter: Clock pin number. 3rd parameter: Data pin number. 4th parameter: Busy pin number. */ Wtv020sd16p wtv020sd16p(resetPin,clockPin,dataPin,busyPin); void setup() { wtv020sd16p.reset(); wtv020sd16p.playVoice(0); } void loop(){ }
Вообще ничего не воспроизводит. Методом научного тыка выяснил, что работает только, если после резета delay сделать минимум на 2000мс. А чтобы воспроизвести несколько звуков подряд вообще нужно делать только так:
wtv020sd16p.reset(); while(digitalRead(busyPin) == LOW){} while(digitalRead(busyPin) == HIGH){} delay(2000); wtv020sd16p.playVoice(0); while(digitalRead(busyPin) == LOW){} while(digitalRead(busyPin) == HIGH){} delay(500); wtv020sd16p.playVoice(1); while(digitalRead(busyPin) == LOW){} while(digitalRead(busyPin) == HIGH){} delay(500); wtv020sd16p.playVoice(2); while(digitalRead(busyPin) == LOW){} while(digitalRead(busyPin) == HIGH){} delay(500); wtv020sd16p.playVoice(3);
Т.е. мало того, что нужно отслеживать сигнал Busy так еще и обязательно задержку минимум 0,5с после того как звук отыгрался делать. Как-то вообще уныло с таким управлением.
Но раз библиотека есть - она должна рабоать. Видимо я девайс криво подключил (ноги использовал не как в примере, но там же ни шим, ни прерываний не используется - разницы быть не должно) или сам девайс кривой, или что-то что за гранью моего понимания. Ну не может же быть библа не рабочей?
https://forum.arduino.cc/index.php?topic=117009.270
https://forum.arduino.cc/index.php?topic=117009.270
Спасибо за ссылку. Обратить внимание надо было на это:
All those who are having difficulties, check out this wiki:
http://matthew-morris.com/wiki/index.php?title=Wtv020-SD-16P#Picaxe_Serial_Mode_Notes
I found it extremely useful. In particular the timing modifications for the library also worked for me:
Give it 750msec after reset (not 300msec as in the spec sheet). Library line 37.
Also, the BUSY line doesn't respond immediately, leading to playVoice starting, then stopping and restarting, after a reset. The change to 50msec in line 94 fixes that.
I also found that calling
wtv020sd16p.stopVoice()
after each playback (synchronous or asynchronous) is necessary for the next playback to reliably start.
My module says V1.00. I am running it with a SanDisk 1 GB card.
I did not have to connect the SD card pin 6 to Ground.
At first, it didn't seem to be working in the stand-alone playback mode. Briefly shorting the NEXT or PREV key seemingly unstuck it. Maybe it has to do with the module remembering the file (voice) it previously played or something weird being in there as factory default.
Не помогло :(
Больше что-то полезного там не вижу.
И про 6-й пин - непонятно, если все работает (пусть через задницу, но работает), то его на землю не надо же?
Библиотека изначально кривая. Хотя ХЗ она сделана по дата шиту, а парамеры модуля с даташитом не совпадают :-)
Если получится скачай библиотеку, я там все комменты на русском оставил. С моим модулем работала нормально.
Если у тебя тайминги другие, то логический анализатор в помощь.
У меня BUSY ловит сама библиотека. Громкость регулируется но както коряво.
Огромное спасибо, все отлично заработало. Снимаю шляпу! За руссификацию и причесывание библиотеки просто огромный решпект.
Хотя и вся логика палка-веревка, но ведь надо разобраться, подобрать тайминги и вообще одни подробнейшие комментарии на русском чего стоят...
Пользуйтесь на здоровье.
В свое время разбирался, была задача уменьшить размер и сохранить функционал.