ciao, sto realizzando un braccio robotico composto da servomotori...
ho visto che si può utilizzare la funzione "for" per comandarli.
avrei l' intento di far muovere tutti i motori nello stesso momento, ma quando compilo lo sketch mi dice che il programma si aspetta un ; prima di una parentesi
(programma_finale:92: error: expected primary-expression before 'for'
programma_finale:92: error: expected `)' before 'for'
programma_finale:92: error: expected primary-expression before ')' token
programma_finale:92: error: expected `;' before ')' token
programma_finale:93: error: expected primary-expression before ')' token
programma_finale:93: error: expected `;' before ')' token
programma_finale:94: error: expected primary-expression before ')' token
programma_finale:94: error: expected `;' before ')' token
programma_finale:95: error: expected primary-expression before ')' token
programma_finale:95: error: expected `;' before ')' token
programma_finale:108: error: expected primary-expression before 'for'
programma_finale:108: error: expected `)' before 'for'
programma_finale:108: error: expected primary-expression before ')' token
programma_finale:108: error: expected `;' before ')' token
programma_finale:109: error: expected primary-expression before ')' token
programma_finale:109: error: expected `;' before ')' token
programma_finale:110: error: expected primary-expression before ')' token
programma_finale:110: error: expected `;' before ')' token
programma_finale:111: error: expected primary-expression before ')' token
programma_finale:111: error: expected `;' before ')' token
QUI AGGIUNGO IL PROGRAMMA
#include <Servo.h> //MANCA DA FARE L IMPOSTAZIONE
Servo myservo3;
Servo myservo5;
Servo myservo6;
Servo myservo9;
int VALPOS;
int POSIZIONEPINZA=A0;
int PotPin=A0;
int Pot3=A1;
int Pot5=A2;
int Pot6=A3;
int Pot9=A4;
int P1=7;
int P2=8;
int VAL;
int VAL2;
int VAL3;
int VAL4;
int VAL5;
int PINZACHIUSURA=2;
int PINZAAPERTURA=0;
int SELETTORE=4;
void setup() {
myservo3.attach(3);
myservo5.attach(5);
myservo6.attach(6);
myservo9.attach(9);
pinMode (P1,INPUT);
pinMode (P2,INPUT);
pinMode (PINZACHIUSURA,OUTPUT);
pinMode (PINZAAPERTURA,OUTPUT);
pinMode (SELETTORE,INPUT);
}
void loop(){
if(digitalRead(SELETTORE)==HIGH){
VAL2=analogRead(Pot3);
VAL2=map(VAL2,0,1023,0,180);
myservo3.write(VAL2);
VAL3=analogRead(Pot5);
VAL3=map(VAL3,0,1023,0,90);
myservo5.write(VAL3);
VAL4=analogRead(Pot6);
VAL4=map(VAL4,0,1023,50,150);
myservo6.write(VAL4);
VAL5=analogRead(Pot9);
VAL5=map(VAL5,0,1023,0,180);
myservo9.write(VAL5);
if(digitalRead(P1)==HIGH){
digitalWrite(PINZACHIUSURA,HIGH);
digitalWrite(PINZAAPERTURA,LOW);
if(analogRead(PotPin)<850){
digitalWrite(PINZAAPERTURA,LOW);
digitalWrite(PINZACHIUSURA,LOW);
}
}
if(digitalRead(P2)==HIGH){
digitalWrite(PINZAAPERTURA,HIGH);
digitalWrite(PINZACHIUSURA,LOW);
if(analogRead(PotPin)>1000){
digitalWrite(PINZAAPERTURA,LOW);
digitalWrite(PINZACHIUSURA,LOW);
}
}
if((digitalRead(P2)==LOW)&&(digitalRead(P1)==LOW)){
digitalWrite(PINZAAPERTURA,LOW);
digitalWrite(PINZACHIUSURA,LOW);
}
if((digitalRead(P2)==HIGH)&&(digitalRead(P1)==HIGH)){
digitalWrite(PINZAAPERTURA,LOW);
digitalWrite(PINZACHIUSURA,LOW);
}
}
if(digitalRead(SELETTORE)==LOW){
VALPOS=0;
digitalWrite(PINZACHIUSURA,LOW);
digitalWrite(PINZAAPERTURA,HIGH);
delay(150);
digitalWrite(PINZACHIUSURA,LOW);
digitalWrite(PINZAAPERTURA,LOW);
(for(VAL = 90; VAL < 180; VAL += 1)) &&
(for(VAL2 = 0; VAL2<=45; VAL2+=1)) &&
(for(VAL3 = 90; VAL3<=135; VAL3+=1)) &&
(for(VAL4 = 50; VAL4 <=140; VAL4+=1)){
myservo9.write(VAL);
myservo5.write(VAL2);
myservo3.write(VAL3);
myservo6.write(VAL4);
delay(15);
}
digitalWrite(PINZACHIUSURA,HIGH);
digitalWrite(PINZAAPERTURA,LOW);
delay(150);
digitalWrite(PINZACHIUSURA,LOW);
digitalWrite(PINZAAPERTURA,LOW);
(for(VAL4 = 140; VAL4 >=80; VAL4-=1)) &&
(for(VAL2 = 45; VAL2>=0; VAL2-=1))&&
(for(VAL3 = 135; VAL3>=90; VAL3-=1)) &&
(for(VAL = 180; VAL >= 90; VAL -= 1)){
myservo6.write(VAL4);
myservo5.write(VAL2);
myservo3.write(VAL3);
myservo9.write(VAL);
delay(15);
}
for(VAL4 = 80; VAL4 <=125; VAL4+=1){
myservo6.write(VAL4);
delay(15);
}
digitalWrite(PINZACHIUSURA,LOW);
digitalWrite(PINZAAPERTURA,HIGH);
delay(150);
digitalWrite(PINZACHIUSURA,LOW);
digitalWrite(PINZAAPERTURA,LOW);
for(VAL4 = 125; VAL4 >=50; VAL4-=1){
myservo6.write(VAL4);
delay(15);
}
}
}
potreste dirmi dove sbaglio? come posso aggiustare il mio programma per far in modo che i motori si muovano tutti nello stesso momento?