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

ROBOTICKÉ RAMENO

Stavebnice obsahuje všechny potřebné díly na sestavení robotnického ramene včetně spojovacího materiálu, pouze je nutné dokoupit čtyři kusy MIKRO SERV SG90. Dále je nutné dokoupit řídící jednotku já jsem použil domácí zásoby ARDUINO NANO a pro něho pak modul ARDUINO NANO IO SHIELD pro jednoduchost zapojení. Díly pro sestavení ramene jdou dobře tzv. vylamovat „vypadávají skoro sami. K servům pokud použijete nové tak doporučuji je před montáží odzkoušet zda jsou funkční v plném rozsahu tj. od 0° do 180°, po namontování a zjištění že servo nefunguje to pak opravdu dost zahýbá s nervy. 

Electronic TiltMaze

Cílem tohoto projektu je vytvoření jednoduchého ovládacího systému, který umožňuje naklápění dvou servomotorů pomocí analogového joysticku. Platforma řízená servomotory může simulovat pohyb například v ose X a Y — tedy naklánění doleva/doprava a dopředu/dozadu. Tento systém může sloužit jako základ pro různé aplikace:

- Manuální ovládání kamery nebo senzoru (např. na pohyblivé konstrukci nebo robotovi)
- Interaktivní ovládací panel pro školní projekty nebo herní ovladač