Med hjälp av POV (Persistence of Vision), kan du ta ett cykelhjul och göra det till en skärm med bara några få LED:s. Kolla in den här videon för att få en bättre bild av det.
I det här projektet kommer du att skapa en egen skärm. Vifta den fram och tillbaka med långa rörelser eller håll den medan du springer för att visa upp en text eller bild. Effekten är mest synlig på mörka platser, så om du springer, se upp så du inte springer in i ett träd eller kompis.
Material
- 1 Arduino Uno
- 1 Education-sköld
- 5 LED:s
- 5 220 ohm resistorer
- 5 svarta labbkablar
- 5 färgade labbkablar
- 1 9V-batteri
- 1 strömkontakt
Instruktioner
Kod
Hitta koden i File>Examples>EducationShield>Block3-Magic>Projects>POV
Så fungerar det
- EducationShield-biblioteket inkluderas.
- VU-meterns variabler deklareras,
ledPins[]
,pinCount
ochvuMeter
. - De variabler som har med uppvisningen av meddelandet att göra deklareras.
rowCount
kommer att användas för att hålla koll på vilket radnummer som ska blinka,rowLength
är meddelandets längd i bredd ochdelayTime
är hur länge varje rad visas i millisekunder. - Meddelandets mönster definieras i en tvådimensionell array,
message[5][22]
. Meddelandet visas med 5 LED:s och är 22 rader långt. - Meddelandets mönster definieras på ett sätt som gör det enkelt att visualisera. För varje LED finns det 22 nollor och ettor. En
1
representerar en tänd LED och en nolla representerar en släckt LED. - I
setup()
konfigureras och initialiseras VU-metern. - I
loop()
kontrollerar en if-sats omrowCount
är lika medrowLength
. Om så är fallet betyder det att hela meddelandet har visats. rowCount
sätts då till lika med 0, för att börja om från början.- Om
rowCount
ochrowLength
inte är lika med varandra visas meddelandet med hjälp av en for-loop. - En for-loop upprepas lika många gånger som värdet på
pinCount
, alltså antalet LED:s som du använder. - I varje loop kontrollerar en if-sats om
message[i][rowCount]
är lika med 1. - I den första upprepningen är både
i
ochrowCount
lika med 0 vilket byteder attmessage[i][rowCount]
inte är lika med 1 och LED:n på indexnummreti
stängs av. - I den andra upprepningen är
i
lika med 1 ochrowCount
lika med 0 vilket betyder attmessage[i][rowCount]
inte är lika med 1 och LED:n på indexnummeri
stängs av. - När for-loopen avslutats ökas
rowCount
med 1. - Programmet pausas i samma antal millisekunder som värdet på
delayTime
. - Återigen kontrolleras om
rowCount
är lika medrowLength
. I så fall sättsrowCount
till 0 igen. - Den här gången som for-loopen körs är
i
lika med 0 ochrowCount
lika med 1. Det betyder attmessage[i][rowCount]
är lika med 1 och LED:n på indexnummeri
sätts därför på. - När for-loopen avslutats ökas
rowCount
återigen med 1. - Programmet pausas samma antal millisekunder som värdet på
delayTime
. loop()
fortsätter upprepas.
Problemlösning
- Hänvisa till illustrationen och dubbelkolla dina kopplingar. Var noga med att skölden och labbkablarna är ordentligt kopplade. Kolla LED:ernas polaritet för att vara säker att de är kopplade åt rätt håll.
- Var säker på att batteriet är ordentligt kopplat så att LED:n på Arduinon markerad ON LED lyser. Testa med Arduinon kopplad till datorn och 9V-batteriet urkopplat. Om det fungerar med USB-kabeln men inte med batteriet, kan det vara något som är fel med batteriet. Byt ut batteriet.
- Om VU-metern inte fungerar korrekt, se refferenssidan för VU-meter
Lär genom att göra
- Testa olika meddelanden, med olika längd.
- Ändra meddelandet till ett mönster eller en teckning.
- Ta ett foto av dig själv när du viftar med POV och kolla in effekten!