Étape 3: codage
Vous devez d’abord télécharger le temps au CCF (réveil arduino) :
#include
« Wire.h »
#define DS1307_I2C_ADDRESS 0x68
decToBcd(byte val) octets
{
Return ((val/10 * 16) + (10 % de val)) ;
}
Sub setDateDs1307)
octet seconde, / / 0-59
minute de l’octet, / / 0-59
heure de l’octet, / / 1-23
octet dayOfWeek, / / 1-7 1 = Mon, 7 = soleil
dayOfMonth octet, / / 1-28/29/30/31
mois de l’octet, / / 1-12
année de l’octet / / 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()
{
octet seconde, minute, heure, dayOfWeek, dayOfMonth, mois, année ;
Wire.Begin() ;
pinMode (13, sortie) ;
Modifiez ces valeurs de ce que vous voulez régler votre horloge à.
Il est préférable d’ajouter 30 secondes à une minute pour permettre à votre ordinateur compiler et télécharger l’heure actuelle.
Seulement exécuter ce script une seule fois, comme en l’exécutant à nouveau écrasera la durée réglée dans la puce de CCF !
Les heures sont au format 24 heures
Jour de semaine commence par lundi = 1 jusqu'à dimanche = 7
L’année est au format AA, donc n’utilisez que les 2 derniers chiffres de l’année
//
Une fois que vous avez exécuté le programme, le voyant sur la broche 13 clignote pour dire c’est fini, ne pas débrancher ou réinitialiser.
Il suffit de suivre le tutoriel et télécharger le code de l’écran LCD pour éviter de remplacer l’heure correcte avec cette fois encore.
//
deuxième = 0 ;
minute = 13 ;
heure = 15 ;
dayOfWeek = 1 ;
dayOfMonth = 11 ;
mois = 1 ;
an = 16 ;
setDateDs1307 (seconde, minute, heure, dayOfWeek, dayOfMonth, mois, année) ;
//*/
}
void loop()
{
digitalWrite (13, HIGH) ; allumer la LED (HIGH est le niveau de tension)
Delay(1000) ; Attendez une seconde
digitalWrite (13, faible) ; éteindre la LED en rendant la tension basse
Delay(1000) ;
}
Ensuite vous devez télécharger la durée souhaitée de se réveiller (réveil arduino) :
#include « Wire.h »
#include
#include
#define DS1307_I2C_ADDRESS 0x68
Innovente lcd (12, 11, 5, 4, 3, 2) ;
bcdToDec(byte val) octets
{
Return ((val/16 * 10) + (val % 16)) ;
}
Sub getDateDs1307 (octets * second, octet * minute, byte * heure, byte * dayOfWeek, octet * dayOfMonth, octet * mois, byte * année)
{
Wire.beginTransmission(DS1307_I2C_ADDRESS) ;
Wire.Write(0) ;
Wire.endTransmission() ;
Wire.requestFrom (DS1307_I2C_ADDRESS, 7) ;
* second = bcdToDec(Wire.read() & 0x7f) ;
* minute = bcdToDec(Wire.read()) ;
* heure = bcdToDec(Wire.read() & 0x3f) ;
* dayOfWeek = bcdToDec(Wire.read()) ;
* dayOfMonth = bcdToDec(Wire.read()) ;
* mois = bcdToDec(Wire.read()) ;
* année = bcdToDec(Wire.read()) ;
}
void setup()
{
octet seconde, minute, heure, dayOfWeek, dayOfMonth, mois, année ;
Wire.Begin() ;
MODIFIER SI VOTRE EN UTILISANT UN AUTRE LCD ÉCRAN / /
LCD.Begin (16, 2) ;
pinMode (7, sortie) ;
}
void loop()
{
octet seconde, minute, heure, dayOfWeek, dayOfMonth, mois, année ;
String s, m, d, mth, h ;
getDateDs1307 (seconde, minute, & heure, & dayOfWeek, & dayOfMonth, & mois & année) ;
Si (second < 10) {s = « 0 » + String(second);} else {s = String(second);}
Si (minute < 10) {m = « 0 » + String(minute);} else {m = String(minute);}
h = String(hour) ;
Si (dayOfMonth < 10) {d = « 0 » + String(dayOfMonth);} else {d = String(dayOfMonth);}
Si (mois < 10) {mth = « 0 » + String(month);} else {mth = String(month);}
char * jours [] = {"NA", "Mon", "Tue", "Mar", "Jeu", "Ven", "Sam", "Soleil"} ;
LCD.Clear() ;
SAUTEZ AU CENTRE SUR UN ÉCRAN DE 16 X 2 / /
lcd.setCursor(4,0) ;
CHANGER LA SUITE POUR DÉFINIR LA DATE DE VOTRE COMMANDE PRÉFÉRÉ / /
LCD.Print (h + ":" + m + ":" + s) ;
LIGNE SUIVANTE, 1 ESPACE EN PARTANT DE LA GAUCHE / /
lcd.setCursor(1,1) ;
LE 20 DE PRÉFIXE, COMME LA PUCE RTC UTILISE SEULEMENT 2 CHIFFRES POUR L’ANNÉE / /
LCD.Print(String(Days[DayOfWeek]) + "" + d + "/" + mois + "/ 20" + année) ;
Delay(1000) ; Attendre 1 seconde
Si (heure == 15 & & minute == 18) digitalWrite (7, HIGH) ;
Si (minutes! = 18) digitalWrite (7, faible) ;
}
La dernière étape consiste à télécharger le code pour le récepteur (pilow arduino) :
#define rfReceivePin A0 //RF pin récepteur = broche analogique 0
#define ledPin 13 //Onboard LED = broche numérique 13
unsigned int données = 0 ; variable utilisée pour les données du magasin a reçu
const unsigned int upperThreshold = 70 ; valeur de seuil supérieur
const unsigned int lowerThreshold = 50 ; valeur seuil inférieure
void setup() {}
pinMode (ledPin, sortie) ;
Serial.Begin(9600) ;
}
void loop() {}
Data=analogRead(rfReceivePin) ; écouter les données sur la broche analogique 0
if(Data>upperThreshold) {}
digitalWrite (ledPin, basse) ; Si la réception d’un signal faible, éteignez LED
Serial.println(Data) ;
}
Si (données
digitalWrite (ledPin, HIGH) ; Si la réception d’un signal haut, LED allumé
Serial.println(Data) ;
}
}