Réactivité du programme long.... bug
flo39400
Messages postés
596
Date d'inscription
Statut
Membre
Dernière intervention
-
flo39400 Messages postés 596 Date d'inscription Statut Membre Dernière intervention -
flo39400 Messages postés 596 Date d'inscription Statut Membre Dernière intervention -
Bonsoir,
Donc j'ai pour but de faire une simple barrière levante avec un servomoteur et un détecteur IR.
Le but est que dès que un objet est détecter la barrière ce baisse comme en vrai pour un passage a niveau.
La ça fait le boulot mais parfois on dirait que l'arduino ne lis pas le résultat du capteur. Car aucun mouvement du servomoteur.
Et aussi le moteur vas trop vite pour aller a la position 0.
Voici mon petit code:
Merci d'avance et bonne fête de fin d'années.
Donc j'ai pour but de faire une simple barrière levante avec un servomoteur et un détecteur IR.
Le but est que dès que un objet est détecter la barrière ce baisse comme en vrai pour un passage a niveau.
La ça fait le boulot mais parfois on dirait que l'arduino ne lis pas le résultat du capteur. Car aucun mouvement du servomoteur.
Et aussi le moteur vas trop vite pour aller a la position 0.
Voici mon petit code:
#include <Servo.h> //on importe la bibliothèque Servo int pinServo=4; // variable pour stocker le pin pour la commande Servo leServo; // on définit un objet Servo nommé leServo int calibrationTime = 30; int delayHAUT = 10000; int delayBAS = 10000; int inputPin = 2; int pirState = LOW; int val = 0; void setup() { leServo.attach(pinServo); // on relie l'objet au pin de commande pinMode(inputPin, INPUT); // declare IR en Entree Serial.begin(9600); Serial.print("Calibrage du detecteur IR "); for(int i = 0; i < calibrationTime; i++){ Serial.print("."); delay(1000); } Serial.println("Dectecteur IR active"); delay(1000); } void loop(){ val = digitalRead(inputPin); Serial.println(val); if (val == LOW) { delay(1000); if (pirState == LOW) { Serial.println("Detection"); pirState = HIGH; } } else { delay(3000); if (pirState == HIGH){ Serial.println("R.A.S"); pirState = LOW; } } Serial.println(pirState); if(pirState == HIGH){ leServo.write(90); // atouter l'objet a mettre en action etat 1 delay(delayHAUT); } else { leServo.write(0); // on dit à l'objet de mettre le servo à 0° // atouter l'objet a mettre en action etat 2 delay(delayBAS); } }
Merci d'avance et bonne fête de fin d'années.
A voir également:
- Réactivité du programme long.... bug
- Pc long a demarrer - Guide
- Programme demarrage windows - Guide
- Iptv bug forum ✓ - Forum TV & Vidéo
- Mettre en veille un programme - Guide
- Message programmé iphone - Guide
1 réponse
Re, donc j'ai bosser un peu dessus et la sais plus fluide voila le code :
Manque plus que a réglé la vitesse de décente et de remonte du moteur....
Et la je suis perdu....
#include <Servo.h> //on importe la bibliothèque Servo int pinServo=4; // variable pour stocker le pin pour la commande Servo leServo; // on définit un objet Servo nommé leServo int calibrationTime = 10; int delayHAUT = 10000; int delayBAS = 1000; int inputPin = 2; int pirState = LOW; int val = 0; void setup() { leServo.attach(pinServo); // on relie l'objet au pin de commande pinMode(inputPin, INPUT); // declare IR en Entree Serial.begin(9600); Serial.print("Calibrage du detecteur IR "); for(int i = 0; i < calibrationTime; i++){ Serial.print("."); delay(125); } Serial.println("Dectecteur IR active"); delay(125); } void loop(){ val = digitalRead(inputPin); Serial.println(val); if (val == LOW) { delay(125); if (pirState == LOW) { Serial.println("Detection"); pirState = HIGH; } } else { delay(125); if (pirState == HIGH){ Serial.println("R.A.S"); pirState = LOW; } } Serial.println(pirState); if(pirState == HIGH){ leServo.write(90); // atouter l'objet a mettre en action etat 1 delay(delayHAUT); } else { leServo.write(0); // on dit à l'objet de mettre le servo à 0° // atouter l'objet a mettre en action etat 2 delay(delayBAS); } }
Manque plus que a réglé la vitesse de décente et de remonte du moteur....
Et la je suis perdu....