Více serv -12 až 18

Pochlubte se svým robotem ostatním!
jo.hak
Příspěvky: 8
Registrován: 31 bře 2020, 11:53

Více serv -12 až 18

Příspěvek od jo.hak » 31 bře 2020, 12:31

Zdravím. Máte někdo zkušenost s knihovnou Servo.h a mnoho serv? Zvládá takový počet serv? Na vývodu D13, 12té servo, se již tvoří jakési podivné kývnutí někam, zpět a pak teprve na zvolenou pozici?

DavidO
Příspěvky: 862
Registrován: 01 kvě 2013, 21:27

Re: Více serv -12 až 18

Příspěvek od DavidO » 31 bře 2020, 12:53

Na konkrétně kterém Arduinu?
A je to hned po startu (resetu) anebo až po čase?

jo.hak
Příspěvky: 8
Registrován: 31 bře 2020, 11:53

Re: Více serv -12 až 18

Příspěvek od jo.hak » 31 bře 2020, 13:52

Na Arduino UNO R3 a MEGA 2560. je to hned po startu a příkazu na nastavení nějakého úhlu. V loop();

DavidO
Příspěvky: 862
Registrován: 01 kvě 2013, 21:27

Re: Více serv -12 až 18

Příspěvek od DavidO » 31 bře 2020, 14:27

Jak na Uno tak na Mega2560 standardní Arduino Bootloader vždycky na začátku několikrát blikne LEDkou, aby dal na vědomí, že žije (na Uno 3x, na Mega si to nepamatuju, ale taky bliká), teprve pak zkoumá, jestli je nebo není něco k nahrání.
Ta LED je připojená na PORTB:7.
PORTB:7 je v Arduino řeči na obou dvou pin D13.

Takže jestli k D13 připojíš servo, tak to servo to blikání pochopí jako pokyn k pohybu a zaškube. Jakmile bootloader předá řízení tvému kódu, už si s tím děláš co chceš ty a servo by mělo jezdit jak si řekneš (nebo taky vůbec ne, když ho nebudeš komandovat, ale zacuká vždycky, když bude fyzicky připojené k pinu D13 a bude mít napájení)

Jestli tï to nevyhovuje, tak buď vynech pin D13, nebo zapínej napájení pro serva až později (stačí jakmile se k lizu dostane tvůj kód, tj. nejdřív v setup), nebo si uprav Bootloader. Anebo se s tím smiř, nebo to dokonce chtěj - vždyť to je indikace, že serva mají zapnuté napájení :D

jo.hak
Příspěvky: 8
Registrován: 31 bře 2020, 11:53

Re: Více serv -12 až 18

Příspěvek od jo.hak » 31 bře 2020, 14:43

A proč to dělá na pinech D4 až D12 (i D13), pokaždé s větším úhlem? Až do největšího u D13. A nedělá to na pinech D52 a dalších od 52....

jo.hak
Příspěvky: 8
Registrován: 31 bře 2020, 11:53

Re: Více serv -12 až 18

Příspěvek od jo.hak » 31 bře 2020, 14:44

A na pinech D2 a D3 NE?

DavidO
Příspěvky: 862
Registrován: 01 kvě 2013, 21:27

Re: Více serv -12 až 18

Příspěvek od DavidO » 31 bře 2020, 14:56

Tak tos ale na začátku neřekl, psal jsi jen o D13.

Udělej si co nejmenší kód, kde se to takhle chová, a ten sem pak pošli.

jo.hak
Příspěvky: 8
Registrován: 31 bře 2020, 11:53

Re: Více serv -12 až 18

Příspěvek od jo.hak » 31 bře 2020, 15:00

Kód: Vybrat vše

#include <Servo.h>     //zahrnutí knihovny pro ovládání servo motoru
Servo servoLPHorni, servoLPStred, servoLPDolni, servoPPHorni, servoPPStred, servoPPDolni,servoLSHorni,servoLSStred,servoLSDolni,servoPSHorni,servoPSStred,servoPSDolni;
int pos = 20;           //proměnná obsahující pozici motoru (úhel natočení)

void setup() 
                                                                     { 
  servoLPHorni.attach(2); // Levy ,Predni,Horni na pin 2 
  servoLPStred.attach(3);  // Levy, Predni, Prostredni na pin 3 
  servoLPDolni.attach(4); // Levy, Predni, Dolni na pin 4
  servoPPHorni.attach(5);   //Pravy,Predni,Horni na pin 5
  servoPPStred.attach(6);  // Pravy, Predni, Prostredni na pin 6
  servoPPDolni.attach(7);   // Pravy, Predni, Dolni na pin 7

  servoLSHorni.attach(8); // Levy ,Predni,Horni na pin 8
  servoLSStred.attach(9);  // Levy, Predni, Prostredni na pin 9 
  servoLSDolni.attach(10); // Levy, Predni, Dolni na pin 10
  servoPSHorni.attach(11);   //Pravy,Predni,Horni na pin 11
  servoPSStred.attach(12);  // Pravy, Predni, Prostredni na pin 12 
  servoPSDolni.attach(13);   // Pravy, Predni, Dolni na pin 13 
}

void loop() {
  nastavNulu();

  delay(1000);
}

void nastavNulu() {
  servoLPHorni.write(180);  //natočení motoru na aktuální úhel
    delay(20);           //chvilka čekání než se motor natočí
  servoLPStred.write(60);  //natočení motoru na aktuální úhel
    delay(20);           //chvilka čekání než se motor natočí
  servoLPDolni.write(120);  //natočení motoru na aktuální úhel
    delay(20);           //chvilka čekání než se motor natočí
  servoPPHorni.write(45);  //natočení motoru na aktuální úhel
    delay(20);           //chvilka čekání než se motor natočí
  servoPPStred.write(120);  //natočení motoru na aktuální úhel
    delay(20);           //chvilka čekání než se motor natočí
  servoPPDolni.write(60);  //natočení motoru na aktuální úhel
    delay(20);           //chvilka čekání než se motor natočí 

 servoLSHorni.write(135);  //natočení motoru na aktuální úhel
    delay(20);           //chvilka čekání než se motor natočí
  servoLSStred.write(60);  //natočení motoru na aktuální úhel
    delay(20);           //chvilka čekání než se motor natočí
  servoLSDolni.write(120);  //natočení motoru na aktuální úhel
    delay(20);           //chvilka čekání než se motor natočí
  servoPSHorni.write(45);  //natočení motoru na aktuální úhel
    delay(20);           //chvilka čekání než se motor natočí
  servoPSStred.write(120);  //natočení motoru na aktuální úhel
    delay(20);           //chvilka čekání než se motor natočí
  servoPSDolni.write(60);  //natočení motoru na aktuální úhel
    delay(20);           //chvilka čekání než se motor natočí 
}
// pro vkládání kódu máme tlačítko (páté zleva) nad editací příspěvku - díky, Dex

DavidO
Příspěvky: 862
Registrován: 01 kvě 2013, 21:27

Re: Více serv -12 až 18

Příspěvek od DavidO » 31 bře 2020, 15:27

Pro jistotu se přeptám - je to opravdu nejmenší kód, který se chová špatně? Když z něj cokoli umažeš, tak to funguje správně?

jo.hak
Příspěvky: 8
Registrován: 31 bře 2020, 11:53

Re: Více serv -12 až 18

Příspěvek od jo.hak » 31 bře 2020, 15:30

Omlouvám se, dnes jsem se sem před polednem připojil. Pro příště.
Nerozumím?? Když z něj něco umažu, tak už nebude pracovat správně :(

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 1 host