Arduino NANO.

Especificaciones del Micro Controlador.

TarjetaNombre
MicrocontrollerATmega328
USB connectorMini-B USB
PinsBuilt-in LED Pin 13
Digital I/O Pins14
Analog input pins8
PWM pins6
Communication
UARTYes
I2CYes
SPIYes
Power
Input voltage (nominal)7-12V
DC Current per I/O Pin20 mA
Clock speedATmega328 16 MHz
Memory2KB SRAM, 32KB flash 1KB EEPROM
DimensionsWeight 5gr
Width18 mm
Length45 mm
Especificaciones

Tarjeta NANO Arduinonanofrente

NANO Pin Out.

Sensor temperatura DHT11

dht11Pantalla Liquida LCD Display 20 x 4.

Real Time Clock RTC_DS1307

// Sensor de temperatura humedad DHT11 conectado a NANO y LCD(20x4)
// Julio 2015
// Jorge L. Herrera
// Version 0.1

#include "DHT.h"
#include "Wire.h"
#include "RTClib.h"
#include "LiquidCrystal_I2C.h"

// SETUP CRISTAL LIQUIDO
LiquidCrystal_I2C lcd(0x3F,20,4);
// Conectar  SCL a A5
// Conectar  SDA a A4

// SETUP SENSOR HUMEDAD
// Conectar el  pin 1 (el primero de la izquierda) del sensor a +5V
// Conectar el  pin 2 del sensor al pin 2 del Arduino
// Conectar el pin 4 (el primero de la derecha) del sensor a GROUND
// Conectar una resistencia de 10K del pin 2 (datos) al pin 1 (power) del sensor.
#define DHTPIN 2
#define DHTTYPE DHT11
// Inicializando el sensor DHT para 16mhz Arduino (Normal)
DHT dht(DHTPIN, DHTTYPE);
// NOTA: Si se quiere trabajar con un procesador mas rápido como el Arduino Due o 
// Teensy, es necesario incrementar el threshold.
// Esto se puede hacer usando un tercer parámetro para éste.
// El valor adecuado está en función de la rapidez del CPU pero en general  a mayor 
// rapidez mas grande el valor del parámetro. Por ejemplo un procesador a 84 Mhz
// DHT dht(DHTPIN, DHTTYPE, 30);

// SETUP REAL TIME CLOCK CHIP
RTC_DS1307 RTC;

void setup(){
  lcd.backlight();
  lcd.init();
  dht.begin();
  Wire.begin();
  RTC.begin();
  RTC.adjust(DateTime(__DATE__, __TIME__));
}

void loop(){
  //Desplegar Fecha y Hora
  DateTime now = RTC.now();
  //FECHA
  //Dia
  lcd.setCursor(0,0);
  lcd.print(now.day(), DEC);
  lcd.print('/'); 

  //Mes
  lcd.print(now.month(), DEC);
  lcd.print('/');  

  //Ano
  lcd.print(now.year(), DEC);
  lcd.print(' ');

  //HORA
  lcd.setCursor(10,0);
  lcd.print(now.hour(), DEC);
  lcd.print(':');
  //lcd.setCursor(13,0);
  lcd.print(now.minute(), DEC);
  lcd.print(':');
  lcd.print(now.second(), DEC);
  
  // Recibe lecturas sensor humedad.
  delay(1000);
  // La lectura de la temperatura y humedad toma alrededor de 250 milisegundos!
  // Las lecturas del sensor pueden estar el alto por 2 segundos ‘old’ 
  // (esto ya que es un //procesador muy lento)
  float h = dht.readHumidity();
  // Lectura de temperature en Celsius
  float t = dht.readTemperature();
  // Lectura de temperatura en Fahrenheit
  float f = dht.readTemperature(true);
  // Verifica si las lecturas fueron correctas o se dio un timeout (intenta nuevamente).

  if (isnan(h) || isnan(t) || isnan(f)){
    lcd.setCursor(0,1);
    lcd.print("No se obtuvieron valores adecuados del sensor DHT!");
    return;
  }
 // Calculando el índice de calor (Heat Index); es la relación Grados Farenheith / Grados Celcius
 float hi = dht.computeHeatIndex(f, h);
//lcd.clear(); lcd.setCursor(0,1); lcd.print("Humedad: "); lcd.setCursor(10,1); lcd.print(h); lcd.print(" %"); lcd.setCursor(0,2); lcd.print("Temp: "); lcd.print(int(t)); // t y f se cambian a entero por motivo de espacio en LCD. lcd.print(" *C");   lcd.setCursor(13,2); lcd.print(int(f)); lcd.print(" *F"); lcd.setCursor(0,3); lcd.print("Ind Cal: "); lcd.print(hi); lcd.print(" *F"); }