Outils pour utilisateurs

Outils du site


wiki:flossmanuals:bouton-jukebox-aleatoire:accueil

Ceci est une ancienne révision du document !


Jukebox Aléatoire

  • Porteur(s) du projet : Damien MUTI (Prof. de Numérique)
  • Date : 03/2021
  • objectif : Lancer des sons aléatoirement en appuyant sur un bouton.
  • Contexte : Sonnerie aléatoire
  • Fichiers :
  • Liens :
  • Capteurs/Actionneurs :
    • Bouton poussoir
    • Processing

Intentions : explication du projet et objectifs

Lorsqu'on appuie sur un bouton poussoir connecté à l'entrée digitale d'une carte Arduino, cette dernière envoie un message à Processing qui sélectionne aléatoirement une musique et la joue tant que le doigt reste appuyé sur le bouton.

Lorsqu'on appuie une une deuxième fois, le la même musique se lance tant qu'on tant que le doigt reste appuyé sur le bouton. En revanche, lorsqu'on appuie une troisième fois, une nouvelle musique est sélectionnée aléatoirement.

le schéma suivant résume la situation :

Plans et schémas de fonctionnement

Programme et montage Arduino

Le montage permettant de capter le signal provenant du bouton poussoir est le suivant :

Lorsqu'on appuie sur le bouton poussoir, la va valeur lue par la broche d'entrée digitale “pin” passe de 0V à 5V.

Le montage Arduino est le suivant :

Le programme permettant d'envoyer les données à Processing via le port série est le suivant : test_bouton_1.ino.zip

/*
Branchement sur ARduino NANO BLE
sur bread board - Branchement USB en bas
+ : 2 à droite
GND (-) : 14 à droite
ENtrée Bouton : 11 à gauche

*/

// constants won't change. They're used here to set pin numbers:
const int buttonPin = 2;     // the number of the pushbutton pin
const int ledPin =  13;      // the number of the LED pin

// variables will change:
int buttonState = 0;         // variable for reading the pushbutton status
int inByte = 0;         // incoming serial byte

void setup() {
  // initialize the LED pin as an output:
  pinMode(ledPin, OUTPUT);
  // initialize the pushbutton pin as an input:
  pinMode(buttonPin, INPUT);
  // port Série
  // start serial port at 9600 bps:
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  }
  // établir le contact avec Processing
  establishContact();  // send a byte to establish contact until receiver responds
}

void loop() {
  if (Serial.available() > 0) { // si un octet arrive sur le port série 
    //de la carte venant de Processing
    // get incoming byte:
    inByte = Serial.read();
    
    // read the state of the pushbutton value:
    buttonState = digitalRead(buttonPin);

    // check if the pushbutton is pressed. If it is, the buttonState is HIGH.
    // //et envoi de la valeur
    if (buttonState == HIGH) { // bouton appuyé => 5V en D2 => envoi de 255 et allumer LED 13
      //Serial.println(255);
      Serial.write(255);
      // turn LED on:
      digitalWrite(ledPin, HIGH);
    } else { // bouton relâché => 0V en D2 => envoi de 0 et éteindre LED 13
      //Serial.println(0);
      byte zero = 0;
      Serial.write(zero);
      // turn LED off:
      digitalWrite(ledPin, LOW);
    }
  }
}

void establishContact() {
  while (Serial.available() <= 0) {
    Serial.print('A');   // send a capital A
    delay(300);
  }
}

Ce programme est inspiré de l'exemple SerialCallResponse

Programme Processing

Le programme Processing doit récupérer les données venant de la carte Arduino, via le port série.

wiki/flossmanuals/bouton-jukebox-aleatoire/accueil.1619889693.txt.gz · Dernière modification: 2021/05/01 19:21 de damien.muti