Stap 10: Programing
- AlgoritmeHoofdlus
- RTC-module tijd ophalen (in uur en minuten)
- Als verschillende Tijd weergeven tijde
- Herhaal
Tijd weergeven
- Tijd verdeeld in vier cijfers. (met behulp van / div 10)
- Voor elk beeldscherm zeven segment, verhuizen segmenten naar cijfer weergeven
Display Digit
- Plaatst de decoder logica. Vertalen int in zeven segment bestellen.
- Benodigde servo's uit X mate verplaatsen Zet overbodige servo's Y graden (waar X de uit positie en Y is de positie van het vliegtuig.
Monster
#include < Wire.h >
#include "RTClib.h"RTC_DS1307 RTC;
korte segA = 0; Display pin 14
korte segB = 1; Display pin 16
korte segC = 2; Display pin 13
korte segD = 3; Display pin 3
korte segE = 4; Display pin 5
korte segF = 5; Display pin 11
korte segG = 6; Display pin 15korte segA_OUT = 110;
korte segB_OUT = 110;
korte segC_OUT = 110;
korte segD_OUT = 110;
korte segE_OUT = 110;
korte segF_OUT = 110;
korte segG_OUT = 110;korte segA_IN = 90;
korte segB_IN = 90;
korte segC_IN = 90;
korte segD_IN = 90;
korte segE_IN = 90;
korte segF_IN = 90;
korte segG_IN = 90;int tijd = 2000;
DateTime datePast;
DateTime dateNow;huis houden
VOID Setup {}
Serial.begin(9600);
Wire.begin();
RTC.begin();
RTC.adjust (DateTime (__DATE__, __TIME__));
datePast = RTC.now();
}hoofdlus
void loop {}
dateNow = RTC.now();
Als (! () datePast.hour() == dateNow.hour() & & datePast.minute() == dateNow.hour()))
{
displayNumber(dateNow.hour()*100+dateNow.minute());
datePast = dateNow;
}
}Krijgen een nummer, tonen we 10:22
Na het doornemen van de 4 cijfers, het display wordt overgelaten uitgeschakeld
VOID displayNumber (int om) {}
voor (int cijfer = 4 cijfers > 0; cijfer--) {}
lightNumber (om 10%, cijfers);
Om / = 10;
}beginnen beweging
Serial.Print ("T"); Serial.println(time);
}VOID verplaatsen (int servo, int positie) {}
Serial.Print("#");
Serial.Print(Servo);
Serial.Print ("P");
Serial.Print(Position);
}Gezien een aantal, draait op die segmenten
Als getal == 10, schakel nummer
VOID lightNumber (int numberToDisplay, int segment) {}int offset = (segment - 1) * 7;
schakelaar (numberToDisplay) {}Case 0:
verplaatsen (segA + offset, segA_OUT);
verplaatsen (segB + offset, segB_OUT);
verplaatsen (segC + offset, segC_OUT);
verplaatsen (segD + offset, segD_OUT);
verplaatsen (segE + offset, segE_OUT);
verplaatsen (segF + offset, segF_OUT);
verplaatsen (segG + offset, segG_IN);
breken;Case 1:
verplaatsen (segA + offset, segA_IN);
verplaatsen (segB + offset, segB_OUT);
verplaatsen (segC + offset, segC_OUT);
verplaatsen (segD + offset, segD_IN);
verplaatsen (segE + offset, segE_IN);
verplaatsen (segF + offset, segF_IN);
verplaatsen (segG + offset, segG_IN);
breken;Case 2:
verplaatsen (segA + offset, segA_OUT);
verplaatsen (segB + offset, segB_OUT);
verplaatsen (segC + offset, segC_IN);
verplaatsen (segD + offset, segD_OUT);
verplaatsen (segE + offset, segE_OUT);
verplaatsen (segF + offset, segF_IN);
verplaatsen (segG + offset, segG_OUT);
breken;Case 3:
verplaatsen (segA + offset, segA_OUT);
verplaatsen (segB + offset, segB_OUT);
verplaatsen (segC + offset, segC_OUT);
verplaatsen (segD + offset, segD_OUT);
verplaatsen (segE + offset, segE_IN);
verplaatsen (segF + offset, segF_IN);
verplaatsen (segG + offset, segG_OUT);
breken;Case 4:
verplaatsen (segA + offset, segA_IN);
verplaatsen (segB + offset, segB_OUT);
verplaatsen (segC + offset, segC_OUT);
verplaatsen (segD + offset, segD_IN);
verplaatsen (segE + offset, segE_IN);
verplaatsen (segF + offset, segF_OUT);
verplaatsen (segG + offset, segG_OUT);
breken;Case 5:
verplaatsen (segA + offset, segA_OUT);
verplaatsen (segB + offset, segB_IN);
verplaatsen (segC + offset, segC_OUT);
verplaatsen (segD + offset, segD_OUT);
verplaatsen (segE + offset, segE_IN);
verplaatsen (segF + offset, segF_OUT);
verplaatsen (segG + offset, segG_OUT);
breken;
Case 6:
verplaatsen (segA + offset, segA_OUT);
verplaatsen (segB + offset, segB_IN);
verplaatsen (segC + offset, segC_OUT);
verplaatsen (segD + offset, segD_OUT);
verplaatsen (segE + offset, segE_OUT);
verplaatsen (segF + offset, segF_OUT);
verplaatsen (segG + offset, segG_OUT);
breken;
Case 7:
verplaatsen (segA + offset, segA_OUT);
verplaatsen (segB + offset, segB_OUT);
verplaatsen (segC + offset, segC_OUT);
verplaatsen (segD + offset, segD_IN);
verplaatsen (segE + offset, segE_IN);
verplaatsen (segF + offset, segF_IN);
verplaatsen (segG + offset, segG_IN);
breken;
zaak 8:
verplaatsen (segA + offset, segA_OUT);
verplaatsen (segB + offset, segB_OUT);
verplaatsen (segC + offset, segC_OUT);
verplaatsen (segD + offset, segD_OUT);
verplaatsen (segE + offset, segE_OUT);
verplaatsen (segF + offset, segF_OUT);
verplaatsen (segG + offset, segG_OUT);
breken;
Case 9:
verplaatsen (segA + offset, segA_OUT);
verplaatsen (segB + offset, segB_OUT);
verplaatsen (segC + offset, segC_OUT);
verplaatsen (segD + offset, segD_OUT);
verplaatsen (segE + offset, segE_IN);
verplaatsen (segF + offset, segF_OUT);
verplaatsen (segG + offset, segG_OUT);
breken;
zaak 10:
verplaatsen (segA + offset, segA_IN);
verplaatsen (segB + offset, segB_IN);
verplaatsen (segC + offset, segC_IN);
verplaatsen (segD + offset, segD_IN);
verplaatsen (segE + offset, segE_IN);
verplaatsen (segF + offset, segF_IN);
verplaatsen (segG + offset, segG_IN);
breken;
}
}
Andere
Je moet ook klok in te stellen u RTC de eerste keer. Hierdoor krijgt het een begintijd gelijk aan op uw computer. U moet de RTC-bibliotheek de volgende code uit te voeren.
#include
#include "RTClib.h"RTC_DS1307 RTC;
void setup () {}
Serial.begin(57600);Wire.begin();
RTC.begin();
if (!. RTC.isrunning()) {}
Serial.println ("RTC is NOT running!");
RTC.adjust (DateTime (__DATE__, __TIME__));
}
}