Created
April 4, 2015 15:41
-
-
Save MarinusLeeuwerik/32b41ed1b4e9fe6abe8b to your computer and use it in GitHub Desktop.
Arduino interface project Bytronic
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* Interface v2 */ | |
// // | |
// // | |
// // | |
// // | |
/* Gemaakt door Marinus Leeuwerik */ | |
#include <IRremote.h> | |
#include <LiquidCrystal.h> | |
//Buttons | |
#define BUTTON_RESET 0x800FF | |
#define BUTTON_ONE 0x8C03F | |
#define BUTTON_TWO 0x820DF | |
#define BUTTON_THREE 0x8A05F | |
#define BUTTON_FOUR 0x8609F | |
#define BUTTON_RED 0x838C7 | |
#define BUTTON_GREEN 0x8B847 | |
#define BUTTON_WHITE 0x858A7 | |
#define BUTTON_BLUE 0x87887 | |
//IO pins | |
int col_b0 = 3; | |
int col_b1 = 11; | |
int mat_b0 = 12; | |
//int inPin = 11; | |
//int inPin2 = 12; | |
//IO | |
int col_state_b0 = 0; | |
int col_state_b1 = 0; | |
int mat_state_b0 = 0; | |
//IO desc: Color: Rood = 00 Groen = 01 Wit = 10 Blauw = 11 | |
//IO desc: Material: Ijzer = 0 Alu = 1 | |
byte char_smiley[8] = { | |
0b00000, | |
0b00000, | |
0b01010, | |
0b01010, | |
0b00000, | |
0b10001, | |
0b01110, | |
0b00000 | |
}; | |
//IR setup | |
int ir_pin = 2; | |
IRrecv irrecv(ir_pin); | |
decode_results ir_results; | |
//LCD setup | |
LiquidCrystal lcd(8, 9, 4, 5, 6, 7); | |
int menu_state = 1; //1:main 2:kleur 3:materiaal | |
//Functions | |
long int decode_ir() | |
{ | |
if(irrecv.decode(&ir_results)) | |
{ | |
Serial.print("[IR_Decode] "); | |
Serial.println(ir_results.value, HEX); | |
irrecv.resume(); | |
return ir_results.value, HEX; | |
} | |
} | |
long int translate_ir() | |
{ | |
if(irrecv.decode(&ir_results)) | |
{ | |
irrecv.resume(); | |
//Serial.println(ir_results.value, HEX); DEBUG | |
switch(ir_results.value) | |
{ | |
case BUTTON_RED: | |
Serial.print("[IR_Decode] "); | |
Serial.println(ir_results.value, HEX); | |
Serial.println("[IR_Translate] Rood"); | |
return 0x0001; | |
break; | |
case BUTTON_GREEN: | |
Serial.print("[IR_Decode] "); | |
Serial.println(ir_results.value, HEX); | |
Serial.println("[IR_Translate] Groen"); | |
return 0x0002; | |
break; | |
case BUTTON_WHITE: | |
Serial.print("[IR_Decode] "); | |
Serial.println(ir_results.value, HEX); | |
Serial.println("[IR_Translate] Wit"); | |
return 0x0003; | |
break; | |
case BUTTON_BLUE: | |
Serial.print("[IR_Decode] "); | |
Serial.println(ir_results.value, HEX); | |
Serial.println("[IR_Translate] Blauw"); | |
return 0x0004; | |
break; | |
case BUTTON_ONE: | |
Serial.print("[IR_Decode] "); | |
Serial.println(ir_results.value, HEX); | |
Serial.println("[IR_Translate] Een"); | |
return 0x000A; | |
break; | |
case BUTTON_TWO: | |
Serial.print("[IR_Decode] "); | |
Serial.println(ir_results.value, HEX); | |
Serial.println("[IR_Translate] Twee"); | |
return 0x000B; | |
break; | |
case BUTTON_THREE: | |
Serial.print("[IR_Decode] "); | |
Serial.println(ir_results.value, HEX); | |
Serial.println("[IR_Translate] Drie"); | |
return 0x000C; | |
break; | |
case BUTTON_FOUR: | |
Serial.print("[IR_Decode] "); | |
Serial.println(ir_results.value, HEX); | |
Serial.println("[IR_Translate] Vier"); | |
return 0x000D; | |
break; | |
case BUTTON_RESET: | |
Serial.print("[IR_Decode] "); | |
Serial.println(ir_results.value, HEX); | |
Serial.println("[IR_Translate] Reset"); | |
return 0xAAAA; | |
break; | |
} | |
} | |
} | |
void setup() { | |
Serial.begin(9600); | |
pinMode(col_b1,OUTPUT); | |
pinMode(col_b0,OUTPUT); | |
pinMode(mat_b0,OUTPUT); | |
//pinMode(inPin,INPUT); | |
//pinMode(inPin2,INPUT); | |
//Chars | |
lcd.createChar(5,char_smiley); | |
irrecv.enableIRIn(); | |
pinMode(ir_pin,INPUT); | |
lcd.begin(16,2); | |
lcd.setCursor(0,0); | |
//DEBUG | |
} | |
void loop() { | |
long int hex = translate_ir(); | |
if(menu_state == 1) { | |
lcd.setCursor(0,0); | |
lcd.print("1. Kleur"); | |
lcd.setCursor(0,1); | |
lcd.print("2. Materiaal"); | |
if(hex == 0x000A) { | |
Serial.println("Kleur selecteren"); | |
menu_state = 2; | |
lcd.clear(); | |
lcd.setCursor(0,0); | |
lcd.print("Rood | Groen"); | |
lcd.setCursor(0,1); | |
lcd.print("Wit | Blauw"); | |
} | |
else if(hex == 0x000B) | |
{ | |
Serial.println("Materiaal selecteren"); | |
menu_state = 3; | |
lcd.clear(); | |
lcd.setCursor(0,0); | |
lcd.print("3.Ijzer"); | |
lcd.setCursor(0,1); | |
lcd.print("4.Aluminium"); | |
} | |
} | |
if(menu_state == 2) | |
{ | |
if(hex == 0x0001) | |
{ | |
lcd.clear(); | |
lcd.setCursor(0,0); | |
lcd.print("Rood is nu"); | |
lcd.setCursor(0,1); | |
lcd.print("geselecteerd "); | |
lcd.write(byte(5)); | |
Serial.println("Rood geselecteerd"); | |
col_state_b0 = 0; | |
col_state_b1 = 0; | |
delay(2000); | |
menu_state = 1; | |
lcd.clear(); | |
} | |
else if(hex == 0x0002) | |
{ | |
lcd.clear(); | |
lcd.setCursor(0,0); | |
lcd.print("Groen is nu"); | |
lcd.setCursor(0,1); | |
lcd.print("geselecteerd "); | |
lcd.write(byte(5)); | |
Serial.println("Groen geselecteerd"); | |
col_state_b0 = 0; | |
col_state_b1 = 1; | |
delay(2000); | |
menu_state = 1; | |
lcd.clear(); | |
} | |
else if(hex == 0x0003) | |
{ | |
lcd.clear(); | |
lcd.setCursor(0,0); | |
lcd.print("Wit is nu"); | |
lcd.setCursor(0,1); | |
lcd.print("geselecteerd "); | |
lcd.write(byte(5)); | |
Serial.println("Wit geselecteerd"); | |
col_state_b0 = 1; | |
col_state_b1 = 0; | |
delay(2000); | |
menu_state = 1; | |
lcd.clear(); | |
} | |
else if(hex == 0x0004) | |
{ | |
lcd.clear(); | |
lcd.setCursor(0,0); | |
lcd.print("Blauw is nu"); | |
lcd.setCursor(0,1); | |
lcd.print("geselecteerd "); | |
lcd.write(byte(5)); | |
Serial.println("Blauw geselecteerd"); | |
col_state_b0 = 1; | |
col_state_b1 = 1; | |
delay(2000); | |
menu_state = 1; | |
lcd.clear(); | |
} | |
} | |
else if(menu_state == 3) | |
{ | |
if(hex == 0x000C) | |
{ | |
lcd.clear(); | |
lcd.setCursor(0,0); | |
lcd.print("Ijzer is nu"); | |
lcd.setCursor(0,1); | |
lcd.print("geselecteerd "); | |
lcd.write(byte(5)); | |
Serial.println("Ijzer geselecteerd!"); | |
mat_state_b0 = 0; | |
delay(2000); | |
lcd.clear(); | |
menu_state = 1; | |
} | |
else if(hex == 0x000D) | |
{ | |
lcd.clear(); | |
lcd.setCursor(0,0); | |
lcd.print("Aluminium is nu"); | |
lcd.setCursor(0,1); | |
lcd.print("geselecteerd "); | |
lcd.write(byte(5)); | |
Serial.println("Aluminium geselecteerd"); | |
mat_state_b0 = 1; | |
delay(2000); | |
lcd.clear(); | |
menu_state = 1; | |
} | |
} | |
if(col_state_b0 == 0 && col_state_b1 == 0) | |
{ | |
//ROOD = Geen output | |
Serial.println("Rood output"); | |
digitalWrite(col_b0, LOW); | |
digitalWrite(col_b1, LOW); | |
} | |
else if(col_state_b0 == 0 && col_state_b1 == 1) | |
{ | |
//GROEN | |
Serial.println("Groen output"); | |
digitalWrite(col_b0, HIGH); | |
digitalWrite(col_b1, LOW); | |
} | |
else if(col_state_b0 == 1 && col_state_b1 == 0) | |
{ | |
//WIT | |
Serial.println("Wit output"); | |
digitalWrite(col_b0, LOW); | |
digitalWrite(col_b1, HIGH); | |
} | |
else if(col_state_b0 == 1 && col_state_b1 == 1) | |
{ | |
//BLAUW | |
Serial.println("Blauw output"); | |
digitalWrite(col_b0, HIGH); | |
digitalWrite(col_b1, HIGH); | |
} | |
if(mat_state_b0 == 0) | |
{ | |
digitalWrite(mat_b0, LOW); | |
Serial.write("Materiaal ijzer"); | |
} | |
else if(mat_state_b0 == 1) | |
{ | |
digitalWrite(mat_b0, HIGH); | |
Serial.write("Materiaal aluminium"); | |
} | |
delay(250); | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment