lunes, 5 de marzo de 2012

TV-OUT Ejemplo funcionamiento



En este ejemplo, vamos a utilizar la configuración que ya teníamos de la LDR, y añadiendo al arduino la librería TV-OUT, vamos a generar una señal de TV en la cual vamos a mostrar el valor que nos da el LDR.



Como primer paso, debemos descomprimir este fichero(librería TV-OUT) en la carpeta de librerías del IDE de arduino. El conexionado se especifica en esta imagen, pero básicamente es utilizar el PIN 9, el PIN 7 del arduino y la masa de la alimentación.

#include <TVout.h>
#include <fontALL.h>
TVout TV;

int LightPin = 2;
int val;

void setup() {
  TV.begin(PAL,120,96);
  TV.select_font(font6x8);
  pinMode(LightPin, INPUT);
}
 void loop() {
 leer();
 escribir();
 }
void leer() {
  val= analogRead(LightPin);
  val= map (val, 20, 1024, 100, 0);
}
void escribir() {
  TV.println("Automatas Tenerife");
  TV.println();
  TV.print("% de luz: ");
  TV.println(val);
  delay(500);
  TV.clear_screen();
}


LDR - Sensor de Luz.


En este ejemplo, vamos a medir en porcentajes la luz que recibe una LDR o fotoresistencia. Para conectar dicho dispositivo primeramente hemos creado un divisor de tensión con dos resistencias, de VCC al pin 1 hemos puesto una resistencia de 4,7K y desde ese mismo punto hemos puesto la LDR con la pata que queda suelta a masa (GND).

Tras esto, hemos realizado varias pruebas para calibrar dicho dispositivo, observando que las valores entre máximo y mínimo varían entre 1024 y 20. Posteriormente hemos mapeado dicho valor entre 100 y 0 para mostrar el porcentaje de luz que incide en la LDR.

Para mostrar el resultado, hemos usado una LCD.



#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
int LightPin = 1; // 1024 a tope de luz, 20 sin luz
int val;

void setup() {
  lcd.begin(16, 2);
  pinMode(LightPin, INPUT);
}

void loop() {
 leer();
 escribir();
 }

void leer() {
  val= analogRead(LightPin);
  val= map (val, 20, 1024, 100, 0);
}
void escribir() {
  lcd.print("% de luz: ");
  lcd.print(val);
  delay(500);
  lcd.clear();
}

LCD - 16x2



En este ejemplo observaremos como conectar una LCD basado en el chipset Hitachi HD44780 (o compatible), que básicamente son casi todos los que podemos obtener en tiendas chinas a bajo precio.
El conexionado de los pines son los siguientes:
Los pines 1, 3 y 5 del LCD a la masa (GND) el pin 2 a + 5 Voltios (VCC), el pin 4 al pin 12 del arduino, el pin 6 al pin 11 del arduino y los pines 11, 12, 13 y 14  del LCD a los pines 5, 4, 3, 2 del arduino.



Para el siguiente ejemplo, hemos configurado la pantalla con los pines que se han indicado anteriormente. Observar que los pines se pueden cambiar, y simplemente debemos especificar en  la función LiquidCrystal lcd(); cuales son los pines del arduino que hemos asignado a los siguientes pines del LCD:
  • El pin RS del LCD (pin 4), en el ejemplo conectado a la E/S digital en el pin 12.
  • El pin enable del LCD (pin 6), en el ejemplo conectado a la E/S digital en el pin 11.
  • Los pines D4 - D7 (desde el pin 11 al 14), en el ejemplo conectados a las E/S digitales desde el pin 5 hasta el 2.


#include <LiquidCrystal.h>

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

void setup() {
  lcd.begin(16, 2);
}
void loop() {
  lcd.println("Ejemplo linea1 ");
  lcd.println("Ejemplo linea2 ");
  delay(500);
  lcd.clear();
 }


En este ejemplo, se puede observar que hemos incluido la librería "LiquidCrystal.h", esta librería es estándar y la trae implementada el IDE del arduino, por lo que no debemos importar al IDE dicha librería.
Recomiendo usar los ejemplos que trae el IDE para familiarizarse con dicho elemento.





viernes, 2 de marzo de 2012

DHT22 - Temperatura y Humedad


En este ejemplo podemos ver cómo obtener la temperatura y la humedad del DHT22. El conexionado, mirando el sensor de frente, tal y como está en la foto es:
Patilla 1 = +5VCC
Patilla 2 = Pin 7 arduino + R-10K a VCC.
Patilla 3 = No se usa.
Patilla 4 = GND.
No olvidarse que para poder compilar este ejemplo debemos incluir dentro de la carpeta de las librerías del IDE de arduino, una carpeta DHT22 que incluya las librerías de dicho componente.

#include <dht.h>
#include <LiquidCrystal.h>

dht DHT;
#define DHT22_PIN 7
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup()
{
lcd.begin(16, 2);
Serial.begin(115200);
Serial.println("DHT TEST PROGRAM ");
Serial.print("LIBRARY VERSION: ");
Serial.println(DHT_LIB_VERSION);
Serial.println();
Serial.println("Type,\tstatus,\tHumidity (%),\tTemperature (C)");
}
void loop()
{
Serial.print("DHT22, \t");
int chk = DHT.read22(DHT22_PIN);
switch (chk)
{
case 0: Serial.print("OK,\t"); break;
case -1: Serial.print("Checksum error,\t"); break;
case -2: Serial.print("Time out error,\t"); break;
default: Serial.print("Unknown error,\t"); break;
}
Serial.print(DHT.humidity, 1);
Serial.print(",\t");
Serial.println(DHT.temperature, 1);
lcd.clear();
lcd.print("Temp: ");
lcd.print(DHT.temperature, 1);
lcd.print(" C");
lcd.setCursor(0, 1);
lcd.print("Hum: ");
lcd.print(DHT.humidity, 1);
lcd.print(" %");
delay(500);
}


En este ejemplo, obtendremos tanto la salida de los datos por LCD como por puerto serial.
Enlace libreria DHT22