Un Capteur - Une application : Dialogue simple entre Arduino et Processing

Porteur(s) du projet : Damien MUTI (Prof. de Numérique)

Date : 05/2021

Contexte : Cours

Fichiers :

Liens :

Capteurs/Actionneurs :

Capteur de distance ultrason Grove

Potentiomètre

Processing

Intentions : explication du projet et objectifs

L'objectif de cet article est de montrer sur un exemple simple comment dialoguer entre la carte Arduino et Processing. L'objectif est de mesurer la valeur lue sur UN capteur et de l'envoyer vers le programme Processing comme un paramètre pouvant faire varier la forme ou la couleur d'un graphisme.

Les programmes proposés sont des formes simplifiés des exemples SerialCallResponse de Processing et Arduino.

Le schéma suivant résume la situation :

Nous proposons ici de mesurer une distance à l'aide d'un capteur de distance ultrason et de faire varier la couleur d'une forme sous Processing.

Circuit Arduino

On utilise un capteur de distance Ultrason Ultrasonic en Grove. Le schéma de câblage est le suivant :

Le capteur Ultrason est branché sur le “slot” D7.

Programme Arduino

Le programme Arduino est le suivant : un_capteur_une_application_arduino.zip

#include "Ultrasonic.h"
Ultrasonic ultrasonic(7);
long distance=0; // variable qui stoke la valeur de la distance
int firstSensor = 0; // first analog sensor
int inByte = 0; // incoming serial byte
void setup() {
// start serial port at 9600 bps:
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for native USB port only
}
establishContact(); // send a byte to establish contact until receiver responds
}
void loop() {
// if we get a valid byte, read analog ins:
if (Serial.available() > 0) {
// get incoming byte:
inByte = Serial.read();
// lecture de la distance
distance = ultrasonic.MeasureInCentimeters();
// conversion de la valeur en un octet
firstSensor = map(distance,0,400,0,255);
// send sensor values:
Serial.write(firstSensor);
}
}
void establishContact() {
while (Serial.available() <= 0) {
Serial.print('A'); // send a capital A
delay(300);
}
}