Paso 5: código
Y aquí está mi código de ejemplo que lee los 3 termistores, la fecha y hora desde el módulo RTC y los muestra en la pantalla LCD. Hay algunas funciones en la parte inferior que todo Ayude a mostrar lo que quería (el momento 2 dígitos y conversión de la medianoche a 12 de 0). Hay un video en la siguiente página que muestra cómo todo lo muestra en la pantalla.
#include < LiquidCrystal.h >
#include < Wire.h >
#include "RTClib.h"
#include < math.h >
Rtc RTC_DS1307;
inicializar la biblioteca con los números de los pines de interfaz
LiquidCrystal lcd (7, 8, 9, 10, 11, 12);
hacer algunos caracteres personalizados:
fan1 de Byte [8] = {B00000, B01100, B01011, B10101, B11010, B00110, B00000, B00000};
fan2 Byte [8] = {B00000 B00110, B11010, B10101, B01011, B01100, B00000, B00000};
fan3 Byte [8] = {B00000, B11011, B11011, B00100, B11011, B11011, B00000, B00000};
icono de int = 1;
int delayTime = 100;
void setup() {}
Serial.Begin(57600);
crear un nuevo personaje
lcd.createChar (1, fan1);
lcd.createChar (2, fan2);
lcd.createChar (3, fan3);
fijar número la pantalla del LCD de filas y columnas:
LCD.Begin(20,4);
#ifdef AVR
Wire.Begin();
#else
Wire1.Begin(); Escudo I2C pines conectan a alt bus I2C en Arduino debido
#endif
RTC.Begin();
Si (! {rtc.isrunning())}
Serial.println ("RTC no corre!");
línea establece el RTC en la fecha y hora que este sketch fue compilado
RTC.ADJUST (DateTime (__DATE__, __TIME__));
}
}
void loop() {}
Formato de la fecha...
Fecha y hora = ahora rtc.now();
Lea las temperaturas...
lcd.setCursor (0, 0);
LCD.Print("Temp.");
lcd.setCursor (0, 1);
LCD.Print("1:");
LCD.Print(int(Thermister(analogRead(0)));
LCD.Print((Char)223);
LCD.Print('F');
lcd.setCursor (0, 2);
LCD.Print("2:");
LCD.Print(int(Thermister(analogRead(1)));
LCD.Print((Char)223);
LCD.Print('F');
lcd.setCursor (0, 3);
LCD.Print("3:");
LCD.Print(int(Thermister(analogRead(2)));
LCD.Print((Char)223);
LCD.Print('F');
lcd.setCursor (8, 0);
LCD.Print(Now.month(), DEC);
LCD.Print('/');
LCD.Print(Now.Day(), DEC);
LCD.Print('/');
LCD.Print(Now.Year(), DEC);
Horas
lcd.setCursor (8, 1);
LCD.Print(PAD(ClockHours(Now.hour()));
Minutos
lcd.setCursor (10, 1);
LCD.Print(':');
lcd.setCursor (11, 1);
LCD.Print(PAD(Now.minute()));
Segundos
lcd.setCursor (13, 1);
LCD.Print(':');
lcd.setCursor (14, 1);
LCD.Print(PAD(Now.Second()));
FanSpinFn();
Delay(delayTime);
}
doble Thermister (int RawADC) {}
doble Temp;
Temp = log(((10240000/RawADC) - 10000));
Temp = 1 / (0.001129148 + (0.000234125 + (0.0000000876741 * Temp * Temp)) * Temp);
Temp = Temp - 273.15; Convertir de Kelvin a Celsius
Temp = (Temp * 9.0) / 5.0 + 32.0; Convertir grados Celsius a Fahrenheit
devolver a Temp;
}
void FanSpinFn() {}
lcd.setCursor (19, 3);
LCD.Write(Icon);
Si (icono < 3) {icono ++;}
Else {icono = 1;}
}
String Pad (int Time_Segment) {}
Si (Time_Segment < 10) {vuelta "0" + String (Time_Segment, DEC);}
Else {devuelve la cadena (Time_Segment, DEC);}
}
int ClockHours (int horas) {}
Si (horas < 1) {vuelta 12;}
Else {regresar horas;}
}