You are on page 1of 2

#include <Wire.

h>
#include <LCD.h>
#include <LiquidCrystal_I2C.h>

// Pines del PCF8574 I/O


#define I2C_ADDR 0x27 // Define la dirección I2C
#define BACKLIGHT_PIN 3
#define En_pin 2
#define Rw_pin 1
#define Rs_pin 0
#define D4_pin 4
#define D5_pin 5
#define D6_pin 6
#define D7_pin 7

#define LED_OFF 0
#define LED_ON 1

#define PIN_D2_INT 0

#define R06A_VT 2
#define R06A_D0 3
#define R06A_D1 4
#define R06A_D2 5
#define R06A_D3 6

int r06a_0, r06a_1, r06a_2, r06a_3 = 0;


int dirty = 0;

LiquidCrystal_I2C lcd(I2C_ADDR,En_pin,Rw_pin,Rs_pin,D4_pin,D5_pin,D6_pin,D7_pin);

void pinD2ISR()
{

digitalWrite(13, !digitalRead(13));
// Graba el estado de los datos
r06a_0 = digitalRead(R06A_D0);
r06a_1 = digitalRead(R06A_D1);
r06a_2 = digitalRead(R06A_D2);
r06a_3 = digitalRead(R06A_D3);
dirty = 1;
}

void setup()
{
lcd.begin (20,4);

lcd.setBacklightPin(BACKLIGHT_PIN,POSITIVE);
lcd.setBacklight(LED_ON);

lcd.home ();
lcd.print("RF DOMOTICA");
lcd.setCursor ( 0, 1 );
lcd.print("POR XX");
lcd.setCursor ( 0, 2 );
lcd.print("Presiona el botón ");
lcd.setCursor ( 0, 3 );
lcd.print("DAT3 DAT2 DAT1 DAT0");

attachInterrupt(PIN_D2_INT, pinD2ISR, RISING);

pinMode(R06A_D0, INPUT);
pinMode(R06A_D1, INPUT);
pinMode(R06A_D2, INPUT);
pinMode(R06A_D3, INPUT);
}

void loop()
{
if(dirty)
{
dirty = 0;
lcd.setCursor (15,3);
lcd.print(r06a_0 ? "HIGH": "LOW ");
lcd.setCursor (10,3);
lcd.print(r06a_1 ? "HIGH": "LOW ");
lcd.setCursor (5,3);
lcd.print(r06a_2 ? "HIGH": "LOW ");
lcd.setCursor (0,3);
lcd.print(r06a_3 ? "HIGH": "LOW ");
}
}

You might also like