| Spybot LF | |||||||||||||||
| This is a line follower made from a Spybot | |||||||||||||||
![]() |
|||||||||||||||
| Spybot LF is a very simple robot made from the Spybot "Shadowstrike" to follow a black line on a white background. Most of the required instructions are in the NQC program file listed below. |
|||||||||||||||
| Sample Spybot Line Follower | |||||||||||||||
| /* Spybot Line Follower written in NQC Steve Hassenplug http://www.geocities.com/stevehassenplug/ The Spybot should have the light sensor and the red light pointed towards the line (directly or using the fiber optic cables) Like this: http://www.brickshelf.com/cgi-bin/gallery.cgi?f=28583 To use: 1) Build Spybot Line follower 2) Download this program to Spybot using BricxCC ( http://hometown.aol.com/johnbinder/bricxcc.htm ) 3) Place Spybot on line & press run 4) Move Spybot over line & background 5) Press Touch sensor on Spybot to start it running The red & green LEDs will show the value read from the light sensor. The red = 1,2,4 (outside to inside) and the green = 8,16,32 (outside to inside) This program has 3 ranges. 1) Below min = black = turn right 2) Between min & max = grey = go forward 3) Above max = white = turn left GreyPercent is the Percent of area defined as between min + max Increasing this number will speed-up spybot. However it may not follow the line as well. */ #define GreyPercent 10 task main() { int Min; // low range for moving int Max; // high range for moving int tMin; // min light reading int tMax; // max light reading SetSensorMode(SENSOR_2,SENSOR_MODE_PERCENT); SetLight(LIGHT_ON); tMin = 100; tMax = 0; SetDirection(OUT_A+OUT_B,OUT_REV); // change this based on gearing // SetDirection(OUT_A+OUT_B,OUT_FWD); // calibrate light sensor while(SENSOR_1==0) // wait until button is pressed { SetLED(LED_MODE_ON,SENSOR_2); // show sensor value on display if(SENSOR_2<tMin) tMin = SENSOR_2; if(SENSOR_2>tMax) tMax = SENSOR_2; } // set min/max movement values Min = (tMax-tMin) * (50 - GreyPercent / 2) / 100 + tMin; Max = (tMax - Min + tMin) ; while(SENSOR_1==1); // wait until button is released while(true) { SetLED(LED_MODE_ON,SENSOR_2); // show sensor value on display if (SENSOR_2>=Min) On(OUT_A); else Off(OUT_A); if (SENSOR_2<=Max) On(OUT_B); else Off(OUT_B); } } |
|||||||||||||||
|
|||||||||||||||