Paso 3:
CONFIGURACIÓN DEL CÓDIGO TEMPORIZADOR SEGÚN REQUISITO
#include "Wire.h"
#includeLiquidCrystal lcd (7,6, 5, 4, 3, 2); LCD (rs, habilitar, d4, d5, d6, d7)
const char * AMPM; bulbo de int = 0;
bytes segundo, minuto, hora, DíaDeLaSemana, dayOfMonth, mes, año;
char * días [] = {"", "sol", "LUN", "Mar", "Jue", "Jue", "Vie", "Sat"};
int H; String s, m, d, mth, h;
#define DS1307_I2C_ADDRESS 0x68
Byte [8] = {0b01110, 0b11111, 0b11111, 0b11111, 0b11111, 0b11111, 0b11111, 0b01010};
Byte [8] = {0b01110, 0b10001, 0b10001, 0b10001, 0b10001, 0b10001, 0b11111, 0b01010};
chispa de Byte [8] = {0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b10101, 0b01010};
void setup()
{
Wire.Begin();
lcd.createChar(1, on); EN bulbo cracter
lcd.createChar(0, off); FUERA DE FOCO CRATCTER
lcd.createChar (2, chispa); FOCO DE CHISPA
LCD.Begin (16, 2);
LCD.Print ("diamante AHIR");
lcd.setCursor(0,1);
LCD.Print ("grupo X-PERT");
Delay(3000);
Serial.Begin(9600);
}
void loop()
{
getDateDs1307 (y segundo y minuto, hora y DíaDeLaSemana & dayOfMonth & mes & año); OBTENER los valores de
AMPM();
Convert_Hours();
LCD.Clear(); borrar pantalla
DisplayTime(); Tiempo de visualización
match_bulb_time(); JUEGO CON SET BULBO TIMEING
Delay(1000); Esperar 1 segundo
}
byte bcdToDec(byte val) {regresar ((val/16 * 10) + (val % 16));}
void getDateDs1307 (byte * segundo, byte * bytes minuto, * hora, byte * dayOfWeek, byte * dayOfMonth, byte * mes, byte * año)
{
Leer valores de RTC DS1307
Wire.beginTransmission(DS1307_I2C_ADDRESS);
Wire.Write(0);
Wire.endTransmission();
Wire.requestFrom (DS1307_I2C_ADDRESS, 7);
* segundo = bcdToDec(Wire.read() & 0x7f);
* minutos = bcdToDec(Wire.read());
* hora = bcdToDec(Wire.read() & 0x3f);
* dayOfWeek = bcdToDec(Wire.read());
* dayOfMonth = bcdToDec(Wire.read());
* mes = bcdToDec(Wire.read());
* año = bcdToDec(Wire.read()); }
void ampm() {(horas > 11)? () AMPM="PM"):(AMPM="AM"); }
void Convert_Hours() {if(hour == 12|| hora == 0) H = 12; else if (hora > 12) H = hora % 12; otro H = horas; }
void displaytime()
{
if(minute == 0) / / en cada horas minutos se visualiza para una
{
LCD.Begin (16, 2);
LCD.Print ("diamante AHIR");
lcd.setCursor(0,1); ¿(H < 10)? (h = "0" + String(H)): (h = String(H));
APLICAR cero + 1to9 horas
¿(minuto < 10)? (m = "0" + String(minute)): (m = String(minute)); APLICAR cero + con 1to9 minutos
¿(segundo < 10)? (s = "0" + String(second)): (s = String(second)); APLICAR cero + con 1to9 segundo
LCD.Print ("" + String(h) + ":" + m + ":" + s + "" + AMPM);
}
otra cosa
{
LCD.Begin (16, 2);
¿(H < 10)? (h = "0" + String(H)): (h = String(H)); APLICAR cero + 1to9 horas
¿(minuto < 10)? (m = "0" + String(minute)): (m = String(minute)); APLICAR cero + con 1to9 minutos
¿(segundo < 10)? (s = "0" + String(second)): (s = String(second)); APLICAR cero + 1to9 segundos
¿(dayOfMonth < 10)? (d = "0" + String(dayOfMonth)): (d = String(dayOfMonth)); APLICAR cero + 1to9 día
¿(mes < 10)? (mth = "0" + String(month)): (mth = String(month)); APLICAR cero + con 1to9 mes
lcd.setCursor(0,0);
LCD.Print (h + ":" + m + ":" + s + "" + AMPM); HORAS: MINUTOS: SEGUNDOS AM/PM
lcd.setCursor(0,1);
LCD.Print (d + ":" + mes + ":" + año + "" + days[dayOfWeek]); SEMANA DÍA: MES: AÑO
}
} //END FUNCIÓN
void match_bulb_time()
{
interruptor (hora) / / aplicar bulbo en horas
{/ / 6 AM a 6 PM para el bulbo
caso 0: bulbo = 1; rotura; 12
caso 1: bulbo = 1; rotura; 1
caso 2: bombilla = 1; rotura; 2
caso 3: bulbo = 1; rotura; 3
caso 4: bulbo = 1; rotura; 4
caso 5: bulbo = 1; rotura; 5
caso 6: bulbo = 1; rotura; 6
caso 7: bulbo = 0; rotura; 7
caso 8: bulbo = 0; rotura; 8
caso 9: bulbo = 0; rotura; 9
caso 10: bulbo = 0; rotura; 10
caso 11: bulbo = 0; rotura; 11
caso 12: bulbo = 0; rotura; 12
caso 13: bulbo = 0; rotura; 1
caso 14: bulbo = 0; rotura; 2
caso 15: bulbo = 0; rotura; 3
caso 16: bulbo = 0; rotura; 4
caso 17: bulbo = 0; rotura; 5
caso 18: bulbo = 1; rotura; 6
caso 19: bulbo = 1; rotura; 7
caso 20: bulbo = 1; rotura; 8
caso 21: bulbo = 1; rotura; 9
caso 22: bulbo = 1; rotura; 10
caso 23: bulbo = 1; rotura; 11
default: break;
}
if(Bulb==1) //Relay interruptor
{digitalWrite(8,LOW); / / o conectar a tierra
digitalWrite(9,HIGH); RELÉ DE ENCENDIDO
Icono de bombilla de visualización en pantalla LCD
lcd.setCursor(14,0);
LCD.Write((byte) 2);
LCD.Write((byte) 2);
lcd.setCursor(14,1);
LCD.Write((byte) 1);
LCD.Write((byte) 1);
}
if(Bulb==0)
{
digitalWrite(8,LOW); O conectar a tierra
digitalWrite(9,LOW); DE RELÉ
Pantalla de lámpara de icono
lcd.setCursor(14,1);
LCD.Write((byte) 0);
LCD.Write((byte) 0);
}
}