Author Topic: $50 wall avoidance?  (Read 2560 times)

0 Members and 1 Guest are viewing this topic.

Offline pomprockerTopic starter

  • Supreme Robot
  • *****
  • Posts: 1,430
  • Helpful? 16
  • Sorry miss, I was giving myself an oil-job.
$50 wall avoidance?
« on: March 11, 2008, 03:50:16 PM »
When I do the IR upgrade to my $50 robot, I understand that it will then chase a target, but does that work in conjunction with the photoresistors to go after light and chase objects? Also is there a way to add wall avoidance?

So far my robot is pretty lame  :-\  It just goes straight in the dark until it runs into a wall and then keeps going  ;D and then when its in full light (like the kitchen) it just goes in circles!!!  ???

Offline HDL_CinC_Dragon

  • Supreme Robot
  • *****
  • Posts: 1,261
  • Helpful? 5
Re: $50 wall avoidance?
« Reply #1 on: March 11, 2008, 08:56:29 PM »
no no, the IR upgrade doesnt make it chase targets. It gives it a more reliable chance of seeing the things in front of it and avoiding them(unless you program it to attack whatever it sees).
United States Marine Corps
Returns to society: 2014JAN11

Offline paulstreats

  • Supreme Robot
  • *****
  • Posts: 1,381
  • Helpful? 21
Re: $50 wall avoidance?
« Reply #2 on: March 12, 2008, 04:10:00 AM »
The sharp ir upgrade does make it chase targets but it doesnt work in conjunction with the photoresistors (which is lucky since yours isnt working properly)

Offline cooldog

  • Supreme Robot
  • *****
  • Posts: 751
  • Helpful? 4
  • be nice to nerds, one day they will be your boss
Re: $50 wall avoidance?
« Reply #3 on: March 12, 2008, 07:34:51 AM »
Also is there a way to add wall avoidance?

search the forum :P



Hope those links work.

Ok, so this is $50 robot with the sharp IR rangefinder upgrade version 2: the object avoider.
Still working out some kinks, like I have to get the rangefinder with the longer range, and finding "the perfect range" to work with. Right now Im still autocalibrating it every time I turn it on. Im sure the code could be better, I just changed a couple of lines, but not too bad for someone that knows nothing about anything!

Code: [Select]
*   Copyright (c) 2007 www.societyofrobots.com
*   (please link back if you use this code!)
*   This program is free software; you can redistribute it and/or modify
*   it under the terms of the GNU General Public License version 2 as
*   published by the Free Software Foundation.
*   Alternatively, this software may be distributed under the terms of BSD
*   license.
* $50 Robot with Sharp IR using Stampy Technology v1, May 19th, 2007
* Simple case-based method for a robot to do edge detection.

//SoR Include
#include "SoR_Utils.h" //includes all the technical stuff

//global variables
int sharp_IR_reading=0;

int scan_thresh=0;//threshold value of scanning sensor

int scan_angle=30;//position of scanner, in units of servo command
int max_scan_angle=56;//maximum position scanner can rotate to (57)

//this function causes scanning servo to center on edge of object
void scan(void)
//lower (-) goes right
//higher (+) goes left
//30 far right, 50 straight, 56 far left (until it jams)


if (sharp_IR_reading > scan_thresh)//object detected
if (scan_angle>41) //overflow protection
scan_angle-=2;//scan right
else //object not detected
if (scan_angle<=max_scan_angle) //maximum servo angle
scan_angle+=2; //scan left
else //if scanned all the way, this forces it to start over

//servo scan code

//automatically calculates threshold value before run
void autocalibrate(void)
scan_thresh=a2dConvert8bit(3);//sensor reading

int main(void)


delay_cycles(42000);//two second wait delay

/*********ADD YOUR CODE BELOW THIS LINE **********/

//find thresholds



if (sharp_IR_reading > scan_thresh)


//object is centered

delay_cycles(400);//a small delay to prevent crazy oscillations
/*********ADD YOUR CODE ABOVE THIS LINE **********/

return 0;

/*********************COMMAND LIST*************************

Delays - you can make your robot wait for a certain amount of time with this function.
Put the number of computational cycles to delay in the ().
23 cycles is about .992 milliseconds
to calculate: 23/.992*(time in milliseconds to delay) = cycles
Check servo datasheet where it says: 'Direction: Clockwise/Pulse Traveling 1500 to 1900usec'

servo_left(speed); and servo_right(speed);
Commands your servos to rotate at a certain speed.
Vary speed (which represents a delay in cycles) from 20 to 50.
Left is for port D0 and right is for port D1.

robot_turn_left(); and robot_turn_right(); and robot_go_straight();
Dont want to deal with speed?
Just call this function and it will 'just work.'

LED_on(); and LED_off();
Turns on and off your LED. The LED is on port D4.
By bringing port D4 low, you are turning on the LED.

Reads analog pin. For example, set 'pin' to 5 to read PC5.
'variable' will store the value.


anyways, any suggestions for how I could make it work better or anything I did wrong are welcome!

robot will rule the world and i will be building them

favorite web sites


Get Your Ad Here