Close

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 11 měsíci.
Aktuálně je na stránce zobrazeno 15 příspěvků - 1. až 15. (celkem z 17)
  • Autor
    Příspěvky
  • #8565
    Pulec
    Úč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 radu

    #8566
    Vojtěch Vosáhlo
    Účastník

    Dobrý 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.

    #8567
    Pulec
    Účastník
    #8575
    Vojtěch Vosáhlo
    Účastník

    Dobř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);
    }
    #8577
    Pulec
    Úč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

    #8578
    Vojtěch Vosáhlo
    Účastník

    Tak ať se zadaří 😉

    #9252
    Pulec
    Účastník

    Tak 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).

    #9253
    Pulec
    Účastník

    Teď mi to opět funguje ale jen na A0 pinu čidla.Jak je to možné?

    #9254
    Vojtěch Vosáhlo
    Účastník

    Vy 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í…

    #9256
    Pulec
    Účastník

    Ano 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

    #9257
    Vojtěch Vosáhlo
    Účastník

    Pauza 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í 😀

    #9258
    Pulec
    Úč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.

    #9259
    Pulec
    Účastník

    Tak jsem na to kapnul delay až za moc moc děkuji jste borec

    #9260
    Vojtěch Vosáhlo
    Účastník

    Jasně, 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…

    #9261
    Pulec
    Účastník

    Ješ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ří.

Aktuálně je na stránce zobrazeno 15 příspěvků - 1. až 15. (celkem z 17)
  • Pro reakci na toto téma se musíte přihlásit.