Indholdsfortegnelse:

132 pixelur: 5 trin (med billeder)
132 pixelur: 5 trin (med billeder)

Video: 132 pixelur: 5 trin (med billeder)

Video: 132 pixelur: 5 trin (med billeder)
Video: Постучись в мою дверь 132 Серия (Русский Дубляж) 2024, November
Anonim
Image
Image
132 pixelur
132 pixelur

Jeg har, så længe jeg kan huske været besat af lysdioder og tid. I dette projekt har jeg skabt et stort vægur, der viser den aktuelle tid ved hjælp af 132 neopixel LED'er monteret og skinner gennem et granbræt. Det er en hybrid analog digital med en individuel pixel for hver time, minut og sekund.

Dette var det største projekt, jeg har taget på til dato, jeg begyndte at tænke på det for 6 måneder siden, og ideen kom langsomt sammen. Jeg er virkelig glad for resultatet, og jeg glæder mig til at dele det med jer.

Trin 1: Indsamling af forbrugsvarer og værktøjer

Indsamling af forsyninger og værktøjer
Indsamling af forsyninger og værktøjer
Indsamling af forsyninger og værktøjer
Indsamling af forsyninger og værktøjer
Indsamling af forsyninger og værktøjer
Indsamling af forsyninger og værktøjer
Indsamling af forsyninger og værktøjer
Indsamling af forsyninger og værktøjer

Komponenter

Dette projekt er bygget på et billigt hobbybræt fra min lokale byggemarked. Pladen måler 850 mm bred med 500 mm høj og 18 mm dyb.

Lysdioderne, der bruges i dette projekt, er 5050 WS2812b monteret på cirkulære printkort, der er cirka 9 mm i diameter med loddepuder på bagsiden.

Jeg bruger en Arduino Pro Mini -kompatibel mikrocontroller. Det er 5V 16 MHZ versionen. Jeg valgte denne, da den har et superslank design, lille fodprint og alle de nødvendige porte plus nogle ekstra til fremtidige opgraderinger. Det er også 5 volt, så jeg kan bruge en enkelt strømforsyning til lysdioderne, mikrokontrolleren og RTC

Tidsopbevaringen varetages af et RTC -modul (Real Time Clock), der har DS3231 -chippen. Denne chip er meget præcis, så tiden bør ikke glide for meget.

Også brugt:

Tråd. Loddemiddel og varm lim.

Værktøjer:

El -boremaskine og træbor (10 mm og 5 mm)

Loddekolbe

Varm limpistol

trådklip

Dremel og dyk router tilbehør

Trin 2: Markering, boring og routing

Markering, boring og routing
Markering, boring og routing
Markering, boring og routing
Markering, boring og routing
Markering, boring og routing
Markering, boring og routing

Boring

  • Find midten af brættet ved hjælp af en strædekant ved at tegne en linje fra modsatte hjørner.
  • Marker 3 cirkler med et stykke snor og en pen. Den yderste cirkel skal være cirka 20 mm fra kanten af brættet med de to andre linjer, der bevæger sig 15 mm fra den sidste linje.
  • Jeg brugte et trykt urskive til at hjælpe mig med at markere positionerne for hvert minut og sekund på de ydre 2 linjer og timer på den indre linje.
  • Bor 10 mm huller cirka 5 mm dybe for hver time, minut og sekund.
  • Brug 5 mm boret til at lave huller på tavlen i time, minut og sekund.

Routing

Selvom dette trin ikke er nødvendigt, vil det muliggøre montering af uret i en væg.

  • Brug en router og en cirkelguide til at føre trådkanaler i kortet
  • Markér og læg en fordybning for RTC og Micro Controller at bo i.
  • Før en kanal fra de ydre linjer til fordybningen for ledninger

Trin 3: Så meget soldatering, opskæring og stripping

Så meget soldatering, klipning og stripping
Så meget soldatering, klipning og stripping
Så meget soldatering, klipning og stripping
Så meget soldatering, klipning og stripping
Så meget soldatering, klipning og stripping
Så meget soldatering, klipning og stripping

Denne næste del er meget lettere at sige end at gøre. Mit råd ville være notat at skynde det. prøv at finde et system og kom ind i en rytme.

Hver af LED'erne har brug for 5 volt ind, 5 volt ud, data ind, data ud, jord ind og jord ud. inklusive strøm til mikrokontrolleren og RTC dens over 400 ledninger, alle fjernet og loddet i begge ender.

