Seguimi su Youtubue
Iscriviti
Se desideri, puoi effettuare un'iscrizione gratuita al forum per entrare nella nostra community.
Ricerca Avanzata
Pubblicità Google AdSense
Answers
Se necessiti di aiuto, clicca il pulsante "Cerco Aiuto" (disponibile anche per i non iscritti).
Ultimi argomenti
» arduino e ethernet shield tutorial 3
Da mariogori Sab Giu 24, 2017 9:15 pm

» Farming Simulator 2018 logo
Da Poderak Ven Giu 23, 2017 3:29 pm

» Codice display a 7 segmenti - Arduino
Da fulvio Ven Giu 02, 2017 10:00 am

» DUE SKETCH INSIEME? SI PUO' FARE?
Da Alessandro2003 Mer Mag 31, 2017 6:37 pm

» Smartphone sotto i 70€ economico: Winnovo K43
Da Poderak Mar Mag 30, 2017 10:32 am

» Centralina controllo termico multizona
Da Poderak Dom Mag 28, 2017 9:10 pm

» programma arduino
Da Poderak Gio Mag 25, 2017 3:12 pm

» pilotare 5 matrix: max7219
Da Poderak Gio Mag 25, 2017 3:10 pm

» orologio con LCD.
Da fulvio Lun Mag 22, 2017 12:51 am

I postatori più attivi del mese
fulvio
 
Poderak
 
mariogori
 

Albero di Natale a ritmo di musica con Arduino

Vedere l'argomento precedente Vedere l'argomento seguente Andare in basso

Albero di Natale a ritmo di musica con Arduino

Messaggio Da Poderak il Sab Nov 28, 2015 4:42 pm


In questa guida andremo a vedere il codice e la documentazione che ci permetterà di realizzare l'albero di Natale a ritmo di musica presentato nel video tutorial.

Hardware


Per la realizzazione di questo progetto sarà necessario avere i seguenti componenti:

  • Arduino UNO.
  • Sette LED colorati (Come funzionano? Clicca qui).
  • Sette resistenze per i LED (da 300Ω a 1000Ω).
  • Altoparlante.
  • Cavi (maschio-maschio, maschio-femmina e femmina-femmina).


Software


Prima di tutto sarà necessario includere la libreria pitches.h, già presente come libreria di default nell'IDE di Arduino. Una volta inclusa, nell'IDE sarà presente una sub-finestra chiamata "pitches.h" che andremo ad aprire. Quello che bisognerà fare sarà sostituire tutto il contenuto con un codice semplificato che trovate qui.

Fatto ciò, il codice che andremo ad utilizzare per fare funzionare il nostro progetto sarà il seguente:
Codice:
#include "pitches.h" //dichiarazione libreria
//dichiarazione interi e variabili
int ledb=2;
int ledv1=7;
int ledg1=3;
int ledr1=9;
int ledv2=4;
int ledg2=6;
int ledr2=5;

long randoms; //variabile random

// le note delle melodie

int melody[] = { //prima melodia
                NG4,NE5,ND5,NC5,NG4,NG4,NE5,ND5,NC5,NA4,
                NA4,NF5,NE5,ND5,NB4,NG5,NG5,NF5,ND5,NE5,
                NG4,NE5,ND5,NC5,NG4,NG4,NE5,ND5,NC5,NA4,
                NA4,NF5,NE5,ND5,NG5,NG5,NG5,NG5,NG5,NA5,NG5,NF5,ND5,NC5,NG5,
                NE5,NE5,NE5,NE5,NE5,NE5,NE5,NG5,NC5,ND5,NE5,
                NF5,NF5,NF5,NF5,NF5,NF5,NE5,NE5,NE5,NE5,NE5,ND5,ND5,NE5,ND5,NG5,
                NE5,NE5,NE5,NE5,NE5,NE5,NE5,NG5,NC5,ND5,NE5,
                NF5,NF5,NF5,NF5,NF5,NF5,NE5,NE5,NE5,NE5,NG5,NG5,NF5,ND5,NC5,
                //seconda melodia
                   NG4,NC5,NC5,ND5,NC5,NB4,NA4,NA4,
                   NA4,ND5,ND5,NE5,ND5,NC5,NB4,NG4,
   NG4,NE5,NE5,NF5,NE5,ND5,NC5,NA5,NG4,NG4,NA4,ND5,NB4,NC5,
   NG4,NC5,NC5,ND5,NC5,NB4,NA4,NA4,
   NA4,ND5,ND5,NE5,ND5,NC5,NB4,NG4,
   NG4,NE5,NE5,NF5,NE5,ND5,NC5,NA5,NG4,NG4,NA4,ND5,NB4,NC5,
   NG4,NC5,NC5,NC5,NB4,NB4,NC5,NB4,NA4,NG4,
   ND5,NE5,ND5,ND5,NC5,NC5,NG5,NG4,NG4,NG4,NA4,ND5,NB4,NC5
               };
  

int noteDurations[] = { //durata note prima e seconda melodia
                       8,8,8,8,2,8,8,8,8,2, // 10
                       8,8,8,8,2,8,8,8,8,2, // 10
                       8,8,8,8,2,8,8,8,8,2, // 10
                       8,8,8,8,8,8,8,16,16,8,8,8,8,4,4, // 15
                       8,8,4,8,8,4,8,8,8,8,2, // 11
                       8,8,8,16,16,8,8,8,16,16,8,8,8,8,4,4, // 16
                       8,8,4,8,8,4,8,8,8,8,2, // 11
                       8,8,8,16,16,8,8,8,16,16,8,8,8,8,2, // 15
                        4,4,8,8,8,8,4,4,
                        4,4,8,8,8,8,4,4,
                        4,4,8,8,8,8,4,4,8,8,4,4,4,2,
                        4,4,8,8,8,8,4,4,
                        4,4,8,8,8,8,4,4,
                        4,4,8,8,8,8,4,4,8,8,4,4,4,2,
                        4,4,4,4,2,4,4,4,4,2,
                        4,4,8,8,8,8,4,4,8,8,4,4,4,2,                          
                       };




