.
Mise à jour le 03/02/2016 : Dans cet article, nous allons voir comment créer un petit programme PC permettant de récupérer très simplement la valeur d’un potentiomètre connecté à l’Arduino.
Sommaire :
- Le matériel nécessaire mais pas obligatoire.
- Le programme Arduino
- Les sources des programmes Arduino et Visual Studio
- Pour tout probléme
- Retour au menu tutoriel .
Le matériel nécessaire mais pas obligatoire |
Au niveau connectique et matériel, nous avons opté pour le plus simple à savoir . Un arduino, un shield grove méga, un potentiomètre (Arduino Rotary Angle) connecté sur le pin A0.
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.
Plus d’information sur Arduino Mega 2560
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 /
Module potentiomètre Grove 101020017
Ce module potentiomètre compatible Grove délivre un signal analogique et est équipé d’une résistance de 10 kΩ idéale pour une utilisation avec les cartes Arduino ou compatibles.
Ce module se raccorde sur une entrée analogique du Grove Base Shield ou du Mega Shield via un câble 4 conducteurs inclus. Il est similaire au COM08212P à l’exception du connecteur qui se trouve du même côté que le potentiomètre.
Retour au sommaire
Le programme Arduino |
.
D’un point de vue complexité, on ne peut pas faire plus simple : on envoie sur le port série la valeur que l’on lit sur le potentiomètre.
1 2 3 4 5 6 7 8 |
void setup() { Serial.begin(9600); } void loop() { Serial.println(analogRead(0)); delay(100); } |
On a tout de même ajouté un délai de 100 millisecondes entre chaque envoi afin d’éviter de saturer la communication série.
Le programme Visual Studio
Ce petit bout de programme va permettre d’une part d’afficher les valeurs reçues dans une zone de texte et d’autre part, d’afficher la valeur sous la forme d’une barre de progression.
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 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
Public Class Form1 'Evenement click du bouton connecter. Lorsque l'utilisateur cliquera sur le bouton "connecter", on arrivera dans cette fonction Private Sub btnConnecter_Click(sender As Object, e As EventArgs) Handles btnConnecter.Click 'On indique le nom du port Com utilisé. On doit renseigner la valeur "COM1" si on utilise le port Com 1. SerialPort1.PortName = String.Format("COM{0}", numeroPort.Value) 'On ouvre la communication série sur le port COM spécifié SerialPort1.Open() End Sub 'Evenement click du bouton déconnecter. Lorsque l'utilisateur cliquera sur le bouton déconnecter, on arrivera dans cette fonction Private Sub btnDeconnecter_Click(sender As Object, e As EventArgs) Handles btnDeconnecter.Click 'On ferme la communication série. SerialPort1.Close() End Sub 'Evenement de reception des données série. Lorsque l'arduino enverra des données sur l'interface série, Private Sub SerialPort1_Receiving(sender As Object, e As IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived 'On lit la ligne de données provenant de l'arduino Dim valeurDepuisArduino As String = SerialPort1.ReadLine().ToString() 'On traite l'information SetValeur(valeurDepuisArduino) End Sub 'Méthode déléguée. Cela permet de réaliser la mise à jour de l'interface graphique alors que l'on provient d'un autre 'thread que celui de l'interface (opération interdite en direct) Delegate Sub SetTextCallback(valeur As String) 'Fonction permettant de gérer l'appel par délégué Private Sub SetValeur(valeur As String) 'On regarde si on a besoin de passer par un délégué ou non If ProgressBarValeur.InvokeRequired Then 'Si oui, on invoque le délégué en transmettant la valeur Dim d As New SetTextCallback(AddressOf SetValeur) Me.BeginInvoke(d, New Object() {valeur}) Else 'Si non, on demande à mettre à jour l'affichage MettreAJourAffichage(valeur) End If End Sub 'Fonction permettant de gérer l'affichage. On lui passe en paramètre la valeur du 'potentiomètre relevée par le port série Private Sub MettreAJourAffichage(valeur As String) 'On met à jour la textbox pour afficher chaque ligne reçue TextBox1.Text &= valeur & vbCrLf 'Ces trois lignes permettent de scroller à la dernière ligne automatiquement TextBox1.SelectionLength = 1 TextBox1.SelectionStart = TextBox1.Text.Length - 1 TextBox1.ScrollToCaret() 'Si on a une valeur correcte, non vide et numérique, on l'assigne à notre progressbar If Not String.IsNullOrWhiteSpace(valeur) AndAlso IsNumeric(valeur) Then ProgressBarValeur.Value = CInt(valeur) End If End Sub 'Méthode appelée quand la fenetre est fermée et qu'on quitte l'application Private Sub Form1_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing 'Si le port série est toujours ouvert If SerialPort1.IsOpen Then 'Alors on le ferme SerialPort1.Close() End If 'On détruit l'instance du port série SerialPort1.Dispose() End Sub End Class |
Ce qu’il faut retenir de ce code source : Nous nous appuyons sur le retour à la ligne pour savoir que nous avons reçu une valeur (utilisation de SerialPort1.ReadLine) ainsi nous savons quand déclencher la mise à jour de l’interface graphique.
Retour au sommaire
Les sources des programmes Arduino et Visual Studio |
.
Code source à télécharger 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.