Lite Brite LED klocka (12 / 13 steg)
Steg 12: Koden
Tid att programmera Arduino. Känn dig fri att använda koden nedan. Måste du först ladda ner tid biblioteket från http://arduino.cc/playground/Code/Time . En gång dataöverföring, kommer att du sätta tid biblioteket i mappen Bibliotek i din Arduino katalog. Du kommer att behöva gå till skiss---Import Library---tid att inkludera tid biblioteket i din skiss.Här är hur det fungerar:
1. individuella LED är aktiverade genom att sätta raden av LED till kolumnen led till hög och låg. Tricket är att endast en LED kan kontrolleras på en gång. Om du tittar på koden, kommer du se att så fort en LED är aktiverat, den är avstängd direkt. Detta fungerar på grund av våra persistens av vision och eftersom lysdioder kopplas av och på med en mycket hög hastighet. Hela displayen får ritas om på beslut av 500 gånger per sekund.
2. du kommer att märka att jag har colon prickar ansluten till två av produktionen stift. Varför skulle jag göra det när de är alltid på? Bra fråga! Det är för att om vi inte stänger kolon prickar av och på vid samma takt som resten av lysdioder, kolon prickar skulle vara cirka tio gånger ljusare som sina grannar. Jag försökte använda konstant effekt till prickar, och det såg fruktansvärt.
3. jag skrev en funktion som drar varje siffra i första 7 segment position. Jag gjorde också funktionen så att det skulle acceptera en offset parameter. Att skriva siffran i den första ståndpunkten, förskjutningen är -1. Tredje positionen är + 3 och den sista positionen är + 6. Min kod är nog ganska ineffektivt, men denna del fungerar bra.
4. timmen är lätt att tolka från funktionen timeFormat12() för Time.h biblioteket. Den enda svåra biten är att få de två delarna av protokollet. Den första siffran i protokollet kan erhållas från enkla heltalsdivision av 10. Detta kommer att trunkera den andra siffran och bara returnera tio minuters delen. Till exempel 59/10 = 5 i heltalsdivision. För den andra siffran i protokollet använder du funktionen mod för att återvända den återstod efter divideras med 10. Således, 59% 10 = 9.
5. jag inser klocka koden kan ha skrivits mycket mer effektivt, och om någon bryr sig om att förbättra den, jag skulle älska att se det gjort bra. Jag gjorde det bästa jag kunde för en kille som inte är ingenjör eller programmerare. Allt jag kan verkligen säga om min kod är att det verkar fungera.
#include < Time.h >
int kolumnen [] = {0,1,2,3,4,5,6,7,8,9,10,11}.
int rad [] = {14,15,16,17,18}.
void setup()
{
setTime(9,27,0,27,7,2012);
för (int jag = 0; jag < 13; i ++) {
pinMode(column[i],OUTPUT);
digitalWrite(column[i],LOW);
}
för (int j = 0; j < 5; j ++) {
pinMode(row[j],OUTPUT);
digitalWrite(row[j],HIGH);
}
}
Ogiltig loop () {
digitalWrite(column[11],HIGH);
digitalWrite(column[12],HIGH);
digitalWrite(column[11],LOW);
digitalWrite(column[12],LOW);
Switch (hourFormat12()) {
fall 1:
One(0);
bryta;
fall 2:
Two(0);
bryta;
fall 3:
Three(0);
bryta;
fall 4:
Four(0);
bryta;
fall 5:
Five(0);
bryta;
fall 6:
Six(0);
bryta;
fall 7:
Seven(0);
bryta;
mål 8:
Eight(0);
bryta;
mål 9:
Nine(0);
bryta;
mål 10:
One(-3);
Zero(0);
bryta;
mål 11:
One(-3);
One(0);
bryta;
ärende 12:
One(-3);
Two(0);
bryta;
}
Switch ((minute()/10)) {
fall 0:
Zero(3);
bryta;
fall 1:
One(3);
bryta;
fall 2:
Two(3);
bryta;
fall 3:
tre (3);
bryta;
fall 4:
Four(3);
bryta;
fall 5:
Five(3);
bryta;
}
Switch (minute()%10) {
fall 0:
Zero(6);
bryta;
fall 1:
One(6);
bryta;
fall 2:
Two(6);
bryta;
fall 3:
Three(6);
bryta;
fall 4:
Four(6);
bryta;
fall 5:
Five(6);
bryta;
fall 6:
sex (6);
bryta;
fall 7:
Seven(6);
bryta;
mål 8:
Eight(6);
bryta;
mål 9:
Nine(6);
bryta;
om inget annat matchar, göra standard
standard är valfritt
}
}
void allOn() {
för (int x = 0; x < 5; x ++) {
för (int y = 0; y < 13; y ++) {
digitalWrite(row[x],LOW);
digitalWrite(column[y],HIGH);
}
}
}
void allOff() {
för (int x = 0; x < 5; x ++) {
för (int y = 0; y < 13; y ++) {
digitalWrite(row[x],HIGH);
digitalWrite(column[y],LOW);
}
}
}
void zero(int x) {
digitalWrite(column[1+x],HIGH);
digitalWrite(row[0],LOW);
digitalWrite(column[1+x],LOW);
digitalWrite(row[0],HIGH);
digitalWrite(column[2+x],HIGH);
digitalWrite(row[0],LOW);
digitalWrite(column[2+x],LOW);
digitalWrite(row[0],HIGH);
digitalWrite(column[3+x],HIGH);
digitalWrite(row[0],LOW);
digitalWrite(column[3+x],LOW);
digitalWrite(row[0],HIGH);
digitalWrite(column[3+x],HIGH);
digitalWrite(row[1],LOW);
digitalWrite(column[3+x],LOW);
digitalWrite(row[1],HIGH);
digitalWrite(column[3+x],HIGH);
digitalWrite(row[2],LOW);
digitalWrite(column[3+x],LOW);
digitalWrite(row[2],HIGH);
digitalWrite(column[3+x],HIGH);
digitalWrite(row[3],LOW);
digitalWrite(column[3+x],LOW);
digitalWrite(row[3],HIGH);
digitalWrite(column[3+x],HIGH);
digitalWrite(row[4],LOW);
digitalWrite(column[3+x],LOW);
digitalWrite(row[4],HIGH);
digitalWrite(column[2+x],HIGH);
digitalWrite(row[4],LOW);
digitalWrite(column[2+x],LOW);
digitalWrite(row[4],HIGH);
digitalWrite(column[1+x],HIGH);
digitalWrite(row[4],LOW);
digitalWrite(column[1+x],LOW);
digitalWrite(row[4],HIGH);
digitalWrite(column[1+x],HIGH);
digitalWrite(row[3],LOW);
digitalWrite(column[1+x],LOW);
digitalWrite(row[3],HIGH);
digitalWrite(column[1+x],HIGH);
digitalWrite(row[2],LOW);
digitalWrite(column[1+x],LOW);
digitalWrite(row[2],HIGH);
digitalWrite(column[1+x],HIGH);
digitalWrite(row[1],LOW);
digitalWrite(column[1+x],LOW);
digitalWrite(row[1],HIGH);
}
void one(int x) {
digitalWrite(column[3+x],HIGH);
digitalWrite(row[0],LOW);
digitalWrite(column[3+x],LOW);
digitalWrite(row[0],HIGH);
digitalWrite(column[3+x],HIGH);
digitalWrite(row[1],LOW);
digitalWrite(column[3+x],LOW);
digitalWrite(row[1],HIGH);
digitalWrite(column[3+x],HIGH);
digitalWrite(row[2],LOW);
digitalWrite(column[3+x],LOW);
digitalWrite(row[2],HIGH);
digitalWrite(column[3+x],HIGH);
digitalWrite(row[3],LOW);
digitalWrite(column[3+x],LOW);
digitalWrite(row[3],HIGH);
digitalWrite(column[3+x],HIGH);
digitalWrite(row[4],LOW);
digitalWrite(column[3+x],LOW);
digitalWrite(row[4],HIGH);
}
void two(int x) {
digitalWrite(column[1+x],HIGH);
digitalWrite(row[4],LOW);
digitalWrite(column[1+x],LOW);
digitalWrite(row[4],HIGH);
digitalWrite(column[2+x],HIGH);
digitalWrite(row[4],LOW);
digitalWrite(column[2+x],LOW);
digitalWrite(row[4],HIGH);
digitalWrite(column[3+x],HIGH);
digitalWrite(row[4],LOW);
digitalWrite(column[3+x],LOW);
digitalWrite(row[4],HIGH);
digitalWrite(column[3+x],HIGH);
digitalWrite(row[3],LOW);
digitalWrite(column[3+x],LOW);
digitalWrite(row[3],HIGH);
digitalWrite(column[3+x],HIGH);
digitalWrite(row[2],LOW);
digitalWrite(column[3+x],LOW);
digitalWrite(row[2],HIGH);
digitalWrite(column[2+x],HIGH);
digitalWrite(row[2],LOW);
digitalWrite(column[2+x],LOW);
digitalWrite(row[2],HIGH);
digitalWrite(column[1+x],HIGH);
digitalWrite(row[2],LOW);
digitalWrite(column[1+x],LOW);
digitalWrite(row[2],HIGH);
digitalWrite(column[1+x],HIGH);
digitalWrite(row[1],LOW);
digitalWrite(column[1+x],LOW);
digitalWrite(row[1],HIGH);
digitalWrite(column[1+x],HIGH);
digitalWrite(row[0],LOW);
digitalWrite(column[1+x],LOW);
digitalWrite(row[0],HIGH);
digitalWrite(column[2+x],HIGH);
digitalWrite(row[0],LOW);
digitalWrite(column[2+x],LOW);
digitalWrite(row[0],HIGH);
digitalWrite(column[3+x],HIGH);
digitalWrite(row[0],LOW);
digitalWrite(column[3+x],LOW);
digitalWrite(row[0],HIGH);
}
void three(int x) {
digitalWrite(column[1+x],HIGH);
digitalWrite(row[4],LOW);
digitalWrite(column[1+x],LOW);
digitalWrite(row[4],HIGH);
digitalWrite(column[2+x],HIGH);
digitalWrite(row[4],LOW);
digitalWrite(column[2+x],LOW);
digitalWrite(row[4],HIGH);
digitalWrite(column[3+x],HIGH);
digitalWrite(row[4],LOW);
digitalWrite(column[3+x],LOW);
digitalWrite(row[4],HIGH);
digitalWrite(column[3+x],HIGH);
digitalWrite(row[3],LOW);
digitalWrite(column[3+x],LOW);
digitalWrite(row[3],HIGH);
digitalWrite(column[3+x],HIGH);
digitalWrite(row[2],LOW);
digitalWrite(column[3+x],LOW);
digitalWrite(row[2],HIGH);
digitalWrite(column[2+x],HIGH);
digitalWrite(row[2],LOW);
digitalWrite(column[2+x],LOW);
digitalWrite(row[2],HIGH);
digitalWrite(column[1+x],HIGH);
digitalWrite(row[2],LOW);
digitalWrite(column[1+x],LOW);
digitalWrite(row[2],HIGH);
digitalWrite(column[3+x],HIGH);
digitalWrite(row[1],LOW);
digitalWrite(column[3+x],LOW);
digitalWrite(row[1],HIGH);
digitalWrite(column[1+x],HIGH);
digitalWrite(row[0],LOW);
digitalWrite(column[1+x],LOW);
digitalWrite(row[0],HIGH);
digitalWrite(column[2+x],HIGH);
digitalWrite(row[0],LOW);
digitalWrite(column[2+x],LOW);
digitalWrite(row[0],HIGH);
digitalWrite(column[3+x],HIGH);
digitalWrite(row[0],LOW);
digitalWrite(column[3+x],LOW);
digitalWrite(row[0],HIGH);
}
void four(int x) {
digitalWrite(column[3+x],HIGH);
digitalWrite(row[0],LOW);
digitalWrite(column[3+x],LOW);
digitalWrite(row[0],HIGH);
digitalWrite(column[3+x],HIGH);
digitalWrite(row[1],LOW);
digitalWrite(column[3+x],LOW);
digitalWrite(row[1],HIGH);
digitalWrite(column[3+x],HIGH);
digitalWrite(row[2],LOW);
digitalWrite(column[3+x],LOW);
digitalWrite(row[2],HIGH);
digitalWrite(column[1+x],HIGH);
digitalWrite(row[3],LOW);
digitalWrite(column[1+x],LOW);
digitalWrite(row[3],HIGH);
digitalWrite(column[1+x],HIGH);
digitalWrite(row[4],LOW);
digitalWrite(column[1+x],LOW);
digitalWrite(row[4],HIGH);
digitalWrite(column[1+x],HIGH);
digitalWrite(row[2],LOW);
digitalWrite(column[1+x],LOW);
digitalWrite(row[2],HIGH);
digitalWrite(column[2+x],HIGH);
digitalWrite(row[2],LOW);
digitalWrite(column[2+x],LOW);
digitalWrite(row[2],HIGH);
digitalWrite(column[3+x],HIGH);
digitalWrite(row[3],LOW);
digitalWrite(column[3+x],LOW);
digitalWrite(row[3],HIGH);
digitalWrite(column[3+x],HIGH);
digitalWrite(row[4],LOW);
digitalWrite(column[3+x],LOW);
digitalWrite(row[4],HIGH);
}
void five(int x) {
digitalWrite(column[1+x],HIGH);
digitalWrite(row[4],LOW);
digitalWrite(column[1+x],LOW);
digitalWrite(row[4],HIGH);
digitalWrite(column[2+x],HIGH);
digitalWrite(row[4],LOW);
digitalWrite(column[2+x],LOW);
digitalWrite(row[4],HIGH);
digitalWrite(column[3+x],HIGH);
digitalWrite(row[4],LOW);
digitalWrite(column[3+x],LOW);
digitalWrite(row[4],HIGH);
digitalWrite(column[1+x],HIGH);
digitalWrite(row[3],LOW);
digitalWrite(column[1+x],LOW);
digitalWrite(row[3],HIGH);
digitalWrite(column[3+x],HIGH);
digitalWrite(row[2],LOW);
digitalWrite(column[3+x],LOW);
digitalWrite(row[2],HIGH);
digitalWrite(column[2+x],HIGH);
digitalWrite(row[2],LOW);
digitalWrite(column[2+x],LOW);
digitalWrite(row[2],HIGH);
digitalWrite(column[1+x],HIGH);
digitalWrite(row[2],LOW);
digitalWrite(column[1+x],LOW);
digitalWrite(row[2],HIGH);
digitalWrite(column[3+x],HIGH);
digitalWrite(row[1],LOW);
digitalWrite(column[3+x],LOW);
digitalWrite(row[1],HIGH);
digitalWrite(column[1+x],HIGH);
digitalWrite(row[0],LOW);
digitalWrite(column[1+x],LOW);
digitalWrite(row[0],HIGH);
digitalWrite(column[2+x],HIGH);
digitalWrite(row[0],LOW);
digitalWrite(column[2+x],LOW);
digitalWrite(row[0],HIGH);
digitalWrite(column[3+x],HIGH);
digitalWrite(row[0],LOW);
digitalWrite(column[3+x],LOW);
digitalWrite(row[0],HIGH);
}
void six(int x) {
digitalWrite(column[1+x],HIGH);
digitalWrite(row[4],LOW);
digitalWrite(column[1+x],LOW);
digitalWrite(row[4],HIGH);
digitalWrite(column[2+x],HIGH);
digitalWrite(row[4],LOW);
digitalWrite(column[2+x],LOW);
digitalWrite(row[4],HIGH);
digitalWrite(column[3+x],HIGH);
digitalWrite(row[4],LOW);
digitalWrite(column[3+x],LOW);
digitalWrite(row[4],HIGH);
digitalWrite(column[1+x],HIGH);
digitalWrite(row[3],LOW);
digitalWrite(column[1+x],LOW);
digitalWrite(row[3],HIGH);
digitalWrite(column[3+x],HIGH);
digitalWrite(row[2],LOW);
digitalWrite(column[3+x],LOW);
digitalWrite(row[2],HIGH);
digitalWrite(column[2+x],HIGH);
digitalWrite(row[2],LOW);
digitalWrite(column[2+x],LOW);
digitalWrite(row[2],HIGH);
digitalWrite(column[1+x],HIGH);
digitalWrite(row[2],LOW);
digitalWrite(column[1+x],LOW);
digitalWrite(row[2],HIGH);
digitalWrite(column[3+x],HIGH);
digitalWrite(row[1],LOW);
digitalWrite(column[3+x],LOW);
digitalWrite(row[1],HIGH);
digitalWrite(column[1+x],HIGH);
digitalWrite(row[0],LOW);
digitalWrite(column[1+x],LOW);
digitalWrite(row[0],HIGH);
digitalWrite(column[2+x],HIGH);
digitalWrite(row[0],LOW);
digitalWrite(column[2+x],LOW);
digitalWrite(row[0],HIGH);
digitalWrite(column[3+x],HIGH);
digitalWrite(row[0],LOW);
digitalWrite(column[3+x],LOW);
digitalWrite(row[0],HIGH);
digitalWrite(column[1+x],HIGH);
digitalWrite(row[1],LOW);
digitalWrite(column[1+x],LOW);
digitalWrite(row[1],HIGH);
}
void seven(int x) {
digitalWrite(column[3+x],HIGH);
digitalWrite(row[0],LOW);
digitalWrite(column[3+x],LOW);
digitalWrite(row[0],HIGH);
digitalWrite(column[3+x],HIGH);
digitalWrite(row[1],LOW);
digitalWrite(column[3+x],LOW);
digitalWrite(row[1],HIGH);
digitalWrite(column[3+x],HIGH);
digitalWrite(row[2],LOW);
digitalWrite(column[3+x],LOW);
digitalWrite(row[2],HIGH);
digitalWrite(column[3+x],HIGH);
digitalWrite(row[3],LOW);
digitalWrite(column[3+x],LOW);
digitalWrite(row[3],HIGH);
digitalWrite(column[3+x],HIGH);
digitalWrite(row[4],LOW);
digitalWrite(column[3+x],LOW);
digitalWrite(row[4],HIGH);
digitalWrite(column[2+x],HIGH);
digitalWrite(row[4],LOW);
digitalWrite(column[2+x],LOW);
digitalWrite(row[4],HIGH);
digitalWrite(column[1+x],HIGH);
digitalWrite(row[4],LOW);
digitalWrite(column[1+x],LOW);
digitalWrite(row[4],HIGH);
}
void eight(int x) {
digitalWrite(column[1+x],HIGH);
digitalWrite(row[0],LOW);
digitalWrite(column[1+x],LOW);
digitalWrite(row[0],HIGH);
digitalWrite(column[2+x],HIGH);
digitalWrite(row[0],LOW);
digitalWrite(column[2+x],LOW);
digitalWrite(row[0],HIGH);
digitalWrite(column[3+x],HIGH);
digitalWrite(row[0],LOW);
digitalWrite(column[3+x],LOW);
digitalWrite(row[0],HIGH);
digitalWrite(column[3+x],HIGH);
digitalWrite(row[1],LOW);
digitalWrite(column[3+x],LOW);
digitalWrite(row[1],HIGH);
digitalWrite(column[3+x],HIGH);
digitalWrite(row[2],LOW);
digitalWrite(column[3+x],LOW);
digitalWrite(row[2],HIGH);
digitalWrite(column[3+x],HIGH);
digitalWrite(row[3],LOW);
digitalWrite(column[3+x],LOW);
digitalWrite(row[3],HIGH);
digitalWrite(column[3+x],HIGH);
digitalWrite(row[4],LOW);
digitalWrite(column[3+x],LOW);
digitalWrite(row[4],HIGH);
digitalWrite(column[2+x],HIGH);
digitalWrite(row[4],LOW);
digitalWrite(column[2+x],LOW);
digitalWrite(row[4],HIGH);
digitalWrite(column[1+x],HIGH);
digitalWrite(row[4],LOW);
digitalWrite(column[1+x],LOW);
digitalWrite(row[4],HIGH);
digitalWrite(column[1+x],HIGH);
digitalWrite(row[3],LOW);
digitalWrite(column[1+x],LOW);
digitalWrite(row[3],HIGH);
digitalWrite(column[1+x],HIGH);
digitalWrite(row[2],LOW);
digitalWrite(column[1+x],LOW);
digitalWrite(row[2],HIGH);
digitalWrite(column[1+x],HIGH);
digitalWrite(row[1],LOW);
digitalWrite(column[1+x],LOW);
digitalWrite(row[1],HIGH);
digitalWrite(column[2+x],HIGH);
digitalWrite(row[2],LOW);
digitalWrite(column[2+x],LOW);
digitalWrite(row[2],HIGH);
}
void nine(int x) {
digitalWrite(column[3+x],HIGH);
digitalWrite(row[0],LOW);
digitalWrite(column[3+x],LOW);
digitalWrite(row[0],HIGH);
digitalWrite(column[3+x],HIGH);
digitalWrite(row[1],LOW);
digitalWrite(column[3+x],LOW);
digitalWrite(row[1],HIGH);
digitalWrite(column[3+x],HIGH);
digitalWrite(row[2],LOW);
digitalWrite(column[3+x],LOW);
digitalWrite(row[2],HIGH);
digitalWrite(column[1+x],HIGH);
digitalWrite(row[3],LOW);
digitalWrite(column[1+x],LOW);
digitalWrite(row[3],HIGH);
digitalWrite(column[1+x],HIGH);
digitalWrite(row[4],LOW);
digitalWrite(column[1+x],LOW);
digitalWrite(row[4],HIGH);
digitalWrite(column[1+x],HIGH);
digitalWrite(row[2],LOW);
digitalWrite(column[1+x],LOW);
digitalWrite(row[2],HIGH);
digitalWrite(column[2+x],HIGH);
digitalWrite(row[2],LOW);
digitalWrite(column[2+x],LOW);
digitalWrite(row[2],HIGH);
digitalWrite(column[3+x],HIGH);
digitalWrite(row[3],LOW);
digitalWrite(column[3+x],LOW);
digitalWrite(row[3],HIGH);
digitalWrite(column[2+x],HIGH);
digitalWrite(row[4],LOW);
digitalWrite(column[2+x],LOW);
digitalWrite(row[4],HIGH);
digitalWrite(column[3+x],HIGH);
digitalWrite(row[4],LOW);
digitalWrite(column[3+x],LOW);
digitalWrite(row[4],HIGH);
}