Cours Arduino

Livre développement Arduino pdf [Eng]


Télécharger Livre développement Arduino pdf [Eng]

★★★★★★★★★★3 étoiles sur 5 basé sur 1 votes.
Votez ce document:

Télécharger aussi :


Livre développement Arduino pdf [Eng]

...

… … …

Cligner

Dans la plupart des langages de programmation, le premier programme que vous écrivez imprime "hello world" sur l'écran. Puisqu'une carte Arduino n'a pas d'écran, nous clignotons une LED. Les cartes sont conçues pour faciliter le clignotement d’une LED à l’aide de la broche numérique 13. Certaines cartes (telles que Diecimila et LilyPad) ont une LED intégrée à la carte. Sur la plupart des autres modèles (tels que les modèles Mini et BT), il existe une résistance de 1 Ko sur la broche, ce qui vous permet de connecter directement une LED. (Pour connecter une LED à une autre broche numérique, vous devez utiliser une résistance externe.) Les LED ont une polarité, ce qui signifie qu'elles ne s'allumeront que si vous orientez correctement les pieds. La jambe longue est généralement positive et doit être connectée à la broche 13. La jambe courte se connecte à GND; l'ampoule de la LED aura également généralement un bord plat de ce côté. Si la DEL ne s'allume pas, essayez d'inverser les jambes (vous ne ferez pas de mal à la DEL si vous la branchez à l'envers pendant une courte période).

Circuit

Code

L'exemple de code est très simple, les crédits se trouvent dans les commentaires.

/ * LED clignotante

 * ------------

 *

 * allume et éteint une diode électroluminescente (DEL) connectée à un

 * épingle, à intervalles de 2 secondes. Idéalement, nous utilisons la broche 13 sur l’Arduino

 * carte parce qu’elle a une résistance attachée à elle, nécessitant seulement une LED

 *

 * Créé le 1er juin 2005

 * http://arduino.berlios.de

 *

 * d'après un original de H. Barragan pour la carte Wiring i / o

 * /

int ledPin = 13; // LED connectée à la broche numérique 13

void setup()

{

 pinMode (ledPin, OUTPUT); // définit la broche numérique en sortie

}

boucle vide ()

{

 digitalWrite (ledPin, HIGH); // allume la LED

 délai (1000); // attend une seconde

 digitalWrite (ledPin, LOW); // éteint le voyant

 délai (1000); // attend une seconde

}

Cligner des yeux sans

Retard Il est parfois nécessaire de faire clignoter une DEL (ou une autre fonction dépendant du temps) en même temps que quelque chose d'autre (par exemple, regarder pour appuyer sur un bouton). Cela signifie que vous ne pouvez pas utiliser delay (), ou vous arrêteriez tout le reste du programme pendant que le voyant clignotait. Voici un code qui montre comment faire clignoter le voyant sans utiliser delay (). Il garde la trace de la dernière fois qu’il a allumé ou éteint la LED. Ensuite, à chaque passage par loop (), il vérifie si un intervalle suffisant s'est écoulé - si tel est le cas, il éteint le voyant s'il était allumé et vice-versa.

Code

int ledPin = 13; // LED connectée à la broche numérique 13

int valeur = LOW; // valeur précédente de la LED



long précédentMillis = 0; // stockera la dernière fois que le voyant a été mis à jour

intervalle long = 1000; // intervalle auquel clignoter (millisecondes)

void setup()

{

 pinMode (ledPin, OUTPUT); // définit la broche numérique en sortie

}

boucle vide ()

{

 // voici où vous mettriez du code qui doit être exécuté tout le temps.

 // vérifie s'il est temps de faire clignoter le voyant; c'est la différence

 // entre l'heure actuelle et la dernière fois que nous avons clignoté, le voyant plus gros que

 // l'intervalle auquel nous voulons faire clignoter la LED.

 if (millis () - previousMillis> intervalle) {

 previousMillis = millis (); // rappelez-vous la dernière fois que nous avons clignoté la LED

 // si le voyant est éteint, allumez-le et vice-versa.

 if (valeur == BAS)

 valeur = HIGH;

 autre

 valeur = LOW;

 digitalWrite (ledPin, valeur);

 }

}

