TP 1: Micromoteurs
Essaie 1 : Commander un Servo moteur avec un capteur ultrason
(barrière levante)
Travail à faire :
1. Commander le matériel
2. Réaliser le câblage
3. Saisir le programme
4. Tester le programme (Vérifier)
5. Mise en route
➢ Connectez la carte à un port USB
➢ TOOLS > Board (Choix de la carte)
➢ TOOLS > Port (Choisissez le port)
6. Télé verser le programme (Upload)
PROGRAMME:
#include <Servo.h>
const int trig = 11;
const int echo = 10;
const int ledVert = 3;
const int ledRouge = 2;
Servo barriere;
long duration, distance;
void setup() {
[Link](9600);
pinMode(trig, OUTPUT);
pinMode(echo, INPUT);
pinMode(ledVert, OUTPUT);
pinMode(ledRouge, OUTPUT);
[Link](5);
}
void loop() {
digitalWrite(trig, LOW);
delayMicroseconds(2);
1
digitalWrite(trig, HIGH);
delayMicroseconds(10);
digitalWrite(trig, LOW);
// Mesure de la durée du signal ultrasonique
duration = pulseIn(echo, HIGH);
// Conversion de la durée en distance
distance = (duration * 0.034) / 2;
[Link]("Distance : ");
[Link](distance);
[Link](" cm");
if (distance < 10) {
[Link](90);
digitalWrite(ledVert, HIGH);
digitalWrite(ledRouge, LOW);
[Link]("Barriere LEVER ");
delay(5000);
} else {
[Link](0);
digitalWrite(ledVert, LOW);
digitalWrite(ledRouge, HIGH);
}
delay(150);
}
2
Schémas de câblage :
Servomoteur
Led verte Led Rouge
S + - + - + -
GND
5V
3
Essaie 2 : MOTEUR PAS A PAS (sens horaire et antihoraire)
PROGRAMME:
#include <Stepper.h>
const int stepsPerRevolution = 200;
Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11);
void setup() {
[Link](9600);
[Link](60);
}
void loop() {
// Faire tourner le moteur dans le sens horaire
for (int angle = 0; angle <= 360; angle += 10) {
int steps = angle * stepsPerRevolution / 360;
[Link](steps);
[Link]("Angle: ");
[Link](angle);
[Link](" deg");
delay(500);
}
}
4
Schémas de câblage :
IN1
IN2
IN3
IN4
IN5
IN6
IN7
- +
<
5
TP 2: Capteurs
Essaie 1 : Contrôler une LED avec une photorésistance
Travail à faire :
1. Commander le matériel
2. Réaliser le câblage
3. Saisir le programme
4. Tester le programme (Vérifier)
5. Mise en route
➢ Connectez la carte à un port USB
➢ TOOLS > Board (Choix de la carte)
➢ TOOLS > Port (Choisissez le port)
6. Télé verser le programme (Upload)
PROGRAMME:
int PhotoResistance = A0;
int LED = 3;
void setup() {
pinMode(PhotoResistance, INPUT);
pinMode(LED, OUTPUT);
[Link](9600);
}
void loop() {
int valeur = analogRead(PhotoResistance);
[Link]("Valeur : ");
[Link](valeur);
if (valeur < 200) {
digitalWrite(LED, HIGH);
}
else {
digitalWrite(LED, LOW);
}
delay(500);
}
6
Schémas de câblage :
5V GND S
7
Essaie 2 : Détecteur de mouvements
PROGRAMME:
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
int Mouve = 2;
int LED = 4;
int buzzer = 5;
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
[Link](9600);
pinMode(Mouve, INPUT);
pinMode(LED, OUTPUT);
pinMode(buzzer, OUTPUT);
[Link]();
[Link]();
[Link]();
}
void loop() {
int EtatMouve = digitalRead(Mouve);
if (EtatMouve == HIGH) {
// Afficher le message de détection de mouvement sur l'écran LCD
[Link]();
[Link](0, 0);
[Link]("Mouvement");
[Link](0, 1);
[Link]("detecte !");
// Afficher le message dans le moniteur série
[Link]("Mouvement detecte !");
8
digitalWrite(LED,HIGH);
tone(buzzer, 1000);
} else {
// Afficher le message d'absence de mouvement sur l'écran LCD
[Link]();
[Link](0, 0);
[Link]("Pas de");
[Link](0, 1);
[Link]("mouvement");
// Afficher le message dans le moniteur série
[Link]("Pas de mouvement");
digitalWrite(LED,LOW);
noTone(buzzer);
}
delay(500);
}
9
Schémas de câblage :
Buzzer
LED
+ -
10
Essaie 3 : Capteur de température et d’humidité
PROGRAMME :
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <DHT.h>
#define DHTTYPE DHT11
#define DHTPIN 2
DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
[Link](9600);
[Link]();
[Link]();
[Link]();
// Afficher un message de demarage
[Link](0, 0);
[Link]("DHT11 Sensor");
[Link](0, 1);
[Link]("Initializing...");
delay(2000);
}
void loop() {
float h = [Link]();
float t = [Link]();
// Afficher les valeurs sur le moniteur série
[Link]("Humidite: ");
11
[Link](h);
[Link](" %\t");
[Link]("Temperature: ");
[Link](t);
[Link](" *C ");
// Afficher les valeurs sur l'écran LCD
[Link]();
[Link](0, 0);
[Link]("Humid: ");
[Link](h);
[Link](" %");
[Link](0, 1);
[Link]("Temp: ");
[Link](t);
[Link](" C");
delay(2000);
}
12
Schémas de câblage :
13
TP 3: Electronique embarqué
Essaie1
Travail à faire :
1. Commander le matériel
2. Réaliser le câblage
3. Saisir le programme
4. Tester le programme (Vérifier)
5. Mise en route
➢ Connectez la carte à un port USB
➢ TOOLS > Board (Choix de la carte)
➢ TOOLS > Port (Choisissez le port)
6. Télé verser le programme (Upload)
PROGRAMME:
int IN1 = 8;
int IN2 = 9;
int IN3 = 10;
int IN4 = 11;
int LedVerte = 4;
int LedRouge = 5;
int LedBlanche = 6;
void setup() {
[Link](9600);
pinMode(IN1,OUTPUT);
pinMode(IN2,OUTPUT);
pinMode(IN3,OUTPUT);
pinMode(IN4,OUTPUT);
pinMode(LedVerte,OUTPUT);
pinMode(LedBlanche,OUTPUT);
pinMode(LedRouge,OUTPUT);
}
14
void loop() {
// MOTEUR Avancer
digitalWrite(IN1,HIGH);
digitalWrite(IN3,HIGH);
digitalWrite(LedVerte,HIGH);
digitalWrite(LedRouge,LOW);
digitalWrite(LedBlanche,LOW);
delay(5000);
// Arret des moteurs
digitalWrite(IN1,LOW);
digitalWrite(IN2,LOW);
digitalWrite(IN3,LOW);
digitalWrite(IN4,LOW);
digitalWrite(LedRouge,HIGH);
digitalWrite(LedVerte,LOW);
digitalWrite(LedBlanche,LOW);
delay(3000);
// MOTEUR Réculer
digitalWrite(IN4,HIGH);
digitalWrite(IN2,HIGH);
digitalWrite(LedBlanche,HIGH);
digitalWrite(LedVerte,LOW);
digitalWrite(LedRouge,LOW);
delay(5000);
// Arret des moteurs
digitalWrite(IN1,LOW);
digitalWrite(IN2,LOW);
digitalWrite(IN3,LOW);
digitalWrite(IN4,LOW);
digitalWrite(LedRouge,HIGH);
15
digitalWrite(LedVerte,LOW);
digitalWrite(LedBlanche,LOW);
delay(3000);
}
Schémas de câblage :
LedRouge
LedBlanche LedVerte
-
+
-
+
+ -
Source
d’allimentation 12V
16
Essaie2 : Robot
#include <Servo.h>
// Définir les broches des moteurs
const int motor1Pin1 = 8;
const int motor1Pin2 = 9;
const int motor2Pin1 = 10;
const int motor2Pin2 = 11;
// Définir les broches du capteur à ultrasons
const int trigPin = 7;
const int echoPin = 6;
// Servo-moteur pour le capteur à ultrasons
Servo ultrasonicServo;
const int servoPin = 2;
// Variables pour la distance
long duration;
int distance;
// Seuil de distance pour éviter les obstacles (en cm)
const int distanceThreshold = 20;
void setup() {
// Configurer les broches des moteurs en sortie
pinMode(motor1Pin1, OUTPUT);
pinMode(motor1Pin2, OUTPUT);
pinMode(motor2Pin1, OUTPUT);
pinMode(motor2Pin2, OUTPUT);
17
// Configurer les broches du capteur à ultrasons
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
// Attacher le servo
[Link](servoPin);
// Initialiser la position du servo au centre
[Link](90);
// Initialiser la communication série
[Link](9600);
}
void loop() {
// Lire la distance devant
[Link](90);
delay(500);
distance = readUltrasonicDistance();
[Link]("Distance avant: ");
[Link](distance);
if (distance > distanceThreshold) {
// Avancer
moveForward();
} else {
// Arrêter
stopCar();
18
// Regarder à gauche
[Link](0);
delay(500);
int distanceLeft = readUltrasonicDistance();
[Link]("Distance gauche: ");
[Link](distanceLeft);
// Regarder à droite
[Link](180);
delay(500);
int distanceRight = readUltrasonicDistance();
[Link]("Distance droite: ");
[Link](distanceRight);
// Choisir la direction avec plus d'espace
if (distanceLeft > distanceRight) {
turnLeft();
} else {
turnRight();
}
}
delay(100);
}
// Fonction pour lire la distance du capteur à ultrasons
int readUltrasonicDistance() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
19
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = duration * 0.034 / 2;
return distance;
}
// Fonctions pour contrôler les moteurs
void moveForward() {
digitalWrite(motor1Pin1, HIGH);
digitalWrite(motor1Pin2, LOW);
digitalWrite(motor2Pin1, HIGH);
digitalWrite(motor2Pin2, LOW);
}
void stopCar() {
digitalWrite(motor1Pin1, LOW);
digitalWrite(motor1Pin2, LOW);
digitalWrite(motor2Pin1, LOW);
digitalWrite(motor2Pin2, LOW);
}
void turnLeft() {
digitalWrite(motor1Pin1, LOW);
digitalWrite(motor1Pin2, HIGH);
digitalWrite(motor2Pin1, HIGH);
digitalWrite(motor2Pin2, LOW);
delay(500);
stopCar();
}
20
void turnRight() {
digitalWrite(motor1Pin1, HIGH);
digitalWrite(motor1Pin2, LOW);
digitalWrite(motor2Pin1, LOW);
digitalWrite(motor2Pin2, HIGH);
delay(500);
stopCar();
}
21