POV

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

  1. Koppla skölden på Arduinons ovansida.
  2. Koppla fem LEDs över kopplingsdäckets mittengap.
  3. Koppla en 220 ohms resistor till digitala pin 2. Koppla resistorn till det långa benet på den första LED:n.
  4. Koppla digitala pin 3 till 6 till en LED, genom att följa samma metod.
  5. Använd de svarta labbkabklarna och koppla det korta benet på varje LED till GND.
  6. Koppla Arduinokonstruktionen till datorn och ladda upp exemplet ’POV’.
  7. Koppla ifrån Arduinokonstruktionen och koppla ett 9V-batteri med till Arduinons strömkontakt.

Kod

Hitta koden i File>Examples>EducationShield>Block3-Magic>Projects>POV

Så fungerar det

  • EducationShield-biblioteket inkluderas.
  • VU-meterns variabler deklareras, ledPins[], pinCount och vuMeter.
  • 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 och delayTime ä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 om rowCount är lika med rowLength. 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 och rowLength 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 och rowCount lika med 0 vilket byteder att message[i][rowCount] inte är lika med 1 och LED:n på indexnummret i stängs av.
  • I den andra upprepningen är i lika med 1 och rowCount lika med 0 vilket betyder att message[i][rowCount] inte är lika med 1 och LED:n på indexnummer i 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 med rowLength. I så fall sätts rowCount till 0 igen.
  • Den här gången som for-loopen körs är i lika med 0 och rowCount lika med 1. Det betyder att message[i][rowCount] är lika med 1 och LED:n på indexnummer i 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!