Stránka 1 z 1

paralelní práce více serv

Napsal: 29 led 2018, 21:22
od cigi
Ahoj, na stará kolena se to učím a po různých blikáčkách chci rozchodit Merkur Beta přes Arduino. Jednotlvá serva si rozchodím pomocí knihovny Servo.h, ale potřebuji zpomalit přesuny a to umím pouze smyčkou for(). Tady jsem v koncích jak napsat, aby jelo víc smyček současně, každá s jinými parametry. V taskingu snad ani nejsem začátečník. Vůbec nevím, co hledat? Díky.

Re: paralelní práce více serv

Napsal: 30 led 2018, 12:35
od ohruska
Zdravím.
Nezkoušel jsem to, ale mělo by to fungovat.
V této knihovně lze řídit rychlost serva.

Kód: Vybrat vše

myServo.slowmove (newpos, speed);

Re: paralelní práce více serv

Napsal: 30 led 2018, 14:55
od cigi
Díky moc, vyzkouším a dám vědět. :P

Re: paralelní práce více serv

Napsal: 30 led 2018, 17:51
od ohruska
Zdravím.
Zkoušel jsem a je třeba v knihovně "VarSpeedServo.cpp" nahradit #include <WProgram.h> za #include <Arduino.h>.

Ještě ukázka kódu:

Kód: Vybrat vše

#include <VarSpeedServo.h>

VarSpeedServo servo1; 

void setup() {
  servo1.attach(9);  
  servo2.attach(10);

  Serial.begin(9600);
  Serial.println("Ready");
   servo1.write(90);
   Serial.println("90");
   delay(5000);
     servo1.write(45);
     Serial.println("45");
        delay(5000);
     servo1.slowmove(0,15);
     Serial.println("0");
        delay(5000);
     servo1.slowmove(90,5);
     Serial.println("0");
        delay(5000);
        
}

void loop() {

} 

Re: paralelní práce více serv

Napsal: 31 led 2018, 09:34
od cigi
Zkoušel jsem a hlásí chybu při kompilaci desky.
První chyba byla nedefinované 2. servo - vyřešeno přidáním (VarSpeedServo myServo2;)
pak jsem zkoušel i variantu bez serial.print

void loop() {
myServo1.slowmove (60, 10);
myServo2.slowmove (120, 5);
delay(2000);

myServo1.slowmove (0, 10);
myServo2.slowmove (60, 5);
delay(2000);

}

Pořád ta samá chyba. Knihovnu mám v adresáři spolu s programem (Arduino.h jsem do cpp vložil - vyměnil)

Náznak chybové hlášky (je jich asi 11):

D:\Ĺ kola\krouĹľek\Arduino\servo\merkurBetaRychlostDveSoucasne\merkurBetaRychlostDveSoucasneSpeedServo/merkurBetaRychlostDveSoucasneSpeedServo.ino:7: undefined reference to `VarSpeedServo::attach(int)'

Re: paralelní práce více serv

Napsal: 31 led 2018, 10:08
od ohruska
Za to Servo 2 se omlouvám.
Myslím si že nemáte knihovnu ve správném adresáři.
Soubor VarSpeedServo.zip je třeba rozbalit. Potom složku "VarSpeedServo" nakopírovat do složky knihoven "Arduino\libraries".
Pro jistotu jsem upravil knihovnu a přikládám archiv s provedenou opravou VarSpeedServo.zip.

Re: paralelní práce více serv

Napsal: 31 led 2018, 13:39
od cigi
Děkuji - funguje. Měl jsem špatně rozbalenou knihovnu - duplicitní adresář. V něm .cpp a vně .h. Snažím se pochopit řízení přes serial.print (dal jsem ho do loop(). Ale i tím mým "lama" postupem asi dokážu udělat několik sekvencí pohybů celé ruky. Zas jsem trochu moudřejší :D

Re: paralelní práce více serv

Napsal: 31 led 2018, 13:45
od cigi
Aha už svítá - serial print je jen na výpis činnosti. Ostatní řízení jsou standardní příkazy s a bez řízení rychlosti (příklad - porovnání). :oops:

Re: paralelní práce více serv

Napsal: 19 úno 2018, 12:17
od SkullKeep
Jestli toto pomůže tu je návod na ovládání dvou steper motorů. ===>https://github.com/snowdd1/multistepper