Arduino > Exemple de communication à un octet pour interrupteur et DEL

1.  Circuit

2.  Code Arduino

// See http://wiki.t-o-f.info/Arduino/ExempleDeCommunication%C3%80UnOctetPourInterrupteurEtDEL


#include <Bounce2.h> // Inclure la logithèqe Bounce

Bounce button; // Une instance de Bounce

void setup() {

        Serial.begin(57600);  // Initialiser le port serie.

        // Attacher l'instance de Bounce a la broche 12
        // avec un temps de remondissement de 5.
        button.attach(12,INPUT_PULLUP);
        button.interval(5);

        // Configuration de la broche relie a la DEL de debogage
        // en tant que sortie numerique.
        pinMode(LED_BUILTIN,OUTPUT);


}

void loop() {

        // Mettre a jour l'etat du bouton.
        button.update();

        if ( button.fell() ) { // Si le bouton a ete envoye.

                Serial.print('L'); // Envoyer un L.

        } else if ( button.rose() ) {

                Serial.print('H'); // Envoyer un H.
        }


        while ( Serial.available() ) {  // Verifier s'il y a des donnees a lire.
                int data = Serial.read();  // Lire la donnee.
                if ( data == 'H' ) {
                        digitalWrite(13,HIGH);  // Allumer la DEL de debogage.
                } else if ( data == 'L' ) {
                        digitalWrite(13,LOW);  // Eteindre la DEL de debogage.
                }
        }
}

3.  Utiliser le moniteur série pour communiquer avec l'Arduino

4.  Code Max


communication_a_1_octet.maxpat

5.  Code Processing

import processing.serial.*;


/*
*  ___ __  __ ___  ___  ___ _____ _   _  _ _____
* |_ _|  \/  | _ \/ _ \| _ \_   _/_\ | \| |_   _|
*  | || |\/| |  _/ (_) |   / | |/ _ \| .` | | |
* |___|_|  |_|_|  \___/|_|_\ |_/_/ \_\_|\_| |_|
*
*Lorsque vous demarrez ce code, les noms de tous les ports series
*sont affichés dans les messages de debogage de la fenetre Processing.
*Vous devez changer la valeur de la variable "portName"
*pour qu'elle corresponde au nom du port serie de l'Arduino.
*/

// Choisir le port serie.
String portName = "/dev/tty.usbserial-A20022bM";

// Declarer une instance de la classe Serial:
Serial serial;

// Declarer une variable qui correspondra
// a l'etat de l'interrupteur.
int interrupteur;


void setup() {
        size(256, 256);
        smooth();


        println(Serial.list()); // Affiche les noms des ports.

        // Creer une instance de la classe Serial avec
        // un baud de 57600 et le port choisi.
        serial = new Serial(this, portName, 57600);

        textAlign(LEFT,TOP);
}

void draw() {
        if ( interrupteur == 0 ) {
                background(0);
        } else {
                background(255);
        }

}

void mousePressed() {
        serial.write('H');
}

void mouseReleased() {
        serial.write('L');
}


// Definir une fonction pour recevoir les donnees du port serie.
void serialEvent(Serial p) {

        // Lire la donnee.
        int data = p.read();

        if ( data == 'H' ) {
                interrupteur = 0;
        } else if ( data == 'L' ) {
                interrupteur = 1;
        }
}