Tengo este codigo de arduino. El cual hara funcionar un dispositivo para medir ph estoy usando un sensor PH-4502C. Este dispositivo mide el ph y este ph Y muestra el resultado en una pantalla lcd y reproduce un audio en especifico dependiendo del valor del ph.
Todo funciona bien al hacer una medicion mide correctamente el problema es que al hacer una medicion repite los valores y datos de la medicion anterior como si los datos se quedaran guardados en algo y hasta que vuelvo hacer otra vez la medicion es cuando dice los datos correctos
#include <LiquidCrystal.h> // Libreria para pantalla LCD
LiquidCrystal lcd(7, 6, 5, 4, 3, 2); // Pines donde va conectada la pantalla (RS, E, D4, D5, D6, D7)
#include <SD.h> // Libreria para interactuar con la tarjeta SD
#include <SPI.h> // Libreria encargada de la comunicacion con el arduino
#include <TMRpcm.h> // Libreria para la reproducción de audio.
#define pinSD 10 // Pin al que va conectada la SD
TMRpcm Audio; // Se crea un objeto de TMRpcm para controlar la reproducción de audio.
float voltage; // Variable para almacenar el valor de voltaje obtenido del sensor.
float ph; // Variable para almacenar el valor de pH.
bool primeraEjecucion = true;
int botonreseat = 1; // Pin definido para el boton del reseat del programa
int estadoBoton = 0; // Estado del boton de pin reseat
void setup() {
pinMode(botonreseat, INPUT);
//pinMode(botonrepeat, INPUT);
Serial.begin(9600);
lcd.begin(16, 2);
if (!SD.begin(pinSD)) {
return;
}
Audio.speakerPin = 9;
Audio.quality(1);
Audio.setVolume(6);
}
void loop() {
int sensorValue = analogRead(A0);
voltage = analogRead(sensorValue);
voltage = (sensorValue * (5.00 / 1023.00));
ph = (voltage * - 5.70) + 21.34;
estadoBoton = digitalRead(botonreseat); // Lectura del estado actual del botón
// botonEstado = digitalRead(botonrepeat); // Lectura del estado actual del botón
if (primeraEjecucion) {
delay(3000);
Audio.play("33.wav");
lcd.setCursor(6, 0);
lcd.print("HOLA");
delay(30000);
lcd.clear();
primeraEjecucion = false;
}
lcd.setCursor(1, 0);
lcd.print("PARA UNA NUEVA");
lcd.setCursor(4, 1);
lcd.print("MEDICION");
delay(5000);
lcd.clear();
lcd.setCursor(1, 0);
lcd.print("PRESIONE BOTON");
lcd.setCursor(8, 1);
lcd.print("1");
Audio.play("1.wav");
while (digitalRead(botonreseat) == HIGH) {
delay(100); //se agrega un retardo para evitar lecturas erróneas del botón
}
Audio.play("2.wav");
lcd.clear();
lcd.setCursor(3, 0);
lcd.print("INSERTE EL");
lcd.setCursor(3, 1);
lcd.print("ELECTRODO");
delay(15000);
lcd.clear();
lcd.setCursor(1, 0);
lcd.print("EN LA SUSTANCIA");
delay(7000);
lcd.clear();
if (ph > 0 && ph < 14) {
Audio.play("3.wav");
lcd.setCursor(3, 0);
lcd.print("Calculando");
lcd.setCursor(7, 1);
lcd.print("PH");
delay(30000);
lcd.clear();
Audio.play("3.wav");
if (ph >= 13.76 && ph <= 14) {
lcd.setCursor(0, 0);
lcd.print("PH:");
lcd.print(ph);
lcd.setCursor(0, 1);
lcd.print("PH MUY ALCALINO");
Audio.play("4.wav");
delay(10000);
lcd.clear();
}
else{
if (ph >= 13.26 && ph <= 13.75) {
lcd.setCursor(0, 0);
lcd.print("PH:");
lcd.print(ph);
lcd.setCursor(0, 1);
lcd.print("PH MUY ALCALINO");
Audio.play("5.wav");
delay(10000);
lcd.clear();
}
else{
if (ph >= 12.76 && ph <= 13.25) {
lcd.setCursor(0, 0);
lcd.print("PH:");
lcd.print(ph);
lcd.setCursor(0, 1);
lcd.print("PH MUY ALCALINO");
Audio.play("6.wav");
delay(10000);
lcd.clear();
}
else{
if (ph >= 12.26 && ph <= 12.75) {
lcd.setCursor(0, 0);
lcd.print("PH:");
lcd.print(ph);
lcd.setCursor(0, 1);
lcd.print("PH MUY ALCALINO");
Audio.play("7.wav");
delay(10000);
lcd.clear();
}
else{
if (ph >= 11.76 && ph <= 12.25) {
lcd.setCursor(0, 0);
lcd.print("PH:");
lcd.print(ph);
lcd.setCursor(0, 1);
lcd.print("PH MUY ALCALINO");
Audio.play("8.wav");
delay(10000);
lcd.clear();
}
else{
if (ph >= 11.26 && ph <= 11.76) {
lcd.setCursor(0, 0);
lcd.print("PH:");
lcd.print(ph);
lcd.setCursor(0, 1);
lcd.print("PH MUY ALCALINO");
Audio.play("9.wav");
delay(10000);
lcd.clear();
}
else{
if (ph >= 10.76 && ph <= 11.25) {
lcd.setCursor(0, 0);
lcd.print("PH MODERADAMENTE");
lcd.setCursor(4, 1);
lcd.print("ALCALINO");
Audio.play("10.wav");
delay(8000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("PH:");
lcd.print(ph);
delay(5000);
lcd.clear();
}
else{
if (ph >= 10.26 && ph <= 10.75) {
lcd.setCursor(0, 0);
lcd.print("PH MODERADAMENTE");
lcd.setCursor(4, 1);
lcd.print("ALCALINO");
Audio.play("11.wav");
delay(8000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("PH:");
lcd.print(ph);
delay(5000);
lcd.clear();
}
else{
if (ph >= 9.76 && ph <= 10.25) {
lcd.setCursor(0, 0);
lcd.print("PH MODERADAMENTE");
lcd.setCursor(4, 1);
lcd.print("ALCALINO");
Audio.play("12.wav");
delay(8000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("PH:");
lcd.print(ph);
delay(5000);
lcd.clear();
}
else{
if (ph >= 9.26 && ph <= 9.75) {
lcd.setCursor(0, 0);
lcd.print("PH MODERADAMENTE");
lcd.setCursor(4, 1);
lcd.print("ALCALINO");
Audio.play("13.wav");
delay(8000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("PH:");
lcd.print(ph);
delay(5000);
lcd.clear();
}
else{
if (ph >= 8.76 && ph <= 9.25) {
lcd.setCursor(1, 0);
lcd.print("PH LIGERAMENTE");
lcd.setCursor(4, 1);
lcd.print("ALCALINO");
Audio.play("14.wav");
lcd.clear();
delay(8000);
lcd.setCursor(0, 0);
lcd.print("PH:");
lcd.print(ph);
delay(5000);
lcd.clear();
}
else{
if (ph >= 8.26 && ph <= 8.75) {
lcd.setCursor(1, 0);
lcd.print("PH LIGERAMENTE");
lcd.setCursor(4, 1);
lcd.print("ALCALINO");
Audio.play("15.wav");
delay(8000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("PH:");
lcd.print(ph);
delay(5000);
lcd.clear();
}
else{
if (ph >= 7.76 && ph <= 8.25) {
lcd.setCursor(0, 0);
lcd.print("PH LIGERAMENTE");
lcd.setCursor(4, 1);
lcd.print("ALCALINO");
Audio.play("16.wav");
delay(8000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("PH:");
lcd.print(ph);
delay(5000);
lcd.clear();
}
else{
if (ph >= 7.26 && ph <= 7.75) {
lcd.setCursor(4, 0);
lcd.print("PH NEUTRO");
lcd.setCursor(4, 1);
lcd.print("PH:");
lcd.print(ph);
Audio.play("17.wav");
delay(10000);
lcd.clear();
}
else{
if (ph >= 6.76 && ph <= 7.25) {
lcd.setCursor(4, 0);
lcd.print("PH NEUTRO");
lcd.setCursor(4, 1);
lcd.print("PH:");
lcd.print(ph);
Audio.play("18.wav");
delay(10000);
lcd.clear();
}
else{
if (ph >= 6.26 && ph <= 6.75) {
lcd.setCursor(4, 0);
lcd.print("PH NEUTRO");
lcd.setCursor(4, 1);
lcd.print("PH:");
lcd.print(ph);
Audio.play("19.wav");
delay(10000);
lcd.clear();
}
else{
if (ph >= 5.76 && ph <= 6.25) {
lcd.setCursor(1, 0);
lcd.print("PH LIGERAMENTE");
lcd.setCursor(5, 1);
lcd.print("ACIDO");
Audio.play("20.wav");
lcd.clear();
delay(8000);
lcd.setCursor(0, 0);
lcd.print("PH:");
lcd.print(ph);
delay(5000);
lcd.clear();
}
else{
if (ph >= 5.26 && ph <= 5.75) {
lcd.setCursor(1, 0);
lcd.print("PH LIGERAMENTE");
lcd.setCursor(5, 1);
lcd.print("ACIDO");
Audio.play("21.wav");
delay(8000);
lcd.clear();
lcd.setCursor(1, 0);
lcd.print("PH:");
lcd.print(ph);
delay(5000);
lcd.clear();
}
else{
if (ph >= 4.76 && ph <= 5.25) {
lcd.setCursor(1, 0);
lcd.print("PH LIGERAMENTE");
lcd.setCursor(5, 1);
lcd.print("ACIDO");
Audio.play("22.wav");
delay(8000);
lcd.clear();
lcd.setCursor(1, 0);
lcd.print("PH:");
lcd.print(ph);
delay(5000);
lcd.clear();
}
else{
if (ph >= 4.26 && ph <= 4.75) {
lcd.setCursor(0, 0);
lcd.print("PH MODERADAMENTE");
lcd.setCursor(5, 1);
lcd.print("ACIDO");
Audio.play("23.wav");
delay(8000);
lcd.clear();
lcd.setCursor(1, 0);
lcd.print("PH:");
lcd.print(ph);
delay(5000);
lcd.clear();
}
else{
if (ph >= 3.76 && ph <= 4.25) {
lcd.setCursor(0, 0);
lcd.print("PH MODERADAMENTE");
lcd.setCursor(5, 1);
lcd.print("ACIDO");
Audio.play("24.wav");
delay(8000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("PH:");
lcd.print(ph);
delay(8000);
lcd.clear();
}
else{
if (ph >= 3.26 && ph <= 3.75) {
lcd.setCursor(0, 0);
lcd.print("PH MODERADAMENTE");
lcd.setCursor(5, 1);
lcd.print("ACIDO");
Audio.play("25.wav");
delay(8000);
lcd.setCursor(0, 0);
lcd.print("PH:");
lcd.print(ph);
delay(8000);
lcd.clear();
}
else{
if (ph >= 2.76 && ph <= 3.25) {
lcd.setCursor(0, 0);
lcd.print("PH MODERADAMENTE");
lcd.setCursor(5, 1);
lcd.print("ACIDO");
Audio.play("26.wav");
delay(8000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("PH:");
lcd.print(ph);
delay(5000);
lcd.clear();
}
else{
if (ph >= 2.26 && ph <= 2.75) {
lcd.setCursor(2, 0);
lcd.print("PH MUY ACIDO");
lcd.setCursor(5, 1);
lcd.print("PH:");
lcd.print(ph);
Audio.play("27.wav");
delay(10000);
lcd.clear();
}
else{
if (ph >= 1.76 && ph <= 2.25) {
lcd.setCursor(2, 0);
lcd.print("PH MUY ACIDO");
lcd.setCursor(5, 1);
lcd.print("PH:");
lcd.print(ph);
Audio.play("28.wav");
delay(10000);
lcd.clear();
}
else{
if (ph >= 1.26 && ph <= 1.75) {
lcd.setCursor(2, 0);
lcd.print("PH MUY ACIDO");
lcd.setCursor(0, 1);
lcd.print("PH:");
lcd.print(ph);
Audio.play("29.wav");
delay(10000);
lcd.clear();
}
else{
if (ph >= 0.76 && ph <= 1.25) {
lcd.setCursor(2, 0);
lcd.print("PH MUY ACIDO");
lcd.setCursor(0, 1);
lcd.print("PH:");
lcd.print(ph);
Audio.play("30.wav");
delay(10000);
lcd.clear();
}
else{
if (ph >= 0.01 && ph <= 0.76) {
lcd.setCursor(2, 0);
lcd.print("PH MUY ACIDO");
lcd.setCursor(0, 1);
lcd.print("PH:");
lcd.print(ph);
Audio.play("31.wav");
delay(10000);
lcd.clear();
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
if (ph < 0 || ph > 14) {
Audio.play("32.wav");
lcd.clear();
lcd.setCursor(4, 0);
lcd.print("RECUERDA");
lcd.setCursor(3, 1);
lcd.print("INTRODUCIR");
delay(4500);
lcd.clear();
lcd.setCursor(2, 0);
lcd.print("EL ELECTRODO");
lcd.setCursor(6, 1);
lcd.print("(..)");
delay(4500);
lcd.clear();
}
}