Stap 3: codering
U moet eerst de tijd uploaden naar de RTC (alarmklok arduino):
#include
"Wire.h"
#define DS1307_I2C_ADDRESS 0x68
byte decToBcd(byte val)
{
retourneren ((val/10 * 16) + (val % 10));
}
VOID setDateDs1307)
byte tweede, / / 0-59
byte minuut, / / 0-59
byte uur, / / 1-23
byte dayOfWeek, / / 1-7 1 = Mon, 7 = zon
byte dayOfMonth, / / 1-28/29/30/31
byte maand, / / 1-12
byte jaar / / 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
{
byte seconde, minuut, uur, dayOfWeek, dayOfMonth, maand, jaar;
Wire.begin();
pinMode (13, OUTPUT);
Deze waarden wijzigen in wat u instellen van de klok van uw computer wilt op.
Het is best om toe te voegen 30 seconden tot een minuut tijd voor uw computer te compileren en uploaden van de huidige tijd te geven.
Alleen uitvoeren van dit script eens, zoals het opnieuw uit te voeren de tijd instellen in de RTC-chip overschrijft!
Uren zijn in 24-uursnotatie
Dag van de week begint met maandag = 1 tot zondag = 7
Jaar in YY formaat is dus alleen gebruik maken van de laatste 2 cijfers van het jaar
//
Zodra u het programma hebt uitgevoerd, zal de LED op pin 13 knipperen om aan te zeggen dat het klaar is, niet LOSKOPPELT of opnieuw instellen.
Simpelweg volgen naar de opvoeden en de LCD codes uploaden om te vermijden dat de juiste tijd met dit keer weer worden overschreven.
//
tweede = 0;
Minute = 13;
uur = 15;
dayOfWeek = 1;
dayOfMonth = 11;
maand = 1;
jaar = 16;
setDateDs1307 (tweede, minuut, uur, dayOfWeek, dayOfMonth, maand, jaar);
//*/
}
void loop
{
digitalWrite (13, hoge); de LED inschakelen (HIGH is het spanningsniveau)
delay(1000); wachten op een tweede
digitalWrite (13, laag); de LED uitschakelen door de spanning laag
delay(1000);
}
Dan heb je voor het uploaden van de tijd die u wilt wakker (alarmklok arduino):
#include "Wire.h"
#include
#include
#define DS1307_I2C_ADDRESS 0x68
LiquidCrystal lcd (12, 11, 5, 4, 3, 2);
byte bcdToDec(byte val)
{
retourneren ((val/16 * 10) + (val % 16));
}
VOID getDateDs1307 (byte * tweede, byte * minuut, byte * uur, byte * dayOfWeek, byte * dayOfMonth, byte * maand, byte * jaar)
{
Wire.beginTransmission(DS1307_I2C_ADDRESS);
Wire.write(0);
Wire.endTransmission();
Wire.requestFrom (DS1307_I2C_ADDRESS, 7);
* tweede = bcdToDec(Wire.read() & 0x7f);
* minuut = bcdToDec(Wire.read());
* uur = bcdToDec(Wire.read() & 0x3f);
* dayOfWeek = bcdToDec(Wire.read());
* dayOfMonth = bcdToDec(Wire.read());
* maand = bcdToDec(Wire.read());
* jaar = bcdToDec(Wire.read());
}
VOID Setup
{
byte seconde, minuut, uur, dayOfWeek, dayOfMonth, maand, jaar;
Wire.begin();
ALS JE HET GEBRUIK VAN EEN VERSCHILLENDE LCD-SCHERM WIJZIGEN / /
LCD.begin (16, 2);
pinMode (7, OUTPUT);
}
void loop
{
byte seconde, minuut, uur, dayOfWeek, dayOfMonth, maand, jaar;
String s, m, d, mth, h;
getDateDs1307 (& tweede, & minuut, uur, & dayOfWeek, & dayOfMonth, & maand, & jaar);
Als (tweede < 10) {s = "0" + String(second);} else {s = String(second);}
Als (< 10 minute) {m = "0" + String(minute);} else {m = String(minute);}
h = String(hour);
Als (dayOfMonth < 10) {d = "0" + String(dayOfMonth);} else {d = String(dayOfMonth);}
Als (maand < 10) {mth = "0" + String(month);} else {mth = String(month);}
char * dagen [] = {"NA", "Ma", "Di", "Wo", "Do", "VR", "Sat", "Sun"};
LCD.Clear();
SPRINGEN NAAR CENTER OP EEN SCHERM VAN 16 X 2 / /
lcd.setCursor(4,0);
WIJZIGEN DE VOLGENDE WILT INSTELLEN VAN DE DATUM IN OP DE VOLGORDE VAN UW VOORKEUR / /
LCD.Print (h + ":" + m + ":" + s);
VOLGENDE REGEL, 1 RUIMTE IN VANAF DE LINKERKANT / /
lcd.setCursor(1,1);
VOORVOEGSEL VAN DE 20 ALS DE RTC-CHIP SLECHTS 2 CIJFERS VOOR HET JAAR GEBRUIKT / /
LCD.Print(String(Days[dayOfWeek]) + "" + d + "/" + mth + "/ 20" + jaar);
delay(1000); Wacht 1 seconde
Als (uur 15 == & & minuut 18 ==) digitalWrite (7, hoge);
Als (minuut! = 18) digitalWrite (7, laag);
}
De laatste stap is om te uploaden van de code naar de ontvanger (pilow arduino):
#define rfReceivePin A0 //RF ontvanger pin = analoge pin 0
#define ledPin 13 //Onboard LED = digital pin 13
unsigned int gegevens = 0; variabele gebruikt om gegevens op te slaan die zijn ontvangen
Const unsigned int upperThreshold = 70; bovenste drempelwaarde
Const unsigned int lowerThreshold = 50; lagere drempelwaarde
VOID Setup {}
pinMode (ledPin, OUTPUT);
Serial.begin(9600);
}
void loop {}
Data=analogRead(rfReceivePin); Luister naar gegevens over analoge pin 0
if(Data>upperThreshold) {}
digitalWrite (ledPin, laag); Als een laag signaal wordt ontvangen, uitschakelen LED
Serial.println(Data);
}
Als (gegevens
digitalWrite (ledPin, hoge); Als een hoog-signaal wordt ontvangen, zet LED ON
Serial.println(Data);
}
}