Mi primer proyecto en Arduino

Hace apenas un año que estoy trabajando con Arduino, pero es increíble todo lo que se puede hacer con él. Empece gracias a un profesor de mi curso que me animó a participar en un proyecto de clase, y en el que hemos usado Arduino para casi todo. Una vez que acabamos he conseguido hacer las prácticas de empresa en una en la que uso arduino para programar varios sensores. Es la primera vez que lo hago sin la corrección de nadie, y quería compartirlo porque he ido aprendiendo gracias a los diversos post que he ido leyendo en Internet. Mi proyecto en la empresa consiste en trasladar la lectura de 4 sensores a través de un Arduino Uno V3 a una pantalla LCD de 64x128. Los sensores que he utilizado son un LM35 para medir la temperatura, un IESFR-12 para calcular peso, y dos detectores de presión (aire) diferente, uno es el LBAS250B y el otro un MPXV5004DP. A continuación os dejo el código que he usado para su funcionamiento. La pantalla que he usado es la QC12864B, y me ha dado algún problema de ruido que aun no he podido solucionar.

#include <LiquidCrystal.h>

LiquidCrystal lcd (12, 11, 5, 4, 3, 2);

int sensorValue = 0; // Entrada analogica A0 del sensor LBAS250B
int AnalogPin = 1; // Entrada analogica A1 del sensor LBAS250B
int val; // Variable que sirve para definir el valor del sensorn LBAS250B
int val2; // Variable que sirve para definir el valor del sensonr MPXV5004DP
int sensorValue2 = 2; // Entrada analogica A2 del sensor MPXV5004DP
int tempPin = 3; // Entrada analógica A3 del sensor LM35
float tempC; // Variable que permite la lectura de la temperatura
int ResRead; // Variable que permite la lectura de la resistencia del sensor IESFR-12
int AnalogPin2 = 4; // Entrada analógica A4 del sensor IESFR-12

void setup(){
 lcd.begin (0,2); // Punto de partida de la pantalla
 lcd.print ("Nv.pres1:"); // Escritua de Nv.pres1: en la pantalla
 lcd.setCursor (16,0); // Señalamos el siguiente punto de escritura en la pantalla
 lcd.print ("Nv.pres2:"); // Escritura de Nv.pres2: en la pantalla
 lcd.setCursor (7,0); // Señalamos el siguiente punto de escritura en la pantalla
 lcd.print ("PA"); // Escritura de PA en la pantalla
 lcd.setCursor (23,0); // Señalamos el siguiente punto de escritura en la pantalla
 lcd.print ("PA"); // Escritura de PA en la pantalla
 lcd.setCursor (8,0); // Señalamos el siguiente punto de escritura en la pantalla
 lcd.print ("Tempera.:"); // Escritura de Tempera. : en la pantalla
 lcd.setCursor (24,0); // Señalamos el siguiente punto de escritura en la pantalla
 lcd.print ("Balanza :"); // Escritura de Balanza en la pantalla
 lcd.setCursor (31,0); // Señalamos el siguiente punto de escritura en la pantalla
 lcd.print ("G"); // Escritura de G en la pantalla
 
}

void loop (){
 val = analogRead (sensorValue); // Lectura de la entrada analogica correspondiente a sensorValue (A0)
 delay(400); // Establece un tiempo de 4 segundos entre cada lectura
 lcd.setCursor (5,0); // Señala la posición de la pantalla LCD en la que se quiere mostrar el valor del sensor
 if (val>500) // Regla con la que establecemos un limite superior del sensor de 500. Cualquier valor por encima de él sera = a 500.
 val = 500;
 if (val<25) // Regla con la que establecemos un limite inferior del sensor de 25. Cualquier valor por debajo de él sera = a 25.
 val=25;
 lcd.print (val); // Escritura en la pantalla del valor del sensor mediante la variable int val
 val2 = analogRead (sensorValue2); // Lectura de la entrada analogica correspondiente a sensorValue2 (A2)
 delay (400); // Establece un tiempo de 4 segundos entre cada lectura
 lcd.setCursor (21,0); // Señala la posicion de la pantalla LCD en la que se quiere mostrar el valor del sensor
 if (val2>3920) // Regla con la que establecemos un limite superior del sensor de 3920. Cualquier valor por encima de él sera = a 3920.
 val2 = 3920;
 if (val2<100) // Regla con la que establecemos un limite inferior del sensor de 100. Cualquier valor por debajo de él sera = a 100
 val2 = 100;
 lcd.print (val2); // Escritura en la pantalla del valor del sensor mediante la variable int val2
 tempC = analogRead (tempPin); // Lectura de la entrada analógica correspondiente a tempPin (A3)
 tempC = (5.0*tempC*100.0)/1024.0; // Regla que permite calcular la temperatura en grados
 lcd.setCursor(13,0); // Señala la posicion de la pantalla LCD en la que se quiere mostrar el valor del sensor
 lcd.print(tempC); // Escritura en la pantalla del valor del sensor mediante la variable tempC
 ResRead = analogRead (AnalogPin2); // Lectura de la entrada analógica correspondiente a AnalogPin2 (A4)
 delay (100); // Establece un tiempo de 1 segundo entre cada lectura
 lcd.setCursor (29,0); // Señala la posicion de la pantalla LCD en la que se quiere mostrar el valor del sensor
 lcd.print (ResRead); // Escritura en la pantalla del valor del sensor mediante la variable ResRead
}

También tengo el código adaptado para que el que lo quiera realizar sin pantalla. Cambia muy poco, pero si me lo pedís lo subo.

Así como te lo edité no se lee mejor?
Una lectura a las normas del foro te hubieran mostrado como hacerlo.

.

Muchas gracias Hector_A , para el próximo que suba lo haré así :slight_smile: :slight_smile: