Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* TITULO: Medidor de rayos ultravioletas con sensor de rayos UV y LCD NOKIA 5110.
- AUTOR:
- MARIANO DEL CAMPO GARCÍA (@2016) --> INGENIERO TÉCNICO INDUSTRIAL ESPECIALIDAD ELECTRÓNICA
- - FACEBOOK: https://www.facebook.com/mariano.delcampogarcia
- - TWITTER: https://twitter.com/MarianoCampoGa
- - CORREO: [email protected]
- DESCRIPCIÓN DEL PROGRAMA
- Con este programa vamos a ser capaces de medir los rayos ultravioletas en una escala del 0 al 11.
- Los resultados obtenidos se van a visualizar a través de un LCD de un NOKIA 5110.
- ESQUEMA DE CONEXION
- +-----+
- +----[PWR]-------------------| USB |--+
- | +-----+ |
- | GND/RST2 [ ][ ] |
- | MOSI2/SCK2 [ ][ ] A5/SCL[ ] |
- | 5V/MISO2 [ ][ ] A4/SDA[ ] |
- | AREF[ ] |
- | GND[ ] |
- | [ ]N/C SCK/13[ ] |
- | [ ]IOREF MISO/12[ ] | RST del LCD NOKIA 5110 a través de R=10K ohms
- | [ ]RST MOSI/11[ ]~| CE del LCD NOKIA 5110 a través de R=10K ohms
- | [ ]3V3 +---+ 10[ ]~| DC del LCD NOKIA 5110 a través de R=10K ohms
- | [ ]5v -| A |- 9[ ]~| Din del LCD NOKIA 5110 a través de R=10K ohms
- | [ ]GND -| R |- 8[ ] | Clk del LCD NOKIA 5110 a través de R=10K ohms
- | [ ]GND -| D |- |
- | [ ]Vin -| U |- 7[ ] | PA
- | -| I |- 6[ ]~| LED_UV(+)
- OUT_UV | [ ]A0 -| N |- 5[ ]~|
- | [ ]A1 -| O |- 4[ ] |
- | [ ]A2 +---+ INT1/3[ ]~|
- | [ ]A3 INT0/2[ ] |
- | [ ]A4/SDA RST SCK MISO TX>1[ ] |
- | [ ]A5/SCL [ ] [ ] [ ] RX<0[ ] |
- | [ ] [ ] [ ] |
- | UNO_R3 GND MOSI 5V ____________/
- \_______________________/
- NOTAS:
- - Cátodo(-) del LED_UV (pata más corta) a GND (esta vez sin resistencia aunque se puede quemar rápidamente).
- - Los pulsadores suelen tener dos pines, que vamos a denominar PA y PB (si es de 4 sólo usamos 2 de ellos)
- - Conexión PULL-DOWN del pulsador.
- - PB conectado a VCC.
- - PA conectado a GND a través de una R=10K ohms.
- - Conexión de la alimentación del LCD NOKIA 5110:
- - VCC --> +3.3V
- - GND --> GND
- - BL (BackLight) --> +3.3V.
- - Conexión del sensor UV:
- - VCC --> +5V
- - GND --> GND
- - OUT_UV --> Salida del sensor UV conectado al pin analógico A0.
- */
- #include <LCD5110_Graph.h>
- int pulsador = 7; // Pin digital para el pulsador
- int LED_UV = 6; // Pin digital para el LED UV
- // En cada uno de estos pines tenemos que meter una R=10K para limitar el voltaje a 3.3V.
- LCD5110 lcd(8,9,10,12,11);
- // Variables para el LCD NOKIA 5110
- extern unsigned char BigNumbers[];
- extern uint8_t splash[];
- extern uint8_t ui[];
- String UV = "0";
- void setup()
- {
- pinMode(pulsador, INPUT); // Pin digital 7 como entrada;
- pinMode(LED_UV, OUTPUT); // Pin digital 6 como salida;
- // Mostramos el Logo de Inicio
- lcd.InitLCD();
- lcd.setFont(BigNumbers);
- lcd.clrScr();
- lcd.drawBitmap(0, 0, splash, 84, 48);
- lcd.update();
- delay(3000);
- }
- void loop()
- {
- // Almacenamos el valor del pulsador
- int valor = digitalRead(pulsador);
- // El LED_UV se enciende solamente cuando estamos presionando el pulsador
- if(valor == HIGH)
- {
- digitalWrite(LED_UV, HIGH);
- }
- else
- {
- digitalWrite(LED_UV, LOW);
- }
- // Inicializa la longitud del índice UV
- int longitud = 0;
- // Valor del índice UV
- UV = readSensor();
- // Imprime la interfaz por pantalla
- lcd.clrScr();
- lcd.drawBitmap(0, 0, ui, 84, 48);
- // Calcula la longitud del índice UV (1 o 2 dígitos)
- longitud = UV.length();
- // Imprime por pantalla el valor del índice UV
- imprimeUV(longitud);
- lcd.update();
- delay(150);
- }
- // Función que imprime por pantalla los valores del índice UV
- void imprimeUV(int length)
- {
- switch(length)
- {
- case 1: lcd.print(UV,38,19); break;
- case 2: lcd.print(UV,24,19); break;
- default: lcd.print(UV,0,19); break;
- }
- }
- // Función que lee y transforma el valor del sensor a un índice UV válido
- String readSensor()
- {
- String UVIndex = "0";
- int sensorValue = 0;
- sensorValue = analogRead(0); // Leemos el valor del sensro UV
- int voltage = (sensorValue * (5.0 / 1023.0))*1000; // Voltaje en milivóltios
- // Escala UV del 0 al 11, según los valores del sensor en milivóltios
- if(voltage<50)
- {
- UVIndex = "0";
- }
- else if (voltage>50 && voltage<=227)
- {
- UVIndex = "1";
- }
- else if (voltage>227 && voltage<=318)
- {
- UVIndex = "2";
- }
- else if (voltage>318 && voltage<=408)
- {
- UVIndex = "3";
- }
- else if (voltage>408 && voltage<=503)
- {
- UVIndex = "4";
- }
- else if (voltage>503 && voltage<=606)
- {
- UVIndex = "5";
- }
- else if (voltage>606 && voltage<=696)
- {
- UVIndex = "6";
- }
- else if (voltage>696 && voltage<=795)
- {
- UVIndex = "7";
- }
- else if (voltage>795 && voltage<=881)
- {
- UVIndex = "8";
- }
- else if (voltage>881 && voltage<=976)
- {
- UVIndex = "9";
- }
- else if (voltage>976 && voltage<=1079)
- {
- UVIndex = "10";
- }
- else if (voltage>1079)
- {
- UVIndex = "11";
- }
- return UVIndex;
- }
Advertisement
Add Comment
Please, Sign In to add comment