Usted está aquí: Inicio
Este es un pequeño amplificador de audio muy útil para pequeños proyectos, lo podemos conectar a lo que queramos, el pc, el movil, etc.
El alma de este pequeño amplificador es un integrado TDA2822 el cual proporciona 1W de potencia y lo podemos alimentar con 5V, la lista de componentes es bastante reducida.
Baquelita perforada pequeña
Soldador y estaño
1 integrado TDA2822
2 Resistencias de 10k (marron, negro, naranja, dorado)
2 Resistencias de 4.7 ohm (Amarillo, violeta, dorado, dorado)
2 Condensadores de 100 uf/10V
2 Condensadores de 1000 uf/10V
1 Condensador 2200 uf/10V
2 Condensadores cerámicos 0,1 uf (104)
1 Potenciómetro 10K
En esta entrada veremos cómo conectar un sensor de humedad y temperatura (DHT11), y un reloj (DS1302) a un LCD para poder ver los datos que nos proporcionan los modulos.
Descarga la libreria DS1302 Aquí
Display LCD: LCD 20x4.
Arduino [ ]
Display ( ) vista frontal
(1) VCC [GND]
(2) VDD [+5V]
(3) V0 [2,2KOhm]------[GND]
(4) RS [D4]
(5) RW [GND]
(6) E [D7]
(7) D0
(8) D1
(9) D2
(10) D3
(11) D4 [D8]
(12) D5 [D9]
(13) D6 [D12]
(14) D7 [D13]
(15) A [D10]
(16) K [47Ohm o directo]----[GND]
Módulo RTC: Se conectará a la placa mediante los siguientes pines.
Arduino [ ]
RTC ( ) vista frontal
(Vcc) (GND) (CLK) (DAT) (RST)
[+5V] [GND] [D5] [D3] [D2]
Nota: En arduino mini tube que quitar el cable de +5V para que la fecha la marcara correctamente, con el cable puesto no funcionaba bien.
Módulo DHT11:
(Vcc) (Out) (Gnd)
+5v D11 Gnd
Este código solo lo utilizaremos una vez, se utiliza para programar el reloj en hora y fecha, es lógico que si queremos que mantenga la hora hay que ponerle una pila al modulo, sino cada vez que pierda la corriente este se pondrá por defecto.
#include <DS1302.h>
// Inicializacion del modulo
DS1302 rtc(2, 3, 5);
Time t;
void setup(){
// Desproteger contra escritura
rtc.halt(false);
rtc.writeProtect(false);
rtc.setDOW(TUESDAY); // Configurar dia de la semana: MARTES.
rtc.setTime(17, 00, 00); // Configurar hora en formato 24hs con min y seg: 17:00:00 HORAS.
rtc.setDate(4, 3, 2014); // Configurar fecha en formato dia/mes/año: 4/3/2014.
}
void loop(){
digitalWrite(13,HIGH); // El led integrado confirmara la finalizacion.
}
#include "DHT.h" //cargamos la librería DHT
#define DHTPIN 11 //Seleccionamos el pin en el que se //conectará el sensor
#define DHTTYPE DHT11 //Se selecciona el DHT11 (hay //otros DHT)
DHT dht(DHTPIN, DHTTYPE); //Se inicia una variable que será usada por Arduino para comunicarse con el sensor
#include <DS1302.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(4, 7, 8, 9, 12, 13); // LCD-4/A-4 LCD-6/A-7 LCD-11-12-13-14/A-8-9-12-13
// Inicializacion del modulo.
DS1302 rtc(2, 3, 5);
Time t;
void setup() {
// LCD led de fondo
pinMode(10,OUTPUT); // LED conectado al pin D10.
analogWrite(10, 255); // Encendido del LED de luz de fondo.
lcd.begin(20,4); // Inicializacion del LCD.
dht.begin(); //Se inicia el sensor
}
void loop() {
// Obtencion de datos
t = rtc.getTime();
// Publicar en LCD
// Se publicara el dia de la semana
if (t.dow == 1) lcd.print("Lunes"); // La variable t.dow (dia de la semana) tedra valor de 1 para dia lunes y 7 para domingo.
if (t.dow == 2) lcd.print("Martes");
if (t.dow == 3) lcd.print("Miercoles");
if (t.dow == 4) lcd.print("Jueves");
if (t.dow == 5) lcd.print("Viernes");
if (t.dow == 6) lcd.print("Sabado");
if (t.dow == 7) lcd.print("Domingo");
// Se publicaran datos de fecha, en numeros.
lcd.print(" ");
lcd.print(t.date, DEC); // Dia del mes.
lcd.print("/"); // Mes.
lcd.print(t.mon);
lcd.print("/");
lcd.print(t.year, DEC); // Año.
lcd.setCursor(6,1);
lcd.print(t.hour, DEC); // Hora en formato 0-23.
lcd.print(":");
lcd.print(t.min, DEC); // Minutos.
lcd.print(":");
lcd.print(t.sec, DEC); // Segundos.
//esta es la parte del modulo de temperatura y humedad
float h = dht.readHumidity(); //lee la humedad
float t = dht.readTemperature(); //lee la temperatura
//Se imprimen las variables
lcd.setCursor(2,2);
lcd.print("Humedad: ");
lcd.print(h);
lcd.print(" % ");
lcd.setCursor(2,3);
lcd.print("Temp: ");
lcd.print(t);
lcd.print(" C ");
delay(500); // Demora para presentar los datos en pantalla.
lcd.clear();
}
#include <DS1302.h>
// Inicializacion del modulo.
DS1302 rtc(2, 3, 5);
Time t;
void setup() {
// Inicializacion del puerto serie.
Serial.begin(9600);
}
void loop() {
// Obtencion de datos
t = rtc.getTime();
// Publicar en LCD
// Se publicara el dia de la semana
Serial.print("HOY:");
if (t.dow == 1) Serial.print("lun"); // La variable t.dow (dia de la semana) tedra valor de 1 para dia lunes y 7 para domingo.
if (t.dow == 2) Serial.print("mar");
if (t.dow == 3) Serial.print("mie");
if (t.dow == 4) Serial.print("jue");
if (t.dow == 5) Serial.print("vie");
if (t.dow == 6) Serial.print("sab");
if (t.dow == 7) Serial.print("dom");
Serial.println(); // Linea aparte
// Se publicaran datos de fecha, en numeros.
Serial.print("DIA:");
Serial.print(t.date, DEC); // Dia del mes
Serial.println();
// Mes
Serial.print("MES:");
Serial.print(t.mon);
Serial.println();
// Año
Serial.print("DE:");
Serial.print(t.year, DEC);
Serial.println();
Serial.print("HORA:"); // Hora en formato 0-23.
Serial.print(t.hour, DEC);
Serial.print(", MIN:"); // Minutos.
Serial.print(t.min, DEC);
Serial.print(", SEG:"); // Segundos.
Serial.print(t.sec, DEC);
Serial.println();
Serial.println();
Serial.println();
delay(3000); // Demora para no sobrecargar las comunicaciones con el modulo.
}
This text will be replaced
{jcomments on}
This text will be replaced
/*
Programa para controlar un LED RGB con arduino.
Usando las salidas PWM se puede controlar la intensidad de cada color para hacer las mezclas.
Se hacen dos funciones:
rgbon(): Muestra los 3 colores principales uno despues de otro (rojo, verde y azul)
colors(): Permite elegir entre tres colores (amarillo (y), naranja (o) o rosado (p))
usando sus siglas en ingles
Materiales:
1 Arduino pro mini
6 LED RGB de 4 patas catodo comun
cables de conexion
*/
/*-----Declaracion de variables para cada color R G B-----*/
int rled = 13; // Pin PWN 13 para led rojo
int bled = 12; // Pin PWM 12 para led azul
int gled = 11; // Pin PWM 11 para led verde
int rled2 = 9; // Pin PWN 9 para led rojo
int bled2 = 8; // Pin PWM 8 para led azul
int gled2 = 7; // Pin PWM 7 para led verde
int rled3 = 6; // Pin PWN 6 para led rojo
int bled3 = 5; // Pin PWM 5 para led azul
int gled3 = 4; // Pin PWM 4 para led verde
/*----Declaracion de variables auxiliares-----*/
int i; // Variable para ciclos repetitivos
int repeat = 3; // Variables para cantidad limite de repeticiones
void setup() {
/*----- Se inicializan pines PWM como salida*/
pinMode(rled, OUTPUT);
pinMode(bled, OUTPUT);
pinMode(gled, OUTPUT);
pinMode(rled2, OUTPUT);
pinMode(bled2, OUTPUT);
pinMode(gled2, OUTPUT);
pinMode(rled3, OUTPUT);
pinMode(bled3, OUTPUT);
pinMode(gled3, OUTPUT);
}
void loop() {
for(i=0; i<repeat; i++) //Se repite la ejecucion de la funcion rgbon() "repeat" veces
rgbon();
delay(1000); //Se espera 1 segundo
colors('y'); //Se enciende el LED en color amarillo (y de yellow)
delay(1000);
colors('o'); //Se enciende el LED en color naranko (o de orange)
delay(1000);
colors('p'); //Se enciende el LED en color rosado (p de pink)
delay(1000);
}
/*-----Funcion para mostrar colores principales cada 500 ms-----*/
void rgbon(){
analogWrite(rled,255); // Se enciende color rojo
delay(500); // Se esperan 500 ms
analogWrite(rled,0); // Se apaga color rojo
analogWrite(bled,255); // Se enciende color azul
delay(500); // Se esperan 500 ms
analogWrite(bled,0); // Se apaga color azul
analogWrite(gled,255); // Se enciende color verde
delay(500); // Se esperan 500 ms
analogWrite(gled,0); // Se apaga colo verde
analogWrite(rled2,255); // Se enciende color rojo
delay(500); // Se esperan 500 ms
analogWrite(rled2,0); // Se apaga color rojo
analogWrite(bled2,255); // Se enciende color azul
delay(500); // Se esperan 500 ms
analogWrite(bled2,0); // Se apaga color azul
analogWrite(gled2,255); // Se enciende color verde
delay(500); // Se esperan 500 ms
analogWrite(gled2,0); // Se apaga colo verde
analogWrite(rled3,255); // Se enciende color rojo
delay(500); // Se esperan 500 ms
analogWrite(rled3,0); // Se apaga color rojo
analogWrite(bled3,255); // Se enciende color azul
delay(500); // Se esperan 500 ms
analogWrite(bled3,0); // Se apaga color azul
analogWrite(gled3,255); // Se enciende color verde
delay(500); // Se esperan 500 ms
analogWrite(gled3,0); // Se apaga colo verde
}
/*-----Funcion que permite escoger entre color amarillo, naranjo o rosado-----*/
void colors(char color){ //La funcion recibe un parametro que se guarda en variable color
switch(color){ //Se compara variable color con dato guardado
case 'y': analogWrite(rled,255); // Si color == 'y' se enciende color amarillo
analogWrite(gled,255); // Mezclando r = 255 / g = 255 / b = 0
analogWrite(bled,0);
analogWrite(rled2,255); // Si color == 'y' se enciende color amarillo
analogWrite(gled2,255); // Mezclando r = 255 / g = 255 / b = 0
analogWrite(bled2,0);
analogWrite(rled3,255); // Si color == 'y' se enciende color amarillo
analogWrite(gled3,255); // Mezclando r = 255 / g = 255 / b = 0
analogWrite(bled3,0);
break;
case 'o': analogWrite(rled,255); // Si color == 'o' se enciende color naranja
analogWrite(gled,180); // Mezclando r = 255 / g = 180 / b = 0
analogWrite(bled,0);
analogWrite(rled2,255); // Si color == 'o' se enciende color naranjo
analogWrite(gled2,180); // Mezclando r = 255 / g = 180 / b = 0
analogWrite(bled2,0);
analogWrite(rled3,255); // Si color == 'o' se enciende color naranjo
analogWrite(gled3,180); // Mezclando r = 255 / g = 180 / b = 0
analogWrite(bled3,0);
break;
case 'p': analogWrite(rled,255); // Si color == 'p' se enciende color rosado
analogWrite(gled,0); // Mezclando r = 255 / g = 0 / b = 255
analogWrite(bled,255);
analogWrite(rled2,255); // Si color == 'p' se enciende color rosado
analogWrite(gled2,0); // Mezclando r = 255 / g = 0 / b = 255
analogWrite(bled2,255);
analogWrite(rled3,255); // Si color == 'p' se enciende color rosado
analogWrite(gled3,0); // Mezclando r = 255 / g = 0 / b = 255
analogWrite(bled3,255);
break;
}
}