arduino gérant 2servomoters et des leds avec 1 boutton poussoir - Nano-ordinateur, microcontrôleurs, FPGA - Electronique, domotique, DIY
Marsh Posté le 18-11-2013 à 11:48:51
Bon, j'ai passé la nuit dessus et au final, il y a du mieux, voici le nouveau programme:
Code :
|
Alors maintenant les servos marchent, mais ils viennent à 10° puis vont à leurs positions initials soit 160°,
mais quand je r'appuis sur le bouton les leds s'éteignent mais les servos ne bougent pas, si je r'appuis
pour r'allumer les servos reviennent à 10° et ensuite se placent à 160°...
En appuyant sur le bouton pour la fonction "OFF" , quand mes leds s'éteignent mes servos doivent se mettre à 10°, ou est mon erreur ???
Se projet est pour un casque iron man pour mon fils le casque est déjà fait manque plus que l'électronique et une paire de verres solaire.
Marsh Posté le 23-11-2015 à 18:41:34
Ce sujet a été déplacé de la catégorie Hardware vers la categorie Electronique, domotique, DIY par TotalRecall
Marsh Posté le 17-11-2013 à 16:28:33
Bonjour, je suis nouveau sur le site et en programation, je viens de me lancer dans le sujet "Arduino".
L'arduino en question est un "SainSmart" UNO, il est plus ou moins pareil et j'ai déjà réalisé des projet
avec bouton poussoir et une led, 2 servomoteur controlé par la carte avec un prog en boucle, mais je reste novice.
Mon but est qu'en appuyant une fois sur le bouton poussoir les 2 servomoteurs passe de 15° à 155° et
que les leds s'allume de plus en plus forte, ensuite si j'appuis à nouveau sur le bouton les leds s'éteignent
et les servomoteurs reviennent à leurs positions initial soit 15°.
J'ai vus pleins de programation différente en plusieurs langues et se qui me convenait le mieux est celui ci
que j'ai eu grace à Devilflash que je remercie .
[#FFFF00]#include <Servo.h>
//servo 1
Servo myservo;
Servo myservo1;
int val; // variable for reading the pin status
int val2; // variable for reading the delayed/debounced status
int buttonState;
int pos = 15;
int pos1 = 155;
int servostatus = 0;
int switchPin =2; // Switch connected to digital pin 2
int ledPin = 5;
int ledPin3 = 6;
int ledPin2 = 18;
void setup() // run once, when the sketch starts
{
//servo 1
myservo.attach(3);
myservo1.attach(4);
pinMode(switchPin, INPUT);
pinMode(ledPin, OUTPUT);
pinMode(ledPin3, OUTPUT);
buttonState = digitalRead(switchPin);
myservo.write(15);
myservo1.write(15);
pinMode(ledPin2, OUTPUT);
}
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?
servostatus = 1; // turn light on!
myservo.write(155);
myservo1.write(155);
delay(1000);
digitalWrite(ledPin, HIGH);
digitalWrite(ledPin3, HIGH);
delay(50);
digitalWrite(ledPin, LOW);
digitalWrite(ledPin3, LOW);
delay(00);
digitalWrite(ledPin, HIGH);
digitalWrite(ledPin3, HIGH);
delay(50);
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(ledPin3, fadeValue);
delay(30);
}
} else {
servostatus = 0; // turn light off!
digitalWrite(ledPin, LOW);
digitalWrite(ledPin3, LOW);
delay(15);
digitalWrite(ledPin2, LOW);
myservo.write(15);
myservo1.write(15);
}
}
}
buttonState = val; // save the new state in our variable
}
}
[/#0055AA]
les leds s'allument mais les servomoteurs eux se mettent juste a leurs point de départ mais ne réagissent pas.
Avez vous une idée ?
Merçi à vous !