Interaktiva sökvägen följande robotarm med pfodApp (3 / 3 steg)
Steg 3: Tillägg och slutsatser
Som presenteras här går programmerade banan förlorad när kraften tas bort. Så en möjlig förlängning till detta projekt skulle vara att lagra sökvägen i EEPROM så att underhålls genom kraft cykling.
Även i denna skiss visar menyn den aktuella positionen i texten längst ned på skärmen. T.ex. Position 3 10. En annan utsträckande skulle vara att ändra till bakgrundsfärg i den nuvarande ståndpunkten från gröna, < bg g > till någon annan färg, t.ex. gul < gb y > , som armen rör sig genom denna ståndpunkt.
Användning av isRefresh()
Detta är det första projektet att använda den nya jagsRefresh() inslag i pfod.
Från den första utgåvan hade pfod en menyn uppdatera anläggningen byggdes. När en pfodDevice, som denna robotarm, skickar en meny till pfodApp kan det inkludera ett nytt begära intervall. PfodApp sedan begär åter menyn i det här intervallet att få de senaste uppdateringarna. I versioner av pfodApp före V1.2.84 fanns det inget sätt för pfodDevice att veta om begäran om menyn var den första begäran eller ett nytt begär. Så pfodDevice var tvungen att skicka tillbaka hela menyn varje gång.
Detta kan ta en märkbar mängd tid för långa menyer och långsamma överföringshastigheter. Till exempel i det här projektet har huvudmenyn ca 540 bytes som tar mer än en halv sekund att skicka på 9600 baud. Eftersom Arduino använder blockerande seriella anslutningar, detta innebär den viktigaste loop() verkar sluta arbeta varje sekund eller så medan den meny uppdateringen skickas.
Det märks när armen är igång, som en paus i den arm rörelse varje sekund. Funktionen isRefresh() övervinner detta problem. Om pfodDevice skickar åter begära intervallet som ett negativt tal, då pfodApp använder det ny uppdatera budskapet, {:< cmd >} , åter begära i menyn och pfodParser definierar flaggan isRefresh() innan de passerar på kommandot för att begära menyn ska skickas igen. Den pfodDevice koden kan nu kontrollera denna flagga genom att ringa isRefresh() och om den är inställd, skicka tillbaka bara menyn uppdateringar snarare än på hela menyn. Menyn uppdateringar är mycket kortare, ca 100 byte, och resulterar inte i någon märkbar paus armlängds rörlighet.
Denna isRefresh() funktion är en optimering och bör som sådan inte användas om inte den normala uppdateringen orsakar märkbara problem.
Slutsats
Projektet ger ett enkelt sätt att programmet komplicerade banor för din robotarm. MeArm var används som exempel men samma synsätt kan tillämpas på andra robotarmar.