Sie sind auf Seite 1von 3

Termómetro con pantalla de 7 segmentos

Este experimento demuestra el uso de un display de 7 segmentos con Arduino, y del experimento 29, que
implementa un termómetro con el LM35DZ.

Material adicional:
Circuito integrado LM35DZ (termómetro digital analógico).
El esquema consiste sólo en añadir el LM35, que se conectará a una entrada analógica. Nos mudamos a la
entrada A3, ya que la pantalla está usando las tres primeras entradas analógicas y salidas digitales:

Una posible implementación con el protoboard se muestra a continuación:

Para simplificar el programa y facilitar la reutilización, transferir el mapeo de dígitos y segmentos para una
biblioteca local (llamar seven_segment_display.h) que contiene el código de abajo:
(en el caso de que se produzca un error,
{Alto, alto, alto, alto, alto, alto, LOW},

1
{LOW, HIGH, HIGH, LOW, LOW, LOW, LOW},
{HIGH, HIGH, LOW, HIGH, HIGH, LOW, HIGH},
{HIGH, HIGH, HIGH, HIGH, LOW, LOW, HIGH},
{LOW, HIGH, HIGH, LOW, LOW, HIGH, HIGH},
{HIGH, LOW, HIGH, HIGH, LOW, HIGH, HIGH},
{HIGH, LOW, HIGH, HIGH, HIGH, HIGH, HIGH},
{HIGH, HIGH, HIGH, LOW, LOW, LOW, LOW},
{Alto, alto, alto, alto, alto, alto, ALTA},
[HIGH, HIGH, HIGH, HIGH, LOW, HIGH, HIGH]
};

const int DISPLAY_LEDS = 7;


const int DISPLAY_DIGITS = 10;

void showNumber (int * disp, int dig) {


(int i = 0; i <DISPLAY_LEDS; i ++) {}
digitalWrite (disp [i], escriba [dig] [i]);
}
}
Para crear el archivo, haga clic en la flecha que está por debajo del icono del monitor de serie (arriba a la
derecha Arduino IDE) y seleccione "Nueva pestaña", a continuación, seleccione el nombre
(seven_segment_display.h) y grave.
Para utilizar sólo es necesario incluir el archivo en el código fuente principal usando # include, y dibujar
showNumber () pasando como argumento de la función de la pantalla y el dígito para mostrar. En el
programa siguiente creamos una función de visualización que recibe el número y muestra en los dos
displays. Llamamos la función de visualización tan pronto como leemos la temperatura cada 2 segundos:
#include "seven_segment_display.h"

#define TERMOMETRO A3

int unidades [] = {14, 15, 2, 3, 4, 5, 6};


int decenas [] = {7, 8, 9, 10, 11, 12, 16};

void setup () {}
(int i = 0; i <DISPLAY_LEDS; i ++) {}
pinMode (decenas [i], OUTPUT);
pinMode (unidades [i], OUTPUT);
}
// Usando la referencia interna de 1,1V para mayor precisión
analogReference (interno);
}

void mostrar (int numero) {


showNumber (unidades, numero% 10);
showNumber (decenas, número / 10);
}

void bucle () {
int lectura = analogRead (TERMOMETRO);
float voltios = (lectura / 1024.0) * 1.1;
float celsius = (voltios) * 100.0;

int temperatura = (int) round (celsius); // redondea


display (temperatura);

retardo (2000);
}

2
Este programa tiene una diferencia de la utilizada en el experimento 29. En lugar de utilizar la referencia
predeterminada a 5V lecturas analógicas (a través de analogRead), utilizamos la referencia interna
calibrada de la Arduino con el comando
analogReference (interno);
Esto significa que el valor 0 hasta 1024 ya no corresponde a 0 a 5V, pero el 0 a 1,1V. Esto permite una
mayor precisión en la lectura. Así, para obtener la tensión entre el terminal central y GND, dividimos el
valor leído por 1024 y luego multiplicamos por 1,1V. Cada grado Celsius corresponde a 0,01 V de
diferencia, entonces multiplicamos por 100 para obtener la temperatura.

Das könnte Ihnen auch gefallen