Indholdsfortegnelse:

Digilog_Bike POV Display: 14 trin
Digilog_Bike POV Display: 14 trin

Video: Digilog_Bike POV Display: 14 trin

Video: Digilog_Bike POV Display: 14 trin
Video: Persistence of Vision Display using Microchip PIC 18F2550 Not Arduino 2024, November
Anonim
Image
Image

Digilog

Digital + analog

Digital møder analog

POV

Visuel vedholdenhed

Også kendt som efterbilledvisning, hvis den rystes ved høj hastighed, forbliver efterbilledet.

Folk tror, de ser video, når de ser tv. Men faktisk ser han på flere billeder i træk. Dette forveksles med et billede på grund af effekten af efterbilleder, der forbliver på vores nethinder, når man ser på hinanden følgende billeder. Denne form for illusion kaldes en POV.

Trin 1: Idékoncept

Idé koncept
Idé koncept

POV implementeres ved at fastgøre en LED -rem til hjulet på en cykel.

Trin 2: Materialeliste

Materialeliste
Materialeliste
Materialeliste
Materialeliste

Computing & I/O

1. Arduino Mega 2560 [arduino] x3

2. Hallsensormodul V2 [YwRobot] x3

3. WS2812-5050 Fleksibel Neopixel [Adafruit] x3

4. Magnetisk (diameter på 15 mm, tykkelse på 50 mm) x3

5. Arduino Mega Case x3

Strømkabel

5. 5000mAh/3,7V litiumbatteri [TheHan] x3

6. AVR 5V regulator & opladning & PCM-modul: JBATT-U5-LC [Jcnet] x3

7. 4Jumper wire kit 65PCS/SET [OR0012] x3

Trin 3: Værktøjer

Værktøjer
Værktøjer

Der kræves ikke for mange værktøjer, men du skal bruge:

1. Loddemaskine

2. Et loddejern

3. Lim pistol

4. Nipper

Trin 4: Lav ramme

Image
Image
Lav ramme
Lav ramme

Klipning af cyklen og fastgørelse af basen

Kværnen blev brugt til at skære cykelhjulene af cyklen og svejsede stålplader for at sikre hjulene.

Trin 5: Skitsering af sidste billeder og koncepter

Skitsering af sidste billeder og koncepter
Skitsering af sidste billeder og koncepter
Skitsering af sidste billeder og koncepter
Skitsering af sidste billeder og koncepter
Skitsering af sidste billeder og koncepter
Skitsering af sidste billeder og koncepter

Vi valgte en drage som det sidste billede. Fordi dragen af bølgen syntes at være bedst repræsenteret af efterbilledeffekten.

Trin 6: Gør Moving Image Cut

Skær bevægeligt billede
Skær bevægeligt billede
Skær bevægeligt billede
Skær bevægeligt billede

Opdel billedet i tre dele, der passer på hver cykel, og del de i alt 12 billeder efter farve og bevægelse.

Trin 7: Forbered software

Forberedelse af software
Forberedelse af software
Forberedelse af software
Forberedelse af software

Underdel 1. Installer Arduino

Arduino download:

(Installer for at passe til din OS -version og system.)

-

Del del 2. Installer bibliotek

