start:arduino:ports
Différences
Ci-dessous, les différences entre deux révisions de la page.
Prochaine révision | Révision précédente | ||
start:arduino:ports [2020/12/01 12:05] – créée 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éférence Arduino ===== | ||
+ | |||
+ | ===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: | ||
+ | |||
+ | B (broche numérique 8 à 13) | ||
+ | C (broches d' | ||
+ | D (broches numériques 0 à 7) | ||
+ | |||
+ | Chaque port est contrôlé par trois registres, qui sont également des variables définies dans le langage Arduino. Le registre DDR détermine si la broche est une entrée ou une sortie. Le registre PORT contrôle si la broche est HIGH ou LOW, et le registre PIN lit l' | ||
+ | |||
+ | Les registres DDR et PORT peuvent être à la fois écrits et lus. Les registres PIN correspondent à l' | ||
+ | |||
+ | PORTD mappe sur les broches numériques Arduino 0 à 7 | ||
+ | |||
+ | DDRD - Le registre de direction des données du port D - lecture / écriture | ||
+ | PORTD - Le registre de données du port D - lecture / écriture | ||
+ | PIND - Le registre des broches d' | ||
+ | |||
+ | PORTB correspond aux broches numériques Arduino 8 à 13 Les deux bits hauts (6 et 7) correspondent aux broches en cristal et ne sont pas utilisables | ||
+ | |||
+ | DDRB - Le registre de direction des données du port B - lecture / écriture | ||
+ | PORTB - Le registre de données du port B - lecture / écriture | ||
+ | PINB - Le registre des broches d' | ||
+ | |||
+ | PORTC correspond aux broches analogiques Arduino 0 à 5. Les broches 6 et 7 ne sont accessibles que sur l' | ||
+ | |||
+ | DDRC - Le registre de direction des données du port C - lecture / écriture | ||
+ | PORTC - Le registre de données du port C - lecture / écriture | ||
+ | PINC - Le registre des broches d' | ||
+ | |||
+ | Chaque bit de ces registres correspond à une seule broche; Par exemple, le bit faible de DDRB, PORTB et PINB fait référence à la broche PB0 (broche numérique 8). Pour un mappage complet des numéros de broches Arduino aux ports et aux bits, consultez le diagramme de votre puce: ATmega8 , ATmega168 . (Notez que certains bits d'un port peuvent être utilisés pour des choses autres que les entrées / sorties; faites attention de ne pas changer les valeurs des bits de registre qui leur correspondent.) | ||
+ | Exemples | ||
+ | |||
+ | En se référant à la carte des broches ci-dessus, les registres PortD contrôlent les broches numériques Arduino 0 à 7. | ||
+ | |||
+ | 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 | ||
+ | // 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 | ||
+ | |||
+ | 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 (). | ||
+ | |||
+ | PIND est la variable du registre d' | ||
+ | Pourquoi utiliser la manipulation de port? | ||
+ | |||
+ | À partir du didacticiel Bitmath | ||
+ | |||
+ | 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' | ||
+ | |||
+ | 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' | ||
+ | |||
+ | |||
+ | ===== 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.1606820717.txt.gz · Dernière modification : 2023/01/27 16:08 (modification externe)