Arduino komunikuje příliš pomalu

tomajstr

Arduino komunikuje příliš pomalu
« kdy: 03. 07. 2014, 11:31:20 »
Dobrý den, mám arduino uno a udělal jsem jednoduchý prográmek na ovládání natočení serva
Kód: [Vybrat]
#include <Servo.h>

Servo serv;

void setup(){
  Serial.begin(9600);
  serv.attach(9);
}

void loop(){
  while(Serial.available()) {
    serv.write(Serial.parseInt());
  }
}
problém je, že servo reaguje se sekundovým zpožděním. Chci tím ovládat kormidlo u vznášedla a je to docela problém. nevíte někdo co s tím?
« Poslední změna: 03. 07. 2014, 22:48:37 od Petr Krčmář »


matoushybl

Re:arduino komunikuje příliš pomau
« Odpověď #1 kdy: 03. 07. 2014, 12:06:16 »
Zkuste místo řetězce znaků poslat pouze 1 byte obsahující natočení serva, podle mě dlouho trvá parseInt().
Dále bych
Kód: [Vybrat]
while(Serial.available()) nahradil pomocí
Kód: [Vybrat]
if(Serial.available()>=POCET_BYTU_KTERE_OCEKAVAM) protože tak jak je to teď může do serva zapisovat neplatná data když je v bufferu např. jen jeden byte a z něj špatně parsuje ten Integer.

Martin

Re:arduino komunikuje příliš pomau
« Odpověď #2 kdy: 03. 07. 2014, 12:11:09 »
Ahoj, souhlas s předešlým, jen bych se chtěl zeptat - neděje se Ti to, že když to pustíš, tak se servo natočí do výchozí pozice (93) a teprve pak reaguje? (tj ať je kdekoliv tak při zapnutí arduina se prostě pohne na stejné místo)

Díky

tomajstr

Re:arduino komunikuje příliš pomau
« Odpověď #3 kdy: 03. 07. 2014, 12:37:40 »
Jo, vždycky se po zapnutí natočí do jednoho místa. Jinak do arduina posílám čísla 0-180, tak nevím kolik mám očekávat bitů (mám arduino týden, teprve se učím).

Miszu

Re:arduino komunikuje příliš pomau
« Odpověď #4 kdy: 03. 07. 2014, 13:28:37 »
Sekundové zpoždění je protože defaultní hodnota je 1000ms, takže stačí nastavit nižší hodnotu v setupu.
Kód: [Vybrat]
Serial.setTimeout(50);


Solmyrus

Re:arduino komunikuje příliš pomau
« Odpověď #5 kdy: 03. 07. 2014, 13:31:11 »
Zdravim,
delam neco podobnyho a s timhle jsem nemel problem. Taky parsuju retezec (jeste k tomu ho splituju protoze se posilaji najednou hodnoty k vice servum) a vse bezi bez nejakych delayu. Zkusil bych si tam nahazet kontrolni vypisy s casem.
Jinak co se pokusu s servy tyce, tak jedna rada. koupil jsem si nelevnejsi micro servo (cekal jsem ze ho spalim svou nesikovnosti). Zapojil jsem ho v poradku a fungovalo. jen kdyz jsem mu dal polohu 0 tak tam dojelo, zacalo chrcet a pak strhlo potenciometr a od ty doby jen rotuje. Takze u levnejsich serv se uz drzim jen v rozmezi 15 az 165

tomajstr

Re:arduino komunikuje příliš pomau
« Odpověď #6 kdy: 03. 07. 2014, 16:20:43 »
už to funguje, dík za pomoc