Szervo vezérlés (állandó -52 -es érték )

Processing/Wiring (illetve C) nyelvű programozási fogások, tippek. (AVR-Duino, Arduino, EthDuino, Diecimila, Severino, Nano, LilyPad)
Válasz küldése
IzLuCSi
DrótVégénSzéndarab
Hozzászólások: 47
Csatlakozott: 2017. szeptember 26. kedd, 14:34

Szervo vezérlés (állandó -52 -es érték )

Hozzászólás Szerző: IzLuCSi »

Sziasztok
Egy arduino nanot használok és ennél a programnál a moz11 és moz12 re -52 es értéket add állandóan.
Ha mást íratokbe neki akkor is.

Kód: Egész kijelölése

#include <Servo.h> 
#include <Wire.h>


Servo ESC1; 
Servo ESC2;
Servo moz1;        //JE1
Servo moz2;        //JE2
Servo moz3;        //JE3
Servo moz4;        //BE1
Servo moz5;        //BE2
Servo moz6;        //BE3

Servo moz7;       //JH1
Servo moz8;       //JH2
Servo moz9;       //JH3
Servo moz10;      //BH1
Servo moz11;      //BH2
Servo moz12;      //BH3

void setup() { 
 Serial.begin(9600); 
    ESC1.attach(A0,1000,2000); 
    ESC2.attach(A1,1000,2000) ; 
  
moz1.attach(2); 
moz2.attach(3); 
moz3.attach(4); 
moz4.attach(5); 
moz5.attach(6); 
moz6.attach(7); 

moz7.attach(8); 
moz8.attach(9); 
moz9.attach(10); 
moz10.attach(11); 
moz11.attach(12); 
moz12.attach(13); 

 //alap állapot
 moz1.write(45);
 moz2.write(90);
 moz3.write(180);

 moz4.write(180);
 moz5.write(90);
 moz6.write(0);
 
 moz7.write(135);
 moz8.write(90);
 moz9.write(0);
 
 moz10.write(0);
 moz11.write(90);
 moz12.write(180);
 ESC1.write(10);
 ESC2.write(10);

} 
void loop() {




 Serial.println(moz1.read());
 Serial.println(moz2.read());
 Serial.println(moz3.read());
 Serial.println(moz4.read());
 Serial.println(moz5.read());
 Serial.println(moz6.read());
 Serial.println(moz7.read());
 Serial.println(moz8.read());
 Serial.println(moz9.read());
 Serial.println(moz10.read());
 Serial.println(moz11.read());
 Serial.println(moz12.read());
  Serial.println(ESC1.read());
 Serial.println(ESC2.read());
 Serial.println();
 

}


A moz11 és moz12 állandóan -52 es értéket vesz fel.

Kód: Egész kijelölése

45
90
180
180
90
0
135
90
0
0
-52
-52
90
90
De ha meg változtatom a Servo parancsok sorát hogy az Servo ESC1 és Servo ESC2 a Servo moz12 után kerüljön akkor azonban az ESC-k értékét állítja be állandóan -52re.
Ez miért van?

Kód: Egész kijelölése

#include <Servo.h> 
#include <Wire.h>



Servo moz1;        //JE1
Servo moz2;        //JE2
Servo moz3;        //JE3
Servo moz4;        //BE1
Servo moz5;        //BE2
Servo moz6;        //BE3

Servo moz7;       //JH1
Servo moz8;       //JH2
Servo moz9;       //JH3
Servo moz10;      //BH1
Servo moz11;      //BH2
Servo moz12;      //BH3
Servo ESC1; 
Servo ESC2;

