
Andy Roid
I have been messing with this for a while and can't make progress. I want to track forward on a set compass heading. If there is a variation from the heading I want to make a correction turn back toward the heading. I have made the compass to read with a +/- 5 degree tolerance. For setup I am using a deviation of 30 degrees, but will narrow it to 10 degrees once it is working. Code:
$compass_setting = 150
$compass_setting2 = $compass_setting + 30
$compass_setting3 = $compass_setting - 30
:loop
if ($CompassHeading = $compass_setting)
Forward()
endif
if ($CompassHeading = $compass_setting3)
Left()
endif
Goto(:loop)
I have tried a number of variations but no luck.
Any ideas?
Ron
Second, you have capitals where you shouldn't.
Third, you dont need individual ifs for each variable. Use elseif to lump it together.
A bit of an oversight I often do myself!
Continually sending a Left() to the robot will keep reset the movement to left. it's already going left, so no point to keep sending left().
Probably a good idea to check what the current direction is before sending the command again.
Ron
Thanks for the help.
Ron
So you could do something like this...
Code:
Here's the Blockly workspace:
facecompassdirection.ezblockly
I will load it and give it a try. My friend will have another skill added to the list.
I run a bunch of separate codes. One is the Radar avoidance, facial tracking moving the head, tracking moving the eyes, (the camera is mounted under her nose) and compass tracking.
The voice is a Cepstral male voice (for now). His name is Antonn. He enjoys having conversations using responses to questions and when he gets lazy he makes requests to Alexa. He also runs light and outlet controls which I built (before the many smart devices became available). It is nice to ask him to make coffee in the morning and letting me know when it is done, or operating lights.
Thanks for the code,
Ron