arduino stuffs
Diffstat (limited to 'ardu_robot/ardu_robot.ino')
-rw-r--r--ardu_robot/ardu_robot.ino134
1 files changed, 0 insertions, 134 deletions
diff --git a/ardu_robot/ardu_robot.ino b/ardu_robot/ardu_robot.ino
deleted file mode 100644
index 1409fa1..0000000
--- a/ardu_robot/ardu_robot.ino
+++ /dev/null
@@ -1,134 +0,0 @@
-/**********************************************************
-MyRobot.ino
-
-Initial sketch structured using tabs
-
-Michael Margolis 4 July 2012
-***********************************************************/
-
-#include <AFMotor.h> // adafruit motor shield library
-#include "RobotMotor.h" // 2wd or 4wd motor library
-
-#include "globalDefines.h" // global defines
-
-// Setup runs at startup and is used configure pins and init system variables
-void setup()
-{
- Serial.begin(9600);
- blinkNumber(8); // open port while flashing. Needed for Leonardo only
-
- motorBegin(MOTOR_LEFT);
- motorBegin(MOTOR_RIGHT);
-
- irSensorBegin(); // initialize sensors
- pinMode(LED_PIN, OUTPUT); // enable the LED pin for output
-
- Serial.println("Waiting for a sensor to detect blocked reflection");
-}
-
-void loop()
-{
- // call a function when reflection blocked on left side
- if(lookForObstacle(OBST_LEFT_EDGE) == true) {
- calibrateRotationRate(DIR_LEFT,360); // calibrate ccw rotation
- }
- // as above for right sensor
- if(lookForObstacle(OBST_RIGHT_EDGE) == true) {
- calibrateRotationRate(DIR_RIGHT, 360); // calibrate CW rotation
- }
-}
-
-// function to indicate numbers by flashing the built-in LED
-void blinkNumber( byte number) {
- pinMode(LED_PIN, OUTPUT); // enable the LED pin for output
- while(number--) {
- digitalWrite(LED_PIN, HIGH); delay(100);
- digitalWrite(LED_PIN, LOW); delay(400);
- }
-}
-
-/**********************
- code to look for obstacles
-**********************/
-
-// returns true if the given obstacle is detected
-boolean lookForObstacle(int obstacle)
-{
- switch(obstacle) {
- case OBST_FRONT_EDGE: return irEdgeDetect(DIR_LEFT) ||
- irEdgeDetect(DIR_RIGHT);
- case OBST_LEFT_EDGE: return irEdgeDetect(DIR_LEFT);
- case OBST_RIGHT_EDGE: return irEdgeDetect(DIR_RIGHT);
- }
- return false;
-}
-
-/*************************************
- functions to rotate the robot
-*************************************/
-
-// return the time in milliseconds to turn the given angle at the given speed
-long rotationAngleToTime( int angle, int speed)
-{
-int fullRotationTime; // time to rotate 360 degrees at given speed
-
- if(speed < MIN_SPEED)
- return 0; // ignore speeds slower then the first table entry
-
- angle = abs(angle);
-
- if(speed >= 100)
- fullRotationTime = rotationTime[NBR_SPEEDS-1]; // the last entry is 100%
- else
- {
- int index = (speed - MIN_SPEED) / SPEED_TABLE_INTERVAL ; // index into speed and time tables
- int t0 = rotationTime[index];
- int t1 = rotationTime[index+1]; // time of the next higher speed
- fullRotationTime = map(speed, speedTable[index], speedTable[index+1], t0, t1);
- // Serial.print("index= "); Serial.print(index); Serial.print(", t0 = "); Serial.print(t0); Serial.print(", t1 = "); Serial.print(t1);
- }
- // Serial.print(" full rotation time = "); Serial.println(fullRotationTime);
- long result = map(angle, 0,360, 0, fullRotationTime);
- return result;
-}
-
-// rotate the robot from MIN_SPEED to 100% increasing by SPEED_TABLE_INTERVAL
-void calibrateRotationRate(int sensor, int angle)
-{
- Serial.print(locationString[sensor]);
- Serial.println(" calibration" );
- for(int speed = MIN_SPEED; speed <= 100; speed += SPEED_TABLE_INTERVAL)
- {
- delay(1000);
- blinkNumber(speed/10);
-
- if( sensor == DIR_LEFT)
- { // rotate left
- motorReverse(MOTOR_LEFT, speed);
- motorForward(MOTOR_RIGHT, speed);
- }
- else if( sensor == DIR_RIGHT)
- { // rotate right
- motorForward(MOTOR_LEFT, speed);
- motorReverse(MOTOR_RIGHT, speed);
- }
- else
- Serial.println("Invalid sensor");
-
- int time = rotationAngleToTime(angle, speed);
-
- Serial.print(locationString[sensor]);
- Serial.print(": rotate ");
- Serial.print(angle);
- Serial.print(" degrees at speed ");
- Serial.print(speed);
- Serial.print(" for ");
- Serial.print(time);
- Serial.println("ms");
- delay(time);
- motorStop(MOTOR_LEFT);
- motorStop(MOTOR_RIGHT);
- delay(2000); // two second delay between speeds
- }
-}
-