Taula de continguts:

Digilog_Bike POV Display: 14 passos
Digilog_Bike POV Display: 14 passos

Vídeo: Digilog_Bike POV Display: 14 passos

Vídeo: Digilog_Bike POV Display: 14 passos
Vídeo: Persistence of Vision Display using Microchip PIC 18F2550 Not Arduino 2024, Desembre
Anonim
Image
Image

Digilog

Digital + Analògic

El digital es troba amb l’analògic

POV

Persistència del visual

També es coneix com a pantalla de postimatge, si es sacseja a gran velocitat, la imatge posterior queda.

La gent creu que mira un vídeo quan mira la televisió. Però, de fet, està mirant diverses imatges consecutives. Això es confon amb una imatge a causa de l’efecte de les imatges posteriors que queden a les nostres retines quan visualitzem imatges successives. Aquest tipus d’il·lusió s’anomena POV.

Pas 1: concepte d'idees

Concepte d’idees
Concepte d’idees

El POV s’implementa fixant una corretja LED a la roda d’una bicicleta.

Pas 2: Llista de materials

Llista de materials
Llista de materials
Llista de materials
Llista de materials

Informàtica i E / S

1. Arduino Mega 2560 [arduino] x3

2. Mòdul de sensor Hall V2 [YwRobot] x3

3. WS2812-5050 Neopixel flexible [Adafruit] x3

4. Magnètic (diàmetre de 15 mm, gruix de 50 mm) x3

5. Arduino Mega Case x3

Línia elèctrica

5. Bateria de liti de 5000 mAh / 3,7 V [TheHan] x3

6. Regulador AVR 5V, mòdul de càrrega i PCM: JBATT-U5-LC [Jcnet] x3

7. 4Kit de cable de pont 65PCS / SET [OR0012] x3

Pas 3: eines

Eines
Eines

No calen massa eines, però necessitareu:

1. Soldadora

2. Un soldador

3. Pistola de cola

4. Nipper

Pas 4: elaboració del marc

Image
Image
Fer marc
Fer marc

Tallar la bicicleta i fixar la base

El molí es va utilitzar per tallar les rodes de la bicicleta i les plaques d'acer soldades per assegurar les rodes.

Pas 5: esbossar imatges i conceptes finals

Esbós d'imatges i conceptes finals
Esbós d'imatges i conceptes finals
Esbós d'imatges i conceptes finals
Esbós d'imatges i conceptes finals
Esbós d'imatges i conceptes finals
Esbós d'imatges i conceptes finals

Vam escollir un drac com a imatge final. Perquè l’ona del drac semblava estar millor representada per l’efecte postimatge.

Pas 6: feu un tall d'imatge en moviment

Feu un tall d'imatge en moviment
Feu un tall d'imatge en moviment
Feu un tall d'imatge en moviment
Feu un tall d'imatge en moviment

Dividiu la imatge en tres parts que s’adaptaran a cada bicicleta i dividiu el total de 12 imatges per color i moviment.

Pas 7: Preparació del programari

Preparació de programari
Preparació de programari
Preparació de programari
Preparació de programari

Subpart 1. Instal·leu Arduino

Descàrrega d'Arduino:

(Instal·leu-lo per adaptar-lo a la vostra versió i sistema operatiu).

-

Subpart 2. Instal·la la biblioteca

