¡Qué tal amigos buen día!
Tengo una consulta para todos ustedes, actualmente me encuentro haciendo un proyecto que une un teclado matricial, un lcd, sensores infrarrojos, limites de carrera y relevadores, el problema esta en los sensores infrarrojos, los cuales estuve checando un sketch, funcionan bien solitos, pero cuando quiero anexar ese mismo código a la función de una tecla con el teclado matricial, simplemente no funciona, y eh ahí mi duda, porque no funcionara, a continuación anexo el código con el que cheque los infrarrojos y también el código de todo mi proyecto:
(Cuando se presiona la tecla “#” en el “Código Proyecto“ del teclado matricial debería de hacer lo que el “Código Infrarrojos” hace, pero a ciencia cierta no hace nada, espero me puedan ayudar, saludos!!!).
---------Código Infrarrojos-------
int Inf1=A6;
int MSube=12;
void setup() {
pinMode(Inf1,INPUT);
pinMode(MSube,OUTPUT);
}
void loop() {
int EInf1=digitalRead(Inf1);
if(EInf1==LOW){
digitalWrite(MSube,HIGH);
}
if(EInf1==HIGH){
digitalWrite(MSube,LOW);
}
}
---------Código Proyecto----------
#include <LiquidCrystal.h>
#include <Keypad.h>
LiquidCrystal lcd(A0, A1, A2, A3, A4, A5);
const byte COLUMNAS = 4;
const byte FILAS = 4;
const byte filasPines[FILAS] = {9, 8, 7, 6}; //Define lineas
const byte columnasPines[COLUMNAS] = {5, 4, 3, 2}; //Define columnas
char teclas [FILAS] [COLUMNAS] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
int t=5;
int T=0;
int Contador=0;
int Contador1=0;
int Contador2=0;
int movimiento;
String numero1;
char operacion;
boolean valorActual = false;
boolean final = false;
//int LimS=10;
//int LimI=11;
int MSube=12;
int MBaja=13;
int Inf1=A6;
int Inf2=A7;
int Inf3=A8;
int Inf4=A9;
int Inf5=A10;
Keypad miTeclado = Keypad( makeKeymap(teclas), filasPines, columnasPines, FILAS, COLUMNAS );
void setup(){
lcd.begin(16,2);
lcd.setCursor(4,0);
lcd.print("INGRESE");
lcd.setCursor(3,1);
lcd.print("VALORES...");
delay(2500);
lcd.clear();
lcd.setCursor(0,0);
lcd.print(">");
pinMode(MSube, OUTPUT);
pinMode(MBaja, OUTPUT);
//pinMode(LimS, INPUT);
//pinMode(LimI, INPUT);
pinMode(Inf1, INPUT);
pinMode(Inf2, INPUT);
pinMode(Inf3, INPUT);
pinMode(Inf4, INPUT);
pinMode(Inf5, INPUT);
attachInterrupt(digitalPinToInterrupt(21),Superior,FALLING);
attachInterrupt(digitalPinToInterrupt(20),Inferior,FALLING);
}
void loop(){
char tecla = miTeclado.getKey();
int longitudDelNumero;
if(tecla != NO_KEY && (tecla=='0'||tecla=='1'||tecla=='2'||tecla=='3'||tecla=='4'||
tecla=='5'||tecla=='6'||tecla=='7'||tecla=='8'||tecla=='9')){
numero1 = numero1 + tecla;
longitudDelNumero = numero1.length();
movimiento = longitudDelNumero;
lcd.setCursor(1, 0);
lcd.print(numero1);
}else if(tecla != NO_KEY &&(tecla=='A'||tecla=='B'||tecla=='C'||tecla=='D'||tecla=='*'||tecla=='#')){
operacion=tecla;
switch(operacion){
case 'A':
T=numero1.toInt();
T=T/t;
digitalWrite(MSube, LOW);
lcd.clear();
lcd.print("Subiendo ");
delay(T*1000);
lcd.clear();
digitalWrite(MSube, HIGH);
lcd.print("En posicion!!");
break;
case 'B':
T=numero1.toInt();
T=T/t;
digitalWrite(MBaja, LOW);
lcd.clear();
lcd.print("Bajando ");
delay(T*1000);
lcd.clear();
digitalWrite(MBaja, HIGH);
lcd.print("En posicion!!");
break;
case 'C':
digitalWrite(MSube, LOW);
digitalWrite(MBaja, HIGH);
Contador++;
if(Contador==2){
digitalWrite(MSube, HIGH);
Contador=0;
}
break;
case 'D':
digitalWrite(MBaja, LOW);
digitalWrite(MSube, HIGH);
Contador1++;
if(Contador1==2){
digitalWrite(MBaja, HIGH);
Contador1=0;
}
break;
case '*':
lcd.clear();
valorActual = false;
final = false;
numero1 = "";
operacion = ' ';
lcd.setCursor(0,0);
lcd.print(">");
break;
case '#':
int EInf1=digitalRead(Inf1);
if(EInf1==LOW){
digitalWrite(MSube,HIGH);
}
if(EInf1==HIGH){
digitalWrite(MSube,LOW);
}
break;
default:
break;
}
}
}
void Superior(){
lcd.clear();
digitalWrite(MSube, HIGH);
lcd.setCursor(1, 0);
lcd.print("No Puede Subir");
lcd.setCursor(6, 1);
lcd.print("Mas");
}
void Inferior(){
lcd.clear();
digitalWrite(MBaja, HIGH);
lcd.setCursor(1, 0);
lcd.print("No Puede Bajar");
lcd.setCursor(6, 1);
lcd.print("Mas");
}