diff --git a/2011-firefly-mega-ssc32/firmware/2012-glcd-remote/hexapod_remote_glcd/hexapod_remote_glcd.ino b/2011-firefly-mega-ssc32/firmware/2012-glcd-remote/hexapod_remote_glcd/hexapod_remote_glcd.ino new file mode 100644 index 0000000..93fb15f --- /dev/null +++ b/2011-firefly-mega-ssc32/firmware/2012-glcd-remote/hexapod_remote_glcd/hexapod_remote_glcd.ino @@ -0,0 +1,259 @@ +/* + GLCD Library - Hello World + + This sketch prints "Hello World!" to the LCD + and shows the time in seconds since reset. + + The circuit: + See the inlcuded documentation in glcd/doc directory for how to wire + up the glcd module. glcd/doc/GLCDref.htm can be viewed in your browser + by clicking on the file. + + */ + +// include the library header +#include "Arduino.h" +#include "hexapod.h" +#include "glcd.h" +//#include "math.h" +//#include "Wire.h" +//#include "WiiChuck.h" +#include "bitmaps/allBitmaps.h" +//#include "IRremote.h" + +#define MAXANGLE 90 +#define MINANGLE -90 + +// include the Fonts +#include "fonts/allFonts.h" + +WiiChuck chuck = WiiChuck(); +int angleStart, currentAngle; +int tillerStart = 0; +double angle; +int RECV_PIN = 11; +int m, mt; //mode +long int oud, oud2, oudt, t; //ouden ontvangen code +String protocol; + +IRrecv irrecv(RECV_PIN); + +decode_results results; + +void setup() { + // Initialize the GLCD + GLCD.Init(); + + pinMode(13, OUTPUT); + digitalWrite(13, LOW); + + // Select the font for the default text area + GLCD.SelectFont(SystemFont5x7); + + Serial.begin(9600); + irrecv.enableIRIn(); // Start the IR receiver + + chuck.begin(); + while (!chuck.plugd) + chuck.CheckifPlugd(); + + //GLCD.DrawBitmap(Earth, 0, 0, WHITE); + + GLCD.CursorTo(12, 1); + GLCD.print("Nederland"); + delay(3500); +} + +long int getIR(decode_results *results) { + return results->value; +} + +void dump(decode_results *results) { + int count = results->rawlen; + GLCD.CursorTo(0, 1); + if (results->decode_type == UNKNOWN) { + protocol = "Unknown encoding: "; + } + else if (results->decode_type == NEC) { + protocol = "Decoded NEC: "; + } + else if (results->decode_type == SONY) { + protocol = "Decoded SONY: "; + } + else if (results->decode_type == RC5) { + protocol = "Decoded RC5: "; + } + else if (results->decode_type == RC6) { + protocol = "Decoded RC6: "; + } + GLCD.print(protocol); + GLCD.CursorTo(0, 2); + GLCD.print(oud2, HEX); + GLCD.CursorTo(0, 3); + GLCD.print(oud, HEX); + GLCD.CursorTo(0, 4); + long int t = results->value; + oudt = t; +} + +#define s1 50 +#define s2 50 +int stop = 0; +int stopstate = 0; + +void loop() +{ + if (irrecv.decode(&results)){ + long int t2 = getIR(&results); + t = t2; + } + + if (stop) + { + if ((t == 0x1045B) & (stopstate != 2)) { + mt = 0; + if (m == 0) + m = 1; + else + m = 0; + stopstate = 2; + } + else if (( t == 0x45B) & (stopstate != 3)) { + mt = 0; + if (m == 0) + m = 1; + else + m = 0; + stopstate = 3; + } + else if ((t == 0x1042C ) || ( t == 0x42C)) { + stop = false; + } + } + else if ((t == 0x431 ) || ( t == 0x10431)) { + digitalWrite(13, HIGH); + stop = true; + } + else if ((t == 0x40F ) || ( t == 0x1040F)) { + digitalWrite(13, HIGH); + irrecv.resume(); // Receive the next value + m = 60; + } + else if ((t == 0x1040C ) || ( t == 0x40C)) { + //power + GLCD.ClearScreen(); + //GLCD.DrawBitmap(Power, 64, 0, BLACK); + + while (1){ + } + } + else + { + mt++; + digitalWrite(13, LOW); + } + + switch (mt){ + case 1: + m = 0; + break; + case s1: + m = 1; + break; + case s1+s2: + mt = 0; + break; + } + + if (m == 0) + { + GLCD.ClearScreen(); + GLCD.CursorTo(0, 0); + GLCD.print("IR Receiver"); + //GLCD.DrawBitmap(Ir, 116, 0, BLACK); + if (irrecv.decode(&results)) { + dump(&results); + delay(100); + irrecv.resume(); // Receive the next value + oud2 = oud; + } + else + { + oud = oudt; + GLCD.CursorTo(0, 1); + GLCD.print(protocol); + GLCD.CursorTo(0, 2); + GLCD.print(oud2, HEX); + GLCD.CursorTo(0, 3); + GLCD.print(oud, HEX); + GLCD.CursorTo(0, 4); + GLCD.print("No DATA Input"); + } + + } + else + { + GLCD.ClearScreen(); + + chuck.update(); + if (!chuck.plugd) + chuck.CheckifPlugd(); + else { + + GLCD.CursorTo(0, 0); + + GLCD.print("MangaValk"); + //GLCD.DrawBitmap(Nun, 106, 0, BLACK); + + GLCD.CursorTo(0, 2); + + GLCD.print("C: "); + GLCD.print(chuck.buttonC); + GLCD.print(" Z: "); + GLCD.print(chuck.buttonZ); + + GLCD.CursorTo(0, 3); + GLCD.print("Roll: "); + GLCD.print(chuck.readRoll()); + GLCD.CursorTo(0, 4); + GLCD.print("Pitch: "); + GLCD.print(chuck.readPitch()-75); + GLCD.CursorTo(0, 5); + GLCD.print("Jy: "); + GLCD.print(chuck.readJoyY()); + GLCD.CursorTo(0, 6); + GLCD.print("Jx: "); + GLCD.print(chuck.readJoyX()); + GLCD.CursorTo(0, 7); + GLCD.print("Atan2: "); + GLCD.print(atan2(chuck.readJoyX(), chuck.readJoyY())); + } + + irrecv.resume(); // Receive the next value + } + delay(100); +} + + + + + + + + + + + + + + + + + + + + + + + +