Difference between revisions of "Sumobotsclass"
Jump to navigation
Jump to search
Line 58: | Line 58: | ||
} | } | ||
+ | |||
+ | These are functions that make life easy, someone else did the math no we don't have to. | ||
void blink(int whatPin, int howManyTimes, int milliSecs) {//blinks an LED | void blink(int whatPin, int howManyTimes, int milliSecs) {//blinks an LED | ||
Line 69: | Line 71: | ||
}// end blink | }// end blink | ||
+ | float irdistance(int pin){ | ||
+ | //http://luckylarry.co.uk/arduino-projects/arduino-using-a-sharp-ir-sensor-for-distance-calculation/ | ||
+ | float volts, distance; | ||
+ | <nowiki>for (int i=0; i< 5; i++){ </nowiki> | ||
+ | volts = analogRead(pin)*0.0048828125;// (5/1024) | ||
+ | distance += 65* pow(volts, -1.10); //65 = theretical distance / (1/Volts)S | ||
+ | } | ||
+ | return (distance); | ||
+ | }//end irdistance | ||
Line 79: | Line 90: | ||
---- | ---- | ||
− | |||
Line 103: | Line 113: | ||
| Resistor||10k Ohm ||http://search.digikey.com/scripts/DkSearch/dksus.dll?Detail&name=CF14JT10K0CT-ND||5 | | Resistor||10k Ohm ||http://search.digikey.com/scripts/DkSearch/dksus.dll?Detail&name=CF14JT10K0CT-ND||5 | ||
|- | |- | ||
− | | Resistor||1k ohm||http://search.digikey.com/scripts/DkSearch/dksus.dll?Detail&name=CF14JT1K00CT-ND|| | + | | Resistor||1k ohm||http://search.digikey.com/scripts/DkSearch/dksus.dll?Detail&name=CF14JT1K00CT-ND||3 |
− | |||
− | |||
|- | |- | ||
| Voltage regulator||7805||http://search.digikey.com/scripts/DkSearch/dksus.dll?Detail&name=LM7805CT-ND||1 | | Voltage regulator||7805||http://search.digikey.com/scripts/DkSearch/dksus.dll?Detail&name=LM7805CT-ND||1 |
Revision as of 11:26, 23 October 2011
Motor control code
#include <PololuQTRSensors.h> //we're using the pololuQTR sensor library so we must attach it. #define motor1dir 8 //direction motor 2 #define motor1speed 9 //pwm control motor 1 #define motor2dir 11 //direction motor 2 #define motor2speed 10 //pwm control motor 2 #define ledpin 13 //led pin PololuQTRSensorsRC qtr((unsigned char[]) {19,18}, 2, 2000, 255); //declares two line sensors on pins 18 and 19 this corresponds to analog pins 4 and 5 unsigned int sensors[2];
void setup() { // put your setup code here, to run once: //motor control outputs pinMode(motor1dir, OUTPUT); pinMode(motor1speed, OUTPUT); pinMode(motor2dir, OUTPUT); pinMode(motor2speed, OUTPUT); // AV outputs pinMode(ledPin, OUTPUT); pinMode(buzzerPin, OUTPUT); pinMode(irSensorPin, INPUT); //Serial.begin(9600); // set up Serial library at 9600 bps for debugging delay (3000); //wait for everything and for the match to start blink(ledPin, 3, 100); // blink the LED 3 times. This should happen only once. // if you see the LED blink three times, it means that // the module reset itself,. probably because the motor // caused a brownout or a short. } //end setup
void loop() { // put your main code here, to run repeatedly:
qtr.read(sensors); analogWrite(motor2speed,255); //go all out analogWrite(motor1speed,255); digitalWrite(motor1dir, HIGH); //go forward digitalWrite(motor2dir, HIGH); delay(3000); digitalWrite(motor1dir, LOW); //go backwards digitalWrite(motor2dir, LOW); delay(3000); digitalWrite(motor1dir, HIGH); //go right digitalWrite(motor2dir, LOW); delay(3000); digitalWrite(motor1dir, LOW); //go right digitalWrite(motor2dir, HIGH); delay(3000); analogWrite(motor1speed,0); //stop analogWrite(motor2speed,0); delay(3000);
//Don't forget to enable the serial port in setup Serial.print(analogRead(irSensorPin)); Serial.print(" r= "); Serial.print(sensors[0]);//right Serial.print(" l= "); Serial.println(sensors[1]);//left
}
These are functions that make life easy, someone else did the math no we don't have to.
void blink(int whatPin, int howManyTimes, int milliSecs) {//blinks an LED int i = 0; for ( i = 0; i < howManyTimes; i++) { digitalWrite(whatPin, HIGH); delay(milliSecs/2); digitalWrite(whatPin, LOW); delay(milliSecs/2); } }// end blink
float irdistance(int pin){ //http://luckylarry.co.uk/arduino-projects/arduino-using-a-sharp-ir-sensor-for-distance-calculation/ float volts, distance; for (int i=0; i< 5; i++){ volts = analogRead(pin)*0.0048828125;// (5/1024) distance += 65* pow(volts, -1.10); //65 = theretical distance / (1/Volts)S } return (distance); }//end irdistance
Need a Mechapad or some Protoboard and Patience