* (Si voleu instal·lar-lo a través de Github, visiteu l'enllaç que hi ha a sobre de la Biblioteca Github Arduino:

1. Executeu el programa Arduino

2. Permetre l'enllaç Menú superior - esbós - incloure biblioteca - afegir biblioteca. Zip

3. Heu de triar el fitxer. Zip que ja ha instal·lat la biblioteca github4

* (Si voleu utilitzar els serveis del programa Arduino)

1. Executeu programes Arduino

2. Permetre l’enllaç Menú superior - esbós - incloure biblioteca - biblioteca de gestió - cercant ‘Adafruit neopixel’ - podeu veure ‘Adafruit Neopixel by Adafruit’

3. Instal·leu i actualitzeu la biblioteca

-

Subpart 3. Instal·leu el programa convertidor

1. Instal·leu el programa Rotation Circle (R. C. P):

2. Heu de llegir un fitxer README

Pas 8: fabricació d'una font d'alimentació de maquinari

Fent font d'alimentació de maquinari
Fent font d'alimentació de maquinari
Fent font d'alimentació de maquinari
Fent font d'alimentació de maquinari
Fent font d'alimentació de maquinari
Fent font d'alimentació de maquinari

* Així és com subministrar voltatge Arduino 5V a través de la bateria. Seguiu els passos següents.

1. Connecteu la bateria de liti i el mòdul de càrrega JBATT. (Com a referència, el mòdul JBATT té un interruptor d’alimentació incorporat).

2. Connecteu el terminal de sortida de JBATT al terminal Vin d'Arduino i el terminal de terra.

3. Connecteu el port USB Micro 5pin al port de càrrega per comprovar si el producte ha funcionat correctament.

4. A continuació, gireu l'interruptor integrat a ON.

5. Si el led vermell s’encén i el led verd s’encén a Arduino, la configuració de l’etapa de potència del producte es completa amb normalitat.

Pas 9: Creació d'E / S de maquinari i comprovació de la SORTIDA (funcionament de NeoPixel)

Creació d'E / S de maquinari i comprovació de la SORTIDA (funcionament de NeoPixel)
Creació d'E / S de maquinari i comprovació de la SORTIDA (funcionament de NeoPixel)
Creació d'E / S de maquinari i comprovació de la SORTIDA (NeoPixel funciona)
Creació d'E / S de maquinari i comprovació de la SORTIDA (NeoPixel funciona)
Creació d'E / S de maquinari i comprovació de la SORTIDA (NeoPixel funciona)
Creació d'E / S de maquinari i comprovació de la SORTIDA (NeoPixel funciona)

* Aquesta part consta de sensor i etapa de sortida

1. Connecteu els sensors Arduino i Hall. El pin de dades es connecta al pin 2 d’Arduino.

2. Quan l’Arduino s’encén i l’imant està en contacte estret amb el sensor Hall, el led vermell s’encendrà.

3. Connecteu Arduino i Neopixel. Només s’utilitzen 30 Neopíxels.

4. Connecteu el pin de dades amb el pin 6 d'Arduino.

5. Connecteu l'Arduino i descarregueu el cable al port USB de l'ordinador i executeu Arduino a l'ordinador.

6. Seleccioneu Eina - Tauler - "Arduino / Genuino Mega o Mega 2560" a la barra de menú superior del programa Arduino.

7. Comproveu si hi ha una llista de productes que es poden connectar directament al port. Si no està marcat, feu clic per seleccionar-lo.

8. Enganxeu el codi següent i feu clic a Penja a la part superior esquerra. (Després, totes les càrregues del programa segueixen els passos 5-8.)

9. La configuració es completa quan s'activen els 30 píxels neolats.

# 1. inclòs el fitxer de capçalera i el preprocessament

Primer hem de portar la biblioteca Adafruit_NeoPixel que sigui capaç d’actuar amb Neopixels.

La biblioteca es pot utilitzar declarant objectes.

La classe Adafruit_NeoPixel pot introduir 3 paràmetres en públic.

El primer paràmetre és el nombre de LEDs.

el paràmetre segons és el número de pin connectat a l'entrada digital Neopixel.

El tercer paràmetre és introduir opcions segons les característiques del producte. El producte WS2812b de tres colors utilitza l'entrada NEO_GRB

#incloure

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

# 2. configuració

A la part de configuració, inicialitzeu l'objecte i prepareu-lo per utilitzar-lo.

'Adafruit_Neopixle_Object.begin ()' defineix tots els LEDs perquè s'apagin.

'Adafruit_Neopixle_Object.show ()' emet amb la brillantor configurada al LED.

configuració nul·la () {

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

# 3. bucle principal

L'acció del bucle principal utilitza un bucle for per emetre seqüencialment (0,1 segons) els LED en blanc

bucle buit () {

per a (uint16_t i = 0; i <strip.numPixels (); i ++) {strip.setPixelColor (i, 255, 255, 255); strip.show (); retard (100); }}

Pas 10: Muntatge i fixació a la roda

Muntatge i fixació a la roda
Muntatge i fixació a la roda
Muntatge i fixació a la roda
Muntatge i fixació a la roda

1. Connecteu Neopixels. (Presteu atenció a la comprovació del número de pin)

2. Connecteu el sensor Hall. (Consulteu el pas 9)

3. Connecteu el quadre a l'Arduino entre les bicicletes. (Col·loqueu la funda Arduino paral·lela al marc de la bicicleta).

4. Introduïu l'Arduino connectat a Neopixel. (Aneu amb compte perquè la pistola de cola està calenta).

5. Introduïu el sensor Hall connectat a Arduino, (Assegureu la connexió del cable perquè el sensor Hall no caigui).

6. Soldadura per connectar la bateria. (Aneu amb compte quan soldeu).

7. Fixeu-lo amb una pistola de cola. (Connecteu el mòdul de càrrega a la bateria per assegurar l’espai).

8. Connecteu cada línia abans de connectar-vos a Arduino, 9. Connecteu segons el número de pin. (Connecteu les línies de salt del mòdul de càrrega sense confondre-les).

10. Acabeu amb una pistola de cola una vegada (tingueu cura de no caure).

Pas 11: Comprovació d’INPUT (dades del sensor HALL)

Comprovació d’INPUT (dades del sensor HALL)
Comprovació d’INPUT (dades del sensor HALL)
Comprovació d’INPUT (dades del sensor HALL)
Comprovació d’INPUT (dades del sensor HALL)
Comprovació d’INPUT (dades del sensor HALL)
Comprovació d’INPUT (dades del sensor HALL)

* Comproveu el codi del programari per veure si el sensor funciona.

1. Enganxeu i pengeu el codi següent.

2. Feu clic al botó Monitor serial de la part superior dreta de l'Arduino.

3. Quan l'imant està en contacte amb el sensor Hall durant més d'1 segon, la configuració es completa quan apareix la paraula "contacte magnètic" al monitor sèrie.

-------------------------------------------------- -------------------------------------------------- -------------------------------------------------- # 1. Definiu el número de pin i la configuració

El primer número de pin de configuració que utilitza el sensor Hall i defineix el número de pin com a port només d’entrada.

Configureu la comunicació per comprovar les dades del sensor Hall al monitor sèrie.

#define HALL 2

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

# 2. bucle principal

Comproveu les dades del sensor Hall a intervals de 0,1 segons.

Si es detecta l'imant i es canvien les dades, s'emet "contacte magnètic" al monitor sèrie.

bucle buit () {

if (digitalRead (HALL)) {Serial.println ("contacte magnètic"); } retard (100); }

Pas 12: Algorisme de codificació

* Crear lògica i codificació per controlar els Neopíxels basats en els valors del sensor.

1. Enganxeu i pengeu el codi següent.

2. És normal que la imatge no es mostri correctament perquè no es produeix cap marc. Però es pot veure que funciona aproximadament.

3. Toqueu ràpidament i deixeu anar el sensor Hall i l'imant en un segon. Repetiu aquesta operació unes 10 vegades.

4. La configuració es completa quan els colors dels Neopixels canvien regularment.

# 1. Inclou fitxers de capçalera i preprocessament

En primer lloc, hem d’entendre que la memòria de l’Arduino Mega no és prou gran com per contenir un fitxer d’imatge.

Per tant, el fitxer de capçalera 'avr / pgmspace' s'utilitza per utilitzar diferents espais de memòria.

Per utilitzar Neopixels, heu de declarar un objecte i configurar un número de PIN d'E / S.

El conjunt d’imatges és massa gran per codificar-lo, així que descarregueu i enganxeu els fitxers adjunts.

#incloure

#include #define PIN 6 #define NUMPIXELS 30 #define HALL 2 Adafruit_NeoPixel strip = Adafruit_NeoPixel (NUMPIXELS, PIN, NEO_RGB + NEO_KHZ800); // enganxa matriu a 'image_array_1.txt' // "'image_array_2.txt' //" 'image_array_3.txt' // "'image_array_4.txt'

# 2. Configuració i variable global

Definiu una variable global.

El més important és establir la brillantor, ja que determina el cicle de vida del producte.

int count = 0;

doble v = 0; doble last_v = 0; temporitzador doble = micros (); doble ex_timer = micros (); doble últim_temporitzador = micros (); int deg = 36; int pix = 35; int rgb = 3; doble q_arr [2] = {0, 0}; int HALL_COUNT = 0; doble VELO; doble processador_temporitzador = micros (); void setup () {strip.setBrightness (255); strip.begin (); strip.show (); Serial.begin (230400); }

# 3. bucle principal: part de sortida d'expressió d'imatge

Aquest codi és una declaració condicional sobre com generar el temps que gira la roda per resolució.

Aquesta part utilitza el cicle de girar la roda de la bicicleta una vegada com a paràmetre molt important.

A més, és important llegir dades de la matriu d’imatges de la memòria.

bucle buit () {

if ((count (ex_timer / 120.0) - (micros () - processing_timer))) {temporitzador = micros (); if (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 (); } else if (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 (); } else if (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 (); } else if (VELO <= 204000) {for (int i = 0 + 5; i = 120)) {for (int i = 0 + 5; i <pix; i ++) {strip.setPixelColor (i - 5, strip. Color (0, 0, 0)); } strip.show (); }

# 4. bucle principal: processament i comprovació i detecció del temps del cicle

Aquesta és la part més important de tot el sistema.

En primer lloc, comproveu el temps necessari per executar tot el codi i ajusteu el temps de sortida del LED per cicle.

El temps detectat cada vegada que gira la roda prediu el temps del cicle següent.

L'acceleració es pot estimar restant l'últim temps de cicle mesurat del temps de cicle mesurat a temps.

El sistema calcula el temps de processament i l’acceleració per calcular quant de temps s’encenen de manera continuada els LED.

processador_temporitzador = micros ();

if ((digitalRead (HALL) == HIGH) && (HALL_COUNT == 1)) {VELO = v; v = micros () - últim_temporitzador; ex_timer = q_arr [0] - q_arr [1] + v; last_timer = micros (); q_arr [0] = q_arr [1]; q_arr [1] = v; recompte = 0; HALL_COUNT = 0; } else if (digitalRead (HALL) == BAIX) {HALL_COUNT = 1; }}

Pas 13: Ús de programari

Ús de programari
Ús de programari
Ús de programari
Ús de programari
Ús de programari
Ús de programari

* Utilitzeu programari per transformar la imatge i inserir dades de processó al codi

1. Inseriu la imatge del pas anterior a la carpeta d'imatges de la carpeta R. C. P instal·lada al pas de preparació.

- Com posar imatge és el següent. - Canvieu el nom de 4 imatges animades del producte # 1 per ordre de 1.png, 2.png, 3-p.webp

2. Executeu el fitxer Ver.5.exe.

3. Verifiqueu que es creïn 12 fitxers pro_1_code_1.txt a pro_3_code_4.txt a la carpeta R. C. P.

4. Si no es crea, canvieu el contingut de config.txt pel fitxer de configuració següent.

5. Un cop creat el fitxer, copieu tot el contingut del fitxer pro_1_code_1.txt i enganxeu-lo a la part que es mostra al codi següent.

6. Afegiu els continguts pro_1_code_2.txt, pro_1_code_3.txt i pro_1_code_4.txt a la part marcada en el cinquè ordre.

7. En referència a 5 i 6, el pro_2_code …, pro_3_code completa el codi de la mateixa manera.

Pas 14: completar

Complet
Complet
Complet
Complet
Complet
Complet

S'ha completat la producció d'un POV que crea una imatge amb tres rodes.

Recomanat: