Outils pour utilisateurs

Outils du site


wiki:projets:airpiano

Ceci est une ancienne révision du document !


Table des matières

AIR PIANO

Daphné Chamot-Rooke (contact : daphne.chamot-rooke@etu.upmc.fr)
Himany Seri (contact : himany.seri@etu.upmc.fr)

Objectif : créer un clavier virtuel qui fait de la musique sans touches

Matériel :

  • carte Arduino UNO
  • 1 sonar
  • 1 buzzer
  • un ruban de LEDs de couleurs adressable
  • fils de connexion + breadboard
  • de quoi souder
  • du contreplaqué en 3mm
  • 1 PC + une sortie son

Construction

Nous avons découpé une boîte de la taille du socle de l'arduino uno (100\*124*100 mm)

Ne pas oublier de prévoir des trous pour le sonar et pour l'alimentation de l'Arduino.

Code

Code provisoire :

#define trigPin 10
#define echoPin 8
//librairie Neopixel
#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h>
#endif
#define NUMPIXELS 9 //nombre de LEDs qui vont s'allumer sur le strip
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, 9, NEO_GRB + NEO_KHZ800);
const byte PIN_BUZZER = 13;
long duration, distance;
int frequence = 0;
int couleur = 0;

void setup() {
  Serial.begin(9600);
  pinMode(9, OUTPUT);
  pinMode(12, OUTPUT);
  pinMode(13, OUTPUT); //on prépare les pin 9, 12 et 13 en mode sortie
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  // This is for Trinket 5V 16MHz, you can remove these three lines if you are not using a Trinket
//#if defined (__AVR_ATtiny85__)
//  if (F_CPU == 16000000) clock_prescale_set(clock_div_1);
//#endif
  // End of trinket special code
  pixels.begin(); // la librairie NeoPixel est initialisée
  Serial.println("== Debut du programme ==");

}

void loop() {
  // Envoi de l'onde
  digitalWrite(trigPin, LOW);
  delayMicroseconds(200);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(200);
  digitalWrite(trigPin, LOW);
  delayMicroseconds(200); 
  // Réception de l'écho
  duration = pulseIn(echoPin, HIGH);
  // Calcul de la distance
  distance = (duration / 2) / 29.1;
  //variable pour modifier la couleur des LEDs en fonction de la distance
  couleur = distance * 10;
  
  if (distance >= 50 || distance <= 0) {
    Serial.println("Hors plage");
  }
  else
  {
    Serial.print("distance = ");
    Serial.print(distance);
    Serial.println(" cm");
    
    tone (13, 200 + (2 ^ 12)*distance); //on joue la note
    delay(400);
    noTone(13);//on arrete la note
     // For a set of NeoPixels the first NeoPixel is 0, second is 1, all the way up to the count of pixels minus one.
     for (int i = 0; i < NUMPIXELS; i++) {
      // pixels.Color takes RGB values, from 0,0,0 up to 255,255,255
      pixels.setPixelColor(i, pixels.Color(couleur / 2, 4 * couleur, 2 * couleur)); //s'allume de différentes couleurs en fonction de la distance
      pixels.show(); // This sends the updated pixel color to the hardware.
      delay(50); // Delay for a period of time (in milliseconds).
    }
  }
  delay(100); // délai entre deux mesures
}
LDAP: couldn't connect to LDAP server
wiki/projets/airpiano.1542310040.txt.gz · Dernière modification: 2018/11/15 19:27 de daphne