Le programme minimum
Lorsqu’on lance le logiciel Arduino pour la première fois (ou que l’on fait Fichier/Nouveau), le programme suivant apparait :
void setup() { // put your setup code here, to run once: } void loop() { // put your main code here, to run repeatedly: }
C’est le plus petit programme que l’on puisse faire avec un Arduino … et il ne sert à RIEN !
Mais il contient les deux fonctions obligatoires : setup()
et loop()
.
La fonction d’initialisation setup()
Cette fonction est exécutée une seule fois, à chaque du microcontrôleur.
void
devantsetup
signifie que cette fonction ne renvoie rien.
La fonction de boucle loop()
Aussitôt après la fonction setup()
, la fonction loop()
est exécutée en boucle : elle se répète à l’infini (jusqu’à la réinitialisation ou la mise hors tension du microcontrôleur).
Les commentaires
Afin de rendre le code plus clair, rajouter des explications qui aident à sa lecture (par quelqu’un d’autre ou par soi-même !), on peut (il faut !!) y placer des commentaires :
- soit après
//
:
// commentaire sur une seule ligne
- soit entre
/*
et*/
:
/* du commentaire sur plusieurs lignes */
Structure générale d’un programme
Un programme est composé de 3 parties :
- partie déclarative :
- inclusion de fichiers (bibliothèques, …)
- déclaration des variables globales (accessibles depuis partout dans le programme)
- déclaration de constantes (comme des variables, mais qui ne peuvent jamais changer)
- partie configuration (fonction
setup()
) :- initialisation de la communication série
- initialisation des ports numériques en mode « entrée » ou « sortie ».
- affichage d’informations
- …
- boucle sans fin (fonction
loop()
)
Exemple : programme « Knock »
- Lecture en continu de la valeur d’un port analogique
- Lorsque cette valeur dépasse un certain seuil, la LED intégrée change d’état et un message est envoyé via le port série
const int ledPin = 13; const int knockSensor = A0; const int threshold = 100; int sensorReading = 0; int ledState = LOW; void setup() { pinMode(ledPin, OUTPUT); Serial.begin(9600); } void loop() { sensorReading = analogRead(knockSensor); if (sensorReading >= threshold) { ledState = !ledState; digitalWrite(ledPin, ledState); Serial.println("Knock!"); } delay(100); }