diff options
author | Cristian Maglie <c.maglie@bug.st> | 2013-06-01 23:16:02 +0200 |
---|---|---|
committer | Cristian Maglie <c.maglie@bug.st> | 2013-06-01 23:16:02 +0200 |
commit | 177ad96f866714a4962be57f69cd3d5a6334cde1 (patch) | |
tree | 1072239986340d6a239adac924eddf2e1d1ca566 /libraries/Robot_Control/examples/explore/R07_Runaway_Robot | |
parent | 6cff36ac5e85c74bcb45cc53491ad69d64520b36 (diff) | |
parent | d90fcca5839d13d57ed527d4009b78d22dafbde7 (diff) |
Merge branch 'merge-1.0.5' into ide-1.5.x-discovery
Diffstat (limited to 'libraries/Robot_Control/examples/explore/R07_Runaway_Robot')
-rw-r--r-- | libraries/Robot_Control/examples/explore/R07_Runaway_Robot/R07_Runaway_Robot.ino | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/libraries/Robot_Control/examples/explore/R07_Runaway_Robot/R07_Runaway_Robot.ino b/libraries/Robot_Control/examples/explore/R07_Runaway_Robot/R07_Runaway_Robot.ino new file mode 100644 index 0000000..9832d29 --- /dev/null +++ b/libraries/Robot_Control/examples/explore/R07_Runaway_Robot/R07_Runaway_Robot.ino @@ -0,0 +1,78 @@ +/* Runaway Robot + + Play tag with your robot! With an ultrasonic + distance sensor, it's capable of detecting and avoiding + obstacles, never bumping into walls again! + + You'll need to attach an untrasonic range finder to TK1. + + Circuit: + * Arduino Robot + * US range finder like Maxbotix EZ10, with analog output + + created 1 May 2013 + by X. Yang + modified 12 May 2013 + by D. Cuartielles + + This example is in the public domain + */ + +// include the robot library +#include <ArduinoRobot.h> + +int sensorPin = TK1; // pin is used by the sensor + +void setup() { + // initialize the Robot, SD card, and display + Serial.begin(9600); + Robot.begin(); + Robot.beginTFT(); + Robot.beginSD(); + Robot.displayLogos(); + + // draw a face on the LCD screen + setFace(true); +} + +void loop() { + // If the robot is blocked, turn until free + while(getDistance() < 40) { // If an obstacle is less than 20cm away + setFace(false); //shows an unhappy face + Robot.motorsStop(); // stop the motors + delay(1000); // wait for a moment + Robot.turn(90); // turn to the right and try again + setFace(true); // happy face + } + // if there are no objects in the way, keep moving + Robot.motorsWrite(255, 255); + delay(100); +} + +// return the distance in cm +float getDistance() { + // read the value from the sensor + int sensorValue = Robot.analogRead(sensorPin); + //Convert the sensor input to cm. + float distance_cm = sensorValue*1.27; + return distance_cm; +} + +// make a happy or sad face +void setFace(boolean onOff) { + if(onOff) { + // if true show a happy face + Robot.background(0, 0, 255); + Robot.setCursor(44, 60); + Robot.stroke(0, 255, 0); + Robot.setTextSize(4); + Robot.print(":)"); + }else{ + // if false show an upset face + Robot.background(255, 0, 0); + Robot.setCursor(44, 60); + Robot.stroke(0, 255, 0); + Robot.setTextSize(4); + Robot.print("X("); + } +} |