Nous vous présentons différents codes sources pour votre nouvelle carte Arduino.
Pour pouvoir les utiliser, il faut avoir installé l’environnement de développement Arduino ou bien utiliser un outil de compilation en ligne de commande.
Faire clignoter une led
Le but de l’exercice est d’écrire un premier programme, le transférer dans la carte et de l’exécuter. Le cahier des charges est de faire s’allumer une lumière (LED) présente directement sur la carte.
Pour réaliser cet exercice pratique, il vous suffit d’avoir :
– une carte Arduino Uno
– un câble USB
– un ordinateur
La carte Arduino possède une led (lumière) sur la patte numérique 13. Il n’ y a pas besoin de résistance pour réduire la tension passant dans la led, car elle est déjà présente : ce code pourra vous resservir dans tous vos programmes pour visualiser le passage du code dans un endroit particulier, en faisant clignoter la led un certain nombre de fois.
Voici le code :
int ledPin = 13;
// initialisation
void setup()
{
// patte en sortie
pinMode(ledPin, OUTPUT);
}
// boucle sans fin
void loop()
{
// on allume la led
digitalWrite(ledPin, HIGH);
// on attends une seconde
delay(1000);
// on éteint la led
digitalWrite(ledPin, LOW);
// on attends une seconde
delay(1000);
// et on recommence (ne jamais oublier la dernière attente)
}
Dialoguer avec la carte
Le but est d’envoyer des commandes (un caractère) à la carte Arduino. On va donc utiliser une communication série, en utilisant les fonctions "Serial" du langage Arduino.
Ecrivez le code suivant :
void setup()
{
Serial.begin(9600);
}
void loop()
{
while (Serial.available())
{
char key = Serial.read();
switch (key)
{
default:
Serial.print("commande ");
Serial.print(key);
Serial.println(" non reconnue.");
break;
}
}
}
Compilez (CTRL+R pour aller vite) et chargez dans la carte. L’environnement Arduino propose une console "terminal série" (dernier bouton de la ligne, "Serial Monitor"), cliquez sur l’icone, sélectionnez la bonne vitesse (9600 dans l’exemple ci-dessus) et saisissez des caractères au clavier dans le champ de saisie à droite du sélecteur de vitesse, puis faites "entrer" au clavier ou cliquez sur le bouton "send" : la carte réagit.
Il suffit ensuite d’écrire des cas différents selon ce que vous voulez associer comme commande :
switch (key)
{
case 'l':
analogOutput(200);
break;
case 'r':
analogOutput(5);
break;
default:
Serial.print("commande ");
Serial.print(key);
Serial.println(" non reconnue.");
break;
}
Attention, n’oubliez pas l’instruction "break" qui sert à sortir du "switch", sinon vous enchaîneriez les différents cas (c’est parfois utile quand on veut écrire une séquence d’actions et pouvoir y entrer à n’importe quelle étape).
Contrôle d’un servomoteur
Cet exemple nécessite de connecter un servo de modélisme comme décrit dans cet article d’introduction à la carte Arduino.
Voici le code pour la carte Arduino :
#include <Servo.h>
#define INCR 1
// on déclare le servomoteur comme une variable typée
Servo servo1;
// l'angle actuel du servomoteur
int angle = 0;
// le sens actuel du servomoteur
int sens = 0;
/**
* Initialisation du programme
*/
void setup()
{
servo1.attach(9); // le servomoteur est sur une patte PWM
}
/**
* Boucle infinie qui va gérer la rotation et faire alterner le sens de rotation
*/
void loop()
{
// faire tourner le servomoteur
if (sens == 0)
{
angle += INCR;
}
else {
angle -= INCR;
}
// si on est arrivé à une extremité
if (angle == 0)
{
sens = 0;
}
if (angle == 180) {
sens = 1;
}
delay(10);
servo1.write(angle);
}
(note : ne tenez pas compte de la dernière ligne, c’est un bug de la mise en couleur du code)
Compilez (touche triangulaire à gauche de la barre de menu) et chargez dans la carte (seconde icône de la barre de menu sur la dernière version du logiciel).
Si vous avez cette erreur à la compilation, c’est que vous avez une version trop ancienne de l’environnement et que vous n’avez pas installé la bibliothèque "Servo" :
Il faut mettre à jour votre environnement vers une version plus récente qui intègre la bibliothèque Servo.
Vos commentaires
# Le 12 octobre 2016 à 17:33, par paul duchot En réponse à : Premiers programmes sur Arduino
merci beaucoup mais manque d’explications pour les different types de variables que tu as utilisé mais sinon tres bon travail !
( paul duchot chef d’entreprise )
# Le 16 octobre 2016 à 16:13, par Eric P. En réponse à : Premiers programmes sur Arduino
Quelles explications vous manquent ? Si plus d’info, nous pourrons mettre à jour l’article en conséquence.
# Le 26 mars 2017 à 16:31, par Inconnu En réponse à : Premiers programmes sur Arduino
Bonjours, pour moi il manque juste les explications de branchement. Mais sinon c’est super.
# Le 12 avril 2017 à 12:10, par Eric P. En réponse à : Premiers programmes sur Arduino
Pour l’exemple de la LED il n’y a aucun branchement à faire car elle est déjà sur la carte Arduino. Quant à l’exemple sur le servo, l’article pointé inclut même des photos.
Quelles informations vous manquent encore ?
Répondre à ce message
# Le 9 janvier 2017 à 18:55, par Gaucher En réponse à : Premiers programmes sur Arduino
Bonsoir,
Je fais du train miniature et j’aimerais me servir de votre système avec un servomoteur pour mes barrières de passage à niveau.
Mais mon soucis se serait d’arrêter mes barrières en position basse quelque temps (le temps que le train passe et après qu’elles se relèvent avez-vous une formule pour ceci merci d’avance pour votre réponse.
Cordialement.
# Le 17 février 2017 à 14:46, par Eric P. En réponse à : Premiers programmes sur Arduino
C’est réalisable très facilement avec la fonction delay qui réalise une pause.
Cordialement
Répondre à ce message