Don't ad-block us - support your favorite websites. We have safe, unobstrusive, robotics related ads that you actually want to see - see here for more.
0 Members and 1 Guest are viewing this topic.
Is there going to be a diference if I put the sensors a certain distance a part. (closer to each other is better, or vise versa)
the physically closer the sensors are, the less light difference there will be between them.
Isn't tht bad? don't you want there to be more diference so it'll be easier for the robot to see a diference?
I got the servo's today(they were in the mailbox for 7 hours Angry cause I didn't know they came) I got free upgrade to the 325HB with a baggy of tootsie rolls Shocked Cool , but they have diferent mounting hardware than admin's did Undecided . also there was no big red servo horn that was in the pic on the site
/****************************************************************************** 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.** Photovore v1, March 10th, 2007* Simple case-based method for a robot that chases light.******************************************************************************///SoR Include#include "SoR_Utils.h" //includes all the technical stuffint main(void) { //declare variables here //int i=250;//a 'whatever' variable int sensor_left=0;//left photoresistor int sensor_right=0;//right photoresistor int threshold=8;//the larger this number, the more likely your robot will drive straight /****************INITIALIZATIONS*******************/ //other stuff Im experimenting with for SoR //uartInit(); // initialize the UART (serial port) //uartSetBaudRate(9600);// set the baud rate of the UART for our debug/reporting output //rprintfInit(uartSendByte);// initialize rprintf system //timerInit(); // initialize the timer system configure_ports(); // configure which ports are analog, digital, etc. a2dInit(); // initialize analog to digital converter (ADC) a2dSetPrescaler(ADC_PRESCALE_DIV32); // configure ADC scaling a2dSetReference(ADC_REFERENCE_AVCC); // configure ADC reference voltage //rprintf("Initialization Complete\r\n"); /**************************************************/ /*********ADD YOUR CODE BELOW THIS LINE **********/ LED_off();//turn LED on while(1) { //store sensor data sensor_left=a2dConvert8bit(5); sensor_right=a2dConvert8bit(4); //detects more light on left side of robot if(sensor_left > sensor_right && (sensor_left - sensor_right) > threshold) {//go left servo_left(44); servo_right(44); } //detects more light on right side of robot else if(sensor_right > sensor_left && (sensor_right - sensor_left) > threshold) {//go right servo_left(25); servo_right(25); } //light is about equal on both sides else {//go straight servo_left(25); servo_right(44); } /* Servo Test Code i=250; while(i>0) { servo_left(40); i--; } i=250; while(i>0) { servo_left(24); i--; } */ //rprintf("Initialization Complete\r\n"); //output message to serial (use hyperterminal) //print("Hello, World! Read My Analog: %u\r\n", sensor_0); delay_cycles(500);//a small delay to prevent crazy oscillations } /*********ADD YOUR CODE ABOVE THIS LINE **********/ return 0; }/*********************COMMAND LIST*************************delay_cycles(cycles);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 millisecondsto calculate: 23/.992*(time in milliseconds to delay) = cyclesCheck 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.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.variable=a2dConvert8bit(pin);Reads analog pin. For example, set 'pin' to 5 to read PC5.'variable' will store the value.***********************************************************/
23 cycles is about .992 millisecondsto calculate: 23/.992*(time in milliseconds to delay) = cycles
/****************INITIALIZATIONS*******************/ //other stuff Im experimenting with for SoR //uartInit(); // initialize the UART (serial port) //uartSetBaudRate(9600);// set the baud rate of the UART for our debug/reporting output //rprintfInit(uartSendByte);// initialize rprintf system //timerInit(); // initialize the timer system configure_ports(); // configure which ports are analog, digital, etc. a2dInit(); // initialize analog to digital converter (ADC) a2dSetPrescaler(ADC_PRESCALE_DIV32); // configure ADC scaling a2dSetReference(ADC_REFERENCE_AVCC); // configure ADC reference voltage //rprintf("Initialization Complete\r\n"); /**************************************************/ /*********ADD YOUR CODE BELOW THIS LINE **********/ LED_off();//turn LED on/* Servo Test Code i=250; while(i>0) { servo_left(46); i--; } /*********ADD YOUR CODE ABOVE THIS LINE **********/ return 0; }/*********************COMMAND LIST*************************delay_cycles(cycles);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 millisecondsto calculate: 23/.992*(time in milliseconds to delay) = cyclesCheck 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.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.variable=a2dConvert8bit(pin);Reads analog pin. For example, set 'pin' to 5 to read PC5.'variable' will store the value.***********************************************************/
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.
//************DELAY FUNCTIONS************//wait for X amount of cycles (23 cycles is about .992 milliseconds)//to calculate: 23/.992*(time in milliseconds) = number of cyclesvoid delay_cycles(unsigned long int cycles) { while(cycles > 0) cycles--; }//***************************************
servo_left(35);//1.5ms PWM, left servo remains stationary