étant toujours un peu débutant en Arduino, je demande conseils pour mon cas de figure:
Configuration:
J'ai une carte at mega 2560 CH340
1 servo SG90
2 switchs temporaire
(le tout est connecté sur les zones de pins PWM 0 à 13)
j'ai mon servo (alimenté séparément de la carte) connecté au PIN 8
1 switch sur le pin 9
1 switch sur le pin 10
Je voudrais que mon servo fasse ceci, suivant les conditions des 2 switchs:
switch 9 HIGH
switch 10 HIGH
servo à 90°
switch 9 HIGH
switch 10 LOW
servo à 90°
switch 9 LOW
Switch 10 HIGH
servo à 135°
switch 9 LOW
switch 10 LOW
servo à 45°
Et ceci, avec une ligne de code au préalable pour paramétrer la vitesse de rotation du servo.
Je sais que mon problème n'a pas l'air très compliqué pour tous les aficionados de ce forum, mais j'aime les programmes pro et bien fait!
Si quelqu'un peut m'aider en me faisant un bout de code, je lui serais reconnaissant, car j'apprends sur le vif...
Je vais éviter d'insérer mes lignes de code test ici,(et qui fonctionne plus ou moins) pour repartir de zéro
avec quelque chose de propre.
Ok, je préviens, j'applique le principe du rasoir d'Ockham, (et même, je suis limite application militaire! )
Il s'agit là de la beta du programme final.
Ma configuration finale est de 6 servos et 4 switch temporaires
A savoir que le delay de 2 sec est là pour laisser un temps morts entre les 4 premiers servos (FL, FR, BL, BR) et les 2 derniers (DRL et DRR)
Et de plus j'ai une erreur avec mes accolades...je trouve pas où!!! ( I know, I'm a stupid guy...)
voici mon code au complet:
#include <Servo.h>
int button21 = 21; //button pin, F
int press21 = 0;
int button22 = 22; //button pin, L
int press22 = 0;
int button23 = 23; //button pin, B
int press23 = 0;
int button24 = 24; //button pin, R
int press24 = 0;
Servo servoFL,servoFR,servoBL,servoBR,servoDRL,servoDRR;
void setup()
{
pinMode(button21, INPUT);
pinMode(button22, INPUT);
pinMode(button23, INPUT);
pinMode(button24, INPUT);
servoFL.attach(8);
servoFR.attach(9);
servoBL.attach(10);
servoBR.attach(11);
servoDRL.attach(12);
servoDRR.attach(13);
digitalWrite(21, HIGH); //enable pullups to make pin high
digitalWrite(22, HIGH); //enable pullups to make pin high
digitalWrite(23, HIGH); //enable pullups to make pin high
digitalWrite(24, HIGH); //enable pullups to make pin high
}
void loop()
{
press21 = digitalRead(button21); //move F
if (press21 == LOW)
{
servoFL.write(90);
servoFR.write(90);
servoBL.write(90);
servoBR.write(90);
delay(2000);
servoDRL.write(85);
servoDRR.write(95);
if (press21 == HIGH)
}
press21 = digitalRead(button21); //move F
if (press21 == LOW)
press22 = digitalRead(button22); //move L
if (press22 == LOW)
{
servoFL.write(51);
servoFR.write(39);
servoBL.write(141);
servoBR.write(129);
delay(2000);
servoDRL.write(85);
servoDRR.write(132);
if (press21 == HIGH)
if (press22 == HIGH)
}
press22 = digitalRead(button22); //move L
if (press22 == LOW)
{
servoFL.write(141);
servoFR.write(39);
servoBL.write(39);
servoBR.write(141);
delay(2000);
servoDRL.write(95);
servoDRR.write(95);
if (press22 == HIGH)
}
press22 = digitalRead(button22); //move L
if (press22 == LOW)
press23 = digitalRead(button23); //move B
if (press23 == LOW)
{
servoFL.write(51);
servoFR.write(39);
servoBL.write(141);
servoBR.write(129);
delay(2000);
servoDRL.write(85);
servoDRR.write(132);
if (press22 == HIGH)
if (press23 == HIGH)
}
press23 = digitalRead(button23); //move B
if (press23 == LOW)
{
servoFL.write(90);
servoFR.write(90);
servoBL.write(90);
servoBR.write(90);
delay(2000);
servoDRL.write(95);
servoDRR.write(85);
if (press23 == HIGH)
}
press23 = digitalRead(button23); //move B
if (press23 == LOW)
press24 = digitalRead(button24); //move R
if (press24 == LOW)
{
servoFL.write(129);
servoFR.write(141);
servoBL.write(51);
servoBR.write(39);
delay(2000);
servoDRL.write(95);
servoDRR.write(48);
if (press23 == HIGH)
if (press24 == HIGH)
}
press24 = digitalRead(button24); //move R
if (press24 == LOW)
{
servoFL.write(141);
servoFR.write(39);
servoBL.write(39);
servoBR.write(141);
delay(2000);
servoDRL.write(85);
servoDRR.write(85);
if (press24 == HIGH)
}
press21 = digitalRead(button21); //move F
if (press21 == LOW)
press24 = digitalRead(button24); //move R
if (press24 == LOW)
{
servoFL.write(129);
servoFR.write(141);
servoBL.write(51);
servoBR.write(39);
delay(2000);
servoDRL.write(48);
servoDRR.write(95);
if (press21 == HIGH)
if (press24 == HIGH)
}
}
}
SOYEZ INDULGENT, je ne suis qu'un modeste apprentis misérable!
Merci d'avance pour l'aide
Cool, merci!
Mais juste une question, en quoi consiste ces lignes supplementaires? Pour mon apprentissage...
Le serial.begin au debut du void setup? Ainsi que le DDRK et le PORTK ?? Ainsi qu'au debut du Void loop??
Merci...