aboutsummaryrefslogtreecommitdiff
path: root/libraries/Robot_Control/examples/explore/R05_Inputs/R05_Inputs.ino
diff options
context:
space:
mode:
Diffstat (limited to 'libraries/Robot_Control/examples/explore/R05_Inputs/R05_Inputs.ino')
-rw-r--r--libraries/Robot_Control/examples/explore/R05_Inputs/R05_Inputs.ino166
1 files changed, 0 insertions, 166 deletions
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;
-}