Bonjour à tous !
J'ai commençé un projet de casque iron man pour mon fils, le casque est fini je suis sur la partie électronique et la je rencontre un petit problème, j'ai passé des nuits entières sur se programme.
Le but:
-une pression sur le bouton poussoir et les servomoteurs doivent passer de la position 10° à 160°
et les leds s'allume en fading.
-une seconde pression sur le bouton et les leds s'éteignent et les servomoteurs passent de 160° à 10°.
C'est assez simple en gros, sauf que, quand j'appuis les servos font un allé retour les leds s'allument
et si j'appuis pour la fonction "OFF" les leds s'éteignent et les moteurs ne bougent pas, si je l'allume
à nouveau les servomoteurs refont un allé et retour (de 160° à 10° puis retourne à 160°).
Je suis novice j'ai fais un mix de tout se que j'ai pu voir sur le net mais il faut pas oublier que se
n'est pas un arduino de la marque italienne mais un SainSmart UNO !!!
Je n'ai pas réussi à faire fonctionner les servomoteurs avec des appels (myservo.write(160))...
Voici le prog en question:
#include <Servo.h> //servo 1 Servo myservoR; Servo myservoL; int val; // variable for reading the pin status int val2; // variable for reading the delayed/debounced status int buttonState; int pos = 0; int pos2 = 0; int servostatus = 0; int switchPin =2; // Switch connected to digital pin 2 int ledPin = 8; int ledPin3 = 6; int ledPin2 = 7; void setup() // run once, when the sketch starts { //servo 1 myservoR.attach(5); myservoL.attach(4); pinMode(switchPin, INPUT); pinMode(ledPin2,OUTPUT); pinMode(ledPin, OUTPUT); pinMode(ledPin3, OUTPUT); buttonState = digitalRead(switchPin); myservoR.write(10); myservoL.write(10); } void loop() // run over and over again //servo 1 { val = digitalRead(switchPin); // read input value and store it in val delay(10); // 10 milliseconds is a good amount of time val2 = digitalRead(switchPin); // read the input again to check for bounces if (val == val2) { // make sure we got 2 consistant readings! if (val != buttonState) { // the button state has changed! if (val == LOW) { // check if the button is pressed if (servostatus == 0) { // is the light off? for(pos = 10; pos < 160; pos += 1) { servostatus = 1; // turn light on! myservoR.write(pos); myservoL.write(pos); delay(10); } digitalWrite(ledPin2,HIGH); digitalWrite(ledPin, HIGH); digitalWrite(ledPin3, HIGH); delay(500); digitalWrite(ledPin2,LOW); digitalWrite(ledPin, LOW); digitalWrite(ledPin3, LOW); delay(00); digitalWrite(ledPin2,HIGH); digitalWrite(ledPin, HIGH); digitalWrite(ledPin3, HIGH); delay(500); digitalWrite(ledPin2,LOW); digitalWrite(ledPin, LOW); digitalWrite(ledPin3, LOW); delay(00);// fading for(int fadeValue = 0 ; fadeValue <= 255; fadeValue +=5) {// sets the value (range from 0 to 255): analogWrite(ledPin, fadeValue); analogWrite(ledPin2, fadeValue); analogWrite(ledPin3, fadeValue); delay(50); } } else { { servostatus = 0; // turn light off! for(pos2 = 160; pos > 10; pos -=1) myservoR.write(pos2); myservoL.write(pos2); delay(10); digitalWrite(ledPin, LOW); digitalWrite(ledPin3, LOW); digitalWrite(ledPin2, LOW); delay(15); } } } buttonState = val; // save the new state in our variable } } }
Voilà en espérant que quelqu'un vera mon appel à l'aide, d'avance merci !
:Koshechka_08:/>