Bouton

Le bouton poussoir est un composant qui connecte deux points d’un circuit lorsque vous appuyez dessus. L'exemple allume une LED lorsque vous appuyez sur le bouton. Nous connectons trois fils à la carte Arduino. Le premier va d'une branche du bouton-poussoir à une alimentation de 5 volts en passant par une résistance de rappel (ici 2,2 KOhms). La seconde va de la jambe correspondante du bouton-poussoir à la terre. La troisième se connecte à une broche d’entrée / sortie numérique (ici la broche 7) qui lit l’état du bouton. Lorsque le bouton-poussoir est ouvert (non pressé), il n'y a pas de connexion entre les deux branches du bouton-poussoir, donc la broche est connectée à 5 volts (à travers la résistance de rappel) et nous lisons un HAUT. Lorsque le bouton est fermé (enfoncé), il établit une connexion entre ses deux pattes, reliant la broche à la terre, de sorte que nous lisons un BAS. (La broche est toujours connectée à 5 volts, mais la résistance située entre eux signifie que la broche est "plus proche" de la terre.) Vous pouvez également câbler ce circuit dans le sens opposé, avec une résistance à résistance maintenue à l'entrée BAS, et passe au niveau haut lorsque le bouton est enfoncé. Si tel est le cas, le comportement de l'esquisse sera inversé, le voyant étant normalement allumé et s'éteignant lorsque vous appuyez sur le bouton. Si vous débranchez la broche d'E / S numérique de tout, le voyant peut clignoter de manière irrégulière. En effet, l'entrée est "flottante", c'est-à-dire qu'elle retournera plus ou moins au hasard HAUT ou BAS. C'est pourquoi vous avez besoin d'une résistance pull-up ou pull-down dans le circuit.

Code

int ledPin = 13; // choisir l'épingle pour la LED

int inPin = 2; // choisit la broche d'entrée (pour un bouton poussoir)

int val = 0; // variable pour lire l'état des broches

void setup() {

 pinMode (ledPin, OUTPUT); // déclare la LED en tant que sortie

 pinMode (inPin, INPUT); // déclare un bouton comme entrée

}

boucle vide () {

 val = digitalRead (inPin); // lire la valeur d'entrée



 if (val == HIGH) {// vérifie si l'entrée est HIGH (bouton relâché)

 digitalWrite (ledPin, LOW); // éteindre la LED

 } autre {

 digitalWrite (ledPin, HIGH); // allume la LED

 }

}

Debounce

