.
Mise à jour le 08/09/2019 : Dans cet article, nous allons envoyer des données depuis le pc vers l’Arduino. Le principe est tout simple : lorsqu’on va déplacer la glissière (trackbar) sur l’application PC, on va modifier l’éclairage de la LED connectée à l’Arduino.
Sommaire :
- Le matériel nécessaire
- Le programme Arduino
- Le programme Visual Studio
- Le code source.
- Pour tout problème
- Retour au menu tutoriel .
Le matériel nécessaire mais pas obligatoire |
.
Nous avons utilisé un arduino méga, un shield Grove méga et une LED Arduino (Led Socket) connectée au pin D8.
Carte Arduino MEGA 2560
La carte Arduino Mega 2560 est basée sur un ATMega2560 cadencé à 16 MHz. Elle dispose de 54 E/S dont 14 PWM, 16 analogiques et 4 UARTs. Elle est idéale pour des applications exigeant des caractéristiques plus complètes que la Uno. Des connecteurs situés sur les bords extérieurs du circuit imprimé permettent d’enficher une série de modules complémentaires.
Fournisseur : Gotronic /
.
Module Grove Mega Shield V1.2 103020027
Le module Grove Mega Shield de Seeedstudio est une carte d’interface permettant de raccorder facilement, rapidement et sans soudure les capteurs et les actionneurs Grove de Seeedstudio sur une carte compatible Arduino Mega. Il est compatible notamment avec les cartes Arduino Mega et Google ADK.
Cette carte peut être divisée en 4 sections: le bouton de reset, la connectique d’alimentation, la partie digitale et la partie analogique. Elle est équipée de connecteurs 4 broches pour les entrées analogiques, les entrées-sorties logiques, les interfaces I2C et UART.
Fournisseur : Gotronic /
.
Led rouge 5 mm Grove 104030005
Ce module led rouge 5 mm est compatible Grove et permet d’allumer une led à partir d’une sortie d’un microcontrôleur (Arduino, Seeeduino, etc.).
Ce module se raccorde sur une sortie du Grove Base Shield ou du Mega Shield via un câble 4 conducteurs .
Fournisseur : Gotronic /
Retour au sommaire
Le programme Arduino |
.
Ce programme va aller lire les informations du port série jusqu’à rencontrer un retour à la ligne. Dès qu’il le rencontre, il retourne la chaine de caractères reçue et inscrit la valeur sur le pin de la LED faisant ainsi varier la luminosité de cette dernière.
.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
// // //On déclare une constante correspondant au pin de la LED #define LED_PIN 8 void setup() { //On initialise le port série Serial.begin(9600); //On indique que le pin de la LED sera en output pinMode(LED_PIN, OUTPUT); //On écrit la valeur 255 sur la LED pour l'allumer à son maximum analogWrite(LED_PIN, 255); } void loop() { //On attend 100ms (pour éviter d'être saturé d'informations delay(100); //On récupère les données envoyées sur le port série String ligne = Readline(); //Si notre ligne contient des données if(ligne.length() > 0) { //On inscrit sa valeur sur la LED analogWrite(LED_PIN, ligne.toInt()); } } //Fonction permettant de lire une ligne depuis le port série String Readline() { //On commence par déclarer une variable qui correspondra au cumul de caractères reçus String line = ""; //On déclare une variable pour le caractère courant (celui qu'on vient de recevoir) char lastchar; //Tant que le port série a des valeurs à nous transmettre et qu'on ne tombe pas sur un caractère de saut de ligne while(Serial.available() > 0 && lastchar != '\n') { //On lit le caractère depuis le port série lastchar = Serial.read(); //Si c'est un saut de ligne, on quitte la boucle if(lastchar == '\n') {break;} //Sinon, on concatene le caractère courant avec ceux reçus précédemment. line += lastchar; } //On renvoie la ligne complète return line; } |
.
Retour au sommaire
Le programme pour Visual Studio |
.
Dans ce programme, nous avons simplifié la connexion/déconnexion au port série. On s’y connecte au lancement de l’application et on ferme la connexion série quand on quitte l’application.
Dès qu’on reçoit l’évènement indiquant que la valeur de la glissière a changé, on envoie sa valeur sur le port série à l’aide de l’instruction SerialPort1.WriteLine. Le fait d’utiliser writeline au lieu de write est très important car il ajoute un saut de ligne au bout de la chaine de caractères envoyée et nous pouvons ainsi savoir côté arduino que la donnée est complète.
.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
Public Class Form1 'Evenement lancé lorsque l'application démarre (modifiez ici le nom du port COM de votre Arduino) Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 'On assigne le port COM3 pour indiquer que l'Arduino est branché dessus SerialPort1.PortName = "COM3" 'On ouvre la communication série SerialPort1.Open() End Sub 'Evenement lancé lorsqu'on quitte l'application Private Sub Form1_FormClosing(sender As Object, e As FormClosingEventArgs) Handles MyBase.FormClosing 'On ferme la communication série SerialPort1.Close() 'On détruit l'instance du port série SerialPort1.Dispose() End Sub 'Evenement lancé quand on déplace le curseur de la trackbar Private Sub TrackBar1_ValueChanged(sender As Object, e As EventArgs) Handles TrackBar1.ValueChanged 'On envoie sur le port série la valeur du trackbar suivie d'un retour à la ligne (utilisation de Writeline au lieu de write) SerialPort1.WriteLine(TrackBar1.Value.ToString) End Sub End Class |
.
Retour au sommaire
Le code source en téléchargement |
.
Vous trouverez ici les codes sources pour le programme arduino ainsi que le code source de la petite application Visual Studio.
.
Téléchargement du code source.
Retour au sommaire
Pour tout probléme |
Pour tout problème de téléchargement ou pour nous suivre sur les réseaux sociaux voici les plateformes sur lesquelles nous éditons.
Cliquez sur celle qui vous intéresse .
.
Retour au sommaire