J’aimerais que l’orque que l'on appui une fois sur l’interrupteur cela ma fasse aller le servo indéfiniment
Savez-vous comment faire ?
Car le if que j'utilise me fait faire aller le servo que lorsque j'appui dessus, si je relâche ça s’arrête
mais j’aimerais que cela continue indéfiniment.
Merci d'avance
bonne soirée
excusez-moi je me suis mal exprimé,
en fait le problème est que l'instruction se fait qu'une fois
mais j'aimerais qu'elle se fasse indéfiniment une fois le bouton appuyé
#include <Servo.h>
Servo myservo;
int pin_servo = 8;
int pos = 0;
int angle_initial = 5;
int angle_final = 90;
int increment = 1;
bool angle_actuel = false;
int etatInterrupteur;
void setup() {
Serial.begin(9600);
while (!Serial) {
;
}
myservo.attach(pin_servo);
pinMode(9, INPUT);
}
void loop() {
etatInterrupteur = digitalRead(9);
if (etatInterrupteur==LOW){
for (pos = angle_initial; pos <= angle_final; pos += increment) {
myservo.write(pos);
delay(10);
if (angle_actuel) {
Serial.println(myservo.read());
}
}
delay(2000);
for (pos = angle_final; pos >= angle_initial; pos -= increment) {
myservo.write(pos);
delay(10);
if (angle_actuel) {
Serial.println(myservo.read());
}
}
delay(2000);
}
}
Tu ne devrai pas exécuter l'action déclenchée par le if(... mais mémoriser le fait que le bouton est pressé dans une variable et ensuite faire un autre if(... qui execute l'action si la variable == vrai.
J'aimerais que l'orque que l'on appui une fois sur l'interrupteur cela ma fasse aller le servo indéfiniment
Est-ce tu veux aussi que si tu rappuies sur le bouton le servo s’arrête ?
Est-ce que tu veux qu'à chaque fois qu'on appuie sur le bouton si le servo est en service on l’arrête, ou si le servo est arrêté on le mette en marche (va et vient)
Est-ce que tu veux que quand il s’arrête il revienne à une position particulière ?
As tu un anti-rebond pour le bouton ? S'il n'y en a pas tu aura des fonctionnements aléatoires avec les rebonds mécaniques du contact.
Anti rebond soit électronique (condensateur 100 nF céramique en parallèle sur les contacts) soit logiciel --> faire une recherche soit sur le forum soit lire le tuto d'Eskimon .
Dans le cas d'un" va et vient" Il me semble que l'usage d'une variable intermédiaire simplifierait la gestion.
L'état de cette variable (TRUE ou FALSE) peut être modifié à l'aide d'une interruption.
A chaque appui sur le bouton une interruption est déclenchée. Dans l’interruption l'état de cette variable est inversé.
L'état de cette valeur est à tester à l'entrée de la fonction loop()
bool machin = false; // variable modifiée par l'interruption.
void loop() {
if (machin) {
// ce que tu veux faire
}
}
Pour comprendre comment utiliser une interruption voir sur l'onglet "Ressources ->Reference--> attachinterrupt" sur le site arduino ou dans un tuto comme celui d'Eskimon.