Codes Arduino de Base

Codes Arduino à copier/coller

pour apprendre à programmer la SardineBox progressivement

Générer une fréquence continue

void setup() {
}

void loop() {
  tone(7, 440);   //générer une fréquence de 440Hz (la note LA) sur la sortie digitale no 7 de l'Arduino
  delay(1);        
}





Générer cette même fréquence seulement si l’on presse le bouton

int valeurbouton = 0;  //déclarer une variable "valeurbouton" et lui donner la valeur 0 au début du sketch

void setup() {
}

void loop() {
  valeurbouton = digitalRead(2);   //la boucle est lancéee et la variable "valeurbouton" est désormais égale à
                                   //ce qu'on lit sur l'entrée digitale 2, 0 ou 1, On ou OFF, HIGH ou LOW
  if (valeurbouton == HIGH) {      //si on appuie sur le bouton
  
  tone (4, 440);                   //alors générer une fréquence de 440Hz sur la sortie digitale 7
  }
  
else {
  noTone(4);                       //dans les autres cas (bouton relaché), arrêter la fréquence
  }
  delay(1);                        //attendre 1milliseconde
}





Générer une fréquence contrôlable avec le potentiomètre no 1

int valeurbouton = 0;
int valeurpitch = 0;

void setup() {
 pinMode(2, INPUT);

}

void loop() {
 valeurbouton = digitalRead(2);
 valeurpitch = analogRead(A0);


if (valeurbouton == HIGH) {
  
  tone (7, valeurpitch);
  }
  
else {
  noTone(7);
  }
}

Générer des fréquences aléatoires (style  robot R2D2)

int valeurbouton = 0;  //déclarer une variable "valeurbouton" et lui donner la valeur 0 au début du sketch

void setup() {
}

void loop() {
  valeurbouton = digitalRead(2);   //la boucle est lancéee et la variable "valeurbouton" est désormais égale à 
                                   //ce qu'on lit sur l'entrée digitale 2, 0 ou 1, On ou OFF, HIGH ou LOW
  if (valeurbouton == HIGH) {      //si on appuie sur le bouton
  
  tone(7, random(20, 8000));       //alors générer une fréquence aléatoire comprise entre 20 et 8000Hz sur la sortie digitale 7
  }
  
else {
  noTone(7);                       //dans les autres cas (bouton relaché), arrêter la fréquence
  }
  delay(100);                        //modifier cette valeur en millisecondes
                                    //pour avoir plus ou moins de 
                                   //notes nouvelles chaque seconde
}

Code utilisé pour programmer les SardineBox pendant la Maker Faire Paris 2017, ce code consiste en 3 modes qu’on « switch » grâce à la fonction switchCase: mode Random, vitesse et fréquences variables, mode pitchFollower, mode 12 tonalités et detune. Démarrage façon Game Boy

int gamme[] = {
  1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12
};
int lastBouton = LOW;
boolean maintien = false;


void setup() {
  
  pinMode(2, INPUT);
 // pinMode(3, OUTPUT); (pour VCA)
 //Serial.begin(9600);
 tone(7, 880);
 delay(100);
 tone(7, 1760);
 delay(700);
 noTone(7);

    
}



void loop() {
  // read the sensor:
  int sensorReading = analogRead(A0);
  int sensorReading2 = analogRead(A1);
  int bouton = digitalRead(2);
  

    
  
  int range = map(sensorReading, 0, 1023, 0, 3);
  int thisPitch = map(sensorReading2, 0, 1023, 0, 8000);
  int i = map(sensorReading2, 0, 1023, 0, 11); 
  int tune = map(sensorReading, 767, 1023, 0, 255);
  int del =  10;
  
  //digitalWrite(3, HIGH); (pour VCA)
   if ((bouton == HIGH) && (lastBouton == LOW)) {
       maintien = !maintien;
   }
   
     

 //  Serial.println(range); (pour debug)
  switch (range) {
    case 0:    
    del = map(sensorReading, 0, 255, 0, 200);
     if (maintien == HIGH) {
      tone(7, random(0, thisPitch));
      break;
      }
      else {
        noTone(7);
      }  
   
     
        
      
    case 1:   
    if (maintien == HIGH) {
      tone(7, thisPitch);
      
      break;
      }
      else {
        noTone(7);
     
    } 
     
      
      case 2:    
      if (maintien == HIGH) {
       
       
      tone(7, (110*gamme[i]+tune));
      break;
     
      }
      else {
        noTone(7);
      }  
      
      
  }
  delay(del);        //delay fixe 10ms sauf pour mode random
  lastBouton = bouton;
}




Mini Arpeggiator (Code découvert lors d’une démo à la Maker Faire de Nantes) (Demo)

void setup() {
}

void loop() {

  int elephant = analogRead(A0)/2;
  int attendre = analogRead(A1)/3;
  
  tone(7, elephant);   
  delay(attendre); 
  tone(7, elephant*2);   
  delay(attendre); 
  tone(7, elephant*3);   
  delay(attendre);  
  tone(7, elephant*4);   
  delay(attendre); 
  tone(7, elephant*5);   
  delay(attendre); 
  tone(7, elephant*6);   
  delay(attendre);  
  
   
}