En klæbrig blå substans er meget nyttig til dette trin.

  • Jeg startede med at placere 2 lysdioder i deres huller ved siden af hinanden for at regne ud den længde af ledning, der er nødvendig for at forbinde til hinanden.
  • Ved hjælp af det første stykke tråd som en vejledning skar jeg derefter 60 af hver farvetråd.
  • Fjern 2 mm sleeving fra enderne af hver tråd og hæld dem med loddetin.
  • Lod en lille klat lodde på hver af LED -pads.
  • Lod lodningerne til LED'erne for at danne to kæder på 60 i minutter og sekunder og en kæde på 12 i timerne. Jeg brugte rød ledning til 5V, gul til data og blå til jorden.
  • Sørg for at tilslutte hver Data Out (DOUT) til Data In (DIN) på den næste LED
  • Den sidste led i hver kædedosis behøver ikke en datatråd.

Når alle kæderne er færdige, er det en god idé at teste dem, før de installeres. Jeg brugte min Arduino UNO og Adafruit NeoPixel Strand Test til at bekræfte, at hver LED fungerede.

Lodde længere ledninger på hver af kæderne til 5V, jord og data ind.

På dette tidspunkt bør der være fem 5v -ledninger, tre datatråde tilsluttet Arduino Pro Mini og 5 jordledninger.

Fjern 5 mm fra enderne af 5v -ledningerne, og lod dem alle sammen, og gentag for jordledningerne.

Efter at have afsluttet de tre kæder loddes en 5V ledning til RAW pin på Arduino Pro Mini og også på VCC pin til RTC. En jordledning til GND på Arduino Pro Mini og RTC og derefter yderligere 2 ledninger:

SCL fra RTC til A5 på Pro Mini

SDA fra RTC til A4 på Pro Mini

Datalinjerne fra lysdioderne skal oprette forbindelse til:

  • Sekunder - Digital pin 3.
  • Minutter - DigitalPin 4
  • Timer - DigitalPin 5

Trin 4: Installation

Installation
Installation
Installation
Installation
Installation
Installation

Når de er loddet, skal installationen af lysdioderne i deres huller være lige frem. Lysdioderne skal installeres, så dataene kører rundt mod uret, når man ser på det bagfra, da koden er opsat på forsiden.

Jeg brugte en lille smule varm lim til at holde dem nede, da jeg gerne vil kunne udskifte en enkelt LED, hvis den fejler i fremtiden.

Jeg brugte også varm lim til at holde alle ledninger pæne og ryddelige og til at fastgøre tøndeforbindelsen til brættet.

Der findes en række arduino pro mini programmeringsguider. Jeg bruger den eksterne USB til seriel konverteringsmetode til at indlæse denne kode på Arduino:

Denne kode vil også indstille tiden på RTC til det tidspunkt, den blev kompileret. så det er vigtigt bare at lukke upload -knappen, så den overholder og uploades så hurtigt som muligt.

Meget af denne kode blev lånt fra NeoPixel Ring Clock af Andy Doro. Nogle fra Adafruit NeoPixel Strand Test og nogle satte jeg sammen.

Du skal have installeret et par biblioteker. De er tilgængelige fra Libraries Manager på Arduino -softwaren.

Adafruit NeoPixel til ws2812b LED'erne

Tråd til at tale med RTC over I2C (dette er indbygget som standard)

og RTClib for at vide, hvad de skal spørge RTC

