• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Arduino i DF PLAYER - mini

Object Storage Arubacloud
0 głosów
177 wizyt
pytanie zadane 4 grudnia 2016 w Mikrokontrolery przez maja35 Nowicjusz (120 p.)
edycja 4 grudnia 2016 przez maja35

Witam wszystkich. 
Mam mały problem z odtwarzaczem a raczej z kodem, ale od początku. Jakiś czas temu wymyśliłem sobie, że zrobię sobie taki mały komunikator, który będzie mnie informował mnie o pewnych zdarzeniach głosowo. Chodzi mniej więcej o to, aby dane komunikaty zostały odtworzone jak czujniki podadzą sygnały na określone piny. Wymyśliłem sobie takie założenia: 

Czujnik 1 podaje sygnał na pin 7 i ma się po 16 sekundach odtworzyć komunikat nr.1. 
Następnie jeśli czujnik 2 nie poda sygnału na pin 9, komunikat ma zostać powtórzony po 16 sekundach. I tak aż do załączenia czujnika 2. 
Następnie jeśli czujnik 2, poda sygnał na pin 9, odtwarzanie komunikatu ma zostać przerwane. Do tego momentu program wykonuje się poprawnie. 
Następnie jeśli czujnik 2 zostanie rozłączony odtwarzanie komunikatu powinno zostać wznowione ale dopiero po 16 sek.- i tutaj jest problem, nie zawsze jest to po 16 sekundach. zależy w którym monecie czujnik 2 wstrzeli się z rozłączeniem. Czasami następuje to prawie natychmiast, czasami czeka tylko parę sekund. Owszem nieraz trafi w to 16 sekund. 

Z kolei jeśli czujnik 1 przestanie podawać sygnał na pin 7, a czujnik 2 będzie nadal podawał sygnał na pin 9, to po 3 sekundach odtworzyć ma się komunikat nr.2. i tak aż do rozłączenia czujnika 2. I tutaj też nie zawsze po rozłączeniu czujnika 1, komunikat jest po trzech sekundach zależy kiedy wstrzeli się rozłączenie, czasami natychmiast a czasami po trzech sekundach. 
Jestem bardzo, bardzo początkujący. Jeśli któryś z kolegów chciałby pomóc w rozwiązaniu mojego problemu będę wdzięczny. 
Janusz. 



#include <DFPlayer_Mini_Mp3.h> 
#include <SoftwareSerial.h> 

int czujnik_1 = 7; 
int czujnik_2 = 9; 
int play_state = 3; 
SoftwareSerial mySerial(10, 11); // RX, TX 

void setup() { 
  mySerial.begin (9600); 
  Serial.begin (9600); 
  mp3_set_serial (mySerial); 
  delay(1); 
  mp3_set_volume (15); 
  pinMode(czujnik_1, INPUT); 
  pinMode(czujnik_2, INPUT); 
  pinMode(play_state, INPUT); 
} 

void zapal() { 
  delay(16000);                                                         // czekaj 16 sekund 
  boolean play_state = digitalRead(3); 
  if (play_state == HIGH) { 
    if ( digitalRead(czujnik_1) == HIGH && digitalRead(czujnik_2) == LOW)// sprawdź czy dalej czujnik 1 jest włączony 
                                                                       // i jeżeli czujnik 2 się nie włączył 
      mp3_play(1);                                                    // graj to 
  } 
} 

void zgas() { 
  delay( 3000);                                             // czekaj 3 sekundy 
  boolean play_state = digitalRead(3); 
  if (play_state == HIGH) { 
    if (digitalRead(czujnik_2) == HIGH && digitalRead(czujnik_1) == LOW )// sprawdź czy dalej czujnik 2 jest włączony 
                                                                        // i jeżeli czujnik 1 jest  się wyłączył                  
      mp3_play(2);                                                     // graj to 
  } 
} 

void loop() { 
  if ( digitalRead(czujnik_1) == HIGH) {//jeśli czujnik 1 dał sygnał wysoki 
     zapal();//wykonaj to 
  } 

  if ( digitalRead(czujnik_2) == HIGH){// jeśli czujnik 2 dał sygnał wysoki 
     zgas();// wykonaj to 
  } 
}

schemat

link do schematu

 

 

komentarz 4 grudnia 2016 przez niezalogowany
Wrzuć schemat na jakiś zewnętrzny serwis i podaj link, bo na forum nie da się powiększać obrazków :(
komentarz 4 grudnia 2016 przez maja35 Nowicjusz (120 p.)
Ok poprawiam. Link pod obrazkiem.

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

+1 głos
2 odpowiedzi 67 wizyt
+1 głos
2 odpowiedzi 316 wizyt
pytanie zadane 23 sierpnia 2021 w JavaScript przez uszk Użytkownik (630 p.)
+1 głos
1 odpowiedź 299 wizyt
pytanie zadane 18 sierpnia 2021 w Nasze projekty przez qax Dyskutant (8,060 p.)

92,551 zapytań

141,399 odpowiedzi

319,531 komentarzy

61,938 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...