Prochaine révision | Révision précédente |
microc:arduino:esnumeriques [2023/08/10 18:16] – créée - modification externe 127.0.0.1 | microc:arduino:esnumeriques [2023/08/20 11:03] (Version actuelle) – [3.3 Ecrire un état logique sur une broche] phil |
---|
{{ :arduino:arduino.png?nolink&100|}} | {{ :arduino:arduino.png?nolink&100|}} |
| |
==== 1. Généralités ==== | |
//« Dans un système à base de **microcontrôleur**, on appelle **entrées-sorties** les échanges d'informations entre le processeur et les périphériques qui lui sont associés. De la sorte, le système peut réagir à des modifications de son environnement, voire le contrôler. Elles sont parfois désignées par l'acronyme **I**/**O**, issu de l'anglais **Input**/**Output** ou encore **E**/**S** pour **entrées**/**sorties**. »// Source Wikipédia | |
| |
Pour éviter de faire référence à des valeurs électriques (tension ou intensité), on définit souvent l’état d’un signal numérique en utilisant la logique booléenne. | |
* **true** (« **1** » logique) correspondra par exemple à **5V** ou **3,3V** | |
* **false** (« **0** » logique) correspondra à **0V**. | |
| |
<callout type="primary" icon="true">Le nombre de broches d’un microcontrôleur est limité. Il est fréquent d’avoir plusieurs fonctionnalités sur une même broche.</callout> | |
| |
<callout type="warning" icon="true">Une sortie numérique conserve la dernière information qui lui a été envoyée. Elle se comporte comme une **mémoire**.</callout> | |
| |
---- | |
| |
==== 2. Les entrées/sorties numériques de la carte Arduino Uno ==== | |
Les entrées, sorties numériques sont numérotées entre **0** et **13** sur la carte. Certaines peuvent assurer plusieurs fonctions. Le symbole **~** identifie les broches capables de délivrer un signal PWM. | |
| |
{{ :arduino:esnum.png?nolink |}} | |
| |
<callout type="primary" icon="true">Le **schéma** de la carte est téléchargeable <html><a href="http://marcusjenkins.com/wp-content/uploads/2014/06/ARDUINO_V2.pdf" target="_blank">ici</a></html>.</callout> | |
==== 3. Programmation ==== | ==== 3. Programmation ==== |
| |
=== 3.1 Configurer une broche en entrée ou en sortie === | |
**Source** : <html><a href="https://www.arduino.cc/reference/en/language/functions/digital-io/pinmode/" target="_blank">pinMode()</a></html> sur le site <html><a href="https://www.arduino.cc/" target="_blank">arduino.cc</a></html> | |
| |
<callout type="tip" icon="true">**Configurer** une broche signifie qu'on précise qu'elle doit se comporter soit comme une entrée d'information, soit comme une sortie d'information.</callout> | |
| |
__Exemple__ | |
| |
<code cpp *.cpp> | |
// Sauf exception la configuration d'une broche se fait dans la fonction setup() | |
void setup() { | |
pinMode(13,OUTPUT); // la broche 13 se comporte comme une sortie | |
pinMode(12,INPUT); // la broche 12 se comporte comme une entrée, | |
// optionnel si la broche n'a pas été préalablement | |
// configurée en sortie, car c'est le mode par défaut | |
} | |
</code> | |
| |
=== 3.2 Lire l'état logique présent sur une broche === | |
**Source** : <html><a href="https://www.arduino.cc/reference/en/language/functions/digital-io/digitalread/" target="_blank">digitalRead()</a></html> sur le site <html><a href="https://www.arduino.cc/" target="_blank">arduino.cc</a></html> | |
| |
<callout type="tip" icon="true">La valeur lue sur une broche configurée en entrée doit être sauvegardée dans une **variable**.</callout> | |
| |
__Exemple__ | |
| |
<code cpp *.cpp> | |
// L'opération de lecture se fait dans la fonction loop(). | |
void loop() { | |
int valeur = digitalRead(12); // l'état logique présent sur la broche 12 est sauvegardé | |
// dans la variable valeur | |
} | |
</code> | |
| |
=== 3.3 Ecrire un état logique sur une broche === | |
**Source** : <html><a href="https://www.arduino.cc/reference/en/language/functions/digital-io/digitalwrite/" target="_blank">digitalWrite()</a></html> sur le site <html><a href="https://www.arduino.cc/" target="_blank">arduino.cc</a></html> | |
| |
<callout type="tip" icon="true">Un état logique **haut(HIGH)** ou **bas(LOW)** peut être écrit sur une broche préalablement configurée en sortie.</callout> | |
| |
__Exemple__ | |
| |
<code cpp *.cpp> | |
void setup() { | |
pinMode(13, OUTPUT); // la broche 13 se comportera comme une sortie | |
} | |
| |
// L'opération d'écriture se fait dans la fonction loop(). | |
void loop() { | |
digitalWrite(13, HIGH); // La broche 13 présente un état logique haut (par exemple 5V) | |
} | |
</code> | |
| |
=== 3.4 Générer un signal PWM === | |
**Source** : <html><a href="https://www.arduino.cc/reference/en/language/functions/analog-io/analogwrite/" target="_blank">analogWrite()</a></html> sur le site <html><a href="https://www.arduino.cc/" target="_blank">arduino.cc</a></html> | |
| |
<callout type="tip" icon="true">Seules les broches identifiées ci-dessous peuvent délivrer un signal PWM.</callout> | |
| |
^ Cartes ^ Broche PWM ^ Fréquence ^ | |
|Uno, Nano, Mini|3, 5, 6, 9, 10, 11|490 Hz (broches 5 et 6: 980 Hz)| | |
| |
__Exemple__ | |
| |
<code cpp *.cpp> | |
void setup() { | |
pinMode(11, OUTPUT); // la broche 11 se comportera comme une sortie | |
} | |
| |
// L'opération d'écriture se fait dans la fonction loop(). | |
void loop() { | |
analogWrite(11, 127); // La broche 11 délivre un signal PWM de fréquence F=490Hz | |
// et de rapport cyclique = 1/2 | |
} | |
</code> | |
| |
=== 3.5 Temporisations === | === 3.5 Temporisations === |