Buenas noches, actualmente estoy trabajando en los ultimos pasos para mi proyecto. estoy intentado poner la fecha y hora en una pantalla LCD pero pulsando los botones del teclado matricial, el objetivo de esto es que a la hora que yo puse en la pantalla la fecha y hora se active un modulo rele.
Aqui el problema viene que nose muy bien como programar el teclado matricial para que ponga los digitos en la pantalla lcd y esos digitos que puse en la pantalla sea la hora en la cual se va a estar activando el rele.
He estado investigando pero no hay informacion acerca de eso y lo intente por mi propia cuenta pero me confundo mucho. Por favor si no le es de mucha molestia en ayudarme con eso.
Aqui les dejo el codigo como complemento
#include <RTClib.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Keypad.h>
RTC_DS3231 rtc;
#define countof(a) (sizeof(a) / sizeof(a[0]))
const byte COLUMNAS = 3;
const byte FILAS = 4;
char hexaKeys [FILAS][COLUMNAS] = {
{'1','2','3'},
{'4','5','6'},
{'7','8','9'},
{'*','0','#'}
};
byte rowPins[FILAS] = {8, 7, 6, 5};
byte colPins[COLUMNAS] = {4, 3, 2};
LiquidCrystal_I2C lcd (0x27,2, 1, 0, 4, 5, 6, 7);
Keypad customKeypad = Keypad( makeKeymap(hexaKeys), rowPins, colPins, FILAS, COLUMNAS);
int sensordelsuelo= A0;
int porcentajesensorsuelo;
int sensordelluvia= A1;
int valor;
int fotoresistencia=A2;
int valorfotoresistencia;
int porfotoresistencia;
//int motordeagua= 9;
//int motoruno=6;
//int motordos= 10;
void setup() {
Wire.begin();
rtc.begin();
Serial.begin(9600);
//Serial.print("hola");
//rtc.adjust(DateTime(__DATE__, __TIME__));
lcd.setBacklightPin(3, POSITIVE);
lcd.setBacklight(HIGH);
lcd.begin(20, 4);
lcd.clear();
pinMode(fotoresistencia, INPUT);
// pinMode(motoruno, OUTPUT);
//pinMode(motordos, OUTPUT);
//pinMode(motordeagua,OUTPUT);
}
void loop() {
char customKey = customKeypad.getKey();
if(customKey){
lcd.setCursor(17,3);
lcd.print(customKey);
// Serial.println(tecla);
}
lcd.setCursor(0,1);
lcd.print("Regando:");
lcd.setCursor(0,2);
lcd.print("luminosidad:");
lcd.setCursor(0,3);
lcd.print("humedad:");
lcd.setCursor(11,1);
lcd.print("temp:30C");
int humedad= analogRead(sensordelsuelo);
porcentajesensorsuelo= map(humedad, 0, 1023, 0 ,100);
lcd.setCursor(8,3);
lcd.print(porcentajesensorsuelo);
lcd.print("%");
valor = analogRead(sensordelluvia);
valorfotoresistencia= analogRead(fotoresistencia);
porfotoresistencia= map(valorfotoresistencia, 0, 1023, 0 ,100);
lcd.setCursor(12,2);
lcd.print(porfotoresistencia);
lcd.print("%");
DateTime fecha = rtc.now();
lcd.setCursor(0,0);
lcd.print(fecha.day());
lcd.print("/");
lcd.print(fecha.month());
lcd.print("/");
lcd.print(fecha.year());
lcd.setCursor(11,0);
lcd.print(fecha.hour());
lcd.print(":");
lcd.print(fecha.minute());
lcd.print(":");
lcd.print(fecha.second());
if (customKey == '*') {
lcd.clear();
lcd.setCursor(0,0);
lcd.print("hora de riego");
lcd.setCursor(0,1);
lcd.print("hora inicial");
lcd.setCursor(0,2);
lcd.print("hora final");
lcd.setCursor(0,3);
lcd.print("# para regresar");}
}
//digitalWrite(motoruno, HIGH);
//digitalWrite(motordos, HIGH);
// delay(5000);
//digitalWrite(motoruno, LOW);
//digitalWrite(motordos, LOW);
//delay(5000);
//digitalWrite(motordeagua, HIGH);
//delay(5000);
//digitalWrite(motordeagua, LOW);
//delay(5000);