FireFly 2012: handheld remote with graphic LCD, IR receiver and Wii Nunchuk
From the Arduino sketchbook (Electronics\Arduino\Hexapod\hexapod_remote_glcd, was GLCD).
This commit is contained in:
1 parent
8e66e26bb9
commit
2e063fc0d9
1 file changed
+259
+259
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in new issue
Block a user