Super Mario Bros Mod (Demo)

int gamme[] = {
  1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 //notes 12tons
};
int melody[] = {
  659, 783, 1318, 1046, 1174, 1567}; //melodie marioUP

int noteDurations[] = {
  136, 134, 132, 132, 138, 400 }; //durees marioUp

  int melody2[] = {
  659, 659, 659, 523, 659, 783, 391, 523, 391, 329, 440, 493, 466, 440,
391, 659, 783, 880, 698, 783, 659, 523, 587, 493, 523, 391, 329, 440,
493, 466, 440, 391, 659, 783, 880, 698, 783, 659, 523, 587, 493, 783,
739, 698, 622, 659, 415, 440, 523, 440, 523, 587, 783, 739, 698, 622,
659, 1046, 1046, 1046, 783, 739, 698, 622, 659, 415, 440, 523, 440,
523, 587, 622, 587, 523, 783, 739, 698, 622, 659, 415, 440, 523, 440,
523, 587, 783, 739, 698, 622, 659, 1046, 1046, 1046, 783, 739, 698,
622, 659, 415, 440, 523, 440, 523, 587, 622, 587, 523, 523, 523, 523,
523, 587, 659, 523, 440, 391, 523, 523, 523, 523, 587, 659, 523, 523,
523, 523, 587, 659, 523, 440, 391, 659, 659, 659, 523, 659, 783, 391}; //melodie mario

int noteDurations2[] = {
  155, 301, 305, 150, 301, 604, 608, 454, 458, 455, 300, 306,
150, 299, 206, 202, 198, 308, 148, 306, 301, 149, 157, 450, 455, 458,
455, 301, 305, 150, 299, 206, 204, 197, 308, 148, 306, 300, 151, 156,
756, 149, 151, 154, 302, 304, 151, 150, 306, 151, 150, 455, 151, 150,
155, 300, 305, 302, 149, 913, 150, 149, 157, 300, 305, 151, 151, 305,
151, 149, 456, 456, 451, 1518, 149, 151, 156, 300, 305, 151, 149, 306,
150, 149, 457, 151, 150, 155, 301, 306, 300, 150, 912, 149, 150, 156,
300, 306, 151, 150, 305, 152, 149, 456, 456, 450, 1213, 154, 302, 304,
151, 301, 155, 300, 150, 606, 156, 300, 305, 152, 148, 1363, 155, 301,
305, 152, 300, 156, 299, 150, 606, 156, 299, 308, 149, 299, 609 }; //durees mario

  

  
int lastBouton = LOW;
boolean maintien = false;


void setup() {
  
  pinMode(2, INPUT);
  pinMode(9, OUTPUT);
 // pinMode(3, OUTPUT); (pour VCA)
 //Serial.begin(9600);
 digitalWrite(9, HIGH);
 for (int thisNote = 0; thisNote < 6; thisNote++) {


    tone(7, melody[thisNote]);

    
   
    delay(noteDurations[thisNote]);
   
    noTone(7);
  }

    
}



void loop() {
  // read the sensor:
  int sensorReading = analogRead(A0);
  int sensorReading2 = analogRead(A1);
  int bouton = digitalRead(2);
  

    
  
  int range = map(sensorReading, 0, 1023, 0, 3);
  int thisPitch = map(sensorReading2, 0, 1023, 0, 1000);
  int i = map(sensorReading2, 0, 1023, 0, 11); 
  int tune = map(sensorReading, 767, 1023, 0, 255);
  int del =  10;
  
  //digitalWrite(3, HIGH); (pour VCA)
   if ((bouton == HIGH) && (lastBouton == LOW)) {
       maintien = !maintien;
   }
   
     

 //  Serial.println(range); (pour debug)
  switch (range) {
    case 0:    
    del = map(sensorReading, 0, 255, 0, 200);
     if (maintien == HIGH) {
      tone(7, random(0, thisPitch));
      break;
      }
      else {
        noTone(7);
      }  
   
     
        
      
    case 1:   
    if (maintien == HIGH) {
      tone(7, thisPitch);
      
      break;
      }
      else {
        noTone(7);
     
    } 
     
      
      case 2:    
      if (maintien == HIGH) {
       
       
      tone(7, (110*gamme[i]+tune));
      break;
     
      }
      else {
        noTone(7);
      }  

      case 3:    
       
        for (int thisNote = 0; thisNote < 138; thisNote++) {

    
    if (maintien == HIGH) {

 
    tone(7, melody2[thisNote]);

    
   
    delay(noteDurations2[thisNote]);
   
    noTone(7);

    sensorReading = analogRead(A0); //actualiser l etat de la variable sensorReading
    if (sensorReading < 1000) {
    thisNote = 138; //afin d'eteindre la mélodie et eviter le deroulement entier de la boucle
    }
      
      }  
        }
      
      
  }
  delay(del);        //delay fixe 10ms sauf pour mode random
  lastBouton = bouton;
}