void setup() { //impostazione del componenti come output
  pinMode(ledb, OUTPUT);
  pinMode(ledv1, OUTPUT);
  pinMode(ledv2, OUTPUT);
  pinMode(ledr1, OUTPUT);
  pinMode(ledr2, OUTPUT);
  pinMode(ledg1, OUTPUT);
  pinMode(ledg2, OUTPUT);
//impostazione iniziale dei componenti una volta che Arduino è accesso
    digitalWrite(ledb, HIGH);
    digitalWrite(ledv1, HIGH);
    digitalWrite(ledv2, HIGH);
    digitalWrite(ledr1, HIGH);
    digitalWrite(ledr2, HIGH);
    digitalWrite(ledg1, HIGH);
    digitalWrite(ledg2, HIGH);
    delay(2000); //tempo durata dell'accensione di tutti i led
  Serial.begin(9600);
}

void loop() {
  digitalWrite(ledb, HIGH); //lasciamo il led bianco sempre acceso (stella di Natale)
    // iterate over the notes of the melody:
  for (int thisNote = 0; thisNote < 182; thisNote++) {
  randoms=random(8);
    // to calculate the note duration, take one second
    // divided by the note type.
    //e.g. quarter note = 1000 / 4, eighth note = 1000/8, etc.
    int noteDuration = 1500 / noteDurations[thisNote];
    tone(8, melody[thisNote], noteDuration);

    // to distinguish the notes, set a minimum time between them.
    // the note's duration + 30% seems to work well:
    int pauseBetweenNotes = noteDuration * 1.30;
    Serial.println(randoms);

    switch(randoms) {   //scelta casuale delle combinazioni luminose
      case 0: digitalWrite(ledg1, LOW);
              digitalWrite(ledv1, HIGH);
              digitalWrite(ledv2, HIGH);
              digitalWrite(ledr1, LOW);
              digitalWrite(ledr2, LOW);
              digitalWrite(ledg2, HIGH);
              break;
      case 1: digitalWrite(ledg1, HIGH);
              digitalWrite(ledv1, LOW);
              digitalWrite(ledv2, LOW);
              digitalWrite(ledr1, HIGH);
              digitalWrite(ledr2, HIGH);
              digitalWrite(ledg2, LOW);
              break;
      case 2: digitalWrite(ledg1, HIGH);
              digitalWrite(ledv1, HIGH);
              digitalWrite(ledv2, LOW);
              digitalWrite(ledr1, LOW);
              digitalWrite(ledr2, LOW);
              digitalWrite(ledg2, LOW);
              break;
      case 3: digitalWrite(ledg1, LOW);
              digitalWrite(ledv1, LOW);
              digitalWrite(ledv2, HIGH);
              digitalWrite(ledr1, HIGH);
              digitalWrite(ledr2, LOW);
              digitalWrite(ledg2, LOW);
              break;
      case 4: digitalWrite(ledg1, LOW);
              digitalWrite(ledv1, LOW);
              digitalWrite(ledv2, LOW);
              digitalWrite(ledr1, LOW);
              digitalWrite(ledr2, HIGH);
              digitalWrite(ledg2, HIGH);
              break;
      case 5: digitalWrite(ledg1, HIGH);
              digitalWrite(ledv1, LOW);
              digitalWrite(ledv2, HIGH);
              digitalWrite(ledr1, LOW);
              digitalWrite(ledr2, HIGH);
              digitalWrite(ledg2, LOW);
              break;
      case 6: digitalWrite(ledg1, LOW);
              digitalWrite(ledv1, HIGH);
              digitalWrite(ledv2, LOW);
              digitalWrite(ledr1, HIGH);
              digitalWrite(ledr2, LOW);
              digitalWrite(ledg2, HIGH);
              break;
      case 7: digitalWrite(ledg1, HIGH);
              digitalWrite(ledv1, HIGH);
              digitalWrite(ledv2, HIGH);
              digitalWrite(ledr1, HIGH);
              digitalWrite(ledr2, HIGH);
              digitalWrite(ledg2, HIGH);
              break;
      case 8: digitalWrite(ledg1, LOW);
              digitalWrite(ledv1, LOW);
              digitalWrite(ledv2, LOW);
              digitalWrite(ledr1, LOW);
              digitalWrite(ledr2, LOW);
              digitalWrite(ledg2, LOW);
              break;                                                                
    }
    
    delay(pauseBetweenNotes); //pausa necessaria per le note
    // stop the tone playing:
    noTone(8);
  }
}
Le melodie natalizie sono state realizzate da  Y.T.Chong mentre tutto il resto del codice (sincronizzazione luci di Natale con melodia) è stato realizzato da Poderak.
avatar
Poderak
♔ Amministratore

Messaggi Messaggi : 4191
Crediti Crediti : 11717
Reputazione Reputazione : 186
Data d'iscrizione Data d'iscrizione : 08.03.11
Età Età : 18
Località Località : Brescia

Vedi il profilo dell'utente http://www.wikiinfo.net

Tornare in alto Andare in basso

Vedere l'argomento precedente Vedere l'argomento seguente Tornare in alto


 
Permessi di questa sezione del forum:
Non puoi rispondere agli argomenti in questo forum