Cet exemple illustre l'utilisation d'un bouton-poussoir en tant qu'interrupteur: chaque fois que vous appuyez sur le bouton, le voyant (ou autre) est allumé (s'il est éteint) ou éteint (s'il est allumé). Cela annule également l’entrée, sans laquelle appuyer une fois sur le bouton apparaîtrait comme plusieurs appuis sur le code. Utilise la fonction millis () pour suivre l’heure à laquelle le bouton est enfoncé.

Circuit

Un bouton-poussoir sur la broche 7 et une LED sur la broche 13.

Code

int inPin = 7; // le numéro de la broche d'entrée

int outPin = 13; // le numéro de la broche de sortie

int state = HIGH; // l'état actuel de la broche de sortie

int lecture; // la lecture actuelle de la broche d'entrée

int précédent = LOW; // la lecture précédente de la broche d'entrée

// les variables suivantes sont longues parce que le temps, mesuré en millisecondes,

// deviendra rapidement un nombre plus grand que ce qui peut être stocké dans un int.

temps long = 0; // la dernière fois que la broche de sortie a été basculée

rebond long = 200; // le temps d'anti-rebond, augmente si la sortie scintille

void setup()

{

 pinMode (inPin, INPUT);

 pinMode (outPin, OUTPUT);

}

boucle vide ()

{

 lecture = digitalRead (inPin);

 // si nous venons d'appuyer sur le bouton (c'est-à-dire que l'entrée passait de LOW à HIGH),

 // et nous avons attendu assez longtemps depuis la dernière presse pour ignorer tout bruit ...

 if (lecture == HIGH && précédent == LOW && millis () - heure> debounce) {

 // ... inverser la sortie

 si (état == HAUT)

 état = BAS;

 autre

 état = HAUT;

 // ... et rappelez-vous quand la dernière touche a été pressée

 temps = millis ();

 }

 digitalWrite (outPin, state);

 précédent = lecture;

}

Boucle

Nous appelons aussi cet exemple "Knight Rider" en mémoire d'une série télévisée des années 80 dans laquelle le célèbre David Hasselhoff avait une machine à intelligence artificielle pilotant son Pontiac. La voiture avait été complétée par de nombreuses LED dans toutes les tailles possibles, produisant des effets flashy. Nous avons donc décidé que pour en savoir plus sur la programmation séquentielle et les bonnes techniques de programmation de la carte d’E / S, il serait intéressant d’utiliser le Knight Rider comme métaphore. Cet exemple utilise 6 DEL connectées aux broches 2 à 7 de la carte à l'aide de résistances de 220 Ohm. Le premier exemple de code fera clignoter les voyants dans une séquence, une par une, en utilisant uniquement les écritures numériques (pinNum, HIGH / LOW) et le délai (time). Le deuxième exemple montre comment utiliser une construction pour (;;) pour effectuer la même chose, mais en moins de lignes. Le troisième et dernier exemple se concentre sur l’effet visuel d’allumer / éteindre les LED de manière plus douce.



Circuit

Code

int timer = 100; // Plus le nombre est élevé, plus le timing est lent.

int pins [] = {2, 3, 4, 5, 6, 7}; // un tableau de numéros de broches

int num_pins = 6; // le nombre de pins (c'est-à-dire la longueur du tableau)

void setup()

{

 int i;

 for (i = 0; i <num pins; i ++) // les éléments du tableau sont numérotés de 0 à num pins - 1

 pinMode (pins [i], OUTPUT); // définit chaque broche comme une sortie

}

boucle vide ()

{

 int i;

 for (i = 0; i <num_pins; i ++) {// boucle à travers chaque broche ...

 digitalWrite (pins [i], HIGH); // l'allumer,

 temporisateur); // en pause,

 digitalWrite (pins [i], LOW); // et l'éteindre.

 }

 pour (i = num_pins - 1; i> = 0; i--) {

 digitalWrite (pins [i], HIGH);

 temporisateur);

 digitalWrite (pins [i], LOW);

 }

}

Entrée analogique

Un potentiomètre est un simple bouton qui fournit une résistance variable, que nous pouvons lire dans la carte Arduino sous forme de valeur analogique. Dans cet exemple, cette valeur contrôle la vitesse à laquelle un voyant clignote. Nous connectons trois fils à la carte Arduino. Le premier va à la masse de l’une des broches extérieures du potentiomètre. La seconde va de 5 volts à l'autre broche externe du potentiomètre. La troisième va de l'entrée analogique 2 à la broche centrale du potentiomètre. En tournant l'axe du potentiomètre, nous modifions la résistance de part et d'autre de l'essuie-glace relié à la broche centrale du potentiomètre. Cela change la "proximité" relative de cette broche à 5 volts et à la terre, nous donnant une entrée analogique différente. Lorsque l'arbre est complètement tourné dans un sens, il y a 0 volt allant à la broche et nous lisons 0. Lorsque l'arbre est tourné à fond dans l'autre sens, il y a 5 volts allant à la broche et nous lisons 1023. Entre les deux, analogRead () renvoie un nombre compris entre 0 et 1023, proportionnel à la quantité de tension appliquée à la broche.



348