7ARN360
Contents (hide)
Thomas Ouellet FREDERICKS
Courriel : thomas-ouellet_fredericks à uqac.ca
Les blocs :
void setup() { } // BLOC D'INITIALISATION. void loop() { } // BLOC D'EXECUTION EN BOUCLE.
Le mode d'une broche :
pinMode( #broche , OUTPUT); // Configurer la broche en tant que sortie. // c'est a dire qu'elle peut controler le flux de courant. pinMode( #broche , INPUT); // Configurer la broche en tant qu'entree. // C'est a dire qu'elle peut detecter le flux de courant. // C'est le mode par defaut.
Activer le «pullup» d'une broche(ce qui est nécessaire pour certain circuits):
// Activer le pullup de la broche, ce qui est necessaire pour certain circuits. pullup(#broche);
Contrôler la tension du courant d'une broche en mode OUTPUT (sortie) :
// Envoyer 5V a une broche (la broche doit etre en mode OUTPUT) : digitalWrite( #broche , HIGH); // Envoyer 0V a une broche (la broche doit etre en mode OUTPUT) : digitalWrite( #broche , LOW);
Lire l'état d'une broche en mode INPUT (entrée) :
// Lire l'etat d'une broche en mode INPUT : digitalRead( #broche); // Envoyer 0V a une broche (la broche doit etre en mode OUTPUT) : digitalWrite( #broche , LOW);
Contrôler le temps :
// Bloquer le code pendant x millisecondes : delay(x);
«debug_led» :
/* DESCRIPTION Allumer et eteindre la DEL de debogage selon un intervalle fixe de 1000 ms. */ // DEBUG_LED // Bloc de code qui permet d'identifier DEBUG_LED, // i.e. la broche qui correspond a la DEL de debogage. // Pour Arduino, DEBUG_LED correspond a la broche 13. // Pour Wiring, DEBUG_LED est identifie par WLED. #if defined(ARDUINO) #define DEBUG_LED 13 #else #define DEBUG_LED WLED #endif // BLOC D'INITIALISATION. void setup() { // Configurer la broche DEBUG_LED en tant que sortie, // c'est a dire qu'elle peut controler le flux de courant. pinMode(DEBUG_LED, OUTPUT); } // BLOCK D'EXECUTION. void loop() { // Envoyer 5V (ce qui allume la DEL) : digitalWrite(DEBUG_LED, HIGH); // Bloquer le code pendant 1 seconde (1000 ms) : delay(1000); // Envoyer 0V (ce qui eteint la DEL) : digitalWrite(DEBUG_LED, LOW); // Bloquer le code pendant 1 seconde (1000 ms) : delay(1000); }
Nous branchons une DEL et sa résistance à la broche 7. Nous devons remplacer toutes les mentions de «DEBUG_LED» par le numéro de la broche qui est 7.
/* DESCRIPTION =========== Allumer et eteindre une DEL branchee a la broche 7 selon un intervalle fixe de 1000 ms. CIRCUIT =========== Broche 7 <-> resistance 150 ohms <-> DEL <-> GND */ // BLOC D'INITIALISATION. void setup() { // Configurer la broche 7 en tant que sortie, // c'est a dire qu'elle peut controler le flux de courant. pinMode(7, OUTPUT); } // BLOCK D'EXECUTION. void loop() { // Envoyer 5V (ce qui allume la DEL) : digitalWrite(7, HIGH); // Bloquer le code pendant 1 seconde (1000 ms) : delay(1000); // Envoyer 0V (ce qui eteint la DEL) : digitalWrite(7, LOW); // Bloquer le code pendant 1 seconde (1000 ms) : delay(1000); }
/* DESCRIPTION =========== Allumer et eteindre un relais DFRobot qui est branche a la broche 8 selon un intervalle fixe de 1000 ms. CIRCUIT =========== Broche 8 <-> D de DFRobot Relay Broche GND <-> GND du DFRobot Relay Broche 5V <-> VCC du DFRobot Relay */ // BLOC D'INITIALISATION. void setup() { // Configurer la broche 8 en tant que sortie, // c'est a dire qu'elle peut controler le flux de courant. pinMode(8, OUTPUT); } // BLOCK D'EXECUTION. void loop() { // Envoyer 5V (ce qui active le relais) : digitalWrite(8, HIGH); // Bloquer le code pendant 1 seconde (1000 ms) : delay(1000); // Envoyer 0V (ce qui desactive la DEL) : digitalWrite(8, LOW); // Bloquer le code pendant 1 seconde (1000 ms) : delay(1000); }
/* DESCRIPTION =========== Allumer et eteindre la DEL de debogage selon l'etat d'un interrupteur CIRCUIT ======= Broche 9 <-> fil dénudé GND <-> fil dénudé */ // DEBUG_LED // Bloc de code qui permet d'identifier DEBUG_LED, // i.e. la broche qui correspond a la DEL de debogage. // Pour Arduino, DEBUG_LED correspond a la broche 13. // Pour Wiring, DEBUG_LED est identifie par WLED. #if defined(WIRING) int DEBUG_LED = WLED; #else int DEBUG_LED = 13; #endif // BLOC D'INITIALISATION. void setup() { // Configurer la broche DEBUG_LED en tant que sortie, // c'est a dire qu'elle peut controler le flux de courant. pinMode(DEBUG_LED, OUTPUT); // Configurer la broche 9 en tant qu'entree. // C'est a dire qu'elle peut detecter le flux de courant. pinMode(9, INPUT); // Activer le pullup de la broche 9, // ce qui est necessaire pour l'interrupteur pullup(9); } // BLOCK D'EXECUTION. void loop() { // Le "if ... else if" suivant effectue cette operation : // Si la lecture de la broche 9 est LOW, allumer la DEL. // Sinon, si la lecture de la broche 9 est HIGH, eteindre la DEL. if ( digitalRead(9) == LOW ) { // Si la lecture de la broche 9 est LOW digitalWrite(DEBUG_LED,HIGH) ; // allumer la DEL. } else if ( digitalRead(9) == HIGH ) { // Sinon, si la lecture de la broche 9 est HIGH digitalWrite(DEBUG_LED,LOW) ; // eteindre la DEL. } }
/* DESCRIPTION =========== Controler un moteur branche a un DFRobot Dual H-Bridge. CIRCUIT =========== Broche 7 <-> E1 du DFRobot Dual H-Bridge Broche 6 <-> M1 du DFRobot Dual H-Bridge Broche GND <-> GND du DFRobot Relay Broche 5V <-> VD du DFRobot Relay Brancher un moteur aux bornes M1+ et M1- du DFRobot Dual H-Bridge Alimenter le DFRobot Dual H-Bridge avec une alimentation appropriee */ // BLOC D'INITIALISATION. void setup() { // Configurer les broche 7 et 8 en tant que sorties, // pour pouvoir y controler le flux de courant. pinMode(7, OUTPUT); pinMode(6, OUTPUT); } // BLOCK D'EXECUTION. void loop() { // Envoyer 5V a la broche 7 (E1) pour activer le moteur. // Envoyer 5V a la broche 6 (M1) pour que le moteur tourne dans une direction. digitalWrite(7, HIGH); digitalWrite(6, HIGH); // Bloquer le code pendant 1 seconde (1000 ms) : delay(1000); // Envoyer 5V a la broche 7 (E1) pour activer le moteur. // Envoyer 0V a la broche 6 (M1) pour que le moteur tourne dans l'autre direction. digitalWrite(7, HIGH); digitalWrite(6, LOW); // Bloquer le code pendant 1 seconde (1000 ms) : delay(1000); // Envoyer 0V a la broche 7 (E1) pour desactiver le moteur. digitalWrite(7, LOW); // Bloquer le code pendant 1 seconde (1000 ms) : delay(1000); }
// BLOC D'INITIALISATION. void setup() { // CONFIGURER L'INTERRUPTEUR // Configurer la broche 9 en tant qu'entree. // C'est a dire qu'elle peut detecter le flux de courant. pinMode(9, INPUT); // Activer le pullup de la broche 9, // ce qui est necessaire pour l'interrupteur pullup(9); // CONFIGURER LE MOTEUR // Configurer les broche 6 et 7 en tant que sorties, // pour pouvoir y controler le flux de courant. pinMode(7, OUTPUT); pinMode(6, OUTPUT); } // BLOCK D'EXECUTION. void loop() { // Le "if ... else if" suivant effectue cette operation : // Si la lecture de la broche 9 est LOW, faire tourner le moteur dans un sens. // Sinon, si la lecture de la broche 9 est HIGH, faire tourner le moteur dans l'autre sens. if ( digitalRead(9) == LOW ) { // Si la lecture de la broche 9 est LOW digitalWrite(6, HIGH); digitalWrite(7, HIGH); } else if ( digitalRead(9) == HIGH ) { // Sinon, si la lecture de la broche 9 est HIGH digitalWrite(6, HIGH); digitalWrite(7, LOW); } }
Extrait pour effectuer l'initialisation :
// Configurer la broche BROCHE_PIR en tant qu'entree. // C'est a dire qu'elle peut detecter le flux de courant. pinMode(BROCHE_PIR,INPUT);
Extrait pour effectuer une lecture :
// Lire l'etat d'une broche en mode INPUT : int lecturePIR = digitalRead(BROCHE_PIR);
Exemple ; la DEBUG_LED s'allume si du mouvement est détecté par le PIR :
int BROCHE_PIR = 10; int DEBUG_LED = 15; void setup() { // Configurer la broche BROCHE_PIR en tant qu'entree. // C'est a dire qu'elle peut detecter le flux de courant. pinMode(BROCHE_PIR,INPUT); // Configurer la broche DEBUG_LED en tant que sortie, // c'est a dire qu'elle peut controler le flux de courant. pinMode(DEBUG_LED, OUTPUT); } void loop() { // Lire l'etat d'une broche en mode INPUT : int lecturePIR = digitalRead(BROCHE_PIR); // Le "if ... else if" suivant effectue cette operation : // Si lecturePIR est LOW, allumer la DEL. // Sinon, si lecturePIR est HIGH, eteindre la DEL. if ( lecturePIR == LOW ) { // Si lecturePIR est LOW digitalWrite(DEBUG_LED,HIGH) ; // allumer la DEL. } else if ( lecturePIR == HIGH ) { // Sinon, si lecturePIR est HIGH digitalWrite(DEBUG_LED,LOW) ; // eteindre la DEL. } }
Le capteur de lumière est branché du côté de l'analogique et ne requiert aucune initialisation autre.
Extrait pour effectuer une lecture :
// Effectuer une lecture analogique d'une broche analogique : int lectureLumiere = analogRead(BROCHE_LUMIERE);
À noter que la lecture du capteur de lumière rapporte une valeur entre 0 (noir total), 100 (lumière ambiante UQAC) et 1000 (lumière forte).
Exemple ; la DEBUG_LED s'allume la lecture de lumière dépasse 100 :
int BROCHE_LUMIERE = 0; int DEBUG_LED = 15; void setup() { // Configurer la broche DEBUG_LED en tant que sortie, // c'est a dire qu'elle peut controler le flux de courant. pinMode(DEBUG_LED, OUTPUT); } void loop() { // Effectuer une lecture analogique d'une broche analogique : int lectureLumiere = analogRead(BROCHE_LUMIERE); // Le "if ... else if" suivant effectue cette operation : // Si lectureLumiere est plus grand que 100, allumer la DEL. // Sinon, si lectureLumiere est plus petit ou egal a 100, eteindre la DEL. if ( lectureLumiere > 100 ) { // Si lectureLumiere est plus grand que 100 digitalWrite(DEBUG_LED,HIGH) ; // allumer la DEL. } else if ( lectureLumiere <= 100 ) { // Sinon, si lectureLumiere est plus petit ou egal a 100 digitalWrite(DEBUG_LED,LOW) ; // eteindre la DEL. } }
Le capteur de distance est branché du côté de l'analogique et ne requiert aucune initialisation autre.
Extrait pour effectuer une lecture :
// Effectuer une lecture analogique d'une broche analogique : int lectureLumiere = analogRead(BROCHE_DISTANCE);
À noter que la lecture du capteur de distance rapporte une valeur entre 50 (loin) et 520 (proche).
Exemple ; la DEBUG_LED s'allume la lecture de distance dépasse 256 :
int BROCHE_DISTANCE = 1; int DEBUG_LED = 15; void setup() { // Configurer la broche DEBUG_LED en tant que sortie, // c'est a dire qu'elle peut controler le flux de courant. pinMode(DEBUG_LED, OUTPUT); } void loop() { // Effectuer une lecture analogique d'une broche analogique : int lectureDistance = analogRead(BROCHE_DISTANCE); // Le "if ... else if" suivant effectue cette operation : // Si lectureDistance est plus grand que 256, allumer la DEL. // Sinon, si lectureDistance est plus petit ou egal a 256, eteindre la DEL. if ( lectureDistance > 256 ) { // Si lectureDistance est plus grand que 256 digitalWrite(DEBUG_LED,HIGH) ; // allumer la DEL. } else if ( lectureDistance <= 256 ) { // Sinon, si lectureDistance est plus petit ou egal a 256 digitalWrite(DEBUG_LED,LOW) ; // eteindre la DEL. } }
Importation de la logithèque (à faire une seule fois dans le code) :
#include <Servo.h>
Variables globales :
Servo servo1; // Une instance du servomoteur
Setup :
servo1.attach(BROCHE_SERVO); // Lier l'instance a une broche
Loop :
servo1.write(90); // Determiner l'angle du moteur
Exemple ; le moteur alterne entre trois angles à chaque seconde:
#include "Servo.h" Servo servo1; // Une instance du servomoteur void setup() { servo1.attach(11); // Lier l'instance a une broche; } void loop() { // Determiner l'angle du moteur a 90 degres myservo.write(90); delay(1000); // Determiner l'angle du moteur a 120 degres myservo.write(120); delay(1000); // Determiner l'angle du moteur a 30 degres myservo.write(30); }
Réaliser une page Web qui contient les éléments suivants :
Voici quelques exemples tirés d'un autre cours : http://wiki.t-o-f.info/EDM4640/Projets