12 tim binär klocka, timmar och minuter bara, DS1307 RTC, i2C, Arduino-Nano (7 / 7 steg)
Steg 7: Hela programmet.
#include < Wire.h >
#include < Time.h >
#include < DS1307RTC.h >
CONST int setH = 14. knapp timme ökning
CONST int setM = 15. knapp för minut ökning
CONST int UnitMin01 = 12;
CONST int UnitMin02 = 9;
CONST int UnitMin04 = 8;
CONST int UnitMin08 = 7.
CONST int UnitTen01 = 2;
CONST int UnitTen02 = 11;
CONST int UnitTen04 = 10;
CONST int UnitHrs01 = 3;
CONST int UnitHrs02 = 4;
CONST int UnitHrs04 = 5;
CONST int UnitHrs08 = 6;
void setup()
{
Delay(200);
pinMode (setH, ingång);
pinMode (setM, ingång);
pinMode (UnitMin01, OUTPUT);
pinMode (UnitMin02, OUTPUT);
pinMode (UnitMin04, OUTPUT);
pinMode (UnitMin08, OUTPUT);
pinMode (UnitTen01, OUTPUT);
pinMode (UnitTen02, OUTPUT);
pinMode (UnitTen04, OUTPUT);
pinMode (UnitHrs01, OUTPUT);
pinMode (UnitHrs02, OUTPUT);
pinMode (UnitHrs04, OUTPUT);
pinMode (UnitHrs08, OUTPUT);
}
void loop()
{
tmElements_t tm;
om (RTC.read(tm))
{
om (digitalRead(setM) == hög)
{
osignerade långa j = RTC.get();
j = j + 60.
RTC.set(j);
}
om (digitalRead(setH) == hög)
{
osignerade långa j = RTC.get();
j = j + 3600;
RTC.set(j);
}
binaryOutputHours (tm. Timme).
binaryOutputMinutes (tm. Minut).
}
Delay(1000);
}
void binaryOutputHours(int number)
{
om (antal == 0)
{
antal = 12.
}
om (nummer > = 13)
{
antal = antal - 12.
}
setBinaryHours(number);
}
void binaryOutputMinutes(int number)
{
om (nummer > = 10)
{
int tior = antal/10;
int enheter = nummer - (TEN * 10);
setBinaryMins(units);
setBinaryTens(tens);
}
annat
{
int tior = 0;
int enheter = nummer;
setBinaryMins(units);
setBinaryTens(tens);
}
}
void setBinaryMins(int units)
{
om (enheter > = 8)
{
digitalWrite (UnitMin08, hög);
units = enheter - 8.
}
annat
{
digitalWrite (UnitMin08, låg);
}
om (enheter > = 4)
{
digitalWrite (UnitMin04, hög);
units = enheter - 4.
}
annat
{
digitalWrite (UnitMin04, låg);
}
om (enheter > = 2)
{
digitalWrite (UnitMin02, hög);
units = enheter - 2.
}
annat
{
digitalWrite (UnitMin02, låg);
}
om (enheter > = 1)
{
digitalWrite (UnitMin01, hög);
units = enheter - 1.
}
annat
{
digitalWrite (UnitMin01, låg);
}
}
void setBinaryTens(int tens)
{
om (TEN > = 4)
{
digitalWrite (UnitTen04, hög);
tens = tens - 4.
}
annat
{
digitalWrite (UnitTen04, låg);
}
om (TEN > = 2)
{
digitalWrite (UnitTen02, hög);
tens = tens - 2.
}
annat
{
digitalWrite (UnitTen02, låg);
}
om (TEN > = 1)
{
digitalWrite (UnitTen01, hög);
tens = tens - 1.
}
annat
{
digitalWrite (UnitTen01, låg);
}
}
void setBinaryHours(int hours)
{
om (timmar > = 8)
{
digitalWrite (UnitHrs08, hög);
timmar = timmar - 8.
}
annat
{
digitalWrite (UnitHrs08, låg);
}
om (timmar > = 4)
{
digitalWrite (UnitHrs04, hög);
timmar = timmar - 4.
}
annat
{
digitalWrite (UnitHrs04, låg);
}
om (timmar > = 2)
{
digitalWrite (UnitHrs02, hög);
timmar = timmar - 2.
}
annat
{
digitalWrite (UnitHrs02, låg);
}
om (timmar > = 1)
{
digitalWrite (UnitHrs01, hög);
timmar = timmar - 1.
}
annat
{
digitalWrite (UnitHrs01, låg);
}
}