0% ont trouvé ce document utile (0 vote)
25 vues9 pages

Contrôle de servomoteur avec Arduino

Transféré par

Coop Zkuberveit
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
25 vues9 pages

Contrôle de servomoteur avec Arduino

Transféré par

Coop Zkuberveit
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

MICROCONTROLLEURS

TP 2
Marin Iuliana
Contrôler le servomoteur avec
Arduino Uno et bouton
poussoir
• Vous aurez besoin de:
• Arduino Uno R3
• Breadboard
• Leds
• Résistances
• Fils
• Boutons poussoir
• Micro servomoteur

• Ce mini servomoteur est spécialement conçu pour les


applications à faible puissance telles que les robots ou les
jouets télécommandés. Par exemple, vous pouvez l'utiliser
sur une voiture pour faire tourner les roues avant.
2
Ce que vous ferez

• Connectez deux boutons poussoir à Arduino.


• Remonter
• Fonction digitalread().
• Contrôlez enfin le servomoteur avec les boutons poussoir.

• Nous lisons d'abord l'état du bouton-poussoir à l'aide de la


fonction digitalRead(). Dans ce projet, nous utilisons
l'instruction if else pour contrôler le servomoteur en
fonction de la condition. Arduino Uno surveille en
permanence l'état du bouton-poussoir. Lorsque l'état du
bouton-poussoir devient élevé, Arduino écrit le servo à 180
degrés.

3
Le code
#include<Servo.h>
int pos = 90;
int pin4 = 4;
if (pos == 180) {
int pin3 = 3;
[Link]("Reached top end ");
int LedHi = 5;
digitalWrite(LedHi, HIGH);
int LedLow = 6;
}
Servo servo1;
delay(10);
}
void setup() {
pinMode(LedHi, OUTPUT);
while (digitalRead(pin4) == HIGH && pos > 0) {
pinMode(LedLow, OUTPUT);
digitalWrite(LedHi, LOW);
pinMode(pin4, INPUT);
pos--;
pinMode(pin3, INPUT);
[Link](pos);
[Link](9600);
[Link]("Degrees rotation= ");
[Link](9);
[Link](pos);
}
if (pos == 0) {
void loop() {
[Link]("Reached low end ");
while (digitalRead(pin3) == HIGH && pos < 180) {
digitalWrite(LedLow, HIGH);
digitalWrite(LedLow, LOW);
}
pos++;
delay(10);
[Link](pos);
}
[Link]("Degrees rotation= ");
}
[Link](pos); 4
3 canaux analogiques
• [Link]
2/editel?sharecode=RbwDCesGQPjdFo0o6NqB5ra92x_YBibbRKCKpuGg-HA
• Vous aurez besoin de:
• Arduino Uno R3
• Breadboard
• Résistance
• Fils
• 3 x Potentiomètre
• Potentiomètre 10K ohms
• Ecran LED

• Un potentiomètre (appelé familièrement potard) est un type de résistance variable à


trois bornes, dont une est reliée à un curseur se déplaçant sur une piste résistante
terminée par les deux autres bornes.

5
5
3 canaux analogiques – Code (1)
// include the library code:
#include <LiquidCrystal.h>

//static char scrollMessage[] = {"Salut, FILS!"};


//int position = 0;
int a0 = 0; //declare values
int a1 = 1;
int a2 = 2;

// initialize the library with the numbers of the interface pins


LiquidCrystal lcd(7, 8, 9, 10, 11, 12);

void setup() {
// set up the LCD's number of columns and rows:
[Link](16, 2);
// Print a message to the LCD.
[Link](" A0 A1 A2 ");
[Link](9600); // begin serial communication
} 6
6
3 canaux analogiques – Code (2)
void loop() {
// set the cursor to column 0, line 1
// (note: line 1 is the second row, since counting begins with 0):
[Link](0, 1);
//removed scrolling text here
int val0 = analogRead (a0);
int val1 = analogRead (a1);
int val2 = analogRead (a2);
float volt0 = 5.*val0/1023; Remarques
float volt1 = 5.*val1/1023; • En tournant l'arbre du potentiomètre, nous modifions la quantité de
float volt2 = 5.*val2/1023; résistance de chaque côté de l'essuie-glace qui est connecté à la
[Link](volt0); //print bottom line of LCD broche centrale du potentiomètre.
• Cela change la "proximité" relative de cette broche à 5 volts et à la
[Link](" ");
masse, nous donnant une entrée analogique différente.
[Link](volt1); • Lorsque l'arbre est tourné complètement dans un sens, il y a 0 volts
[Link](" "); allant à la broche, et nous lisons 0.
[Link]( volt2); • Lorsque l'arbre est tourné complètement dans l'autre sens, il y a 5
volts allant à la broche et nous lisons 1023.
• Entre les deux, analogRead() renvoie un nombre entre 0 et 1023 qui
est proportionnel à la quantité de tension appliquée à la broche. 7
7
3 canaux analogiques – Code (3)
[Link](val0);
[Link](",");
[Link](volt0, 2); // display volt to 2 decimal
[Link](",");
[Link]("V");
[Link](","); //create a break in the text
[Link](val1);
[Link](",");
[Link](volt1, 2);
[Link](",");
[Link]("V");
[Link](",");
[Link](val2);
[Link](",");
[Link](volt2, 2);
[Link](",");
[Link]("V");
delay(40); // this is necessary to run the simulation at full speed
} 8
8
Exercices
[Link] le premier exemple afin d'écrire dans un fichier
les rotations du moteur exprimées en degrés, ainsi que sa
direction.
[Link] un écran au premier exemple pour y voir la
rotation exprimée en degrés.

Vous aimerez peut-être aussi