8 - Contador con Arduino Uno y Display LED de 4 dígitos SMA420564L.
//Mostramos aqui un contador
//Usando la libreria, recordar que se debe incluir la librería SevSeg.h para que la aplicación funcione
// ir a Programa > Incluir Librería > buscar SevSeg.h
#include "SevSeg.h"
SevSeg sevseg; //creamos una instancia llamada sevseg- el nuevo nombre
// Variables globales
int Contador = 0;// cero si inicia
int espera =0;// contador espera
int esperamax =3000;// Define tiempo entre cuenta
void setup()
{
//I am using a common anode display, with the digit pins connected
//from 2-5 and the segment pins connected from 6-13
byte numDigits = 4;
byte digitPins [] = {12,11,10,9};
byte segmentPins [] = {2,3,4,5,6,7,8,13};
bool resistorsOnSegments = false; // 'false'" significa que las resistencias están en los pines de dígitos
// los pines de digitos son solo 4,
byte hardwareConfig = COMMON_CATHODE; // Catodo comun ->COMMON_CATHODE
//ANODO COMUN ->COMMON_ANODE
sevseg.begin(hardwareConfig, numDigits, digitPins, segmentPins, resistorsOnSegments);
// Define la luminosidad de 0 a 100
sevseg.setBrightness(99);
}
void loop() // iniciamos la etapa del bucle infinito, que se repite en forma permanente
{
// Produce una salida en el display
sevseg.refreshDisplay();
// Actualiza el número mostrado, con el punto decimal
sevseg.setNumber(Contador, -1);//Muestra numero con punto en 2do digito si 2, 0 si primero
// Indicar -1 si ninguno
espera = espera +1; //incrementa espera para definir tiempo entre cuenta y cuenta
if (espera == esperamax)
{
espera =0;
Contador = Contador + 1;
}
}
SevSeg
Esta biblioteca convierte tu Arduino en un controlador de pantalla de siete segmentos. Úsalo para mostrar fácilmente números en tu pantalla de siete segmentos sin ningún controlador adicional.
Admite pantallas de cátodo común y ánodo común, y el uso de transistores de conmutación. Los números se pueden mostrar en representación decimal o hexadecimal, con posiciones decimales. Los caracteres se pueden mostrar (con la mayor precisión posible). También admite múltiples pantallas, de diferentes dimensiones. Los registros de cambio y dispositivos similares NO son compatibles.
----------------------
9 - Estación meteorológica con Arduino Uno, display LED 20x4 y un sensor de temperatura y humedad DHT11 (en placa HW-507)
Este sensor de temperatura y humedad DFRobot DHT11 cuenta con un conjunto de sensores de temperatura y humedad con una salida de señal digital calibrada. Al utilizar la técnica exclusiva de adquisición de señales digitales y la tecnología de detección de temperatura y humedad, se garantiza una alta confiabilidad y una excelente estabilidad a largo plazo. Este sensor incluye un componente de medición de humedad de tipo resistivo y un componente de medición de temperatura NTC, y se conecta a un microcontrolador de 8 bits de alto rendimiento, ofreciendo excelente calidad, respuesta rápida, antiinterferencia y rentabilidad.
Cada elemento DHT11 está estrictamente calibrado en el laboratorio, y es extremadamente preciso en la calibración de la humedad. Los coeficientes de calibración se almacenan como programas en la memoria OTP, que son utilizados por el proceso de detección de señales internas del sensor. La interfaz en serie de un solo cable hace que la integración del sistema sea rápida y sencilla. Su pequeño tamaño, bajo consumo de energía y transmisión de señal de hasta 20 metros lo convierten en la mejor opción para diversas aplicaciones, incluidas las más exigentes. El componente es un paquete de 4 pines de una sola fila. Es conveniente conectarse y se pueden proporcionar paquetes especiales de acuerdo con la solicitud de los usuarios.
Figura : display con indicación de temperatura, humedad relativa y sensación térmica
Sketch de Arduino Uno :
#include <DHT.h> // incluimos la librería
#define DHTPIN 2 // Definimos el pin digital donde se conecta el sensor
byte N[8] = { // Definimos un caracter para "º"
B00111,
B00101,
B00101,
B00111,
B00000,
B00000,
B00000,
B00000,
};
// Dependiendo del tipo de sensor
#define DHTTYPE DHT11
// Inicializamos el sensor DHT11
DHT dht(DHTPIN, DHTTYPE);
void setup() {
lcd.createChar (0,N);
pinMode(12,OUTPUT);
pinMode(13,OUTPUT);
// Inicializar el LCD 20x4 con el número de columnas y filas del LCD
lcd.begin(20,4);
// Escribimos el Mensaje en el LCD
lcd.print("Temperatura-humedad");
delay (500); // retardo para que inicie el sistema
// Comenzamos el sensor DHT
dht.begin();
delay (1000); //espera antes de acceder al sensor
} //fin de "setup ()"
void loop() {
// Inicio del programa
// Esperamos 5 segundos entre medidas
delay(5000);
// Leemos la humedad relativa
float h = dht.readHumidity();
// Leemos la temperatura en grados centígrados (por defecto)
float t = dht.readTemperature();
// Leemos la temperatura en grados Fahrenheit
float f = dht.readTemperature(true);
// Comprobamos si ha habido algún error en la lectura
if (isnan(h) || isnan(t) || isnan(f)) {
//Serial.println("Error obteniendo los datos del sensor DHT11");
return;
}
// Calcular el índice de calor o sensación térmica en grados centígrados
float hic = dht.computeHeatIndex(t, h, false);
// Ubicamos el cursor en la primera posición (columna:0) de la segunda línea(fila:1)
lcd.setCursor(0, 1);
lcd.print("Hum.rel.= ");
lcd.print(h);
lcd.print(" %");
lcd.setCursor(0, 2);
lcd.print("Temp.=");
lcd.print(t);
lcd.write (byte (0)); //símbolo de "º", grado
lcd.print("C");
lcd.setCursor(0, 3);
lcd.print("Sens.Term.=");
lcd.print(hic);
lcd.write (byte (0)); //símbolo de "º", grado
lcd.print("C");
10- Aplicación con Servomotor SG90, Arduino Uno y display de 4 dígitos 3462BS-AB .
#include <Servo.h> // importar librería
Servo MiServo; // creación de variable objeto, con funciones y capacidades de la librería Servo
int const PinPot = A1; // declaración de variables,pin Arduino que une al potenciómetro
int ValorPot; // valor de la entrada analógica
int Angulo;// valor del àngulo al que el servomotor debe moverse
#include <TM1637.h>
// Intalación y configuración de pines
// Pin 3 - > DIO
// Pin 2 - > CLK
TM1637 tm(2, 3);
void loop() {
// acá va el código que se va a repetir
ValorPot = analogRead(PinPot); // leo la entrada analógica (A0) donde se conecta
//el terminal central del potenciómetro
//Serial.print es el código si quiero usar el monitor serie, debo colocarlo como código
//Serial.print ("Posición del potenciómetro = ");
//Serial.print (ValorPot);
Angulo = map (ValorPot, 0, 1023, 0, 179); // Esta instrucción
//trabaja con escalas de números. En este caso cambia la escala de valores entre 0-1023 a
//valores entre 0-179. El resultado se guarda dentro de la variable Angulo
//Serial.println (", Angulo: ");
//Serial.println (Angulo);
MiServo.write (Angulo);
Vemos acá un circuito con fines didácticos, para mover un servomotor SG90 y darle unos valores al display según un rango de movimiento del potenciómetro. Se pueden colocar unos capacitores electrolíticos en la protoboard en paralelo con la alimentación y con el potenciómetro para derivar a tierra posibles interferencias electromagnéticas externas.