#include <IRremote.h>
#include <IRremoteInt.h>
const byte buttonPin = 7; //Select between Bruteforce and IR Decoder
byte counter1;
byte counter2;
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <IRremote.h>
int RECV_PIN=11;
IRrecv irrecv(RECV_PIN);
decode_results results;
const int buttonPin1 = 2, buttonPin2 = 9, buttonPin3 = 12, buttonPin4 = 13, buttonPin5 = 5; //pin: 2-ADR-UP/3-ADR-DOWN : 12-COM-UP/13-COM-DOWN : 5-COM-AUTO++
int button1_State = 0, button2_State = 0, button3_State = 0, button4_State = 0, button5_State = 0;
int count_value =0;
int prestate =0;
int pot = A2; // pot is on pin analog 2
LiquidCrystal_I2C lcd(0x27, 20,4);
unsigned long command = 0;
#include <IRremote.h> //Ken Shirriff's IRremote.h
IRsend irsend;
byte al, ar, cl, cr;// the address and command byte and their inverse
unsigned int a, c;// the complete address and command byte
unsigned long totaal = 0L;// the 32 byte long to send to plug into the NEC protocol
void setup()
{
Serial.begin(9600);
lcd.init();
lcd.backlight();
lcd.setCursor(1,0);
lcd.print("Remote IR Code");
lcd.setCursor(3,1);
lcd.print("Bruteforce");
delay(2000);
lcd.clear();
pinMode(buttonPin, INPUT);
irrecv.enableIRIn(); // Start the receiver
irrecv.blink13(true);
}
void loop()
{
byte buttonState = digitalRead(buttonPin);
if (buttonState == LOW)
{
func1();
}
else
{
func2();
}
}
void func1()
{
if (irrecv.decode(&results))
{
Serial.println(results.value, HEX);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("IR CODE:");
lcd.setCursor(0,1);
lcd.print(results.value, HEX);
irrecv.resume(); // Receive the next value
delay(100);
}
}
void func2()
{
pinMode(buttonPin1, INPUT);
pinMode(buttonPin2, INPUT);
pinMode(buttonPin3, INPUT);
pinMode(buttonPin4, INPUT);
pinMode(buttonPin5, INPUT);
pot=analogRead(A2); //reads the value from the phototransistor
button1_State = digitalRead(buttonPin1);
button2_State = digitalRead(buttonPin2);
button3_State = digitalRead(buttonPin3);
button4_State = digitalRead(buttonPin4);
button5_State = digitalRead(buttonPin5);
if (button1_State == LOW && prestate == 0)
al++;
else if (button2_State == LOW && prestate == 0)
al--;
{
Serial.println(al);
if (button3_State == LOW && prestate == 0)
cl++;
else if (button4_State == LOW && prestate == 0)
cl--;
{
if (button5_State == LOW && prestate == 0)
(cl < 255, cl++);
}
{
doen(al, cl);
totaal = combineint(c, a);
lcd.clear();
Serial.print("Address> ");
Serial.print(al,DEC);
Serial.print(" Command> ");
Serial.print(cl,DEC);
Serial.print("> ");
//Serial.print(c);
Serial.print(" Total ");
Serial.println(totaal,HEX);
lcd.setCursor(0,0);
lcd.print("CODE:");
lcd.setCursor(0,1);
lcd.print("ADR>");
lcd.setCursor(13,1);
lcd.print(cl,DEC);
lcd.setCursor(8,0);
lcd.print(totaal,HEX);
lcd.setCursor(9,1);
lcd.print("COM>");
lcd.setCursor(4,1);
lcd.print(al,DEC);
delay(pot+100);
irsend.sendNEC(totaal, 32);
//delay(10); // Optional
}
}
}
//makes a long from two integers
unsigned long combineint (unsigned int rechts, unsigned long links)
{
unsigned long value2 = 0L;
value2 = links << 16;
value2 = value2 | (rechts);
return value2;
}
unsigned int doen(byte ag, byte cg)
{
ar = ag ^ 0xFF;
cr = cg ^ 0xFF;
a = 256 * ag + ar;
c = cg << 8 | cr;
}
int Combine(byte b1, byte b2)
{
int combined = b1 << 8 | b2;
return combined;
}