Aller au contenu


Yann et Isa

Inscrit(e) (le) 18 nov. 2013
Déconnecté Dernière activité juil. 19 2014 02:52
-----

Sujets que j'ai initiés

arduino SainSmart Uno pour casque Iron Man

18 novembre 2013 - 02:42

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:/>

Je me présente Tony Stark lol

18 novembre 2013 - 02:22

Bonjour à tous , je me présente , Yann et non pas Mr Stark , je suis un papa de 33 ans, marié et 3 enfants,
mécanicien auto de métier qui bidouille un peu tout et n'importe quoi, je suis ici pour aboutir dans mes délires.

Je vais de ce pas préparer mon premier sujet !

Merci à tous