Difference between revisions of "Sumobotsclass"
Line 7: | Line 7: | ||
<nowiki>unsigned int sensors[2];</nowiki> | <nowiki>unsigned int sensors[2];</nowiki> | ||
− | #define motor1dir 8 //direction motor 2 | + | <nowiki>#define motor1dir 8 //direction motor 2</nowiki> |
− | #define motor1speed 9 //pwm control motor 1 | + | <nowiki>#define motor1speed 9 //pwm control motor 1</nowiki> |
− | #define motor2dir 11 //direction motor 2 | + | <nowiki>#define motor2dir 11 //direction motor 2</nowiki> |
− | #define motor2speed 10 //pwm control motor 2 | + | <nowiki>#define motor2speed 10 //pwm control motor 2</nowiki> |
− | #define ledpin 13 | + | <nowiki>#define ledpin 13 //led pin </nowiki> |
− | </nowiki> | ||
void setup() { // put your setup code here, to run once: | void setup() { // put your setup code here, to run once: | ||
Line 63: | Line 62: | ||
qtr.read(sensors); | 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); | |
− | + | analogWrite(motor1speed,0); //stop | |
− | + | analogWrite(motor2speed,0); | |
− | + | delay(3000); | |
} | } | ||
− | + | ||
Revision as of 11:01, 23 October 2011
Motor control code
#include <PololuQTRSensors.h> //we're using the pololuQTR sensor library so we must attach it.
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];
#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
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);
delay (3000);
/* 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. */
blink(ledPin, 3, 100);
} //end setup
pinMode(ledpin, OUTPUT); digitalWrite(ledpin, HIGH); delay(3000); digitalWrite(ledpin, LOW);
}
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);
analogWrite(motor1speed,0); //stop
analogWrite(motor2speed,0);
delay(3000);
}
//blinks an LED
void blink(int whatPin, int howManyTimes, int milliSecs) {
int i = 0;
for ( i = 0; i < howManyTimes; i++) {
digitalWrite(whatPin, HIGH);
delay(milliSecs/2);
digitalWrite(whatPin, LOW);
delay(milliSecs/2);
}
}// end blink
Need a Mechapad or some Protoboard and Patience