Aujourd'hui je complique un peu les choses. Je me sers de mon ancien programme sur la communication série pour transmettre des valeurs entières (int).
Le plus réside dans le fait que je ne veux pas lire juste une seule données mais, plusieurs (je commence par deux). Dans l'idée, la première valeur contiendra l'information pour allumer une LED. Quant à la seconde valeur, elle pilotera un servomoteur.
J'en profite pour utiliser un tableau à 2 dimensions pour stocker ces 2 valeurs entières.
Exemple de code :
#include<servo.h> //déclaration de la librairie pour utiliser le servomoteur
int index_val = 0; //contient l'index du tableau d'entier
int val[2]; //contient le tableau de valeurs
Servo servo_1; //déclaration du servomoteur
void setup()
void loop()
while(Serial.available() == 0) //on attend des données
//Déclaration variables-paramètres
const int LED = 13; //contiendra la pin où est attaché la LEDint index_val = 0; //contient l'index du tableau d'entier
int val[2]; //contient le tableau de valeurs
Servo servo_1; //déclaration du servomoteur
void setup()
{
pinMode(LED, OUTPUT); //initialise la pin (13) LED en sortie
servo_1.attach(9); //on connecte le signal de commande à la pin 9 (PWM)
Serial.begin(9600); //initialise la communication série à 9600baudspinMode(LED, OUTPUT); //initialise la pin (13) LED en sortie
servo_1.attach(9); //on connecte le signal de commande à la pin 9 (PWM)
}
{
index_val = 0; //mise à jour de la valeur
{
val[index_val] = Serial.parseInt(); //on convertit la chaîne en entier et l'affecte à "val[0]"
index_val++; //on incrémente l'index
if(Serial.available() != 0) //si des données sont encore présentes
{
val[index_val] = Serial.parseInt(); //on convertit la chaîne en entier et l'affecte à "val[1]"
index_val++; //on incrémente l'index (pas nécessaire)
}
//Tests
if(val[0] == 10)
digitalWrite(LED, HIGH); //si la valeur vaut 10, on allume la LED
else
digitalWrite(LED, LOW); //si la valeur est différente de 10, on éteint la LED
servo_1.write(val[1]); //déplace le servomoteur de la valeur indiquée
//Affichage des valeurs sur le terminal
Serial.println(val[0]);
Serial.println(val[1]);
}
//fin du programme
}
Aucun commentaire:
Enregistrer un commentaire