Follow along with the video below to see how to install our site as a web app on your home screen.
Nota: This feature currently requires accessing the site using the built-in Safari browser.
// Concatenar 2 matrices de carácteres
/**
* Name: Arduino - Mensaje al LCD de shield LCD-KeyPad
* Autor: David Sanchez
* Date: 2018/05/16
*
* Arduino Uno, Pinout:
* _______________
* | USB |
* |13 12|
* |3V3 11|
* |AREF 10|
* APAD |A0 9| LCD
* |A1 8| LCD
* |A2 7| LCD
* |A3 6| LCD
* |A4 5| LCD
* |A5 4| LCD
* | 3/SCL|
* | 2/SDA|
* |5V GND|
* |RST RST|
* |GND 1/INT2/RX|
* |VIN 0/INT3/TX|
* |MISO SS|
* |SCK MOSI|
* |_______________|
*
*/
/* LIBRERIAS Y OBJETOS */
#include <LiquidCrystal.h>
// Evitamos programar con números los pines del Arduino.
// Asi que los declaramos con el nombre IOPINxx con el que
// seran usados. Si es necesario los definimos e inicializamos
#define IOPIN4 4 // #define solo declara el nombre
#define IOPIN5 5 // con una constante para el compilador
#define IOPIN6 6
#define IOPIN7 7
#define IOPIN8 8
#define IOPIN9 9
// Inicializamos las constante usadas por la libraria LiquidCrystal
// associando los pines de LCD-keypad shield, con los pines que
// estan conectados al Arduino-Uno.
const int rs = IOPIN8, en = IOPIN9, d4 = IOPIN4,
d5 = IOPIN5, d6 = IOPIN6, d7 = IOPIN7;
// y declaramos el LCD del shield
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
// #define declara constantes para el compilador ... No ocupan RAM
// Inicializamos las constante usadas por la libraria LiquidCrystal
// associando los pines de LCD-keypad shield, con los pines que
// estan conectados al Arduino-Uno.
#define rowsLCD 2 // Número de filas del LCD
#define columnsLCD 16 // Número de columnas del LCD
// matriz para el display
char mimsg[columnsLCD+1]; // reserva RAM para mis mensajes
// Constantes que usa el shield LCD-Keypad
#define AKeyPad A0 // Entrada del teclado
// Teclas del KeyPad
#define AKeyPad A0 // Entrada del teclado
#define TpoRebote 150 // Tiempo para remover rebotes del teclado
boolean btnLeft = false; // Atras / Salir
boolean btnRight = false; // Adelante / Entrar menu/submenu
boolean btnUp = false; // Opción anterior
boolean btnDown = false; // Opción siguiente
boolean btnSelect = false; // Opción siguiente
// caracteres de la memoria ROM del LCD
#define cArrowR 0x7E // LCD (icon Flecha Derecha)
#define cArrowL 0x7F // LCD (icon Flecha Izquierda)
#define cGrados 0xDF // LCD (icon Grados)
#define cDiv 0xFD // LCD (icon Division)
#define cEñe 0xEE // LCD caracter para ñ
#define cEblanco 0x20 // LCD caracter Espacio en blanco
// variables y constantes globales
// Del Arduino-Uno queremos usar el led interno asociado a pin13
#define IOPIN13 13 // Por lo que declaramos el pin del LED interno
int led13 = IOPIN13; // y lo definimos.
// Funciones para el Keypad
/**
* readButtons ( ) Lee las teclas del KeyPad
* Entrada Analogica A0 del arduino lee de mi shield LCD-Keypad (0,100,259.409,638)
* Asi que somos generosos al definir los valores de comparación. Ajusta de acuerdo
* a lo que lea tu teclado.
* Usa las siguientes constantes de usuario
* btnSelect, btnLeft, btnUp, btnDown, btnRight, AKeyPad, TpoRebote
*/
void readButtons( )
{
btnLeft = false;
btnRight = false;
btnUp = false;
btnDown = false;
btnSelect = false;
int val = analogRead(AKeyPad);
if (val < 1000) // si alguna tecla fue oprimida?
{
delay(TpoRebote); // Espera para remover rebotes
val = analogRead(AKeyPad); // re-lee el Key-Pad
}
if( val < 30 )
btnRight = true;
else if( val < 150 )
btnUp = true;
else if( val < 360 )
btnDown = true;
else if( val < 535 )
btnLeft = true;
else if( val < 760 )
btnSelect = true;
// Revisa el teclado hasta que alla una tecla apretada
while( (btnLeft || btnRight || btnUp || btnDown || btnSelect) && analogRead(AKeyPad) < 1000 );
}
// en miMsg ponemos el resultado del agregar una matriz de caracteres a otra, pero
// se debe tener cuidado de que sea de un tamaño igual a la suma de caracteres
// a concatenar + 1
const char *first = "sent "; // apuntador al 1er arreglo en memoria Flash
const char *second = "message"; // apuntador al 1er arreglo en memoria Flash
void setup() {
// Inicia el LCD:
lcd.begin(columnsLCD, rowsLCD);
strcpy(miMsg,first); // copiamos el primer arreglo al buffer
strcat(miMsg,second); // y concatenamos
}
void loop()
{
lcd.clear();
lcd.write(first); // LCD = sent
lcd.setCursor(4,0); // miMsg deberia estar en la quinta posición
delay(2000);
lcd.setCursor(6,1); // miMsg deberia estar en la septima posición
lcd.write(second);
delay(5000);
lcd.clear();
lcd.print(miMsg); // LCD = sent message
delay(5000);
lcd.clear();
delay(500);
lcd.write(first); // LCD = sent
delay(5000);
}
Podria alguien ayudarme a entender porque no trabaja el metodo lcd.setCursor(y,x) de la libreria liquidCrystal.h cuando uso este código. Ademas le da igual cuando despliego el mensaje si uso lcd.print(miMsg); o lcd.write(miMsg)
Recomendación: Siempre se debe publicar el programa compilado que no funciona.Gracias. Era un error de dedo que ya había corregido cuando compilé el programa y no actualicé el mismo. (Save)
#include <LiquidCrystal.h>
#include <Wire.h>
#include "RTClib.h"
#define vo 3
#define RS 2
#define E 4
#define D4 5
#define D5 6
#define D6 7
#define D7 8
LiquidCrystal LCD(RS, E, D4, D5, D6, D7);
RTC_DS3231 reloj;
void setup() {
Wire.begin();
reloj.begin();
reloj.adjust(DateTime(__DATE__,__TIME__));
Serial.begin(9600);
LCD.begin(16, 2);
analogWrite(vo, 50);//contraste
LCD.setCursor(0,0);
}
void loop() {
DateTime now = reloj.now();
LCD.print("D: ");
LCD.print(now.year());
LCD.print("/");
LCD.print(now.month());
LCD.print("/");
LCD.print(now.day());
LCD.setCursor(0,1);
LCD.print("T: ");
LCD.print(now.hour());
LCD.print(":");
LCD.print(now.minute());
LCD.print(":");
LCD.print(now.second());
delay(1000);
LCD.clear();
}//fin del loop
#include <LiquidCrystal.h>
#include <Wire.h>
#include "RTClib.h"
#define vo 3
#define RS 2
#define E 4
#define D4 5
#define D5 6
#define D6 7
#define D7 8
LiquidCrystal LCD(RS, E, D4, D5, D6, D7);
RTC_DS3231 reloj;
void setup() {
// Wire.begin();
// reloj.begin();
// reloj.adjust(DateTime(__DATE__,__TIME__));
Serial.begin(9600);
LCD.begin(16, 2);
analogWrite(vo, 50);//contraste
LCD.setCursor(0,0);
}
void loop() {
DateTime now = reloj.now();
/*
LCD.print("D: ");
LCD.print(now.year());
LCD.print("/");
LCD.print(now.month());
LCD.print("/");
LCD.print(now.day());
LCD.setCursor(0,1);
LCD.print("T: ");
LCD.print(now.hour());
LCD.print(":");
LCD.print(now.minute());
LCD.print(":");
LCD.print(now.second()); */
LCD.print("HOLA"); //comentando las lineas de reloj, logro que esto se imprima en la pantalla
delay(1000);
LCD.clear();
}//fin del loop
#include <LiquidCrystal.h>
int boton1 = 8;
int boton2 = 9;
int Entrada1;
int Entrada2;
unsigned int frecuencia;
float Salida1 = digitalRead(A0)*1.0;
float Salida2 = digitalRead(A1)*1.0;
float Salida3 = digitalRead(A2)1.0;
float Salida4 = digitalRead(A3)1.0;
int Estado;
int positionCounter;
int numero;
String numerohex;
int velocidad;
int Error1;
int Error2;
int Error3;
int Error4;
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
void setup()
{
frecuencia = 31;
pinMode(boton1,INPUT);
pinMode(boton2,INPUT);
pinMode(Salida1,OUTPUT);
pinMode(Salida2,OUTPUT);
pinMode(Salida3,OUTPUT);
pinMode(Salida4,OUTPUT);
lcd.begin(16, 1);
lcd.print("Hecho por A");
delay(800);
lcd.clear();
delay(500);
lcd.print("Modo de operacion");
delay(1000);
for (int positionCounter = 0; positionCounter < 17; positionCounter++)
{
lcd.scrollDisplayLeft();
delay(100);
}
}
void loop() {
// put your main code here, to run repeatedly:
}
Eso de arriba ni siquiera compila. Falta algun operador entre el paréntesis que cierra y el 1.0float Salida3 = digitalRead(A2)1.0;
float Salida4 = digitalRead(A3)1.0;
Si es verdad que "eso" funciona en proteus, o hizo algo parecido a funcionar es la demostración de que no debes de usar proteus nunca mas.Buenas,hace tiempo programe una herramienta con arduino con diferentes menu pero lo hice para proteus y ahi si funcionó,hoy me dio por montarlo y me doy cuenta que el lcd no escribe la secuencia que tiene que poner,analizando el código y a prueba y error encontre que lo que hace que no se muestre los texto en el display es lo que se subraya en rojo,aunque no se porque se traba cuando solo estoy guardando lecturas en 4 variables,si quito esas lineas se muestra correctamente
Dejo parte del código
Es que es mi primer código grande si,si vieras lo demas del código lo hice solo con for..Si es verdad que "eso" funciona en proteus, o hizo algo parecido a funcionar es la demostración de que no debes de usar proteus nunca mas.
No tiene por donde agarrar ese "código" por llamarlo de algún modo.
Todo está en el setup luego solo se ejecuta una vez
Tienes lecturas de variables analógicas como float multiplicadas por 1 ¿Para que multiplicas por 1? que además están en el área de definición de las variables y no en el código
Está claro que puedes llamar como quieras a tus variables pero llamar salida a una entrada no le veo sentido.
Luego al valor de una lectura analógica que haces en digital y multiplicas por uno y es un float a ese número sea el que sea lo declaras como salida. No caben mas burradas en un solo pin.
Con el mayor de los respetos no tienes ni idea de programar.
Bueno,te pongo el código (decir que no esta terminado,hay que arreglar algunos bugs)digitalRead() no es flotante, y ni siquiera es numérico, simplemente es 1 o 0 (o TRUE o FALSE respectivamente).
Aparte tampoco compartes cómo montaste el circuito en la vida real, entre otras cosas, como el resto del código y librerías usada...
Parece que la página autotrasmuta : y ) al icono#include <LiquidCrystal.h>
int boton1 = 8;
int boton2 = 9;
int Entrada1;
int Entrada2;
unsigned int frecuencia;
float Salida1 == analogRead(A0);
float Salida2 == analogRead(A1);
float Salida3 == analogRead(A2);
float Salida4 == analogRead(A3);
int Estado;
int positionCounter;
int numero;
String numerohex;
int velocidad;
int Error1;
int Error2;
int Error3;
int Error4;
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
void setup()
{
frecuencia = 31;
pinMode(boton1,INPUT);
pinMode(boton2,INPUT);
pinMode(Salida1,OUTPUT);
pinMode(Salida2,OUTPUT);
pinMode(Salida3,OUTPUT);
pinMode(Salida4,OUTPUT);
lcd.begin(16, 1);
lcd.print("Hecho por A");
delay(800);
lcd.clear();
delay(500);
lcd.print("Modo de operacion");
delay(1000);
for (int positionCounter = 0; positionCounter < 17; positionCounter++)
{
lcd.scrollDisplayLeft();
delay(100);
}
}
void conversion()
{
for (;Estado == 0 && digitalRead(boton1) == 0 && digitalRead(boton2) == 0
{
lcd.clear();
lcd.print("conversion");
Estado == 1;
}
for (;Estado == 1 && digitalRead(boton1) == 1 && digitalRead(boton2) == 1;Estado = 2)
{
lcd.clear();
lcd.print("Pon el numero:");
lcd.print(numero);
delay(500);
}
for (;Estado == 2 && digitalRead(boton1) == 1 && digitalRead(boton2) == 0
{
for (numero++;numero < 513 && digitalRead(boton1) == 1 && digitalRead(boton2) == 0
{
lcd.clear();
lcd.print("Pon el numero:");
lcd.print(numero);
delay(100);
}
}
for (;Estado == 2 && digitalRead(boton1) == 0 && digitalRead(boton2) == 1
{
for (numero--;Estado == 2 && numero > 0 && digitalRead(boton2) == 1
{
lcd.clear();
lcd.print("Pon el numero:");
lcd.print(numero);
delay(100);
}
}
for (;Estado == 2 && digitalRead(boton1) == 1 && digitalRead(boton2) == 1;Estado = 3)
{
numerohex = String(numero, BIN);
lcd.clear();
lcd.print("Bin:");
lcd.print(numerohex);
}
for (;Estado == 3 && digitalRead(boton1) == 1 && digitalRead(boton2) == 0;Estado = 4)
{
numerohex = String(numero, HEX);
lcd.clear();
lcd.print("Hex:");
lcd.print(numerohex);
}
}
void loop()
{
conversion();
comprobacion();
}
void comprobacion()
{
for (;Estado == 10 && digitalRead(boton1) == 0 && digitalRead(boton2) == 1
{
Estado = 0;
}
for (;Estado == 1 && digitalRead(boton1) == 1 && digitalRead(boton2) == 0;Estado = 10)
{
lcd.clear();
lcd.print("Comprobacion 74xx");
delay(500);
for (int positionCounter = 0; positionCounter < 16;positionCounter++)
{
lcd.scrollDisplayLeft();
lcd.print("Comprobacion 74xx");
delay(100);
}
}
for (;Estado == 10 && digitalRead(boton1) == 1 && digitalRead(boton2) == 1;Estado = 11)
{
lcd.clear();
lcd.print("7400");
delay(500);
}
for (;Estado == 11 && digitalRead(boton1) == 1 && digitalRead(boton2) == 1;Estado = 112)
{
Error1 = 0;
Error2 = 0;
Error3 = 0;
Error4 = 0;
lcd.clear();
digitalWrite(Entrada1,1);
digitalWrite(Entrada2,1);
for (;Salida1/1023*5 > 2 && Estado == 112
{
Error1++;
}
for (;Salida2/1023*5 > 2 && Estado == 112
{
Error2++;
}
for (;Salida3/1023*5 > 2 && Estado == 112
{
Error3++;
}
for (;Salida4/1023*5 > 2 && Estado == 112
{
Error4++;
}
digitalWrite(Entrada1,0);
digitalWrite(Entrada2,0);
for (;Salida1/1023*5 > 2 && Estado == 112
{
Error1++;
}
for (;Salida2/1023*5 > 2 && Estado == 112
{
Error2++;
}
for (;Salida3/1023*5 > 2 && Estado == 112
{
Error3++;
}
for (;Salida4/1023*5 > 2 && Estado == 112
{
Error4++;
}
digitalWrite(Entrada1,1);
digitalWrite(Entrada2,0);
for (;Salida1/1023*5 > 2 && Estado == 112
{
Error1++;
}
for (;Salida2/1023*5 > 2 && Estado == 112
{
Error2++;
}
for (;Salida3/1023*5 > 2 && Estado == 112
{
Error3++;
}
for (;Salida4/1023*5 > 2 && Estado == 112
{
Error4++;
}
digitalWrite(Entrada1,0);
digitalWrite(Entrada2,1);
for (;Salida1/1023*5 > 2 && Estado == 112
{
Error1++;
}
for (;Salida2/1023*5 > 2 && Estado == 112
{
Error2++;
}
for (;Salida3/1023*5 > 2 && Estado == 112
{
Error3++;
}
for (;Salida4/1023*5 > 2 && Estado == 112
{
Error4++;
}
for (int positionCounter = 0; positionCounter < 13; positionCounter++)
{
lcd.scrollDisplayLeft();
lcd.print("Puerta 1:");
if (Error1 >= 1)
{
lcd.print("MAL");
}
else
{
lcd.print("BIEN");
}
lcd.print(" ");
lcd.print("Err:");
lcd.print(Error1);
lcd.print(" ");
delay(200);
}
for (int positionCounter = 0; positionCounter < 13; positionCounter++)
{
lcd.scrollDisplayLeft();
lcd.print("Puerta 2:");
if (Error2 >= 1)
{
lcd.print("MAL");
}
else
{
lcd.print("BIEN");
}
lcd.print(" ");
lcd.print("Err:");
lcd.print(Error2);
lcd.print(" ");
delay(200);
}
for (int positionCounter = 0; positionCounter < 13; positionCounter++)
{
lcd.scrollDisplayLeft();
lcd.print("Puerta 3:");
if (Error3 >= 1)
{
lcd.print("MAL");
}
else
{
lcd.print("BIEN");
}
lcd.print(" ");
lcd.print("Err:");
lcd.print(Error3);
lcd.print(" ");
delay(200);
}
for (int positionCounter = 0; positionCounter < 13; positionCounter++)
{
lcd.scrollDisplayLeft();
lcd.print("Puerta 4:");
if (Error4 >= 1)
{
lcd.print("MAL");
}
else
{
lcd.print("BIEN");
}
lcd.print(" ");
lcd.print("Err:");
lcd.print(Error4);
lcd.print(" ");
delay(200);
}
lcd.clear();
}
for (;Estado == 11 && digitalRead(boton1) == 1 && digitalRead(boton2) == 0;Estado = 12)
{
lcd.clear();
lcd.print("7408");
delay(500);
}
for (;Estado == 12 && digitalRead(boton1) == 1 && digitalRead(boton2) == 1;Estado = 112)
{
Error1 = 0;
Error2 = 0;
Error3 = 0;
Error4 = 0;
lcd.clear();
digitalWrite(Entrada1,1);
digitalWrite(Entrada2,1);
for (;Salida1/1023*5 < 2 && Estado == 112
{
Error1++;
}
for (;Salida2/1023*5 < 2 && Estado == 112
{
Error2++;
}
for (;Salida3/1023*5 < 2 && Estado == 112
{
Error3++;
}
for (;Salida4/1023*5 < 2 && Estado == 112
{
Error4++;
}
digitalWrite(Entrada1,0);
digitalWrite(Entrada2,0);
for (;Salida1/1023*5 > 2 && Estado == 112
{
Error1++;
}
for (;Salida2/1023*5 > 2 && Estado == 112
{
Error2++;
}
for (;Salida3/1023*5 > 2 && Estado == 112
{
Error3++;
}
for (;Salida4/1023*5 > 2 && Estado == 112
{
Error4++;
}
digitalWrite(Entrada1,1);
digitalWrite(Entrada2,0);
for (;Salida1/1023*5 > 2 && Estado == 112
{
Error1++;
}
for (;Salida2/1023*5 > 2 && Estado == 112
{
Error2++;
}
for (;Salida3/1023*5 > 2 && Estado == 112
{
Error3++;
}
for (;Salida4/1023*5 > 2 && Estado == 112
{
Error4++;
}
digitalWrite(Entrada1,0);
digitalWrite(Entrada2,1);
for (;Salida1/1023*5 > 2 && Estado == 112
{
Error1++;
}
for (;Salida2/1023*5 > 2 && Estado == 112
{
Error2++;
}
for (;Salida3/1023*5 > 2 && Estado == 112
{
Error3++;
}
for (;Salida4/1023*5 > 2 && Estado == 112
{
Error4++;
}
for (int positionCounter = 0; positionCounter < 13; positionCounter++)
{
lcd.scrollDisplayLeft();
lcd.print("Puerta 1:");
if (Error1 >= 1)
{
lcd.print("MAL");
}
else
{
lcd.print("BIEN");
}
lcd.print(" ");
lcd.print("Err:");
lcd.print(Error1);
lcd.print(" ");
delay(200);
}
for (int positionCounter = 0; positionCounter < 13; positionCounter++)
{
lcd.scrollDisplayLeft();
lcd.print("Puerta 2:");
if (Error2 >= 1)
{
lcd.print("MAL");
}
else
{
lcd.print("BIEN");
}
lcd.print(" ");
lcd.print("Err:");
lcd.print(Error2);
lcd.print(" ");
delay(200);
}
for (int positionCounter = 0; positionCounter < 13; positionCounter++)
{
lcd.scrollDisplayLeft();
lcd.print("Puerta 3:");
if (Error3 >= 1)
{
lcd.print("MAL");
}
else
{
lcd.print("BIEN");
}
lcd.print(" ");
lcd.print("Err:");
lcd.print(Error3);
lcd.print(" ");
delay(200);
}
for (int positionCounter = 0; positionCounter < 13; positionCounter++)
{
lcd.scrollDisplayLeft();
lcd.print("Puerta 4:");
if (Error4 >= 1)
{
lcd.print("MAL");
}
else
{
lcd.print("BIEN");
}
lcd.print(" ");
lcd.print("Err:");
lcd.print(Error4);
lcd.print(" ");
delay(200);
}
lcd.clear();
}
for (;Estado == 12 && digitalRead(boton1) == 1 && digitalRead(boton2) == 0;Estado = 13)
{
lcd.clear();
lcd.print("7432");
delay(500);
}
for (;Estado == 13 && digitalRead(boton1) == 1 && digitalRead(boton2) == 1;Estado = 112)
{
Error1 = 0;
Error2 = 0;
Error3 = 0;
Error4 = 0;
lcd.clear();
digitalWrite(Entrada1,1);
digitalWrite(Entrada2,1);
for (;Salida1/1023*5 < 2 && Estado == 112
{
Error1++;
}
for (;Salida2/1023*5 < 2 && Estado == 112
{
Error2++;
}
for (;Salida3/1023*5 < 2 && Estado == 112
{
Error3++;
}
for (;Salida4/1023*5 < 2 && Estado == 112
{
Error4++;
}
digitalWrite(Entrada1,0);
digitalWrite(Entrada2,0);
for (;Salida1/1023*5 > 2 && Estado == 112
{
Error1++;
}
for (;Salida2/1023*5 > 2 && Estado == 112
{
Error2++;
}
for (;Salida3/1023*5 > 2 && Estado == 112
{
Error3++;
}
for (;Salida4/1023*5 > 2 && Estado == 112
{
Error4++;
}
digitalWrite(Entrada1,1);
digitalWrite(Entrada2,0);
for (;Salida1/1023*5 < 2 && Estado == 112
{
Error1++;
}
for (;Salida2/1023*5 < 2 && Estado == 112
{
Error2++;
}
for (;Salida3/1023*5 > 2 && Estado == 112
{
Error3++;
}
for (;Salida4/1023*5 < 2 && Estado == 112
{
Error4++;
}
digitalWrite(Entrada1,0);
digitalWrite(Entrada2,1);
for (;Salida1/1023*5 < 2 && Estado == 112
{
Error1++;
}
for (;Salida2/1023*5 < 2 && Estado == 112
{
Error2++;
}
for (;Salida3/1023*5 < 2 && Estado == 112
{
Error3++;
}
for (;Salida4/1023*5 < 2 && Estado == 112
{
Error4++;
}
for (int positionCounter = 0; positionCounter < 13; positionCounter++)
{
lcd.scrollDisplayLeft();
lcd.print("Puerta 1:");
if (Error1 >= 1)
{
lcd.print("MAL");
}
else
{
lcd.print("BIEN");
}
lcd.print(" ");
lcd.print("Err:");
lcd.print(Error1);
lcd.print(" ");
delay(200);
}
for (int positionCounter = 0; positionCounter < 13; positionCounter++)
{
lcd.scrollDisplayLeft();
lcd.print("Puerta 2:");
if (Error2 >= 1)
{
lcd.print("MAL");
}
else
{
lcd.print("BIEN");
}
lcd.print(" ");
lcd.print("Err:");
lcd.print(Error2);
lcd.print(" ");
delay(200);
}
for (int positionCounter = 0; positionCounter < 13; positionCounter++)
{
lcd.scrollDisplayLeft();
lcd.print("Puerta 3:");
if (Error3 >= 1)
{
lcd.print("MAL");
}
else
{
lcd.print("BIEN");
}
lcd.print(" ");
lcd.print("Err:");
lcd.print(Error3);
lcd.print(" ");
delay(200);
}
for (int positionCounter = 0; positionCounter < 13; positionCounter++)
{
lcd.scrollDisplayLeft();
lcd.print("Puerta 4:");
if (Error4 >= 1)
{
lcd.print("MAL");
}
else
{
lcd.print("BIEN");
}
lcd.print(" ");
lcd.print("Err:");
lcd.print(Error4);
lcd.print(" ");
delay(200);
}
lcd.clear();
}
for (;Estado == 13 && digitalRead(boton1) == 1 && digitalRead(boton2) == 0;Estado = 14)
{
lcd.clear();
lcd.print("7486");
delay(500);
}
for (;Estado == 14 && digitalRead(boton1) == 1 && digitalRead(boton2) == 1;Estado = 112)
{
Error1 = 0;
Error2 = 0;
Error3 = 0;
Error4 = 0;
lcd.clear();
digitalWrite(Entrada1,1);
digitalWrite(Entrada2,1);
for (;Salida1/1023*5 > 2 && Estado == 112
{
Error1++;
}
for (;Salida2/1023*5 > 2 && Estado == 112
{
Error2++;
}
for (;Salida3/1023*5 > 2 && Estado == 112
{
Error3++;
}
for (;Salida4/1023*5 > 2 && Estado == 112
{
Error4++;
}
digitalWrite(Entrada1,0);
digitalWrite(Entrada2,0);
for (;Salida1/1023*5 > 2 && Estado == 112
{
Error1++;
}
for (;Salida2/1023*5 > 2 && Estado == 112
{
Error2++;
}
for (;Salida3/1023*5 > 2 && Estado == 112
{
Error3++;
}
for (;Salida4/1023*5 > 2 && Estado == 112
{
Error4++;
}
digitalWrite(Entrada1,1);
digitalWrite(Entrada2,0);
for (;Salida1/1023*5 < 2 && Estado == 112
{
Error1++;
}
for (;Salida2/1023*5 < 2 && Estado == 112
{
Error2++;
}
for (;Salida3/1023*5 < 2 && Estado == 112
{
Error3++;
}
for (;Salida4/1023*5 < 2 && Estado == 112
{
Error4++;
}
digitalWrite(Entrada1,0);
digitalWrite(Entrada2,1);
for (;Salida1/1023*5 < 2 && Estado == 112
{
Error1++;
}
for (;Salida2/1023*5 < 2 && Estado == 112
{
Error2++;
}
for (;Salida3/1023*5 < 2 && Estado == 112
{
Error3++;
}
for (;Salida4/1023*5 < 2 && Estado == 112
{
Error4++;
}
for (int positionCounter = 0; positionCounter < 13; positionCounter++)
{
lcd.scrollDisplayLeft();
lcd.print("Puerta 1:");
if (Error1 >= 1)
{
lcd.print("MAL");
}
else
{
lcd.print("BIEN");
}
lcd.print(" ");
lcd.print("Err:");
lcd.print(Error1);
lcd.print(" ");
delay(200);
}
for (int positionCounter = 0; positionCounter < 13; positionCounter++)
{
lcd.scrollDisplayLeft();
lcd.print("Puerta 2:");
if (Error2 >= 1)
{
lcd.print("MAL");
}
else
{
lcd.print("BIEN");
}
lcd.print(" ");
lcd.print("Err:");
lcd.print(Error2);
lcd.print(" ");
delay(200);
}
for (int positionCounter = 0; positionCounter < 13; positionCounter++)
{
lcd.scrollDisplayLeft();
lcd.print("Puerta 3:");
if (Error3 >= 1)
{
lcd.print("MAL");
}
else
{
lcd.print("BIEN");
}
lcd.print(" ");
lcd.print("Err:");
lcd.print(Error3);
lcd.print(" ");
delay(200);
}
for (int positionCounter = 0; positionCounter < 13; positionCounter++)
{
lcd.scrollDisplayLeft();
lcd.print("Puerta 4:");
if (Error4 >= 1)
{
lcd.print("MAL");
}
else
{
lcd.print("BIEN");
}
lcd.print(" ");
lcd.print("Err:");
lcd.print(Error4);
lcd.print(" ");
delay(200);
}
lcd.clear();
}
}
Y yo debo estar fumando cosas raras...Eso de arriba ni siquiera compila. Falta algun operador entre el paréntesis que cierra y el 1.0
De todas formas está mal puesto, por que estás tratando de inicializar variables globales con una lectura del ADC y no sabés como ni cuando las instancia el linker...andá a saber que ocurre ahí.
si me acabo de dar cuenta también,lo cambié porque eso es la lectura del voltaje y no tiene sentido que lea 5 o 0 v cuando no todas las puertas lógicas son perfectasY yo debo estar fumando cosas raras...
Revisé el código varias veces y ví analogRead....y era digitalRead .
Igual está mal, pero olvidate lo del ADC.
Ni por asomo. los conversores analogico a digital pasan de aGnd a aVcc el valor que haya dado en los 2ⁿ bits de la conversion. Nada de 0 y 5Vsi me acabo de dar cuenta también,lo cambié porque eso es la lectura del voltaje y no tiene sentido que lea 5 o 0 v cuando no todas las puertas lógicas son perfectas
¿Que que como qué? Esa frase no se sostiene. ¿como que numero decimal binario y hexadecimal?Es una herramienta que comprueba la serie 74xx y transforma de un número decimal a binario y hexadecimal.
No se entiende esa frase.La parte de comprobación de la serie 74xx no se si es la mejor manera de hacerlo pero es la que se me ocurrio como estudiante de electrónica
¿Pero como vas a definir que pin segun leas otro pin?Editarece que después de cambiar a analogRead y solo cojer la parte de setup si imprime bien,tendre que revisar el desastre de abajo que es lo que hace que no se imprima bien
¿Que tiene que ver la variable con el pin?Lo que tengo una duda ¿como le puedo dar un valor a una variable sin referirme al pin? por ejemplo
No, eso no es lo que tu dices.Estado = 0;
Esto seria decir que Estado es igual al pin 0
No, 0 es el valor numerico 0 y "" es una cadena vacia.pero yo solo quiero que tenga el valor 0,no se si con "" podria