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 8 roky.
-
AutorPříspěvky
-
28.9.2016 v 18:15 #8565PulecÚčastník
Dobrý 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ří.
22.11.2016 v 18:48 #9262Vojtěch VosáhloÚčastníkDo setupu přidáte znovu toto: `pinMode(d1, INPUT);
pinMode(prehravaciPin2, OUTPUT);
digitalWrite(prehravaciPin2, HIGH);attachInterrupt(1, detekce2, FALLING);
`
místo těch názvů si buď dosaďte piny a interrupty nebo si vytvořte proměnné jako je to v původním kódu.
Pak jen vytvoříte funkci detekce2 (kopii detekce) a pozměníte piny které se nastavují.
Snad pomůžu…
23.11.2016 v 21:45 #9271PulecÚčastníkTak nakonec jsem ještě odebral funkci digitalWrite(prehravaciPin, HIGH);
to má za následek že se zvuk přehraje jen jednou z každého čidla 1-10 když zapůsobí.Což se mi hodí protože pak by to hrálo po každém projetí a to by u modelové železnice nebylo žádoucí.Teď to funguje famózně.Dám příklad jede vlak ::::::::::::::::::první čidlo::::::::::pozor u druhé koleje opakuji pozor u druhé koleje::::::::::::::::::::::::::::(vlak přijede do stanice a najede na druhé čidlo)Na druhou kolej přijel osobní vlak z Vizovic opakuji na druhou kolej přijel osobní vlak z Vizovic.Dále samozřejmě muže minout pastvu s ovcemi nebo těžbu v lese motorová pila.Intenzita zvuku se dá ošetřit už samotnou úpravou mp3.Tímto moc moc děkuji
-
AutorPříspěvky
- Pro reakci na toto téma se musíte přihlásit.