Tlačítko, bzučák a melodie

Náš čtenář Petr S. nám ke svému projektu zaslal schéma a Arduino kód. K úspěšnému přeložení je ještě nutné stáhnout tento soubor s uloženými melodiemi a poté cestu k němu změnit v kódu, viz komentář.

/*
Název: Tlacítko, bzucák a melodie
Autor: Petr Soudek
E-mail: spetr2050@gmail.com


*/
// nutné vyměnit za vlastní umístění
#include <D:\Arduino\examples\PETR_SOUDEK\sound\pitches\src\pitches.h>

#define TIME  200

int noteDuration = 1000 / 4; // delka noty

const int  buttonPin = 2;    // pin ke kterému je pripojeno tlacítko


int buttonState = 0;         // soucasný stav tlacítka
int lastButtonState = 0;     // predchozí stav tlacítka

void setup() {
    // inicializujte pin tlacítka jako vstup:
    pinMode(buttonPin, INPUT);
 
    // inicializujte sériovou komunikaci:
    Serial.begin(9600);
}


void loop() {
    // prectete vstupní pin tlacítka:
    buttonState = digitalRead(buttonPin);
    
    // porovnejte buttonState (stav tlacítka) s predchozím stavem
    if (buttonState != lastButtonState) {
        // jestliže se stav zmenil, pust melodii
        if (buttonState == HIGH) {
            // jestliže je soucasný stav HIGH, tlacítko prešlo
            //z off na on:
             ovcaci();
         
            Serial.println("on");
           
        }
     
    }
    // uložte soucasný stav jako „poslední stav“, 
    //abyste ho mohli v príští smycce použít
    lastButtonState = buttonState;
    
    
}

void ovcaci()
  {
          Serial.println("ovcaci");
           for (int i=0; i <= 1; i++){
tone(10, NOTE_C4, noteDuration*2);
delay(noteDuration*2);
tone(10, NOTE_E4, noteDuration*2);
delay(noteDuration*2);
tone(10, NOTE_G4, noteDuration*4);
delay(noteDuration*4);
  
  }

    for (int i=0; i <= 1; i++){
tone(10, NOTE_E4, noteDuration);
  delay(noteDuration);
tone(10, NOTE_E4, noteDuration);
 delay(noteDuration);

tone(10, NOTE_D4, noteDuration);
 delay(noteDuration);
 tone(10, NOTE_E4, noteDuration);
 delay(noteDuration);

tone(10, NOTE_F4, noteDuration*2);
 delay(noteDuration*2);
 tone(10, NOTE_D4, noteDuration*2);
 delay(noteDuration*2);
  }


tone(10, NOTE_E4, noteDuration*2);
 delay(noteDuration*2);
 tone(10, NOTE_D4, noteDuration*2);
 delay(noteDuration*2);
tone(10, NOTE_C4, noteDuration*4);
 delay(noteDuration*4);
 
  }
// Autor: Petr Soudek

Další podobné články

Test ESC a BLDC motoru

Cílem tohoto Arduino projektu je testování a kalibrace obousměrného regulátoru otáček (ESC) pomocí PWM signálu. Program simuluje sekvenci pohybů: dopředu, neutrální pozici a reverzní chod, což umožňuje ověřit správnou funkci ESC včetně přepínání směru otáčení motoru.

Laserový alarm

Cílem tohoto projektu je vytvořit jednoduchý, ale funkční bezpečnostní systém, který detekuje narušení prostoru pomocí vysílače (laserového paprsku) a přijímače (fotorezistoru). Jakmile je paprsek přerušen, Arduino to vyhodnotí jako narušení a spustí alarm – například zvukový signál pomocí piezo bzučáku.