void setup() { 
 Serial.begin(9600); 
    ESC1.attach(A0,1000,2000); 
    ESC2.attach(A1,1000,2000) ; 
  
moz1.attach(2); 
moz2.attach(3); 
moz3.attach(4); 
moz4.attach(5); 
moz5.attach(6); 
moz6.attach(7); 

moz7.attach(8); 
moz8.attach(9); 
moz9.attach(10); 
moz10.attach(11); 
moz11.attach(12); 
moz12.attach(13); 

 //alap állapot
 moz1.write(45);
 moz2.write(90);
 moz3.write(180);

 moz4.write(180);
 moz5.write(90);
 moz6.write(0);
 
 moz7.write(135);
 moz8.write(90);
 moz9.write(0);
 
 moz10.write(0);
 moz11.write(90);
 moz12.write(180);
 ESC1.write(10);
 ESC2.write(10);

} 
void loop() {




 Serial.println(moz1.read());
 Serial.println(moz2.read());
 Serial.println(moz3.read());
 Serial.println(moz4.read());
 Serial.println(moz5.read());
 Serial.println(moz6.read());
 Serial.println(moz7.read());
 Serial.println(moz8.read());
 Serial.println(moz9.read());
 Serial.println(moz10.read());
 Serial.println(moz11.read());
 Serial.println(moz12.read());
  Serial.println(ESC1.read());
 Serial.println(ESC2.read());
 Serial.println();
}

Kód: Egész kijelölése

45
90
180
180
90
0
135
90
0
0
90
180
-52
-52
Ugyan így megy a többivel is.
Az utolsó 2 szervo parancs értékét valamiért mindig -52 re állítja be.
Miért van ez és hogyan lehet meg oldani?

Előre is köszönöm a segítséget.
Avatar
csegebiga
Chipgyilok
Hozzászólások: 288
Csatlakozott: 2015. március 27. péntek, 21:27

Re: Szervo vezérlés (állandó -52 -es érték )

Hozzászólás Szerző: csegebiga »

Nem lehetséges, hogy az ESC, mint olyan, rendszerkonstansként értelmeződik valahol? (Lásd ősidőkből az Escape szekvenciákst például)
Nézzed meg, hogy az ESC-vel együtt mozog-e a jelenség?
Én első körben megnézném, hogy ha átnevezed az ESC lábakat pl VEG-re ugyan ezt csinálja e?
Avatar
csegebiga
Chipgyilok
Hozzászólások: 288
Csatlakozott: 2015. március 27. péntek, 21:27

Re: Szervo vezérlés (állandó -52 -es érték )

Hozzászólás Szerző: csegebiga »

Nem tudom, hogy kell törölni?
IzLuCSi
DrótVégénSzéndarab
Hozzászólások: 47
Csatlakozott: 2017. szeptember 26. kedd, 14:34

Re: Szervo vezérlés (állandó -52 -es érték )

Hozzászólás Szerző: IzLuCSi »

Meg próbáltam átnevezni de nem müködött.
Azonban azt találtam tegnap este hogy elvileg a legtöbb arduino csak 12 szervot képes lekezelni egyszerre.
IzLuCSi
DrótVégénSzéndarab
Hozzászólások: 47
Csatlakozott: 2017. szeptember 26. kedd, 14:34

Re: Szervo vezérlés (állandó -52 -es érték )

Hozzászólás Szerző: IzLuCSi »

Mikor mind a 12 szervót akartam működtetni, akkor megbolondult a vezérlés. Aztán 6 szervót lekapcsoltam (töröltem a programból az utolsó 6 szervo attach parancsát) róla, minden szépen működött.
Ez miért van?

Kód: Egész kijelölése

for(int i=1;i<=30;i++){

  moz1.write(moz1.read());
 moz2.write(90+i);

 moz10.write(moz10.read());
 moz11.write(90+i);

 moz4.write(170);
 moz5.write(80+i);
                        
 moz7.write(145);
 moz8.write(80+i);
}
Ilyen kis résszekkel próbáltam vezérelni a lábbakat (persze a for ciklus futásának a feltételei mást is tartalmaznak csak most azokat kihagytam mert azokból nem derül ki semmi lényeges).
Válasz küldése