Buenas..
Escribo para solicitar ayuda en este proyecto, en base al proyecto estoy aprendiendo a utilizar y programar con aurdino. Mis bases de programación son muy básicas por ello me cuesta mucho entender a la hora de programar y ordenar la escritura, así mismo cuesta entender cada tutorial de la página a falta de vocabulario técnico.
El proyecto consiste en realizar una cuenta en el tiempo que tarda un interruptor en abrir y o cerrar, al realizar las instrucciones de abrir y luego cerrar la pantalla muestra los datos obtenidos de la cuenta, luego de ello se debería volver a realizar la operación ya sea de ''abrir'' o ''cerrar''. Pero en este punto aurdino se cuelga, la pantalla muestra unos caracteres raros, se desfasa la escritura y ademas de ello el programa realiza la operación de ''abrir'' o ''cerrar'' pero este omite los datos y la escritura del tiempo que tardo la operación. Esto sucede hasta que reseteo el programa, luego nuevamente se vuelve a trabar después de una vuelta completa del programa.
Seguramente en algún punto estoy haciendo todo mal, utilizando mal las librerias y o dando muchas vueltas en el programa.
Espero que me puedan ayudar a solucionarlo.
El código esta adjunto
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <SoftwareSerial.h>
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // Set the LCD I2C address
SoftwareSerial BT(10, 11); //10 rx y 11 tx
int OCO, OCO1, OCO2 = 0;
float TR1, TS1, TT1, TR2, TS2, TT2, TR3, TS3, TT3 = 0;
long inicioA = 0;
long actualA = 0;
int IC = 0;
int IA = 0;
const int botonPinA = 22;
const int botonPinC = 23;
const int botonPinAC = 24;
const int faseR = 5;
const int faseS = 6;
const int faseT = 3;
const int ordenPinC = 4;
const int ordenPinA = 2;
const int PC_NCpin = 12;
const int PAT_in = 7;
const int sirena = 41;
const int luzC = 30;
const int luzA = 31;
const int luzI = 32;
boolean flag = true;
long previousMillis = 0;
long On = 50; // tiempo que dura encendido, en milisegundos
long Off = 100; // tiempo que dura apagado, en milisegundos
const int sensorPinC = 15;
const int sensorPinA = 16;
char seleccion;
float tiempoR = 0;
float tiempoS = 0;
float tiempoT = 0;
float reloj = 0;
int startA = 0;
int startC = 0;
int start = 0;
int r = 0;
int s = 0;
int t = 0;
int rc = 0;
int sc = 0;
int tc = 0;
int reset = 0;
int resetT = 0;
int resetTT = 0;
int t_muerto = 0;
int Aluz = 0;
int Cluz = 0;
float medicion = 0;
int tiempoA = 0;
int tiempoC = 0;
char cadena[30]; //Creamos un array que almacenará los caracteres que escribiremos en la consola del PC. Le asignamos un tope de caracteres, en este caso 30
byte posicion = 0; //Variable para cambiar la posición de los caracteres del array
int valor;
char cadena1[30];
byte posicion1 = 0;
int valor1;
void setup() {
lcd.begin(20, 4);
Serial.begin(9600);
BT.begin(38400);
pinMode(ordenPinA, OUTPUT);
pinMode(ordenPinC, OUTPUT);
pinMode(sensorPinA, INPUT);
pinMode(sensorPinC, INPUT);
pinMode(faseR, INPUT);
pinMode(faseT, INPUT);
pinMode(faseS, INPUT);
pinMode(botonPinA, INPUT);
pinMode(botonPinC, INPUT);
pinMode(botonPinAC, INPUT);
pinMode(PC_NCpin, INPUT);
pinMode(sirena, OUTPUT);
pinMode(9, OUTPUT);
pinMode(PAT_in, INPUT);
pinMode(sensorPinC, INPUT);
pinMode(sensorPinA, INPUT);
pinMode(luzC, OUTPUT);
pinMode(luzA, OUTPUT);
digitalWrite(9, HIGH);
digitalWrite(luzC, LOW);
digitalWrite(luzA, LOW);
lcd.setCursor(0, 0);
lcd.print("********************");
lcd.setCursor(0, 1);
lcd.print("* INICIANDO CULIAU *");
lcd.setCursor(0, 2);
lcd.print("* *");
lcd.setCursor(0, 3);
lcd.print("********************");
delay(1500);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("********************");
lcd.setCursor(0, 1);
lcd.print("* CRONOS *");
lcd.setCursor(0, 2);
lcd.print("* LISTA *");
lcd.setCursor(0, 3);
lcd.print("********************");
delay(1000);
BT.println("LISTA");
}
cronos.txt (9.05 KB)