aboutsummaryrefslogtreecommitdiff
path: root/libraries/Robot_Control/examples/explore
diff options
context:
space:
mode:
authorFede85 <f.vanzati@gmail.com>2013-07-03 22:00:02 +0200
committerFede85 <f.vanzati@gmail.com>2013-07-03 22:00:02 +0200
commitfd8c367304fe62a107332db19880c88f9ac0d082 (patch)
treea6a2713b1e788a2eb6f95ef701a0a01e0d258c67 /libraries/Robot_Control/examples/explore
parentcb3003082e7e140850071eba914c0b4347bc3bf1 (diff)
SPI library to the new format and moved Robot_Motor and Robot_Control libraries
Diffstat (limited to 'libraries/Robot_Control/examples/explore')
-rw-r--r--libraries/Robot_Control/examples/explore/R01_Logo/R01_Logo.ino134
-rw-r--r--libraries/Robot_Control/examples/explore/R02_Line_Follow/R02_Line_Follow.ino73
-rw-r--r--libraries/Robot_Control/examples/explore/R03_Disco_Bot/R03_Disco_Bot.ino179
-rw-r--r--libraries/Robot_Control/examples/explore/R04_Compass/R04_Compass.ino70
-rw-r--r--libraries/Robot_Control/examples/explore/R05_Inputs/R05_Inputs.ino166
-rw-r--r--libraries/Robot_Control/examples/explore/R06_Wheel_Calibration/R06_Wheel_Calibration.ino103
-rw-r--r--libraries/Robot_Control/examples/explore/R07_Runaway_Robot/R07_Runaway_Robot.ino78
-rw-r--r--libraries/Robot_Control/examples/explore/R08_Remote_Control/R08_Remote_Control.ino123
-rw-r--r--libraries/Robot_Control/examples/explore/R09_Picture_Browser/R09_Picture_Browser.ino159
-rw-r--r--libraries/Robot_Control/examples/explore/R10_Rescue/R10_Rescue.ino124
-rw-r--r--libraries/Robot_Control/examples/explore/R11_Hello_User/R11_Hello_User.ino181
11 files changed, 0 insertions, 1390 deletions
diff --git a/libraries/Robot_Control/examples/explore/R01_Logo/R01_Logo.ino b/libraries/Robot_Control/examples/explore/R01_Logo/R01_Logo.ino
deleted file mode 100644
index 794479e..0000000
--- a/libraries/Robot_Control/examples/explore/R01_Logo/R01_Logo.ino
+++ /dev/null
@@ -1,134 +0,0 @@
-/* Robot Logo
-
- This sketch demonstrates basic movement of the Robot.
- When the sketch starts, press the on-board buttons to tell
- the robot how to move. Pressing the middle button will
- save the pattern, and the robot will follow accordingly.
- You can record up to 20 commands. The robot will move for
- one second per command.
-
- This example uses images on an SD card. It looks for
- files named "lg0.bmp" and "lg1.bmp" and draws them on the
- screen.
-
- Circuit:
- * Arduino Robot
-
- created 1 May 2013
- by X. Yang
- modified 12 May 2013
- by D. Cuartielles
-
- This example is in the public domain
- */
-
-#include <ArduinoRobot.h> // include the robot library
-
-int commands[20]; // array for storing commands
-
-void setup() {
- // initialize the Robot, SD card, and display
- Robot.begin();
- Robot.beginTFT();
- Robot.beginSD();
-
- // draw "lg0.bmp" and "lg1.bmp" on the screen
- Robot.displayLogos();
-}
-
-void loop() {
-
- Robot.drawBMP("intro.bmp", 0, 0); //display background image
-
- iniCommands(); // remove commands from the array
- addCommands(); // add commands to the array
-
- delay(1000); // wait for a second
-
- executeCommands(); // follow orders
-
- Robot.stroke(0,0,0);
- Robot.text("Done!", 5, 103); // write some text to the display
- delay(1500); // wait for a moment
-}
-
-// empty the commands array
-void iniCommands() {
- for(int i=0; i<20; i++)
- commands[i]=-1;
-}
-
-// add commands to the array
-void addCommands() {
- Robot.stroke(0,0,0);
- // display text on the screen
- Robot.text("1. Press buttons to\n add commands.\n\n 2. Middle to finish.", 5, 5);
-
- // read the buttons' state
- for(int i=0; i<20;) { //max 20 commands
- int key = Robot.keyboardRead();
- if(key == BUTTON_MIDDLE) { //finish input
- break;
- }else if(key == BUTTON_NONE) { //if no button is pressed
- continue;
- }
- commands[i] = key; // save the button to the array
- PrintCommandI(i, 46); // print the command on the screen
- delay(100);
- i++;
- }
-}
-
-// run through the array and move the robot
-void executeCommands() {
- // print status to the screen
- Robot.text("Excuting...",5,70);
-
- // read through the array and move accordingly
- for(int i=0; i<20; i++) {
- switch(commands[i]) {
- case BUTTON_LEFT:
- Robot.turn(-90);
- break;
- case BUTTON_RIGHT:
- Robot.turn(90);
- break;
- case BUTTON_UP:
- Robot.motorsWrite(255, 255);
- break;
- case BUTTON_DOWN:
- Robot.motorsWrite(-255, -255);
- break;
- case BUTTON_NONE:
- return;
- }
- // print the current command to the screen
- Robot.stroke(255,0,0);
- PrintCommandI(i, 86);
- delay(1000);
-
- // stop moving for a second
- Robot.motorsStop();
- delay(1000);
- }
-}
-
-// convert the button press to a single character
-char keyToChar(int key) {
- switch(key) {
- case BUTTON_LEFT:
- return '<';
- case BUTTON_RIGHT:
- return '>';
- case BUTTON_UP:
- return '^';
- case BUTTON_DOWN:
- return 'v';
- }
-}
-
-// display a command
-void PrintCommandI(int i, int originY) {
- Robot.text(keyToChar(commands[i]), i%14*8+5, i/14*10+originY);
-}
-
diff --git a/libraries/Robot_Control/examples/explore/R02_Line_Follow/R02_Line_Follow.ino b/libraries/Robot_Control/examples/explore/R02_Line_Follow/R02_Line_Follow.ino
deleted file mode 100644
index 58de253..0000000
--- a/libraries/Robot_Control/examples/explore/R02_Line_Follow/R02_Line_Follow.ino
+++ /dev/null
@@ -1,73 +0,0 @@
-/* Robot Line Follow
-
- This sketch demonstrates the line following capabilities
- of the Arduino Robot. On the floor, place some black
- electrical tape along the path you wish the robot to follow.
- To indicate a stopping point, place another piece of tape
- perpendicular to the path.
-
- Circuit:
- * Arduino Robot
-
- created 1 May 2013
- by X. Yang
- modified 12 May 2013
- by D. Cuartielles
-
- This example is in the public domain
- */
-
-#include <ArduinoRobot.h> // include the robot library
-
-long timerOrigin; // used for counting elapsed time
-
-void setup() {
- // initialize the Robot, SD card, display, and speaker
- Robot.begin();
- Robot.beginTFT();
- Robot.beginSD();
- Robot.beginSpeaker();
-
- // show the logots on the TFT screen
- Robot.displayLogos();
-
- Robot.drawBMP("lf.bmp", 0, 0); // display background image
-
- Robot.playFile("chase.sqm"); // play a song from the SD card
-
- // add the instructions
- Robot.text("Line Following\n\n place the robot on\n the track and \n see it run", 5, 5);
- Robot.text("Press the middle\n button to start...", 5, 61);
- Robot.waitContinue();
-
- // These are some general values that work for line following
- // uncomment one or the other to see the different behaviors of the robot
- // Robot.lineFollowConfig(11, 5, 50, 10);
- Robot.lineFollowConfig(14, 9, 50, 10);
-
- //set the motor board into line-follow mode
- Robot.setMode(MODE_LINE_FOLLOW);
-
- // start
- Robot.fill(255, 255, 255);
- Robot.stroke(255, 255, 255);
- Robot.rect(0, 0, 128, 80); // erase the previous text
- Robot.stroke(0, 0, 0);
- Robot.text("Start", 5, 5);
-
- Robot.stroke(0, 0, 0); // choose color for the text
- Robot.text("Time passed:", 5, 21); // write some text to the screen
-
- timerOrigin=millis(); // keep track of the elapsed time
-
- while(!Robot.isActionDone()) { //wait for the finish signal
- Robot.debugPrint(millis()-timerOrigin, 5, 29); // show how much time has passed
- }
-
- Robot.stroke(0, 0, 0);
- Robot.text("Done!", 5, 45);
-}
-void loop() {
- //nothing here, the program only runs once. Reset the robot
- //to do it again!
-}
diff --git a/libraries/Robot_Control/examples/explore/R03_Disco_Bot/R03_Disco_Bot.ino b/libraries/Robot_Control/examples/explore/R03_Disco_Bot/R03_Disco_Bot.ino
deleted file mode 100644
index 3574b01..0000000
--- a/libraries/Robot_Control/examples/explore/R03_Disco_Bot/R03_Disco_Bot.ino
+++ /dev/null
@@ -1,179 +0,0 @@
-/* Disco Bot
-
- This sketch shows you how to use the melody playing
- feature of the robot, with some really cool 8-bit music.
- Music will play when the robot is turned on, and it
- will show you some dance moves.
-
- Circuit:
- * Arduino Robot
-
- created 1 May 2013
- by X. Yang
- modified 12 May 2013
- by D. Cuartielles
-
- This example is in the public domain
- */
-
-#include <ArduinoRobot.h> // include the robot library
-
-/* Dancing steps:
- S: stop
- L: turn left
- R: turn right
- F: go forward
- B: go backwards
-
- The number after each command determines how long
- each step lasts. Each number is 1/2 second long.
-
- The "\0" indicates end of string
-*/
-char danceScript[] = "S4L1R1S2F1B1S1\0";
-
-int currentScript = 0; // what step are we at
-
-int currentSong = 0; // keep track of the current song
-static const int SONGS_COUNT = 3; // number of songs
-
-// an array to hold the songs
-char musics[][11] = {
- "melody.sqm",
- "menu.sqm",
- "chase.sqm",
-};
-
-// variables for non-blocking delay
-long waitFrom;
-long waitTime = 0;
-
-void setup() {
- // initialize the Robot, SD card, display, and speaker
- Robot.begin();
- Robot.beginSpeaker();
- Robot.beginSD();
- Robot.beginTFT();
-
- // draw "lg0.bmp" and "lg1.bmp" on the screen
- Robot.displayLogos();
-
- // Print instructions to the screen
- Robot.text("1. Use left and\n right key to switch\n song", 5, 5);
- Robot.text("2. Put robot on the\n ground to dance", 5, 33);
-
- // wait for a few soconds
- delay(3000);
-
- setInterface(); // display the current song
- play(0); //play the first song in the array
-
- resetWait(); //Initialize non-blocking delay
-}
-
-void loop() {
- // read the butttons on the robot
- int key = Robot.keyboardRead();
-
- // Right/left buttons play next/previous song
- switch(key) {
- case BUTTON_UP:
- case BUTTON_LEFT:
- play(-1); //play previous song
- break;
- case BUTTON_DOWN:
- case BUTTON_RIGHT:
- play(1); //play next song
- break;
- }
-
- // dance!
- runScript();
-}
-
-// Dancing function
-void runScript() {
- if(!waiting()) { // if the previous instructions have finished
- // get the next 2 commands (direction and duration)
- parseCommand(danceScript[currentScript], danceScript[currentScript+1]);
- currentScript += 2;
- if(danceScript[currentScript] == '\0') // at the end of the array
- currentScript = 0; // start again at the beginning
- }
-}
-
-// instead of delay, use this timer
-boolean waiting() {
- if(millis()-waitFrom >= waitTime)
- return false;
- else
- return true;
-}
-
-// how long to wait
-void wait(long t) {
- resetWait();
- waitTime = t;
-}
-
-// reset the timer
-void resetWait() {
- waitFrom = millis();
-}
-
-// read the direction and dirstion of the steps
-void parseCommand(char dir, char duration) {
- //convert the scripts to action
- switch(dir) {
- case 'L':
- Robot.motorsWrite(-255, 255);
- break;
- case 'R':
- Robot.motorsWrite(255, -255);
- break;
- case 'F':
- Robot.motorsWrite(255, 255);
- break;
- case 'B':
- Robot.motorsWrite(-255, -255);
- break;
- case 'S':
- Robot.motorsStop();
- break;
- }
- //You can change "500" to change the pace of dancing
- wait(500*(duration-'0'));
-}
-
-// display the song
-void setInterface() {
- Robot.clearScreen();
- Robot.stroke(0, 0, 0);
- Robot.text(musics[0], 0, 0);
-}
-
-// display the next song
-void select(int seq, boolean onOff) {
- if(onOff){//select
- Robot.stroke(0, 0, 0);
- Robot.text(musics[seq], 0, 0);
- }else{//deselect
- Robot.stroke(255, 255, 255);
- Robot.text(musics[seq], 0, 0);
- }
-}
-
-// play the slected song
-void play(int seq) {
- select(currentSong, false);
- if(currentSong <= 0 && seq == -1) { //previous of 1st song?
- currentSong = SONGS_COUNT-1; //go to last song
- } else if(currentSong >= SONGS_COUNT-1 && seq == 1) { //next of last?
- currentSong = 0; //go to 1st song
- } else {
- currentSong += seq; //next song
- }
- Robot.stopPlayFile();
- Robot.playFile(musics[currentSong]);
- select(currentSong, true); //display the current song
-}
diff --git a/libraries/Robot_Control/examples/explore/R04_Compass/R04_Compass.ino b/libraries/Robot_Control/examples/explore/R04_Compass/R04_Compass.ino
deleted file mode 100644
index a7a7315..0000000
--- a/libraries/Robot_Control/examples/explore/R04_Compass/R04_Compass.ino
+++ /dev/null
@@ -1,70 +0,0 @@
-/* Robot Compass
-
- The robot has an on-board compass module, with
- which it can tell the direction the robot is
- facing. This sketch will make sure the robot
- goes towards a certain direction.
-
- Beware, magnets will interfere with the compass
- readings.
-
- Circuit:
- * Arduino Robot
-
- 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 speedLeft;
-int speedRight;
-int compassValue;
-int direc = 180; //Direction the robot is heading
-
-void setup() {
- // initialize the modules
- Robot.begin();
- Robot.beginTFT();
- Robot.beginSD();
- Robot.displayLogos();
-}
-
-void loop() {
- // read the compass orientation
- compassValue = Robot.compassRead();
-
- // how many degrees are we off
- int diff = compassValue-direc;
-
- // modify degress
- if(diff > 180)
- diff = -360+diff;
- else if(diff < -180)
- diff = 360+diff;
-
- // Make the robot turn to its proper orientation
- diff = map(diff, -180, 180, -255, 255);
-
- if(diff > 0) {
- // keep the right wheel spinning,
- // change the speed of the left wheel
- speedLeft = 255-diff;
- speedRight = 255;
- } else {
- // keep the right left spinning,
- // change the speed of the left wheel
- speedLeft = 255;
- speedRight = 255+diff;
- }
- // write out to the motors
- Robot.motorsWrite(speedLeft, speedRight);
-
- // draw the orientation on the screen
- Robot.drawCompass(compassValue);
-}
diff --git a/libraries/Robot_Control/examples/explore/R05_Inputs/R05_Inputs.ino b/libraries/Robot_Control/examples/explore/R05_Inputs/R05_Inputs.ino
deleted file mode 100644
index 1359f8d..0000000
--- a/libraries/Robot_Control/examples/explore/R05_Inputs/R05_Inputs.ino
+++ /dev/null
@@ -1,166 +0,0 @@
-/* Robot Inputs
-
- This sketch shows you how to use the on-board
- potentiometer and buttons as inputs.
-
- Turning the potentiometer draws a clock-shaped
- circle. The up and down buttons change the pitch,
- while the left and right buttons change the tempo.
- The middle button resets tempo and pitch.
-
- Circuit:
- * Arduino Robot
-
- created 1 May 2013
- by X. Yang
- modified 12 May 2013
- by D. Cuartielles
-
- This example is in the public domain
- */
-
-#include <ArduinoRobot.h>
-
-// default tempo and pitch of the music
-int tempo = 60;
-int pitch = 1000;
-
-void setup() {
- // initialize the Robot, SD card, speaker, and display
- Robot.begin();
- Robot.beginTFT();
- Robot.beginSpeaker();
- Robot.beginSD();
-
- // draw "lg0.bmp" and "lg1.bmp" on the screen
- Robot.displayLogos();
-
- // play a sound file
- Robot.playFile("Melody.sqm");
-}
-
-void loop() {
- // check the value of the buttons
- keyDown(Robot.keyboardRead());
-
- // check the value of the pot
- drawKnob(Robot.knobRead());
-}
-
-// Draw the basic interface
-void renderUI() {
- //fill the buttons blank
- Robot.fill(255, 255, 255);
- Robot.rect(53, 58, 13, 13); // left
- Robot.rect(93, 58, 13, 13); // right
- Robot.rect(73, 38, 13, 13); // up
- Robot.circle(79, 64, 6); // middle
- Robot.rect(73, 78, 13, 13); // down
- Robot.circle(26, 116, 18); // knob
-
- //draw the vertical bargraph
- int fullPart=map(pitch, 200, 2000, 0, 58); //length of filled bargraph
- Robot.fill(255, 255, 255);
- Robot.rect(21, 30, 13, 58-fullPart);
- Robot.fill(0, 0, 255);
- Robot.rect(21, 88-fullPart, 13, fullPart); //58-fullPart+30
-
- //draw the horizontal bargraph
- fullPart = map(tempo, 20, 100, 0, 58); // length of filled bargraph
- Robot.fill(255, 190, 0);
- Robot.rect(53, 110, fullPart, 13);
- Robot.fill(255, 255, 255);
- Robot.rect(53+fullPart, 110, 58-fullPart, 13);
-}
-
-void keyDown(int keyCode) {
- // use a static int so it is persistent over time
- static int oldKey;
- switch(keyCode) {
- case BUTTON_LEFT:
- //left button pressed, reduces tempo
- tempo -= 5;
- if(tempo < 20) tempo = 20; //lowest tempo 20
- Robot.fill(255,190,0);
-
- Robot.rect(53, 58, 13, 13);
- break;
- case BUTTON_RIGHT:
- //right button pressed, increases tempo
- tempo += 5;
- if(tempo > 100) tempo = 100; //highest tempo 100
- Robot.fill(255,190,0);
- Robot.rect(93, 58, 13, 13);
- break;
- case BUTTON_UP:
- //up button pressed, increases pitch
- pitch += 120;
- if(pitch > 2000) pitch = 2000;
- Robot.fill(0, 0, 255);
-
- Robot.rect(73, 38, 13, 13);
- break;
- case BUTTON_DOWN:
- //down button pressed, reduces pitch
- pitch -= 120;
- if(pitch < 200){
- pitch = 200;
- }
- Robot.fill(0, 0, 255);
-
- Robot.rect(73, 78, 13, 13);
- break;
- case BUTTON_MIDDLE:
- //middle button pressed, resets tempo and pitch
- tempo = 60;
- pitch = 1000;
- Robot.fill(160,160,160);
-
- Robot.circle(79, 64, 6);
- break;
- case BUTTON_NONE:
- //Only when the keys are released(thus BUTTON_NONE is
- //encountered the first time), the interface will be
- //re-drawn.
- if(oldKey != BUTTON_NONE){
- renderUI();
- }
- break;
- }
- if(oldKey != keyCode) {
- // change the song's tempo
- Robot.tempoWrite(tempo);
- // change the song's pitch
- Robot.tuneWrite(float(pitch/1000.0));
- }
- oldKey = keyCode;
-}
-
-void drawKnob(int val) {
- static int x = 0, y = 0, val_old = 0;
- // radian number, -3.14 to 3.14
- float ang = map(val, 0, 1023, -PI*1000, PI*1000) / 1000.0;
-
- // erase the old line
- if (val_old != val) {
- Robot.stroke(255, 255, 255);
- Robot.line(26, 116, x, y);
- }
-
- // the following lines avoid a glitch in the TFT library
- // that seems to appear when drawing a vertical line
- if (val < 1011 && val > 265 || val < 253) {
- //a bit math for drawing the hand inside the clock
- x = 16*sin(ang)+26;
- y = 16*cos(ang)+116;
- }
- if (val > 265 && val < 253) {
- x = 10; y = 116;
- }
- if (val >= 1011) {
- x = 27; y = 100;
- }
- Robot.stroke(0, 0, 0);
- Robot.line(26, 116, x, y);
- val_old = val;
-}
diff --git a/libraries/Robot_Control/examples/explore/R06_Wheel_Calibration/R06_Wheel_Calibration.ino b/libraries/Robot_Control/examples/explore/R06_Wheel_Calibration/R06_Wheel_Calibration.ino
deleted file mode 100644
index c571b3a..0000000
--- a/libraries/Robot_Control/examples/explore/R06_Wheel_Calibration/R06_Wheel_Calibration.ino
+++ /dev/null
@@ -1,103 +0,0 @@
-/* 6 Wheel Calibration
-
- Use this sketch to calibrate the wheels in your robot.
- Your robot should drive as straight as possible when
- putting both motors at the same speed.
-
- Run the software and follow the on-screen instructions.
- Use the trimmer on the motor board to make sure the
- robot is working at its best!
- Circuit:
- * Arduino Robot
-
- created 1 May 2013
- by X. Yang
- modified 12 May 2013
- by D. Cuartielles
-
- This example is in the public domain
- */
-
-#include <ArduinoRobot.h> // inport the robot librsry
-// import the utility library
-// a description of its funtionality is below
-#include <utility/RobotTextManager.h>
-
-// arrays to hold the text for instructions
-char script1[] ="Wheel Calibration";
-char script2[] ="1. Put Robot on a\n flat surface";
-char script3[] ="2. Adjust speed with the knob on top";
-char script4[] ="3. If robot goes\n straight, it's done";
-char script5[] ="4. Use screwdriver\n on the bottom trim";
-char script6[] ="- Robot turns left,\n screw it clockwise;";
-char script7[] ="- Turns right, screw it ct-colockwise;";
-char script8[] ="5. Repeat 4 until\n going straight";
-
-int speedRobot; //robot speed
-int calibrationValue; //value for calibrate difference between wheels
-
-void setup(){
- //necessary initialization sequence
- Robot.begin();
- Robot.beginTFT();
- Robot.beginSD();
-
- // left and top margin for displaying text
- // see below for a description of this
- textManager.setMargin(5,5);
- // write all instructions at once
- writeAllscript();
-
-}
-void loop(){
- //Control the robot's speed with knob on top
- int speedRobot=map(Robot.knobRead(),0,1023,-255,255);
- Robot.motorsWrite(speedRobot,speedRobot);
-
- //read value of the pot on motor baord,to clibrate the wheels
- int calibrationValue=map(Robot.trimRead(),0,1023,-30,30);
- // print the values to the screen
- Robot.debugPrint(calibrationValue,110,145);
- delay(40);
-
-}
-
-void writeAllscript(){
- //prints 8 scripts one after another
- textManager.writeText(0,0,script1);
- textManager.writeText(1,0,script2);
- textManager.writeText(3,0,script3);
- textManager.writeText(5,0,script4);
- textManager.writeText(7,0,script5);
- textManager.writeText(9,0,script6);
- textManager.writeText(11,0,script7);
- textManager.writeText(13,0,script8);
-}
-
-/**
-textManager mostly contains helper functions for
-R06_Wheel_Calibration and R01_Hello_User.
-
- textManager.setMargin(margin_left, margin_top):
- Configure the left and top margin for text
- display. The margins will be used by
- textManager.writeText().
- Parameters:
- margin_left, margin_top: int, the margin values
- from the top and left side of the screen.
- Returns:
- none
-
- textManager.writeText(line,column,text):
- Display text on the specific line and column.
- It's different from Robot.text() which
- uses pixels for positioning the text.
- Parameters:
- line:int, which line is the text displayed. Each line
- is 10px high.
- column:int, which column is the text displayed. Each
- column is 8px wide.
- text:a char array(string) of the text to be displayed.
- Returns:
- none
-*/
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
deleted file mode 100644
index 9832d29..0000000
--- a/libraries/Robot_Control/examples/explore/R07_Runaway_Robot/R07_Runaway_Robot.ino
+++ /dev/null
@@ -1,78 +0,0 @@
-/* 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(");
- }
-}
diff --git a/libraries/Robot_Control/examples/explore/R08_Remote_Control/R08_Remote_Control.ino b/libraries/Robot_Control/examples/explore/R08_Remote_Control/R08_Remote_Control.ino
deleted file mode 100644
index fda21cb..0000000
--- a/libraries/Robot_Control/examples/explore/R08_Remote_Control/R08_Remote_Control.ino
+++ /dev/null
@@ -1,123 +0,0 @@
-/* 08 Remote Control
-
- *******************
- ***
- ***This example code is in an experimental state.
- ***You are welcome to try this with your robot,
- ***and no harm will come to it. We will provide a
- ***detailed description of an updated version of this
- ***in a future update
- ***
- *** For this example to work you need:
- ***
- *** - download and install the IR-Remote library by Ken Shirriff
- *** to be found at https://github.com/shirriff/Arduino-IRremote
- *** - get a Sony remote control
- ***
- *** This example will be updated soon, come back to the Robot
- *** page on the Arduino server for updates!!
- ***
- *******************
-
- If you connect a IR receiver to the robot,
- you can control it like you control a TV set.
- Using a Sony compatiable remote control,
- map some buttons to different actions.
- You can make the robot move around without
- even touching it!
-
- Circuit:
- * Arduino Robot
- * Connect the IRreceiver to TDK2
- * Sony compatible remote control
-
- based on the IRremote library
- by Ken Shirriff
- http://arcfn.com
-
- created 1 May 2013
- by X. Yang
- modified 12 May 2013
- by D. Cuartielles
-
- This example is in the public domain
- */
-
-// include the necessary libraries
-#include <IRremote.h>
-#include <ArduinoRobot.h>
-
-// Define a few commands from your remote control
-#define IR_CODE_FORWARD 0x2C9B
-#define IR_CODE_BACKWARDS 0x6C9B
-#define IR_CODE_TURN_LEFT 0xD4B8F
-#define IR_CODE_TURN_RIGHT 0x34B8F
-
-int RECV_PIN = TKD2; // the pin the IR receiver is connected to
-IRrecv irrecv(RECV_PIN); // an instance of the IR receiver object
-decode_results results; // container for received IR codes
-
-void setup() {
- // initialize the Robot, SD card, display, and speaker
- Robot.begin();
- Robot.beginTFT();
- Robot.beginSD();
-
- // print some text to the screen
- Robot.stroke(0, 0, 0);
- Robot.text("Remote Control code:", 5, 5);
- Robot.text("Command:", 5, 26);
- irrecv.enableIRIn(); // Start the receiver
-}
-
-void loop() {
- // if there is an IR command, process it
- if (irrecv.decode(&results)) {
- processResult();
- irrecv.resume(); // resume receiver
- }
-}
-
-void processResult() {
- unsigned long res = results.value;
- // print the value to the screen
- Robot.debugPrint(res, 5, 15);
-
- if(res == IR_CODE_FORWARD || res == IR_CODE_BACKWARDS || res == IR_CODE_TURN_LEFT || res == IR_CODE_TURN_RIGHT) {
- Robot.fill(255, 255, 255);
- Robot.stroke(255, 255, 255);
-
- Robot.rect(5, 36, 55, 10);
- }
- switch(results.value){
- case IR_CODE_FORWARD:
- Robot.stroke(0, 0, 0);
- Robot.text("Forward", 5, 36);
- Robot.motorsWrite(255, 255);
- delay(300);
- Robot.motorsStop();
- break;
- case IR_CODE_BACKWARDS:
- Robot.stroke(0, 0, 0);
- Robot.text("Backwards", 5, 36);
- Robot.motorsWrite(-255, -255);
- delay(300);
- Robot.motorsStop();
- break;
- case IR_CODE_TURN_LEFT:
- Robot.stroke(0, 0, 0);
- Robot.text("Left", 5, 36);
- Robot.motorsWrite(-255, 255);
- delay(100);
- Robot.motorsStop();
- break;
- case IR_CODE_TURN_RIGHT:
- Robot.stroke(0, 0, 0);
- Robot.text("Right", 5, 36);
- Robot.motorsWrite(255, -255);
- delay(100);
- Robot.motorsStop();
- break;
- }
-}
-
diff --git a/libraries/Robot_Control/examples/explore/R09_Picture_Browser/R09_Picture_Browser.ino b/libraries/Robot_Control/examples/explore/R09_Picture_Browser/R09_Picture_Browser.ino
deleted file mode 100644
index a43348c..0000000
--- a/libraries/Robot_Control/examples/explore/R09_Picture_Browser/R09_Picture_Browser.ino
+++ /dev/null
@@ -1,159 +0,0 @@
-/* Picture Browser
-
- You can make your own gallery/picture show with the
- Robot. Put some pictures on the SD card, start the
- sketch, they will diplay on the screen.
-
- Use the left/right buttons to navigate through the
- previous and next images.
-
- Press up or down to enter a mode where you change
- the pictures by rotating the robot.
-
- You can add your own pictures onto the SD card, and
- view them in the Robot's gallery!
-
- Pictures must be uncompressed BMP, 24-bit color depth,
- 160 pixels wide, and 128 pixels tall.
-
- They should be named as "picN.bmp". Replace 'N' with a
- number between 0 and 9.
-
- The current code only supports 10 pictures. How would you
- improve it to handle more?
-
- Circuit:
- * Arduino Robot
-
- created 1 May 2013
- by X. Yang
- modified 12 May 2013
- by D. Cuartielles
-
- This example is in the public domain
- */
-
-#include <ArduinoRobot.h> // include the robot library
-
-const int NUM_PICS = 4; //Total number of pictures in Gallery
-
-// name the modes
-const int CONTROL_MODE_KEY = 0;
-const int CONTROL_MODE_COMPASS = 1;
-
-char buffer[] = "pic1.bmp"; // current file name
-int i = 1; // Current gallery sequence counter
-int mode = 0; // Current mode
-
-// text to display on screen
-char modeNames[][9] = { "keyboard", "tilt " };
-
-void setup() {
- // initialize the Robot, SD card, display, and speaker
- Robot.beginSD();
- Robot.beginTFT();
- Robot.begin();
-
- // draw "lg0.bmp" and "lg1.bmp" on the screen
- Robot.displayLogos();
-
- // draw init3.bmp from the SD card on the screen
- Robot.drawBMP("init3.bmp", 0, 0);
-
- // display instructions
- Robot.stroke(0, 0, 0);
- Robot.text("The gallery\n\n has 2 modes, in\n keyboard mode, L/R\n key for switching\n pictures, U/D key\n for changing modes", 5, 5);
- delay(6000);
- Robot.clearScreen();
- Robot.drawBMP("pb.bmp", 0, 0);
- Robot.text("In tilt mode,\n quickly tilt the\n robot to switch\n pictures", 5, 5);
- delay(4000);
-}
-
-void loop() {
- buffer[3] = '0'+i;// change filename of the img to be displayed
- Robot.drawBMP(buffer, 0, 0); // draw the file on the screen
- // change control modes
- switch(mode) {
- case CONTROL_MODE_COMPASS:
- compassControl(3);
- break;
- case CONTROL_MODE_KEY:
- keyboardControl();
- break;
- }
- delay(200);
-}
-
-void keyboardControl() {
- //Use buttons to control the gallery
- while(true) {
- int keyPressed = Robot.keyboardRead(); // read the button values
- switch(keyPressed) {
- case BUTTON_LEFT: // display previous picture
- if(--i < 1) i = NUM_PICS;
- return;
- case BUTTON_MIDDLE: // do nothing
- case BUTTON_RIGHT: // display next picture
- if(++i > NUM_PICS) i = 1;
- return;
- case BUTTON_UP: // change mode
- changeMode(-1);
- return;
- case BUTTON_DOWN: // change mode
- changeMode(1);
- return;
- }
- }
-}
-
-// if controlling by the compass
-void compassControl(int change) {
- // Rotate the robot to change the pictures
- while(true) {
- // read the value of the compass
- int oldV = Robot.compassRead();
-
- //get the change of angle
- int diff = Robot.compassRead()-oldV;
- if(diff > 180) diff -= 360;
- else if(diff < -180) diff += 360;
-
- if(abs(diff) > change) {
- if(++i > NUM_PICS) i = 1;
- return;
- }
-
- // chage modes, if buttons are pressed
- int keyPressed = Robot.keyboardRead();
- switch(keyPressed) {
- case BUTTON_UP:
- changeMode(-1);
- return;
- case BUTTON_DOWN:
- changeMode(1);
- return;
- }
- delay(10);
- }
-}
-
-// Change the control mode and display it on the LCD
-void changeMode(int changeDir) {
- // alternate modes
- mode += changeDir;
- if(mode < 0) {
- mode = 1;
- } else if(mode > 1)
- mode=0;
-
- // display the mode on screen
- Robot.fill(255, 255, 255);
- Robot.stroke(255, 255, 255);
- Robot.rect(0, 0, 128, 12);
- Robot.stroke(0, 0, 0);
- Robot.text("Control:", 2, 2);
- Robot.text(modeNames[mode], 52, 2);
- delay(1000);
-}
-
diff --git a/libraries/Robot_Control/examples/explore/R10_Rescue/R10_Rescue.ino b/libraries/Robot_Control/examples/explore/R10_Rescue/R10_Rescue.ino
deleted file mode 100644
index 48044db..0000000
--- a/libraries/Robot_Control/examples/explore/R10_Rescue/R10_Rescue.ino
+++ /dev/null
@@ -1,124 +0,0 @@
-/* Robot Rescue
-
- In this example, the robot enters the line following mode and
- plays some music until it reaches its target. Once it finds the
- target, it pushes it out of the track. It then returns to the
- track and looks for a second target.
-
- You can make the robot push as many objects as you want to, just
- add more to calls to the rescue function or even move that code
- into the loop.
-
- Circuit:
- * Arduino Robot
- * some objects for the robot to push
- * a line-following circuit
-
- created 1 May 2013
- by X. Yang
- modified 12 May 2013
- by D. Cuartielles
-
- This example is in the public domain
- */
-
-#include <ArduinoRobot.h> // include the robot library
-
-void setup(){
- // initialize the Robot, SD card, display, and speaker
- Robot.begin();
- Robot.beginTFT();
- Robot.beginSD();
- Robot.beginSpeaker();
-
- // draw "lg0.bmp" and "lg1.bmp" on the screen
- Robot.displayLogos();
-
- // display the line following instructional image from the SD card
- Robot.drawBMP("lf.bmp", 0, 0);
-
- // play the chase music file
- Robot.playFile("chase.sqm");
-
- // add the instructions
- Robot.text("Rescue\n\n place the robot on\n the rescue track\n pushing the\n obstacles away", 5, 5);
- Robot.text("Press the middle\n button to start...", 5, 61);
- Robot.waitContinue();
-
- // start
- Robot.fill(255, 255, 255);
- Robot.stroke(255, 255, 255);
- Robot.rect(0, 0, 128, 80); // erase the previous text
- Robot.stroke(0, 0, 0);
- Robot.text("Start", 5, 5);
-
- // use this to calibrate the line following algorithm
- // uncomment one or the other to see the different behaviors of the robot
- // Robot.lineFollowConfig(11, 5, 50, 10);
- Robot.lineFollowConfig(14, 9, 50, 10);
-
- // run the rescue sequence
- rescueSequence();
- Robot.text("Found obstacle", 5, 12);
- // find the track again
- goToNext();
- Robot.text("Found track", 5, 19);
- // run the rescue sequence a second time
- rescueSequence();
- Robot.text("Found obstacle", 5, 26);
-
- // here you could go on ...
-
- // write status on the screen
- Robot.stroke(0, 0, 0);
- Robot.text("Done!", 5, 25);
-}
-
-void loop(){
- //nothing here, the program only runs once.
-}
-
-// run the sequence
-void rescueSequence(){
- //set the motor board into line-follow mode
- Robot.setMode(MODE_LINE_FOLLOW);
-
- while(!Robot.isActionDone()){ // wait until it is no longer following the line
- }
- delay(1000);
-
- // do the rescue operation
- doRescue();
- delay(1000);
-}
-
-void doRescue(){
- // Reached the endline, engage the target
- Robot.motorsWrite(200,200);
- delay(250);
- Robot.motorsStop();
- delay(1000);
-
- // Turn the robot
- Robot.turn(90);
- Robot.motorsStop();
- delay(1000);
-
- // Move forward
- Robot.motorsWrite(200,200);
- delay(500);
- Robot.motorsStop();
- delay(1000);
-
- // move backwards, leave the target
- Robot.motorsWrite(-200,-200);
- delay(500);
- Robot.motorsStop();
-}
-
-void goToNext(){
- // Turn the robot
- Robot.turn(-90);
- Robot.motorsStop();
- delay(1000);
-}
diff --git a/libraries/Robot_Control/examples/explore/R11_Hello_User/R11_Hello_User.ino b/libraries/Robot_Control/examples/explore/R11_Hello_User/R11_Hello_User.ino
deleted file mode 100644
index 90fbfff..0000000
--- a/libraries/Robot_Control/examples/explore/R11_Hello_User/R11_Hello_User.ino
+++ /dev/null
@@ -1,181 +0,0 @@
-/* Hello User
-
- Hello User! This sketch is the first thing you see
- when starting this robot. It gives you a warm welcome,
- showing you some of the really amazing abilities of
- the robot, and make itself really personal to you.
-
- Circuit:
- * Arduino Robot
-
- created 1 May 2013
- by X. Yang
- modified 12 May 2013
- by D. Cuartielles
-
- This example is in the public domain
- */
-
-#include <ArduinoRobot.h> // include the robot library
-// include the utility function for ths sketch
-// see the details below
-#include <utility/RobotTextManager.h>
-
-char buffer[20];//for storing user name
-
-void setup(){
- //necessary initialization sequence
- Robot.begin();
- Robot.beginTFT();
- Robot.beginSpeaker(32000);
- Robot.beginSD();
-
- // show the logos from the SD card
- Robot.displayLogos();
-
- // play the music file
- Robot.playFile("menu.sqm");
-
- // clear the screen
- Robot.clearScreen();
-
- // From now on, display different slides of
- // text/pictures in sequence. The so-called
- // scripts are strings of text stored in the
- // robot's memory
-
- // these functions are explained below
-
- //Script 6
- textManager.writeScript(5, 4, 0);
- textManager.writeScript(9, 10, 0);
- Robot.waitContinue();
- delay(500);
- Robot.clearScreen();
-
- //Script 7
- textManager.writeScript(6, 4, 0);
- textManager.writeScript(9, 10, 0);
- Robot.waitContinue();
- delay(500);
- Robot.clearScreen();
-
- //Script 8
- // this function enables sound and images at once
- textManager.showPicture("init2.bmp", 0, 0);
-
- textManager.writeScript(7, 2, 0);
- textManager.writeScript(9, 7, 0);
- Robot.waitContinue();
- delay(500);
- Robot.clearScreen();
-
- //Script 9
- textManager.showPicture("init3.bmp", 0, 0);
- textManager.writeScript(8, 2, 0);
- textManager.writeScript(9, 7, 0);
- Robot.waitContinue();
- delay(500);
- Robot.clearScreen();
-
- //Script 11
- textManager.writeScript(10, 4, 0);
- textManager.writeScript(9, 10, 0);
- Robot.waitContinue();
- delay(500);
- Robot.clearScreen();
-
- //Input screen
- textManager.writeScript(0, 1, 1);
- textManager.input(3, 1, USERNAME);
-
- textManager.writeScript(1, 5, 1);
- textManager.input(7, 1, ROBOTNAME);
-
- delay(1000);
- Robot.clearScreen();
-
- //last screen
- textManager.showPicture("init4.bmp", 0, 0);
- textManager.writeText(1, 2, "Hello");
- Robot.userNameRead(buffer);
- textManager.writeText(3, 2, buffer);
-
- textManager.writeScript(4,10,0);
-
- Robot.waitContinue(BUTTON_LEFT);
- Robot.waitContinue(BUTTON_RIGHT);
- textManager.showPicture("kt1.bmp", 0, 0);
-}
-
-void loop(){
- // do nothing here
-}
-
-
-/**
-textManager mostly contains helper functions for
-R06_Wheel_Calibration and R01_Hello_User.
-
-The ones used in this example:
- textManager.setMargin(margin_left, margin_top):
- Configure the left and top margin for text
- display. The margins will be used for
- textManager.writeText().
- Parameters:
- margin_left, margin_top: the margin values
- from the top and left side of the screen.
- Returns:
- none
-
- textManager.writeScript(script_number,line,column):
- Display a script of Hello User example.
- Parameters:
- script_number: an int value representing the
- script to be displayed.
- line, column: in which line,column is the script
- displayed. Same as writeText().
- Returns:
- none
-
- textManager.input(line,column,codename):
- Print an input indicator(">") in the line and column,
- dispaly and receive input from a virtual keyboard,
- and save the value into EEPROM represented by codename
- Parameters:
- line,column: int values represents where the input
- starts. Same as wirteText().
- codename: either USERNAME,ROBOTNAME,CITYNAME or
- COUNTRYNAME. You can call Robot.userNameRead(),
- robotNameRead(),cityNameRead() or countryNameRead()
- to access the values later.
- Returns:
- none;
-
- textManager.writeText(line,column,text):
- Display text on the specific line and column.
- It's different from Robot.text() as the later
- uses pixels for positioning the text.
- Parameters:
- line:in which line is the text displayed. Each line
- is 10px high.
- column:in which column is the text displayed. Each
- column is 8px wide.
- text:a char array(string) of the text to be displayed.
- Returns:
- none
-
- textManager.showPicture(filename, x, y):
- It has the same functionality as Robot.drawPicture(),
- while fixing the conflict between drawPicture() and
- sound playing. Using Robot.drawPicture(), it'll have
- glitches when playing sound at the same time. Using
- showPicture(), it'll stop sound when displaying
- picture, so preventing the problem.
- Parameters:
- filename:string, name of the bmp file in sd
- x,y: int values, position of the picture
- Returns:
- none
-
-*/