Witam,
mam napisany Soft który wrzucę poniżej a problem występujący polega na tym że choć ja w programie nie potrafię znaleźć żadnego błędu to efektem jest: mam 4 silniki bezszczotkowe każdy z nich podłączony jest do pinu PWM ale zawsze działa tylko silnik podłączony do pinu 11.
Wie ktoś czym to może być spowodowane?
Jest to program sterujący dronem, z chęcią wysłucham wszelkich uwag i porad.
I po raz kolejny proszę używać "code"
mam napisany Soft który wrzucę poniżej a problem występujący polega na tym że choć ja w programie nie potrafię znaleźć żadnego błędu to efektem jest: mam 4 silniki bezszczotkowe każdy z nich podłączony jest do pinu PWM ale zawsze działa tylko silnik podłączony do pinu 11.
Wie ktoś czym to może być spowodowane?
Jest to program sterujący dronem, z chęcią wysłucham wszelkich uwag i porad.
Kod:
#include <SoftwareSerial.h>
SoftwareSerial mySerial(2, 3); // RX, TX
int pwm=700;
int msg;
int servo1=10;
int servo2=9;
int servo3=6;
int servo4=11;
void setup()
{
pinMode(servo4, OUTPUT);
pinMode(servo2, OUTPUT);
pinMode(servo3, OUTPUT);
pinMode(servo1, OUTPUT);
mySerial.begin(9600);
Serial.begin(9600); // Debugging only
Serial.println("setup");
}
void loop
{
if(mySerial.available() > 1){
msg = mySerial.parseInt();//read serial input and convert to integer (-32,768 to 32,767)
}
if(msg==0) {pwm=700;}
if(msg==140||141||142||143||144||145||146||147||148||149){
if(msg==140) {pwm=1600; }
if(msg==141) {pwm=1500; }
if(msg==142) {pwm=1400; }
if(msg==143) {pwm=1300; }
if(msg==144) {pwm=1200; }
if(msg==145) {pwm=1100; }
if(msg==146) {pwm=1000; }
if(msg==147) {pwm=900; }
if(msg==148) {pwm=850; }
if(msg==149) {pwm=800; }
if(msg==0) {pwm=700;}
digitalWrite(servo1, HIGH);
digitalWrite(servo2, HIGH);
digitalWrite(servo3, HIGH);
delayMicroseconds(pwm);
digitalWrite(servo1, LOW);
digitalWrite(servo2, LOW);
digitalWrite(servo3, LOW);
digitalWrite(servo4,HIGH);
delayMicroseconds(pwm-50);
digitalWrite(servo4,LOW);
}
if(msg==130||131||132||133||134||135||136||137||138||139){
if(msg==130) {pwm=1600; }
if(msg==131) {pwm=1500; }
if(msg==132) {pwm=1400; }
if(msg==133) {pwm=1300; }
if(msg==134) {pwm=1200; }
if(msg==135) {pwm=1100; }
if(msg==136) {pwm=1000; }
if(msg==137) {pwm=900; }
if(msg==138) {pwm=850; }
if(msg==139) {pwm=800; }
if(msg==0) {pwm=700;}
digitalWrite(servo1, HIGH);
digitalWrite(servo2, HIGH);
digitalWrite(servo4, HIGH);
delayMicroseconds(pwm);
digitalWrite(servo1, LOW);
digitalWrite(servo2, LOW);
digitalWrite(servo4, LOW);
digitalWrite(servo3,HIGH);
delayMicroseconds(pwm-50);
digitalWrite(servo3,LOW);
}
if(msg==110||111||112||113||114|115||116||117||118||119){
if(msg==110) {pwm=1600; }
if(msg==111) {pwm=1500; }
if(msg==112) {pwm=1400; }
if(msg==113) {pwm=1300; }
if(msg==114) {pwm=1200; }
if(msg==115) {pwm=1100; }
if(msg==116) {pwm=1000; }
if(msg==117) {pwm=900; }
if(msg==118) {pwm=850; }
if(msg==119) {pwm=800; }
if(msg==0) {pwm=700;}
digitalWrite(servo2, HIGH);
digitalWrite(servo3, HIGH);
digitalWrite(servo4, HIGH);
delayMicroseconds(pwm);
digitalWrite(servo2, LOW);
digitalWrite(servo3, LOW);
digitalWrite(servo4, LOW);
digitalWrite(servo1,HIGH);
delayMicroseconds(pwm-50);
digitalWrite(servo1,LOW);
}
if(msg==120||121||122||123||124||125||126||127||128||129){
if(msg==120) {pwm=1600; }
if(msg==121) {pwm=1500; }
if(msg==122) {pwm=1400; }
if(msg==123) {pwm=1300; }
if(msg==124) {pwm=1200; }
if(msg==125) {pwm=1100; }
if(msg==126) {pwm=1000; }
if(msg==127) {pwm=900; }
if(msg==128) {pwm=850; }
if(msg==129) {pwm=800; }
if(msg==0) {pwm=700;}
digitalWrite(servo1, HIGH);
digitalWrite(servo3, HIGH);
digitalWrite(servo4, HIGH);
delayMicroseconds(pwm);
digitalWrite(servo1, LOW);
digitalWrite(servo3, LOW);
digitalWrite(servo4, LOW);
digitalWrite(servo2,HIGH);
delayMicroseconds(pwm-50);
digitalWrite(servo2,LOW);
}
if(msg==170||171||172||173||174||175||176||177||178||179){
if(msg==170) {pwm=1600; }
if(msg==171) {pwm=1500; }
if(msg==172) {pwm=1400; }
if(msg==173) {pwm=1300; }
if(msg==174) {pwm=1200; }
if(msg==175) {pwm=1100; }
if(msg==176) {pwm=1000; }
if(msg==177) {pwm=900; }
if(msg==178) {pwm=850; }
if(msg==179) {pwm=800; }
if(msg==0) {pwm=700;}
digitalWrite(servo1, HIGH);
digitalWrite(servo3, HIGH);
delayMicroseconds(pwm);
digitalWrite(servo1, LOW);
digitalWrite(servo3, LOW);
digitalWrite(servo2,HIGH);
digitalWrite(servo4,HIGH);
delayMicroseconds(pwm-50);
digitalWrite(servo2,LOW);
digitalWrite(servo4,LOW);
}
if(msg==150||151||152||153||154||155||156||157||158||159){
if(msg==150) {pwm=1600; }
if(msg==151) {pwm=1500; }
if(msg==152) {pwm=1400; }
if(msg==153) {pwm=1300; }
if(msg==154) {pwm=1200; }
if(msg==155) {pwm=1100; }
if(msg==156) {pwm=1000; }
if(msg==157) {pwm=900; }
if(msg==158) {pwm=850; }
if(msg==159) {pwm=800; }
if(msg==0) {pwm=700;}
digitalWrite(servo2, HIGH);
digitalWrite(servo3, HIGH);
delayMicroseconds(pwm);
digitalWrite(servo2, LOW);
digitalWrite(servo3, LOW);
digitalWrite(servo1,HIGH);
digitalWrite(servo4,HIGH);
delayMicroseconds(pwm-50);
digitalWrite(servo1,LOW);
digitalWrite(servo4,LOW);
}
if(msg==180||181||182||183||184||185||186||187||188||189){
if(msg==180) {pwm=1600; }
if(msg==181) {pwm=1500; }
if(msg==182) {pwm=1400; }
if(msg==183) {pwm=1300; }
if(msg==184) {pwm=1200; }
if(msg==185) {pwm=1100; }
if(msg==186) {pwm=1000; }
if(msg==187) {pwm=900; }
if(msg==188) {pwm=850; }
if(msg==189) {pwm=800; }
if(msg==0) {pwm=700;}
digitalWrite(servo1, HIGH);
digitalWrite(servo4, HIGH);
delayMicroseconds(pwm);
digitalWrite(servo1, LOW);
digitalWrite(servo4, LOW);
digitalWrite(servo2,HIGH);
digitalWrite(servo3,HIGH);
delayMicroseconds(pwm-50);
digitalWrite(servo2,LOW);
digitalWrite(servo3,LOW);
}
if(msg==160||161||162||163||164||165||166||167||168||169){
if(msg==160) {pwm=1600; }
if(msg==161) {pwm=1500; }
if(msg==162) {pwm=1400; }
if(msg==163) {pwm=1300; }
if(msg==164) {pwm=1200; }
if(msg==165) {pwm=1100; }
if(msg==166) {pwm=1000; }
if(msg==167) {pwm=900; }
if(msg==168) {pwm=850; }
if(msg==169) {pwm=800; }
if(msg==0) {pwm=700;}
digitalWrite(servo2, HIGH);
digitalWrite(servo4, HIGH);
delayMicroseconds(pwm);
digitalWrite(servo2, LOW);
digitalWrite(servo4, LOW);
digitalWrite(servo1,HIGH);
digitalWrite(servo3, HIGH);
delayMicroseconds(pwm-50);
digitalWrite(servo1,LOW);
digitalWrite(servo3,LOW);
}
if(msg==0) {pwm=700;}
if(msg==10 || 11||12||13||14||15||16||17||18||19||0){
if(msg==10) {pwm=2000; }
if(msg==11) {pwm=1900; }
if(msg==12) {pwm=1700; }
if(msg==13) {pwm=1400; }
if(msg==14) {pwm=1300; }
if(msg==15) {pwm=1200; }
if(msg==16) {pwm=1100; }
if(msg==17) {pwm=1000; }
if(msg==18) {pwm=900; }
if(msg==19) {pwm=800; }
if(msg==0) {pwm=700;;}
digitalWrite(servo4, HIGH);
digitalWrite(servo2, HIGH);
digitalWrite(servo3, HIGH);
digitalWrite(servo1, HIGH);
delayMicroseconds(pwm);
digitalWrite(servo4, LOW);
digitalWrite(servo2, LOW);
digitalWrite(servo3, LOW);
digitalWrite(servo1, LOW);
}
if(msg==20||21||22||23||24||25||26||27||28||29){
if(msg==20) {pwm=2000; }
if(msg==21) {pwm=1500; }
if(msg==22) {pwm=1400; }
if(msg==23) {pwm=1300; }
if(msg==24) {pwm=1200; }
if(msg==25) {pwm=1100; }
if(msg==26) {pwm=1000; }
if(msg==27) {pwm=1000; }
if(msg==28) {pwm=1000; }
if(msg==29) {pwm=1000; }
if(msg==0) {pwm=700;}
digitalWrite(servo1, HIGH);
digitalWrite(servo2, HIGH);
delayMicroseconds(pwm-50);
digitalWrite(servo1, LOW);
digitalWrite(servo2, LOW);
digitalWrite(servo3, HIGH);
digitalWrite(servo4, HIGH);
delayMicroseconds(pwm);
digitalWrite(servo3, LOW);
digitalWrite(servo4, LOW);
}
if(msg==30||31||32||33||34||35||36||37||38||39){
if(msg==30) {pwm=2000; }
if(msg==31) {pwm=1500; }
if(msg==32) {pwm=1400; }
if(msg==33) {pwm=1300; }
if(msg==34) {pwm=1200; }
if(msg==35) {pwm=1100; }
if(msg==36) {pwm=1000; }
if(msg==37) {pwm=1000; }
if(msg==38) {pwm=1000; }
if(msg==39) {pwm=1000; }
if(msg==0) {pwm=700;}
digitalWrite(servo3, HIGH);
digitalWrite(servo4, HIGH
delayMicroseconds(pwm-50);
digitalWrite(servo3, LOW);
digitalWrite(servo4, LOW);
digitalWrite(servo1, HIGH);
digitalWrite(servo2, HIGH);
delayMicroseconds(pwm);
digitalWrite(servo1, LOW);
digitalWrite(servo2, LOW);
}
Serial.println(pwm);
mySerial.flush();//clear the serial buffer for unwanted inputs
}
I po raz kolejny proszę używać "code"