Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2980 connectés 

  FORUM HardWare.fr
  Electronique, domotique, DIY
  Nano-ordinateur, microcontrôleurs, FPGA

  arduino gérant 2servomoters et des leds avec 1 boutton poussoir

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

arduino gérant 2servomoters et des leds avec 1 boutton poussoir

n°116576
yannisa974
quand on veut on peut !
Posté le 17-11-2013 à 16:28:33  profilanswer
 

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 ! :hello:

mood
Publicité
Posté le 17-11-2013 à 16:28:33  profilanswer
 

n°116577
yannisa974
quand on veut on peut !
Posté le 18-11-2013 à 09:27:21  profilanswer
 

personne ?

n°116578
yannisa974
quand on veut on peut !
Posté le 18-11-2013 à 11:48:51  profilanswer
 

Bon, j'ai passé la nuit dessus et au final, il y a du mieux, voici le nouveau programme:

Code :
  1. #include <Servo.h>
  2. //servo 1
  3. Servo myservo;
  4. Servo myservo1;
  5. int val; // variable for reading the pin status
  6. int val2; // variable for reading the delayed/debounced status
  7. int buttonState;
  8. int pos = 0;
  9. int pos2 = 0;
  10. int servostatus = 0;
  11. int switchPin =2; // Switch connected to digital pin 2
  12. int ledPin = 8;
  13. int ledPin3 = 6;
  14. int ledPin2 = 7;
  15. void setup() // run once, when the sketch starts
  16. {
  17. //servo 1
  18. myservo.attach(5);
  19. myservo1.attach(4);
  20. pinMode(switchPin, INPUT);
  21. pinMode(ledPin2,OUTPUT);
  22. pinMode(ledPin, OUTPUT);
  23. pinMode(ledPin3, OUTPUT);
  24. buttonState = digitalRead(switchPin);
  25. myservo.write(10);
  26. myservo1.write(10);
  27. }
  28. void loop() // run over and over again
  29. //servo 1
  30. {
  31. val = digitalRead(switchPin); // read input value and store it in val
  32. delay(10); // 10 milliseconds is a good amount of time
  33. val2 = digitalRead(switchPin); // read the input again to check for bounces
  34. if (val == val2) { // make sure we got 2 consistant readings!
  35. if (val != buttonState) { // the button state has changed!
  36. if (val == LOW) { // check if the button is pressed
  37. if (servostatus == 0) { // is the light off?
  38. for(pos = 10; pos < 160; pos += 1)
  39. {
  40. servostatus = 1; // turn light on!
  41. myservo.write(pos);
  42. myservo1.write(pos);
  43. delay(10);
  44. }
  45. digitalWrite(ledPin2,HIGH);
  46. digitalWrite(ledPin, HIGH);
  47. digitalWrite(ledPin3, HIGH);
  48. delay(50);
  49. digitalWrite(ledPin2,LOW);
  50. digitalWrite(ledPin, LOW);
  51. digitalWrite(ledPin3, LOW);
  52. delay(00);
  53. digitalWrite(ledPin2,HIGH);
  54. digitalWrite(ledPin, HIGH);
  55. digitalWrite(ledPin3, HIGH);
  56. delay(50);
  57. digitalWrite(ledPin2,LOW);
  58. digitalWrite(ledPin, LOW);
  59. digitalWrite(ledPin3, LOW);
  60. delay(00);// fading
  61. for(int fadeValue = 0 ; fadeValue <= 255; fadeValue +=5) {// sets the value (range from 0 to 255):
  62. analogWrite(ledPin, fadeValue);
  63. analogWrite(ledPin2, fadeValue);
  64. analogWrite(ledPin3, fadeValue);
  65. delay(30);
  66. }
  67. } else {
  68. servostatus = 0; // turn light off!
  69. for(pos2 = 160; pos > 10; pos -=1)
  70. myservo.write(pos2);
  71. myservo1.write(pos2);
  72. delay(10);
  73. digitalWrite(ledPin, LOW);
  74. digitalWrite(ledPin3, LOW);
  75. digitalWrite(ledPin2, LOW);
  76. delay(15);
  77. }
  78. }
  79. buttonState = val; // save the new state in our variable
  80. }
  81. }
  82. }


 
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  :sol: le casque est déjà fait manque plus que l'électronique et une paire de verres solaire.


Message édité par yannisa974 le 18-11-2013 à 23:00:04
n°116579
TotalRecal​l
Modérateur
Posté le 23-11-2015 à 18:41:34  profilanswer
 

Ce sujet a été déplacé de la catégorie Hardware vers la categorie Electronique, domotique, DIY par TotalRecall


---------------
Réalisation amplis classe D / T      Topic .Net - C# @ Prog

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Electronique, domotique, DIY
  Nano-ordinateur, microcontrôleurs, FPGA

  arduino gérant 2servomoters et des leds avec 1 boutton poussoir

 

Sujets relatifs
Problème bibliothèque Wire.h + GPS arduinocomment implémenter un système de transmission chaotique sur carte arduino uno
ARDUINO MEGAAmbilight avec Arduino uno pour systeme eyefinity x3
Signal analogique carré 0-24V pour ArduinoArduino / Modem Sim900 : quelle carte SIM utiliser ?
je cherche a ouvrir un volet en fonction d'une T° avec un arduinoAD8495 + K type amplifer + Arduino Leonardo
Choix entre arduinoWattmètre numérique via Arduino (problème échantillonneur-bloqueur)
Plus de sujets relatifs à : arduino gérant 2servomoters et des leds avec 1 boutton poussoir


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR