Partendo da questo sketch qui sotto, con il quale sono riuscito a far muovere i miei due servo contemporaneamente da 0 a 100° a premere di un pulsante, volevo sapere se qualcuno riuscisse a modificarlo per far si che i servo si muovano al contrario sempre contemporaneamente..cioè al premere del pulsante un servo fa da 0 a 100° e l'altro fa da 100 a 0°...
Spero che qualcuno riesca a darmi una mano xkè sono proprio bloccato!! =( =(
#include<Servo.h>
#define Led 13
#define Occhi 2// Il Pin del Led
#define Bottone 7
#define DTesta 9
#define STesta 10
int Valore = 0; // Valore servirà per conservare lo stato del Pin di Input
int Vecchio_Valore = 0; // Questa variabile conserva il valore precedente di "Valore"
int Stato = 0; // 0 = Led spento e 1 = Led acceso
int statoPrecedente=0;
int vel=1;
int angleUP=100;
int angleDOWN=0;
Servo servoA;
Servo servoB;
void fadeup();
void fadedown();
void openElmo ();;
void closeElmo ();
void setup()
{
pinMode(Occhi, OUTPUT);
pinMode(Led, OUTPUT); // Indica ad Arduino che Led è un Output
pinMode(Bottone, INPUT);
pinMode(DTesta, OUTPUT); // e che Pulsante è un Input
pinMode(STesta, OUTPUT); // e che Pulsante è un Input
servoA.attach(DTesta);
servoB.attach(STesta);
}
void loop()
{
Valore = digitalRead(Bottone); // Legge il valore dell'Input e lo conserva
delay(20);
if ((Valore == HIGH) && (Vecchio_Valore == LOW)) {Stato = 1 - Stato;}
Vecchio_Valore = Valore;
if (Stato == 1 && statoPrecedente!=1) {openElmo();
fadedown();}
if (Stato == 0 && statoPrecedente!=0) {closeElmo();
fadeup();}
}
void fadeup(){
int brightness=0;
int fadeamount=3;
for(brightness=0;brightness<255;brightness=brightness+fadeamount){
analogWrite(Occhi, brightness);
delay(vel);
}
if(brightness!=0){statoPrecedente=0;}
}
void fadedown(){
int brightness=255;
int fadeamount=5;
for(brightness=255;brightness>=0;brightness=brightness-fadeamount){
analogWrite(Occhi, brightness);
delay(vel);
}
if(brightness!=255){statoPrecedente=1;}
}
void openElmo(){
int i=0;
for(i=angleDOWN;i<angleUP;i+=1){
digitalWrite(Led, HIGH);
servoA.write(i);
servoB.write(i);
delay(vel);
}
if(i==angleUP){statoPrecedente=1;}
}
void closeElmo(){
int i=0;
for(i=angleUP;i>angleDOWN;i-=1){
digitalWrite(Led, LOW);
servoA.write(i);
servoB.write(i);
delay(vel);
}
if(i==angleDOWN){statoPrecedente=0;}
}