ATtiny85 POV Display (9 / 10 steg)
Steg 9: Förklaring av koden
int fördröjningstid = 1; Fördröjningstiden mellan sub tecken
int charBreak = 2.1. Fördröjningen mellan olika karaktärer
Ovanstående 2 fördröjningstiderna bör anpassas efter behov. Prova att ändra dem tills du får önskad skärmen du vill, öka fördröjningstid kommer att öka bredden på varje del av brevet ökar charBreak kommer att öka utrymmet mellan 2 bokstäver.
int LED1 = 0; Definiera vilka stift lysdioderna är kopplade till
int LED2 = 1;
int LED3 = 2;
int LED4 = 3;
int LED5 = 4;
void setup()
{
pinMode (LED1, OUTPUT); Att LED1 som utdata
pinMode (LED2, OUTPUT); Inställningen LED2 som utgång
pinMode (LED3, OUTPUT); Inställningen LED3 som utgång
pinMode (LED4, OUTPUT); Inställningen LED4 som utgång
pinMode (LED5, OUTPUT); Inställningen LED5 som utgång
}
int en [] = {1, 6, 26, 6, 1}; Detta är de heltal som hjälper oss Visa bokstaven A
int b [] = {31 21, 21, 10, 0};
int c2 [] = {14, 17, 17, 10, 0};
int d [] = {31 17, 17, 14, 0};
int e [] = {31 21, 21, 17, 0};
int f [] = {31, 20, 20, 16, 0};
int [g] = {14, 17, 19, 10, 0};
int [h] = {31, 4, 4, 4, 31};
int jag [] = {0, 17, 31, 17, 0};
int j [] = {0, 17, 30, 16, 0};
int k [] = {31, 4, 10, 17, 0};
int l [] = {31, 1, 1, 1, 0};
int [m] = {31, 12, 3, 12, 31};
int n [] = {31, 12, 3, 31, 0};
int o [] = {14, 17, 17, 14, 0};
int p [] = {31, 20, 20, 8, 0};
int q [] = {14, 17, 19, 14, 2};
int r [] = {31, 20, 22, 9, 0};
int s [] = {8, 21, 21, 2, 0};
int t [] = {16, 16, 31, 16, 16};
int u [] = {30, 1, 1, 30, 0};
int v [] = {24, 6, 1, 6, 24};
int [w] = {28, 3, 12, 3, 28};
int x[] = {17, 10, 4, 10, 17};
int y [] = {17, 10, 4, 8, 16};
int z [] = {19, 21, 21, 25, 0};
5 olika heltal motsvarar 5 tidsramarna som utgör varje bokstav.
(I 2: a steg detta instructable jag använde 3 tidsramar för att göra upp bokstaven E, här använder vi 5 tidsramar)
int eos [] = {0, 1, 0, 0, 0};
int exkl [] = {0, 29, 0, 0, 0};
int frå [] = {8, 19, 20, 8, 0};
void displayLine(int line)
{
int Linnea;
Linnea = linje;
om (Linnea > = 16) {digitalWrite (LED1, hög), Linnea-= 16;} annat {digitalWrite (LED1, låg);}
om (Linnea > = 8) {digitalWrite (LED2, hög), Linnea-= 8.} annat {digitalWrite (LED2, låg);}
om (Linnea > = 4) {digitalWrite (LED3, hög), Linnea-= 4.} annat {digitalWrite (LED3, låg);}
om (Linnea > = 2) {digitalWrite (LED4, hög), Linnea-= 2;} annat {digitalWrite (LED4, låg);}
om (Linnea > = 1) {digitalWrite (LED5, hög), Linnea-= 1;} annat {digitalWrite (LED5, låg);}
}
Detta är den viktigaste delen av koden som förklarar vad alla nummer vi nämnt ovan menar,
Till exempel låt x vara ett heltal. Om x är större än eller lika med 16, sedan LED1 slås på, och vi subtrahera 16 x, nu visar om (x-16) är större än eller lika med 8, LED2 vänder på och tillsammans med LED1 och vi subtrahera 8, nu om (x-24) är större än eller lika med 4, LED3 LED1 och LED2 och så vidare...
Om det är mindre än det angivna antalet i varje instans, sedan att lampan inte lyser och vi går vidare till nästa steg utan att subtrahera något nummer.
Ex: Låter ta 18, nu är större än 16, därför LED1 är på, nu på subtrahera 16 har vi 2, 2 är mindre än 8 så LED2 är avstängd, nu 2 är mindre än 4 så LED3 är avstängd, nu 2 är större än eller lika med 2, LED4 är därför på, och subtrahera 2 har vi 0 som är mindre än 1 , därför LED5 är avstängd.
På så sätt kan vi tilldela olika heltal att slå på och av olika lysdioder som vi kräver.
Kan till exempel ta bokstaven H, heltalen är 31,4,4,4,31;
Så första 31, det visar på alla lysdioder 1 till 5, nästa 4 vänder på bara LED3, sedan 4 vänder igen på LED3 och 4 vänder igen på LED3 då 31 vänder på alla lysdioder 1 till 5. På detta sätt när vi sätter dessa bredvid varandra som visas i steg 2 i detta instructable, ser vi på bokstaven H.
void displayChar(char c)
{
om (c == "a") {för (int jag = 0; jag < 5; i++){displayLine(a[i]);delay(delayTime);} displayLine(0);}
om (c == 'b') {för (int jag = 0; jag < 5; i++){displayLine(b[i]);delay(delayTime);} displayLine(0);}
om (c == "c2") {för (int jag = 0; jag < 5; i++){displayLine(c2[i]);delay(delayTime);} displayLine(0);}
om (c == hade ") {för (int jag = 0; jag < 5; i++){displayLine(d[i]);delay(delayTime);} displayLine(0);}
om (c == "e") {för (int jag = 0; jag < 5; i++){displayLine(e[i]);delay(delayTime);} displayLine(0);}
om (c == "f") {för (int jag = 0; jag < 5; i++){displayLine(f[i]);delay(delayTime);} displayLine(0);}
om (c == "g") {för (int jag = 0; jag < 5; i++){displayLine(g[i]);delay(delayTime);} displayLine(0);}
om (c == "h") {för (int jag = 0; jag < 5; i++){displayLine(h[i]);delay(delayTime);} displayLine(0);}
om (c == "i") {för (int det = 0; det < 5; it++){displayLine(i[it]);delay(delayTime);} displayLine(0);}
om (c == "j") {för (int jag = 0; jag < 5; i++){displayLine(j[i]);delay(delayTime);} displayLine(0);}
om (c == "k") {för (int jag = 0; jag < 5; i++){displayLine(k[i]);delay(delayTime);} displayLine(0);}
om (c == "l") {för (int jag = 0; jag < 5; i++){displayLine(l[i]);delay(delayTime);} displayLine(0);}
om (c == är ") {för (int jag = 0; jag < 5; i++){displayLine(m[i]);delay(delayTime);} displayLine(0);}
om (c == 'n') {för (int jag = 0; jag < 5; i++){displayLine(n[i]);delay(delayTime);} displayLine(0);}
om (c == "o") {för (int jag = 0; jag < 5; i++){displayLine(o[i]);delay(delayTime);} displayLine(0);}
om (c == "p") {för (int jag = 0; jag < 5; i++){displayLine(p[i]);delay(delayTime);} displayLine(0);}
om (c == "q") {för (int jag = 0; jag < 5; i++){displayLine(q[i]);delay(delayTime);} displayLine(0);}
om (c == "r") {för (int jag = 0; jag < 5; i++){displayLine(r[i]);delay(delayTime);} displayLine(0);}
om (c == 's ") {för (int jag = 0; jag < 5; i++){displayLine(s[i]);delay(delayTime);} displayLine(0);}
om (c == 't') {för (int jag = 0; jag < 5; i++){displayLine(t[i]);delay(delayTime);} displayLine(0);}
om (c == 'u') {för (int jag = 0; jag < 5; i++){displayLine(u[i]);delay(delayTime);} displayLine(0);}
om (c == "v") {för (int jag = 0; jag < 5; i++){displayLine(v[i]);delay(delayTime);} displayLine(0);}
om (c == "w") {för (int jag = 0; jag < 5; i++){displayLine(w[i]);delay(delayTime);} displayLine(0);}
om (c == "x") {för (int jag = 0; jag < 5; i++){displayLine(x[i]);delay(delayTime);} displayLine(0);}
om (c == "y") {för (int jag = 0; jag < 5; i++){displayLine(y[i]);delay(delayTime);} displayLine(0);}
om (c == "z") {för (int jag = 0; jag < 5; i++){displayLine(z[i]);delay(delayTime);} displayLine(0);}
om (c == '!') {för (int jag = 0; jag < 5; i++){displayLine(excl[i]);delay(delayTime);} displayLine(0);}
om (c == "?") {för (int jag = 0; jag < 5; i++){displayLine(ques[i]);delay(delayTime);} displayLine(0);}
om (c == ".") {för (int jag = 0; jag < 5; i++){displayLine(eos[i]);delay(delayTime);} displayLine(0);}
Delay(charBreak);
}
Denna del av koden berättar arduino att flytta genom en tid efter den andra med fördröjningen av fördröjningstid samt det cyklar från jag = 0 (tidsram 1) att jag = 4 (tidsram 5) visar varje heltal när den rör sig.
void visningssträngen (char * s)
{
för (int jag = 0; jag < = strlen(s); i ++)
{
displayChar(s[i]);
}
}
Detta säger arduino att visa alla de tecken som vi vill ha en efter en start från jag = 0 tills jag = stränglängd (antal tecken).
void loop()
{
visningssträngen ("hello world");
}
"Hej världen" är vad som visas, kan du ändra det till vad du vill. Se bara till att det inte finns alltför många tecken som POV inte är kunna visa med ett visst varvtal. Om du ökar varvtal och minska förseningen timings kan du Visa fler antal tecken. Med min motor och med fördröjning timings jag använde, kunde jag Visa 12 tecken totalt inklusive mellanslag, så Hej världen var perfekt.