Commande servo-moteur avec deux bouton poussoir
bonjour,
je suis sur un projet pour commander un servo-moteur avec deux boutons poussoir, je m'explique:
- lorsque j'appuie sur un des bouton poussoir le servo-moteur tourne de 180° et quand je relache il revient à la position initiale(0°).
-et lorsque j'appuie sur l'autre bouton poussoir le servo-moteur tourne à -180° et quand je relache il revient à la position initiale (0°).

et voici mon code :
#include <servo.h>
const byte servo_a_angle_min = -1;
const byte servo_a_angle_max = 1;
const byte servo_en_neutre = 0;
const int anglemin = -1750;
const int angleneutre = 0;
const int anglemax = 1750;
servo monservo1;
int vitesse = 0;
int angle = angleneutre;
byte etatservo = servo_en_neutre;
const int pinbouton = 0; /* le bouton est connecté à la broche a0 */
const int pinbouton1 = 1; /* le bouton est connecté à la broche a1 */
const boolean presse = true;
const boolean relache = false;
boolean etatbouton = relache;
const byte aucun_evenement = 0;
const byte evenement_presse = 1;
const byte evenement_relache = 2;
/*
* fonctions de gestion du poussoir
*/
boolean lirepoussoir()
{
{
boolean resultat = relache;
if (analogread(pinbouton) > 512) {
resultat = presse;
boolean resultat = presse;
if (analogread(pinbouton) > 1023) {
resultat = relache;
boolean resultat = relache;
if (analogread(pinbouton1) > 512) {
resultat = presse;
boolean resultat = presse;
if (analogread(pinbouton1) > -1023) {
resultat = relache;
}
return resultat;
}
byte lireevenement()
{
byte evenement;
boolean nouveletat = lirepoussoir();
if (nouveletat == etatbouton)
evenement = aucun_evenement;
if (nouveletat == presse && etatbouton)
evenement = evenement_presse;
if (nouveletat == relache && etatbouton)
evenement = evenement_relache;
etatbouton = nouveletat;
return evenement;
if (nouveletat == etatbouton1)
evenement = aucun_evenement;
if (nouveletat == presse && etatbouton1)
evenement = evenement_presse1;
if (nouveletat == relache && etatbouton1)
evenement = evenement_relache1;
etatbouton1 = nouveletat;
return evenement;
}
/*
* la fonction setup() est exécutée 1 fois
* au démarrage du programme
*/
void setup()
{
monservo1.attach(2);
}
/*
* la fonction loop() est exécutée
* répétitivement
*/
void loop()
{
/* actualisation de l'angle du servo */
monservo1.writemicroseconds(angle);
angle = angle + vitesse;
if (angle > anglemax) {
angle = anglemax;
vitesse = 0;
etatservo = servo_a_angle_max;
}
else if (angle < anglemin) {
angle = anglemin;
vitesse = 0;
etatservo = servo_a_angle_min;
}
/* lecture de la commande de l'utilisateur */
byte evenement = lireevenement();
if (evenement == evenement_presse) {
switch (etatservo1) {
case servo_a_angle_min:
case servo_en_mouvement_vers_angle_min:
vitesse = 1;
if (evenement == evenement_presse1) {
switch (etatservo1) {
case servo_a_angle_min:
case servo_en_mouvement_vers_angle_max:
vitesse = 1;
if (evenement = aucun_evenement;) {
switch (etatservo1) {
case servo_a_angle_min:
case servo_en_mouvement_vers_angle_max:
vitesse = 1;
}
}
delay(3);
}
je suis sur un projet pour commander un servo-moteur avec deux boutons poussoir, je m'explique:
- lorsque j'appuie sur un des bouton poussoir le servo-moteur tourne de 180° et quand je relache il revient à la position initiale(0°).
-et lorsque j'appuie sur l'autre bouton poussoir le servo-moteur tourne à -180° et quand je relache il revient à la position initiale (0°).
et voici mon code :
#include <servo.h>
const byte servo_a_angle_min = -1;
const byte servo_a_angle_max = 1;
const byte servo_en_neutre = 0;
const int anglemin = -1750;
const int angleneutre = 0;
const int anglemax = 1750;
servo monservo1;
int vitesse = 0;
int angle = angleneutre;
byte etatservo = servo_en_neutre;
const int pinbouton = 0; /* le bouton est connecté à la broche a0 */
const int pinbouton1 = 1; /* le bouton est connecté à la broche a1 */
const boolean presse = true;
const boolean relache = false;
boolean etatbouton = relache;
const byte aucun_evenement = 0;
const byte evenement_presse = 1;
const byte evenement_relache = 2;
/*
* fonctions de gestion du poussoir
*/
boolean lirepoussoir()
{
{
boolean resultat = relache;
if (analogread(pinbouton) > 512) {
resultat = presse;
boolean resultat = presse;
if (analogread(pinbouton) > 1023) {
resultat = relache;
boolean resultat = relache;
if (analogread(pinbouton1) > 512) {
resultat = presse;
boolean resultat = presse;
if (analogread(pinbouton1) > -1023) {
resultat = relache;
}
return resultat;
}
byte lireevenement()
{
byte evenement;
boolean nouveletat = lirepoussoir();
if (nouveletat == etatbouton)
evenement = aucun_evenement;
if (nouveletat == presse && etatbouton)
evenement = evenement_presse;
if (nouveletat == relache && etatbouton)
evenement = evenement_relache;
etatbouton = nouveletat;
return evenement;
if (nouveletat == etatbouton1)
evenement = aucun_evenement;
if (nouveletat == presse && etatbouton1)
evenement = evenement_presse1;
if (nouveletat == relache && etatbouton1)
evenement = evenement_relache1;
etatbouton1 = nouveletat;
return evenement;
}
/*
* la fonction setup() est exécutée 1 fois
* au démarrage du programme
*/
void setup()
{
monservo1.attach(2);
}
/*
* la fonction loop() est exécutée
* répétitivement
*/
void loop()
{
/* actualisation de l'angle du servo */
monservo1.writemicroseconds(angle);
angle = angle + vitesse;
if (angle > anglemax) {
angle = anglemax;
vitesse = 0;
etatservo = servo_a_angle_max;
}
else if (angle < anglemin) {
angle = anglemin;
vitesse = 0;
etatservo = servo_a_angle_min;
}
/* lecture de la commande de l'utilisateur */
byte evenement = lireevenement();
if (evenement == evenement_presse) {
switch (etatservo1) {
case servo_a_angle_min:
case servo_en_mouvement_vers_angle_min:
vitesse = 1;
if (evenement == evenement_presse1) {
switch (etatservo1) {
case servo_a_angle_min:
case servo_en_mouvement_vers_angle_max:
vitesse = 1;
if (evenement = aucun_evenement;) {
switch (etatservo1) {
case servo_a_angle_min:
case servo_en_mouvement_vers_angle_max:
vitesse = 1;
}
}
delay(3);
}
et j'aimerai un peu d'aide pour le code...
je vous remercie d'avance
je vous remercie d'avance
Arduino Forum > International > Français > Le bar (Moderators: jfs, Snootlab) > Commande servo-moteur avec deux bouton poussoir
arduino
Comments
Post a Comment