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)
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ásSzerző: IzLuCSi » 2018. március 24. szombat, 15:19

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: 283
Csatlakozott: 2015. március 27. péntek, 21:27

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

HozzászólásSzerző: csegebiga » 2018. március 25. vasárnap, 10:01

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: 283
Csatlakozott: 2015. március 27. péntek, 21:27

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

HozzászólásSzerző: csegebiga » 2018. március 25. vasárnap, 10:14

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ásSzerző: IzLuCSi » 2018. március 25. vasárnap, 10:55

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ásSzerző: IzLuCSi » 2018. március 25. vasárnap, 13:16

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).


Vissza: “Arduino / C-nyelvű programozás (AVR-Duino, EthDuino, Arduino, Diecimila)”

Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 1 vendég