Paso 3: codificación
Primero tienes que subir el tiempo a la RTC (reloj despertador arduino):
#include
"Wire.h"
#define DS1307_I2C_ADDRESS 0x68
decToBcd(byte val) bytes
{
regresar ((val/10 * 16) + (val % 10));
}
void setDateDs1307)
bytes segundo, / / 0-59
minuto de byte, / / 0-59
hora de byte, / / 1-23
dayOfWeek bytes, / / 1-7 1 = el lunes, 7 = el sol
dayOfMonth bytes, / / 1-28/29/30/31
mes de byte, / / 1-12
año de bytes / / 0-99
)
{
Wire.beginTransmission(DS1307_I2C_ADDRESS);
Wire.Write(0);
Wire.Write(decToBcd(Second));
Wire.Write(decToBcd(minute));
Wire.Write(decToBcd(hour));
Wire.Write(decToBcd(dayOfWeek));
Wire.Write(decToBcd(dayOfMonth));
Wire.Write(decToBcd(month));
Wire.Write(decToBcd(Year));
Wire.endTransmission();
}
void setup()
{
bytes segundo, minuto, hora, DíaDeLaSemana, dayOfMonth, mes, año;
Wire.Begin();
pinMode (13, salida);
Cambiar estos valores a lo que usted quiere ajustar su reloj.
Es mejor Añadir 30 segundos a un minuto para permitir que su computadora compilar y subir el tiempo actual.
Sólo ejecutar esta secuencia de comandos una vez, como ejecutarlo otra vez se sobreponen a la hora fijada en el chip RTC!
Horas están en formato de 24 horas
Día de la semana empieza con el lunes = 1 al domingo = 7
Año en formato AA, así que sólo utilizar los últimos 2 dígitos del año
//
Una vez se ejecute el programa, el LED en el pin 13 destellará para decir que ha acabado, no lo desenchufe o RESET.
Simplemente seguir el tutorial y subir el código del LCD para evitar sobrescribir la hora correcta con este tiempo nuevo.
//
segundo = 0;
minutos = 13;
hora = 15;
dayOfWeek = 1;
dayOfMonth = 11;
mes = 1;
año = 16;
setDateDs1307 (segundo, minuto, hora, DíaDeLaSemana, dayOfMonth, mes, año);
//*/
}
void loop()
{
digitalWrite (13, HIGH); Encienda el LED (alto es el nivel de voltaje)
Delay(1000); Espere un segundo
digitalWrite (13, bajo); Apagar el LED por lo que la tensión baja
Delay(1000);
}
Luego tienes que subir el tiempo de despertar (despertador arduino):
#include "Wire.h"
#include
#include
#define DS1307_I2C_ADDRESS 0x68
LiquidCrystal lcd (12, 11, 5, 4, 3, 2);
bcdToDec(byte val) bytes
{
regresar ((val/16 * 10) + (val % 16));
}
void getDateDs1307 (byte * segundo, byte * bytes minuto, * hora, byte * dayOfWeek, byte * dayOfMonth, byte * mes, byte * año)
{
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 setup()
{
bytes segundo, minuto, hora, DíaDeLaSemana, dayOfMonth, mes, año;
Wire.Begin();
MODIFICAR SI SU USO DE UNA LCD DIFERENTES PANTALLA / /
LCD.Begin (16, 2);
pinMode (7, salida);
}
void loop()
{
bytes segundo, minuto, hora, DíaDeLaSemana, dayOfMonth, mes, año;
String s, m, d, mth, h;
getDateDs1307 (y segundo y minuto, hora y DíaDeLaSemana & dayOfMonth & mes & año);
Si (segunda < 10) {s = "0" + String(second);} else {s = String(second);}
Si (minuto < 10) {m = "0" + String(minute);} else {m = String(minute);}
h = String(hour);
Si (dayOfMonth < 10) {d = "0" + String(dayOfMonth);} else {d = String(dayOfMonth);}
Si (mes < 10) {mth = "0" + String(month);} else {mth = String(month);}
char * días [] = {"NA", "LUN", "Mar", "Miércoles", "Jue", "vie", "Sab", "Sol"};
LCD.Clear();
SALTO AL CENTRO EN UNA PANTALLA 16 X 2 / /
lcd.setCursor(4,0);
CAMBIAR LO SIGUIENTE PARA ESTABLECER LA FECHA EN SU ORDEN PREFERIDO / /
LCD.Print (h + ":" + m + ":" + s);
SIGUIENTE LÍNEA, 1 ESPACIO DE LA IZQUIERDA / /
lcd.setCursor(1,1);
PREFIJO EL 20 COMO EL CHIP RTC SÓLO UTILIZA 2 DÍGITOS PARA EL AÑO / /
LCD.Print(String(Days[dayOfWeek]) + "" + d + "/" + mes + "/ 20" + año);
Delay(1000); Esperar 1 segundo
Si (horas == 15 & & minuto == 18) digitalWrite (7, alto);
Si (minutos! = 18) digitalWrite (7, bajo);
}
El último paso es añadir el código del receptor (pilow arduino):
#define rfReceivePin A0 //RF pin receptor = pin analógico 0
#define ledPin 13 //Onboard LED = pin digital 13
unsigned int datos = 0; variable utilizada para almacenar recibida la información
const unsigned int upperThreshold = 70; valor de umbral superior
const unsigned int lowerThreshold = 50; valor de umbral más bajo
void setup() {}
pinMode (ledPin, salida);
Serial.Begin(9600);
}
void loop() {}
Data=analogRead(rfReceivePin); Escuchar para datos en el pin analógico 0
if(Data>upperThreshold) {}
digitalWrite (ledPin, LOW); Si se recibe una señal baja, apagar LED
Serial.println(Data);
}
Si (datos
digitalWrite (ledPin, HIGH); Si se recibe una señal de alto, enciende LED
Serial.println(Data);
}
}