Skip to content

Instantly share code, notes, and snippets.

@MarinusLeeuwerik
Created April 4, 2015 15:41
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save MarinusLeeuwerik/32b41ed1b4e9fe6abe8b to your computer and use it in GitHub Desktop.
Save MarinusLeeuwerik/32b41ed1b4e9fe6abe8b to your computer and use it in GitHub Desktop.
Arduino interface project Bytronic
/* 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