Arduino přehrávání zvuku senzory
Úvodní stránka › Fórum › Vaše projekty › Arduino › Arduino přehrávání zvuku senzory
- Toto téma obsahuje celkem 16 odpovědí. Do diskuze (2 diskutující) se naposledy zapojil uživatel
Pulec a poslední změna proběhla před 7 roky a 9 měsíci.
-
AutorPříspěvky
-
28.9.2016 v 18:15 #8565
Pulec
ÚčastníkDobrý den.Mám tento problém.Bylo by možné díky Infračervenému optickému senzoru,který se překryje spustit přehrávání z mp3 modulu arduino?
Mám modelovou železnici a chci to na spuštění hlášení když vlak přijede do stanice.
Poradí mi někdo jak na to?Moc děkuji za každou radu28.9.2016 v 18:23 #8566Vojtěch Vosáhlo
ÚčastníkDobrý den,
nejlepší by bylo nějaké info, jestli ho sem můžete napsat. Důležitá je informace jak funguje váš senzor. Je snímač fotorezistor / fototranzistor nebo ještě něco jiného? A info o mp3 modulu by se taky hodilo. Pak to dáme dohromady.28.9.2016 v 18:33 #8567Pulec
ÚčastníkSenzor je to tento http://navody.arduino-shop.cz/navody-k-produktum/infracerveny-opticky-senzor.html
A mp3 tady http://www.banggood.com/Voice-Playback-Module-Board-MP3-Reminder-For-Arduino-p-1007593.html
Senzor funguje na přerušení překážkou tedy v mém případě mašinkou.28.9.2016 v 19:32 #8575Vojtěch Vosáhlo
ÚčastníkDobře. Pokud jsem to správně pochopil tak ten audio modul zahraje hudbu když dáte jeden z A pinů na zem (podle čísel pinů vybírá skladbu). Máte to ozkoušené? Pokud je to tak jak píšu, měl by fungovat kód dole. D0 toho senzoru jde na pin 2 arduina a nejspíš si budete muset pohrát s poťákem na senzoru aby jste nastavil detekční vzdálenost.
Držím palce.const int d0 = 2; // Pokud chcete používat přerušení musí to být pin 2 nebo 3 (na Unu, nanu a mini) const int prehravaciPin = X; //Pin připojený na spouštění toho songu, pokud správně chápu tak A1 - A10 na tom modulu void setup() { pinMode(d0, INPUT); pinMode(prehravaciPin, OUTPUT); digitalWrite(prehravaciPin, HIGH); attachInterrupt(0, detekce, FALLING); } void loop() { } void detekce(){ digitalWrite(prehravaciPin, LOW); delay(100); digitalWrite(prehravaciPin, HIGH); }
28.9.2016 v 19:55 #8577Pulec
ÚčastníkČekám ještě na modul mp3,tak to pak vše odskouším.Moc vám děkuji hlavně za kód.Určitě se pak ozvu jak jsem dopadl.Moc moc zatím díky
28.9.2016 v 20:04 #8578Vojtěch Vosáhlo
ÚčastníkTak ať se zadaří 😉
21.11.2016 v 18:42 #9252Pulec
ÚčastníkTak jsem vše pospojoval a šlo to asi 15x ale jen na A0 pinu senzoru teď mi to nejde vůbec.Pouze při odpojení a připojení na A0 nebo D0 senzoru se prehravá zvuk.Nevíte kde je chyba(mimo mě tedy).
21.11.2016 v 18:51 #9253Pulec
ÚčastníkTeď mi to opět funguje ale jen na A0 pinu čidla.Jak je to možné?
21.11.2016 v 18:56 #9254Vojtěch Vosáhlo
ÚčastníkVy jste tedy zkoušel jak A0 tak D0. D0 by se měl dát nastavovat poťákem, tím nastavíte hranici kdy je 1 a kdy 0 zatímco A0 se bude měnit dynamicky podle vzdálenosti.
Mimochodem do attachInterrupt má jít b0 a né jen 0 jak je nahoře v kódu ale to jste zjistil pokud to funguje.Možná musí být větší časová prodleva mezi 1 a 0 na pinu přehrávače a taky by se nejspíš hodilo ještě trošku času po nastavení pinu na 1.
Hodně tipů ale kdo ví…21.11.2016 v 20:07 #9256Pulec
ÚčastníkAno teď mi to šlape na D0. Kam přidat čas aby po zapnutí přehrávaní drželo v zap?Tak jak to je teď je to každé mávnutí hned přehrává.Potřebuji alespoň 30 vteřin po začátku přehrávání aby držrlo jako když je překážka.Děkuji za pomoc
21.11.2016 v 20:31 #9257Vojtěch Vosáhlo
ÚčastníkPauza by se přidávala před nastavováním pinu na low
Tzn: `void detekce(){
delay(XY); // sem můžete přidat čas mezi 1 na ir a přehráváním
digitalWrite(prehravaciPin, LOW);
delay(100); //čas na který je pin spuštěný, zde přidáváte
digitalWrite(prehravaciPin, HIGH);
}`
Chcete tedy něco jako po přehrání musí být pauza 30s a pak až se může zapnout znova? Kapku mi to nedochází 😀21.11.2016 v 20:40 #9258Pulec
ÚčastníkŘeknu to takto potřebuji aby se po spuštění přehrávání senzor vyřadil třeba na 1 minutu.
21.11.2016 v 20:50 #9259Pulec
ÚčastníkTak jsem na to kapnul delay až za moc moc děkuji jste borec
21.11.2016 v 20:57 #9260Vojtěch Vosáhlo
ÚčastníkJasně, asi by se to dalo udělat nejlépe přes odebrání a zase přidání přerušení. `void detekce(){
digitalWrite(prehravaciPin, LOW);
delay(100);
digitalWrite(prehravaciPin, HIGH);
detachInterrupt(0); // odebereme preruseni aby se nam nevyvolalo pokud by se něco hýblo pred senzorem
delay(60000); //pauza na x vterin, cas po ktery je senzor vyrazen
attachInterrupt(0, detekce, FALLING); // opet preruseni zprovoznime}`
Kdyby bylo potřeba arduino používat i v době vyřazení, daly by se počítat cykly procesoru ale to je další téma…
22.11.2016 v 18:32 #9261Pulec
ÚčastníkJeště vás chci poprosit přidat do kódu druhé čidlo které bude přehrávat další pin mp3 modulu,mě se to nedaří.
-
AutorPříspěvky
- Pro reakci na toto téma se musíte přihlásit.