*(Hvis du gerne vil installere via Github, skal du besøge linket ovenfor Github Arduino Library:

1. Kør Arduino -program

2. Tillad linket Topmenu - skitse - inkluder bibliotek - tilføj. Zip -bibliotek

3. Du skal vælge. Zip -filen, der allerede har installeret github -bibliotek4

*(Hvis du vil bruge Arduino -programtjenester)

1. Kør Arduino -programmer

2. Tillad linket Topmenu - skitse - inkluder bibliotek - ledelsesbibliotek - søger efter 'Adafruit neopixel' - du kan se 'Adafruit Neopixel by Adafruit'

3. Installer og opdater bibliotek

-

Underdel 3. Installer konverteringsprogram

1. Installer Rotation Circle Program (R. C. P):

2. Du skal læse en README -fil

Trin 8: Lav hardware strømforsyning

Lav hardware strømforsyning
Lav hardware strømforsyning
Lav hardware strømforsyning
Lav hardware strømforsyning
Lav hardware strømforsyning
Lav hardware strømforsyning

*Sådan leverer du Arduino 5V spænding gennem batteriet. Følg venligst trinene herunder.

1. Tilslut litiumbatteri og JBATT -opladningsmodul. (Til reference har JBATT-modulet en indbygget afbryder.)

2. Tilslut udgangsterminalen på JBATT til Vin -terminalen på Arduino og jordterminalen.

3. Tilslut Micro 5pin usb -porten til opladningsporten for at kontrollere, om produktet har fungeret korrekt.

4. Drej derefter den indbyggede kontakt til ON.

5. Hvis den røde lysdiode lyser, og den grønne lysdiode lyser i Arduino, afsluttes produktets effektfasekonfiguration normalt.

Trin 9: Fremstilling af hardware -I/O og kontrol af OUTPUT (NeoPixel Working)

Fremstilling af hardware I/O og kontrol af OUTPUT (NeoPixel Working)
Fremstilling af hardware I/O og kontrol af OUTPUT (NeoPixel Working)
Fremstilling af hardware I/O og kontrol af OUTPUT (NeoPixel Working)
Fremstilling af hardware I/O og kontrol af OUTPUT (NeoPixel Working)
Fremstilling af hardware I/O og kontrol af OUTPUT (NeoPixel Working)
Fremstilling af hardware I/O og kontrol af OUTPUT (NeoPixel Working)

*Denne del består af sensor og udgangstrin

1. Tilslut Arduino- og Hall -sensorerne. Datapinden forbindes til Arduino pin 2.

2. Når Arduino tændes, og magneten er i tæt kontakt med Hall -sensoren, lyser den røde LED.

3. Tilslut Arduino og Neopixel. Der bruges kun 30 Neopixels.

4. Tilslut datapinden med Arduino pin 6.

5. Tilslut Arduino og download kablet til din computers usb -port, og kør Arduino på din computer.

6. Vælg Tool - board - “Arduino / Genuino Mega eller Mega 2560” fra den øverste menulinje i Arduino -programmet.

7. Kontroller, om der er en liste over produkter, der kan tilsluttes direkte til porten. Hvis det ikke er markeret, skal du klikke for at vælge det.

8. Indsæt koden herunder, og klik på Upload øverst til venstre. (Bagefter følger alle programuploads trin 5-8.)

9. Konfigurationen er fuldført, når alle 30 neoled -pixels tændes.

#1. herunder headerfil og forbehandling

Først skal vi bringe biblioteket Adafruit_NeoPixel, der er i stand til at handle Neopixels.

Bibliotek kan bruges ved at deklarere objekter.

Adafruit_NeoPixel -klassen kan indtaste 3 parametre offentligt.

Den første parameter er antallet af lysdioder.

sekunder parameter er pin -nummeret forbundet til Neopixel digital input.

Tredje parameter er at indtaste muligheder i henhold til produktets egenskaber. trefarvet WS2812b-produkt bruger 'NEO_GRB'-input

#omfatte

#define PIN 6 Adafruit_NeoPixel strip = Adafruit_Neopixel (30, PIN, NEO_GRB+NEO_KHZ800);

#2. Opsætning

I installationsdelen skal du initialisere objektet og forberede det til brug.

'Adafruit_Neopixle_Object.begin ()' sætter alle lysdioder til at slukke.

'Adafruit_Neopixle_Object.show ()' output med lysstyrken indstillet i LED'en.

ugyldig opsætning () {

strip.begin (); strip.show (); }

#3. hovedsløjfe

Handlingen med hovedsløjfe bruger en for loop til sekventielt at sende (0,1 sekunder) lysdioderne i hvidt

void loop () {

for (uint16_t i = 0; i <strip.numPixels (); i ++) {strip.setPixelColor (i, 255, 255, 255); strip.show (); forsinkelse (100); }}

Trin 10: Montering og fastgørelse til hjulet

Montering og fastgørelse til hjulet
Montering og fastgørelse til hjulet
Montering og fastgørelse til hjulet
Montering og fastgørelse til hjulet

1. Tilslut Neopixels. (Vær opmærksom på pinkodekontrol)

2. Tilslut hallsensoren. (Se trin 9)

3. Fastgør rammen til Arduino mellem cyklerne. (Sæt Arduino -kassen parallelt med cykelrammen).

4. Indsæt Arduino forbundet til Neopixel. (Vær forsigtig, fordi limpistolen er varm).

5. Indsæt den tilsluttede Hall -sensor i Arduino, (Fastgør kabelbinderen, så Hall -sensoren ikke falder af).

6. Lodning til tilslutning af batteri. (Vær forsigtig, når du lodder).

7. Fix det med en limpistol. (Sæt opladningsmodulet på batteriet for at sikre plads).

8. Tilslut hver linje, før du slutter til Arduino, 9. Tilslut i henhold til hvert pinkode. (Tilslut springlinjerne til opladningsmodulet uden at forvirre dem).

10. Afslut med en limpistol en gang, (pas på ikke at falde).

Trin 11: Kontrol af INPUT (HALL Sensordata)

Kontrol af INPUT (HALL Sensordata)
Kontrol af INPUT (HALL Sensordata)
Kontrol af INPUT (HALL Sensordata)
Kontrol af INPUT (HALL Sensordata)
Kontrol af INPUT (HALL Sensordata)
Kontrol af INPUT (HALL Sensordata)

*Kontroller softwarekoden for at se, om sensoren fungerer.

1. Indsæt og upload koden herunder.

2. Klik på knappen Serial Monitor øverst til højre på Arduino.

3. Når magneten er i kontakt med Hall -sensoren i mere end 1 sekund, afsluttes konfigurationen, når ordet "kontaktmagnet" vises på den serielle skærm.

---------------------------------------------------------- ---------------------------------------------------------- -------------------------------------------------- #1. Definer pinkode og opsætning

Det første konfigurations-pin-nummer, der bruger Hall-sensoren og indstiller pin-nummeret som en port kun til input.

Indstil kommunikationen til at kontrollere data fra Hall -sensor på den serielle skærm.

#define HALL 2

void setup () {pinMode (HALL, INPUT); Serial.begin (9600); }

#2. hovedsløjfe

Kontroller hallsensordataene med 0,1 sekunders mellemrum.

Hvis magneten registreres og data ændres, udsendes "kontaktmagnet" til den serielle skærm.

void loop () {

hvis (digitalRead (HALL)) {Serial.println ("kontaktmagnet"); } forsinkelse (100); }

Trin 12: Kodningsalgoritme

*Opret logik og kodning for at styre Neopixels baseret på sensorværdier.

1. Indsæt og upload koden herunder.

2. Det er normalt, at billedet ikke vises korrekt, fordi der ikke produceres en ramme. Men du kan se, at det virker nogenlunde.

3. Berør og slip hurtigt Hall -sensoren og magneten inden for 1 sekund. Gentag denne handling cirka 10 gange.

4. Konfigurationen er fuldført, når farverne på Neopixels ændres regelmæssigt.

#1. Inklusive header -filer og forbehandling

Først skal vi forstå, at Arduino Megas hukommelse ikke er stor nok til at indeholde en billedfil.

Derfor bruges headerfilen 'avr/pgmspace' til at udnytte forskellig hukommelsesplads.

For at bruge Neopixels erklærer du et objekt og en konfiguration for et I/O -pinnummer.

Billedmatrixen er for stor til at kode, så download og indsæt de vedhæftede filer.

#omfatte

#include #define PIN 6 #define NUMPIXELS 30 #define HALL 2 Adafruit_NeoPixel strip = Adafruit_NeoPixel (NUMPIXELS, PIN, NEO_RGB + NEO_KHZ800); // indsæt array i 'image_array_1.txt' // "'image_array_2.txt' //" 'image_array_3.txt' // "'image_array_4.txt'

#2. Global variabel og opsætning

Angiv en global variabel.

Det vigtigste er at indstille lysstyrken, det var bestemmer produktets livscyklus.

int tæller = 0;

dobbelt v = 0; dobbelt sidste_v = 0; dobbelt timer = micros (); dobbelt ex_timer = micros (); dobbelt sidste_timer = micros (); int deg = 36; int pix = 35; int rgb = 3; dobbelt q_arr [2] = {0, 0}; int HALL_COUNT = 0; dobbelt VELO; dobbelt behandlingstimer = micros (); void setup () {strip.setBrightness (255); strip.begin (); strip.show (); Serial.begin (230400); }

#3. hovedsløjfe - billedudtryksoutputdel

Denne kode er en betinget erklæring om, hvordan man udsender den tid, hjulet drejer ved opløsning.

Denne del bruger cyklen med at dreje cykelhjulet en gang som en meget vigtig parameter.

Det er også vigtigt at læse billedarraydata fra hukommelsen.

void loop () {

if ((count (ex_timer / 120.0) - (micros () - processing_timer))) {timer = micros (); hvis (VELO> 360000) {for (int i = 0+5; i <pix; i ++) {strip.setPixelColor (i - 5, strip. Color (pgm_read_byte (& (image_1 [count] [1])), pgm_read_byte (& (image_1 [count] [2])), pgm_read_byte (& (image_1 [count] [0])))); } strip.show (); } ellers hvis (VELO 264000) {for (int i = 0+5; i <pix; i ++) {strip.setPixelColor (i - 5, strip. Color (pgm_read_byte (& (image_2 [count] [1])), pgm_read_byte (& (image_2 [count] [2])), pgm_read_byte (& (image_2 [count] [0])))); } strip.show (); } ellers hvis (VELO 204000) {for (int i = 0+5; i <pix; i ++) {strip.setPixelColor (i - 5, strip. Color (pgm_read_byte (& (image_3 [count] [1])), pgm_read_byte (& (image_3 [count] [2])), pgm_read_byte (& (image_3 [count] [0])))); } strip.show (); } ellers hvis (VELO <= 204000) {for (int i = 0 + 5; i = 120)) {for (int i = 0 + 5; i <pix; i ++) {strip.setPixelColor (i - 5, strip. Farve (0, 0, 0)); } strip.show (); }

#4. hovedsløjfe - behandling og cyklustidskontrol og -føling

Dette er den vigtigste del af hele systemet.

Kontroller først den tid, det tager at udføre hele koden, og juster LED -udgangstiden pr. Cyklus.

Tiden registreres hver gang hjulet drejer, forudsiger tidspunktet for den næste cyklus.

Acceleration kan estimeres ved at trække den sidste målte cyklustid fra den målte cyklustid til tiden.

Systemet beregner behandlingstiden og accelerationen for at beregne, hvor længe lysdioderne tændes kontinuerligt.

processing_timer = micros ();

hvis ((digitalRead (HALL) == HIGH) && (HALL_COUNT == 1)) {VELO = v; v = micros () - sidste_timer; ex_timer = q_arr [0] - q_arr [1] + v; sidste_timer = micros (); q_arr [0] = q_arr [1]; q_arr [1] = v; count = 0; HALL_COUNT = 0; } ellers hvis (digitalRead (HALL) == LOW) {HALL_COUNT = 1; }}

Trin 13: Brug af software

Brug af software
Brug af software
Brug af software
Brug af software
Brug af software
Brug af software

*Brug software til at transformere billedet og indsætte processionsdata i koden

1. Indsæt billedet fra ovenstående trin i billedmappen i R. C. P -mappen installeret i forberedelsestrinnet.

- Sådan placeres billedet er som følger.- Omdøb 4 animerede billeder af produkt nr. 1 i rækkefølge af 1.png, 2.png, 3-p.webp

2. Kør filen Ver.5.exe.

3. Kontroller, at 12 filer pro_1_code_1.txt til pro_3_code_4.txt er oprettet i mappen R. C. P.

4. Hvis det ikke er oprettet, skal du ændre indholdet af config.txt som følgende konfigurationsfil.

5. Når filen er oprettet, skal du kopiere hele indholdet fra filen pro_1_code_1.txt og indsætte den i den del, der er vist i koden herunder.

6. Tilføj pro_1_code_2.txt, pro_1_code_3.txt og pro_1_code_4.txt indhold til den markerede del i 5. rækkefølge.

7. Med henvisning til 5 og 6 fuldender pro_2_code…, pro_3_code koden på samme måde.

Trin 14: Fuldfør

Komplet
Komplet
Komplet
Komplet
Komplet
Komplet

Gennemførte produktionen af en POV, der skaber et billede med tre hjul.

Anbefalede: