start:arduino:ports
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
start:arduino:ports [2020/12/01 12:06] – gerardadmin | start:arduino:ports [2023/01/27 16:08] (Version actuelle) – modification externe 127.0.0.1 | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
======== Programmation des Ports sur Arduino ======== | ======== Programmation des Ports sur Arduino ======== | ||
+ | |||
+ | |||
+ | {{ : | ||
[[https:// | [[https:// | ||
- | ==== La Doc de réference | + | ===== La Doc de référence |
- | Registres de port | + | ===Registres de port=== |
Les registres de port permettent une manipulation de niveau inférieur et plus rapide des broches d'E / S du microcontrôleur sur une carte Arduino. Les puces utilisées sur la carte Arduino (les ATmega8 et ATmega168 ) ont trois ports: | Les registres de port permettent une manipulation de niveau inférieur et plus rapide des broches d'E / S du microcontrôleur sur une carte Arduino. Les puces utilisées sur la carte Arduino (les ATmega8 et ATmega168 ) ont trois ports: | ||
Ligne 43: | Ligne 46: | ||
Vous devez cependant noter que les broches 0 et 1 sont utilisées pour les communications série pour la programmation et le débogage de l' | Vous devez cependant noter que les broches 0 et 1 sont utilisées pour les communications série pour la programmation et le débogage de l' | ||
- | DDRD est le registre de direction pour le port D (broches numériques Arduino 0-7). Les bits de ce registre contrôlent si les broches de PORTD sont configurées comme entrées ou sorties, par exemple: | + | |
+ | | ||
- | DDRD = B11111110; // définit les broches Arduino 1 à 7 comme sorties, la broche 0 comme entrée | + | |
- | DDRD = DDRD | B11111100; // c'est plus sûr car il définit les broches 2 à 7 comme sorties | + | DDRD = DDRD | B11111100; // c'est plus sûr car il définit les broches 2 à 7 comme sorties |
// sans changer la valeur des broches 0 & 1, qui sont RX & TX | // sans changer la valeur des broches 0 & 1, qui sont RX & TX | ||
//See the bitwise operators reference pages and Le didacticiel Bitmath dans le Playground | //See the bitwise operators reference pages and Le didacticiel Bitmath dans le Playground | ||
- | PORTD est le registre de l' | + | |
- | PORTD = B10101000; // sets digital pins 7,5,3 HIGH | + | |
Vous ne verrez cependant que 5 volts sur ces broches si les broches ont été définies comme sorties en utilisant le registre DDRD ou avec pinMode (). | Vous ne verrez cependant que 5 volts sur ces broches si les broches ont été définies comme sorties en utilisant le registre DDRD ou avec pinMode (). | ||
Ligne 64: | Ligne 68: | ||
De manière générale, faire ce genre de chose n'est pas une bonne idée. Pourquoi pas? Voici quelques raisons: | De manière générale, faire ce genre de chose n'est pas une bonne idée. Pourquoi pas? Voici quelques raisons: | ||
- | | + | Le code est beaucoup plus difficile à déboguer et à maintenir, et il est beaucoup plus difficile à comprendre pour les autres. Le processeur ne prend que quelques microsecondes pour exécuter le code, mais cela peut vous prendre des heures pour comprendre pourquoi cela ne fonctionne pas correctement et le réparer! Votre temps est précieux, non? Mais le temps de l' |
- | Le code est moins portable. Si vous utilisez digitalRead () et digitalWrite (), il est beaucoup plus facile d' | + | |
- | Il est beaucoup plus facile de provoquer des dysfonctionnements involontaires avec un accès direct au port. Remarquez comment la ligne DDRD = B11111110; ci-dessus mentionne qu'il doit laisser la broche 0 comme broche d' | + | Le code est moins portable. Si vous utilisez digitalRead () et digitalWrite (), il est beaucoup plus facile d' |
+ | |||
+ | Il est beaucoup plus facile de provoquer des dysfonctionnements involontaires avec un accès direct au port. Remarquez comment la ligne DDRD = B11111110; ci-dessus mentionne qu'il doit laisser la broche 0 comme broche d' | ||
Alors vous vous dites peut-être, génial, pourquoi aurais-je envie d' | Alors vous vous dites peut-être, génial, pourquoi aurais-je envie d' | ||
- | | + | Vous devrez peut-être pouvoir activer et désactiver les broches très rapidement, c' |
- | Parfois, vous devrez peut-être définir plusieurs broches de sortie exactement en même temps. Appel digitalWrite (10, HIGH); suivi de digitalWrite (11, HIGH); fera passer la broche 10 à l' | + | |
- | Si vous manquez de mémoire programme, vous pouvez utiliser ces astuces pour réduire la taille de votre code. Il faut beaucoup moins d' | + | Parfois, vous devrez peut-être définir plusieurs broches de sortie exactement en même temps. Appel digitalWrite (10, HIGH); suivi de digitalWrite (11, HIGH); fera passer la broche 10 à l' |
+ | |||
+ | Si vous manquez de mémoire programme, vous pouvez utiliser ces astuces pour réduire la taille de votre code. Il faut beaucoup moins d' | ||
+ | |||
+ | |||
+ | ===== Exemple de programme Arduino UNO pour faire clignoter 2 LEDS ===== | ||
+ | |||
+ | 2 LEDS branchées sur les broches: | ||
+ | |||
+ | <code c ports_Leds.ino> | ||
+ | |||
+ | void setup() { | ||
+ | |||
+ | // On positionne en sortie OUTPUT | ||
+ | // On part de la droite vers la gauche pour lire les n° des bits donc des broches. | ||
+ | DDRD = B11111110; // ATTENTION le bit 0 = 0 et le bit 1 = 1 sinon pas de liaison série ....!!! | ||
+ | // Le B majuscule en début de séquence indique un nombre Binaire | ||
+ | } | ||
+ | |||
+ | void loop(){ | ||
+ | |||
+ | // on met du 5 volts ou à 1 ( HIGH) les broches 3 et 7 on allume les 2 LEDS | ||
+ | PORTD = B10001000; // toujours | ||
+ | | ||
+ | PORTD = B00000000; // On eteind les 2 LEDS | ||
+ | | ||
+ | |||
+ | } | ||
+ | |||
+ | </ | ||
+ | |||
+ | === Autres Methodes === | ||
+ | |||
+ | *bitRead(x, n); bitRead() permet de lire l' | ||
+ | *bitWrite(x, | ||
+ | *bitSet(x, n); bitSet() permet de mettre un bit à " | ||
+ | *bitClear(x, | ||
+ | *bit(n); | ||
+ | |||
+ | *https:// |
/home/chanteri/www/fablab37110/data/attic/start/arduino/ports.1606820768.txt.gz · Dernière modification : 2023/01/27 16:08 (modification externe)