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

OVLÁDÁNÍ VÍCE RELÉ S NEOPIXEL RGB ARDUINEM

Kamarád mi poprosil o pomoc s tím že v současnosti potřebuje v jednom projektu ovládat čtyři reléové moduly, kdy jeden obsahuje šestnáct relátek které zakoupil v [1] a již má hotovou část zapojení přípravku, s tím že časem by chtěl ovládání z PC „po otestování“, ovládat diody pomocí tabletu nebo chytrého telefonu. Na tento počet ovládání relé je potřeba 64 ovládacích pinů, což ani ARDUINO MEGA 2560 s potřebou dalších vstupů které budou potřeba není možné použít. Po návrzích s posuvnými registry kterých by bylo potřeba osm kusů a složitosti zapojení mi napadlo použít pásek NEOPIXEL  s RGB led diodami kdy na ovládání stačí jeden výstup z ARDUINA. Tak že pro pokusy co a jak půjde použít, jsem použil modul relátek osazený dvěma relátky, modul s MOSFET tranzistorem, Neopixel pásek s osmi RGB led diodami WS2812B, fototranzistor GL5528 a bluetooth JDY-33 pro komunikaci s tabletem chytrým telefonem vše zakoupené v [1]. Napsané programy jsou celkem dva jeden pouze pro ovládání Neopixel s osmi RGB led diodami, druhý pak umožňuje ovládat maximálně 255 RGB led použitých v Neopixel pásku. Oba programy umožňují ovládat libovolnou RGB diodu nebo více RGB led diod na Neopixel pásku včetně barev a dají se upravit dle potřeby. Přípravek může posloužit při vlastních pokusech s RGB LED Neopixel pásky a zároveň doplňuje články v [2]. Ovládání RGB diod je zde řešeno s ARDUINO NANO je možné použít i ARDUINO UNO. Programové ovládání RGB led diod na Neopixel pásku je dle požadavků kamaráda.