/************************************************* ***************************NeoPixel Ringur af Andy Doro ([email protected]) https://andydoro.com/ringclock/ ************************************************* ***************************

Revisionshistorik

Dato efter hvad

20140320 AFD Første udkast 20160105 AFD Faded buer 20160916 AFD Trinket -kompatibel 20170727 AFD tilføjet STARTPIXEL til 3D -kabinet, variabelt udgangspunkt, tilføjet automatisk DST -understøttelse 20180424 AFD ved hjælp af DST -bibliotek https://github.com/andydoro/DST_RTC *

/ inkludere bibliotekskoden:

#include #include

#omfatte

// definer pins

#define SECPIN 3 #define MINPIN 4 #define HOUPIN 5

#define BRIGHTNESS 20 // indstil maksimal lysstyrke

#define r 10

#define g 10 #define b 10 RTC_DS3231 rtc; // Etabler urobjekt

Adafruit_NeoPixel stripS = Adafruit_NeoPixel (60, SECPIN, NEO_GRB + NEO_KHZ800); // strip objekt

Adafruit_NeoPixel stripM = Adafruit_NeoPixel (60, MINPIN, NEO_GRB + NEO_KHZ800); // strip objekt Adafruit_NeoPixel stripH = Adafruit_NeoPixel (24, HOUPIN, NEO_GRB + NEO_KHZ800); // strip objekt byte pixelColorRed, pixelColorGreen, pixelColorBlue; // holder farveværdier

ugyldig opsætning () {

Wire.begin (); // Start I2C rtc.begin (); // startur

Serial.begin (9600);

// sæt pinmodes pinMode (SECPIN, OUTPUT); pinMode (MINPIN, OUTPUT); pinMode (HOUPIN, OUTPUT);

hvis (rtc.lostPower ()) {

Serial.println ("RTC mistede strøm, lad os indstille tiden!"); // følgende linje indstiller RTC til dato og klokkeslæt, hvor denne skitse blev udarbejdet rtc.adjust (DateTime (F (_ DATE_), F (_ TIME_))); // Denne linje indstiller RTC med en eksplicit dato og tid, f.eks. Til at indstille // 21. januar 2014 kl. 03.00, du vil kalde: // rtc.adjust (DateTime (2014, 1, 21, 3, 0, 0)); }

stripS.begin ();

stripM.begin (); stripH.begin (); //strip.show (); // Initialiser alle pixels til 'off'

// startsekvens

forsinkelse (500);

colorWipeS (stripS. Color (0, g, 0), 5); // Blå colorWipeM (stripM. Color (r, 0, 0), 5); // Blå colorWipeH (stripH. Color (0, 0, b), 50); // Blå

forsinkelse (1000);

DateTime theTime = rtc.now (); // tager hensyn til DST byte secondval = theTime.second (); // få sekunder byte minuteval = theTime.minute (); // få minutter int hourval = theTime.hour (); timeval = timeval % 12; // Dette ur er 12 timer, hvis 13-23, konverter til 0-11 '

for (uint16_t i = 0; i <secondval; i ++) {stripS.setPixelColor (i, 0, 0, b); stripS.show (); forsinkelse (5); }

for (uint16_t i = 0; i <minuteval; i ++) {stripM.setPixelColor (i, 0, g, 0); stripM.show (); forsinkelse (5); }

for (uint16_t i = 0; i <hourval; i ++) {stripH.setPixelColor (i, r, 0, 0); stripH.show (); forsinkelse (5); }

}

void loop () {

// få tid

DateTime theTime = rtc.now (); // tager hensyn til sommertid

byte secondval = theTime.second (); // få sekunder

byte minuteval = theTime.minute (); // få minutter int hourval = theTime.hour (); // få timer hourval = hourval % 12; // Dette ur er 12 timer, hvis 13-23, konverter til 0-11 '

stripS.setPixelColor (anden værdi, 0, 0, 20); stripS.show (); forsinkelse (10); hvis (secondval == 59) {for (uint8_t i = stripS.numPixels (); i> 0; i--) {stripS.setPixelColor (i, 0, g, 0); stripS.show (); forsinkelse (16);}}

stripM.setPixelColor (minuteval, 0, g, 0);

stripM.show (); forsinkelse (10); hvis (secondval == 59 && minuteval == 59) {for (uint8_t i = stripM.numPixels (); i> 0; i--) {stripM.setPixelColor (i, r, 0, 0); stripM.show (); forsinkelse (16);}}

stripH.setPixelColor (timeval, r, 0, 0);

stripH.show (); forsinkelse (10); if (secondval == 59 && minuteval == 59 && hourval == 11) {for (uint8_t i = stripH.numPixels (); i> 0; i--) {stripH.setPixelColor (i, 0, 0, b); stripH.show (); forsinkelse (83);}} // for seriel fejlfinding Serial.print (hourval, DEC); Serial.print (':'); Serial.print (minuteval, DEC); Serial.print (':'); Serial.println (secondval, DEC); }

// Fyld prikkerne efter hinanden med en farve

void colorWipeS (uint32_t c, uint8_t wait) {for (uint16_t i = 0; i <stripS.numPixels (); i ++) {stripS.setPixelColor (i, c); stripS.show (); forsinkelse (vent); }}

void colorWipeM (uint32_t c, uint8_t wait) {

for (uint16_t i = 0; i <stripM.numPixels (); i ++) {stripM.setPixelColor (i, c); stripM.show (); forsinkelse (vent); }}

void colorWipeH (uint32_t c, uint8_t wait) {

for (uint16_t i = 0; i <stripH.numPixels (); i ++) {stripH.setPixelColor (i, c); stripH.show (); forsinkelse (vent); }}

Trin 5: Sidste hånd

Image
Image
Sidste hånd
Sidste hånd

Det eneste, der skal være tilbage nu, er at reparere RTC og Micro Controller nede i fordybningen.

Jeg har monteret RTC batterisiden opad, så jeg nemt kan skifte batteri, hvis det er nødvendigt.

Tilslut 5v -ledningerne til + siden af stikket og jorden til siden -

Tænd for det!

Jeg har min tilsluttet en USB -batteribank, men en USB -telefonoplader ville fungere lige så godt.

Bemærk:

Lysdiodernes lysstyrke er indstillet i koden. Det er blevet sat lavt for at holde den nuværende træk lav. Ved fuld lysstyrke med alle lysdioder tændt kunne den trække næsten 8 ampere. Med den nuværende opsætning er den mindre end 1.

Ur konkurrence
Ur konkurrence
Ur konkurrence
Ur konkurrence

Nummer to i urkonkurrencen

Anbefalede: