Innholdsfortegnelse:

Arduino -basert binær vekkerklokke: 13 trinn (med bilder)
Arduino -basert binær vekkerklokke: 13 trinn (med bilder)

Video: Arduino -basert binær vekkerklokke: 13 trinn (med bilder)

Video: Arduino -basert binær vekkerklokke: 13 trinn (med bilder)
Video: Mind-boggling arduino UNO project. You need to do it yourself! #arduino #electronics 2024, Juli
Anonim
Image
Image

Av Basement EngineeringFølg Mer av forfatteren:

DIY Laser People Counter
DIY Laser People Counter
Å bygge en selvkjørende båt (ArduPilot Rover)
Å bygge en selvkjørende båt (ArduPilot Rover)
Å bygge en selvkjørende båt (ArduPilot Rover)
Å bygge en selvkjørende båt (ArduPilot Rover)
Den perfekte nattlampen og telefonstasjonen
Den perfekte nattlampen og telefonstasjonen
Den perfekte nattlampen og telefonstasjonen
Den perfekte nattlampen og telefonstasjonen

Om: Hei, jeg heter Jan og er produsent, jeg elsker å bygge og lage ting, og jeg er også ganske flink til å reparere ting. Siden jeg kan tro at jeg alltid har elsket å lage nye ting, og det er det jeg fortsetter å gjøre til … Mer om Basement Engineering »

Hei, i dag vil jeg vise deg hvordan du bygger et av mine siste prosjekter, min binære vekkerklokke.

Det er massevis av forskjellige binære klokker på internett, men dette kan faktisk være den første, laget av en stripe fargerike adresserbare LED -er, som også har en alarmfunksjon og berøringsknapper, for å stille inn ting som tid og farge.

Vennligst ikke la det kompliserte utseendet på det skremme deg bort. Med en liten forklaring er det faktisk ikke så vanskelig å lese binær som det virker. Og hvis du er villig til å lære noe nytt, vil jeg gjerne hjelpe deg med å gjøre det senere.

La meg fortelle deg litt om historien bak dette prosjektet:

Jeg planla opprinnelig å bygge en "normal" klokke, som bruker LED -er som sine hender, men jeg hadde ikke nok LED -er tilgjengelig.

Sååå, hva gjør du når du vil vise tiden med så få LED -er som mulig?

Du går binært, og det er akkurat det jeg gjorde her.

Denne klokken er den tredje versjonen av sitt slag. Jeg bygde en veldig enkel prototype rett etter at prosjektideen traff meg og tok den med til Maker Faire i Hannover, for å se hva folk synes om den. Mens jeg var der, mottok jeg mange veldig positive og interessante tilbakemeldinger, så vel som forbedringsideer.

Resultatet av alle disse ideene og timene med tenking, tinker og programmering, er denne ganske interessante lille vekkerklokken, som har mange flere funksjoner enn versjon 1.0, og i dag skal vi gå gjennom hvert trinn i byggeprosessen, slik at du kan enkelt bygge en selv.

Det er også en veldig detaljert video på Youtube, i tilfelle du ikke vil lese alt.

Trinn 1: Få tingene dine

Få tingene dine
Få tingene dine
Få tingene dine
Få tingene dine
Få tingene dine
Få tingene dine

Her er en liten liste over alle komponentene og verktøyene du trenger for å bygge din egen binære klokke.

Elektronikk:

  • 18 adresserbare Ws2811 lysdioder (f.eks. Neopixels) på en stripe med 60 lysdioder per m (ebay)
  • Arduino Nano (med ATMega328 -prosessor) (ebay)
  • 1307 RTC -modul (ebay)
  • 4X kapasitive berøringsknapper (ebay)
  • bs18b20 digital temperatursensor (ebay)
  • LDR (ebay)
  • bærbar/smarttelefonhøyttaler eller piezo -summer
  • 2222A NPN -transistor (eller noe lignende)
  • mannlige overskrifter
  • vinklede kvinnelige overskrifter (ebay)
  • 1 kOhm motstand
  • 4, 7kOhm motstand
  • 10kOhm motstand
  • Ledninger
  • 7x5cm prototyping PCB 24x18 hull (ebay)
  • sølvtråd (smykketråd) (ebay)
  • 90 ° mini usb -adapter (ebay)

Andre materialer

  • Vinylfolie
  • 4X 45 mm m4 flensskruer (ebay)
  • 32X m4 metallskiver
  • 4X m4 låsemutter
  • 28X m4 mutter
  • 4X 10 mm m3 PCB -avstand i messing (ebay)
  • 8X 8 mm m3 skrue (ebay)
  • plate av aluminium
  • 2 mm ark melket akryl
  • 2 mm ark klart akryl
  • 3 mm ark MDF
  • dobbeltsidig tape

Verktøy

  • mini USB -kabel
  • datamaskin som kjører Arduino IDE
  • 3, 5 mm bor
  • 4, 5 mm bor
  • bormaskin
  • skjærekniv
  • håndteringssag
  • loddeion
  • saks i metall
  • fil
  • sandpapir

Maler (nå med dimensjoner)

  • PDF
  • Libre Office Draw

Kode

  • Skisser
  • Knappebibliotek
  • Timer bibliotek
  • Jukebox bibliotek
  • Modifisert RTClib
  • Adafruit Neopixel bibliotek
  • Arduino-temperaturkontroll-bibliotek

Trinn 2: Klipp av front- og bakpanelet

Klipp av front- og bakpanelet
Klipp av front- og bakpanelet
Klipp av front- og bakpanelet
Klipp av front- og bakpanelet
Klipp av front- og bakpanelet
Klipp av front- og bakpanelet
Klipp av front- og bakpanelet
Klipp av front- og bakpanelet

Det første stykket vi skal lage er frontpanelet i akryl. Vi markerer hvor vi vil at våre kutt skal gå, mens vi husker på at vi ønsker litt toleranse for sliping. Så skraper vi ganske enkelt akrylen med skjærekniven vår. Etter at vi har gjort det i 10 til 20 ganger har vi et spor. Vi kan deretter plassere den lunden på kanten av et bord og bøye akrylen til den går i stykker.

Etter at frontpanelet er kuttet i størrelse, kutter vi bakpanelet ut av et stykke MDF. Vi kan bruke håndteringssagen til dette, men en skjærekniv fungerer også. Vi må bare klemme MDF -en på et skrapbit og skrape den med skjærekniven vår til bladet går gjennom og vi har to individuelle stykker.

Nå smører vi de to panelene sammen og sliper hver side for å passe perfekt.

Etter at dette er gjort, kutter vi ut den første malen og legger den på de to panelene med litt tape og begynner å bore de merkede hullene.

Først borer vi et hull på 4, 5 mm i hvert av de 4 hjørnene. Siden akryl er veldig sprø og vi ikke vil at den skal gå i stykker, starter vi med en liten borekrone og jobber oss opp til vi når ønsket hulldiameter. Deretter bruker vi malen til å slipe hjørnene til riktig form.

Trinn 3: Fullfør bakpanelet

Fullfør bakpanelet
Fullfør bakpanelet
Fullfør bakpanelet
Fullfør bakpanelet
Fullfør bakpanelet
Fullfør bakpanelet
Fullfør bakpanelet
Fullfør bakpanelet

Foreløpig kan vi sette frontpanelet til side og feste den andre malen på bakpanelet, hvor vi må bruke en 3, 5 mm borekrone til å bore hullene for våre 4 PCB -avstand, samt 4 hull som markerer kantene for det lille bakvinduet.

Vi bruker deretter håndteringssagen til å kutte vinduet ut og glatte kantene, med en fil. Du vil heller ikke glemme å bore hullet for mini -USB -kabelen (jeg hørte om en ikke så fokusert maker, som pleier å gjøre slike ting: D).

Siden vi nå er ferdig med å kutte bakpanelet, kan vi fortsette å pakke det inn i vinylfolie. Vi kutter ganske enkelt to stykker i riktig størrelse og bruker den første på den ene siden. Deretter kutter vi felgene og frigjør vinduet. En hårføner kan bidra til å gjøre alle hullene synlige igjen, slik at vi også kan klippe dem ut. Etter å ha gjort det samme for den andre siden bruker vi vår neste mal og skrape- og bruddteknikk for å lage det lille akrylvinduet til bakpanelet vårt.

Trinn 4: Lag LED -panelet

Lag LED -panelet
Lag LED -panelet
Lag LED -panelet
Lag LED -panelet
Lag LED -panelet
Lag LED -panelet

Nå kommer vi høydepunktet i dette prosjektet, i bokstaveligste forstand. LED -panelet.

Vi bruker metallsaksene våre til å klippe et stykke på 12, 2 x 8 cm ut av et metallark. Vær forsiktig mens du gjør dette, da saksene skaper veldig skarpe kanter. Vi skal glatte dem med filen vår og litt sandpapir. Deretter legger vi til vår neste mal for å bore hull for skruene og ledningene.

På tide å forberede de faktiske lysdiodene.

Først kuttet vi dem i tre strimler med 6 LED hver. Noen av LED -stripene har et veldig tynt limlag eller ingen lim i det hele tatt, så vi kommer til å lime strimlene våre på et stykke dobbeltsidig tape og kutte det i størrelse med en kniv. Dette får den til å feste seg til metallplaten, og selv om dette ikke er en profesjonell løsning, vil den isolere kobberputene fra metalloverflaten under.

Før vi faktisk limer strimlene på panelet, rengjør vi det med alkohol. Mens vi fester LED -lampene, må vi sørge for at vi legger dem ned på riktig sted så vel som i riktig retning. De små pilene på LED -stripen indikerer retningen, i hvilken data beveger seg gjennom stripen.

Som du kan se på det femte bildet, kommer datalinjen vår fra øverste venstre hjørne av panelet, går gjennom den første stripen helt til høyre side, enn tilbake til begynnelsen av den følgende stripen til venstre og så videre. Så alle pilene våre må peke til høyre side.

La oss varme opp loddeionet vårt og sette litt tinn på kobberputene, så vel som på ledningen. Datalinjene er koblet til som jeg nettopp har beskrevet, mens vi ganske enkelt kobler pluss- og minusputene på stripen parallelt.

Etter at stripene er kablet opp, bruker vi kniven vår til å løfte enden på hver stripe forsiktig mens vi holder LED -lampene nede, slik at de fortsatt peker oppover. Deretter legger vi litt varmt lim under for å isolere loddeskjøtene våre.

Etter at dette er gjort og legger vi til noen toppnål til ledningene som går til PCB. Disse ledningene skal være omtrent 16 cm lange. For å være ekstra sikker på at metallpanelet ikke kortslutter noe, bruker vi et multimeter for å måle motstanden mellom alle pinnene. Hvis det viser noe over 1kOhm, er alt bra.

Nå kan vi koble den til en Arduino, kjøre en strandtest og nyte fargene.

Trinn 5: Lag en lysguide

Lag en lysguide
Lag en lysguide
Lag en lysguide
Lag en lysguide
Lag en lysguide
Lag en lysguide
Lag en lysguide
Lag en lysguide

Hvis vi setter vårt LED -panel rett bak den melkete akrylen, kan det bli ganske vanskelig å skille individuelle LED -er fra hverandre. Dette ville gjøre klokken enda vanskeligere å lese enn den allerede er.

For å løse dette problemet, skal vi lage oss en liten lysguide. For dette klipper vi bare ut et annet stykke MDF, som har samme størrelse som frontpanelet. Deretter legger vi til enda en mal til den og borer atten 3, 5 mm hull for lysdiodene, samt fire 4, 5 mm hull for skruene i den. Vi kan deretter klemme det ned til frontpanelet og bruke litt sandpapir for å justere de to.

Som du kan se på det siste bildet, ser lyset mye mer fokusert ut nå.

Trinn 6: Lag knapprammen

Lag knapprammen
Lag knapprammen
Lag knapprammen
Lag knapprammen
Lag knapprammen
Lag knapprammen

Den siste kabinettkomponenten, som vi skal lage, er knapprammen.

Vi, de igjen, kutter et stykke MDF til riktig størrelse og legger til en mal til det, så borer vi alle nødvendige hull og bruker håndteringssagen til å kutte ut den midterste delen.

Rammen vår skal holde de fire berøringsknappene, lyssensoren og den lille høyttaleren på plass. Før vi kan feste dem til rammen, kutter vi et par mindre dekkstykker ut av MDF. Vi limer deretter komponentene våre på dekslene og legger ledninger til dem.

Trykknappens strømputer er koblet til parallelt, mens hver utgangslinje får en individuell ledning. Dette er også et godt tidspunkt å teste om de alle jobber. Siden lyssensoren trenger 5 volt på den ene siden, kan vi ganske enkelt koble den til alarmknappene VCC -puten og lodde en ledning til det andre beinet.

Etter at panelene er forberedt, kutter vi i sidene av rammen for å få plass til dem og ledningene deres.

Deretter fjerner vi trestøv fra alle bitene med en støvsuger og dekker dem i vinylfolie.

Vi bruker presisjonskniven til å fjerne biter av vinylen, rett over de følsomme områdene i berøringsmodulene våre. Med litt dobbeltsidig tape kan vi feste våre egne knapper til MDF. Jeg laget knappene mine av gummiskum, noe som gir dem en fin, myk tekstur, men du kan bruke hvilket som helst ikke-metallisk materiale du ønsker.

På rammen bruker vi kniven vår til å frigjøre litt av MDF igjen, noe som gir oss en grippy overflate for limet. Så kan vi endelig lime komponentene til sidene av rammen.

Trinn 7: Lodd hovedkortet

Lodd hovedkortet
Lodd hovedkortet
Lodd hovedkortet
Lodd hovedkortet
Lodd hovedkortet
Lodd hovedkortet

La oss forlate rammen slik den er akkurat nå og gå videre til PCB. Du kan se PCB -oppsettet på det første bildet.

Vi starter med å plassere komponentene med den laveste profilen på kretskortet. De minste komponentene er trådbroene, som jeg husket litt for sent, så jeg begynte med motstandene. Vi lodder komponentene våre på plass og går videre til neste høyere sett med komponenter.

Neste opp har vi våre kvinnelige toppstifter. For å spare plass og for å koble til elektronikken fra siden monterer vi dem i en 90 graders vinkel.

Transistorer passer egentlig ikke til 2, 54 mm hullavstand på PCB -en, så vi bruker tangene våre til å bøye bena forsiktig til formen, vist på det andre bildet. Vi lodder først et av bena på plass og snur kretskortet. Vi varmer deretter opp loddeskjøten og bruker fingeren eller en tang for å plassere komponenten riktig. Nå kan vi lodde de to andre beina på plass.

Etter alle de små komponentene lodder vi vår Arduino og vår sanntidsklokke -modul på plass. RTC -modulen passer heller ikke godt til hullavstanden, så vi skal bare utstyre siden som har 7 loddeputer med toppnål. Vi legger dessuten litt tape under den for å forhindre kortslutning.

Ettersom alle komponentene våre er loddet på plass, er det nå på tide å gjøre tilkoblingene på den andre siden av brettet. For dette skal vi ta ut vår ikke -isolerte ledning. En tang kan brukes for å rette den opp. Deretter kutter vi tråden i mindre biter og lodder den til PCB.

For å opprette en tilkobling, varmer vi opp en loddetinn og setter inn ledningen. Vi beholder deretter loddeionet på det, til det når riktig temperatur og loddetinnet omslutter det og vi får en skjøt, som ser ut som den på bildet. Hvis vi ikke varmer opp tråden, kan vi ende opp med en kald ledd, som vil se ut som det andre eksemplet og ikke fungerer veldig bra. Vi kan bruke trådkutteren vår til å skyve tråden ned under lodding og sørge for at den ligger flatt på kretskortet. På lengre tilkoblingsbaner lodder vi den til en enkelt pute hvert 5. til 6. hull til vi når et hjørne eller den neste komponenten.

I et hjørne klipper vi tråden over første halvdel av en loddepute og lodder enden på den. Vi tar deretter et nytt stykke ledning og fortsetter derfra i en rett vinkel.

Å lage de tomme ledningstilkoblingene er ganske vanskelig og krever litt dyktighet, så hvis du gjør dette for første gang, er det definitivt ikke en dårlig idé å øve det på en PCB -skrap, før du prøver å gjøre det på den virkelige.

Etter at vi er ferdig med lodding, sjekker vi tilkoblingene igjen og sørger for at vi ikke produserte noen kortslutninger. Deretter kan vi sette kretskortet inne i knapprammen og bruke det som en referanse for de nødvendige rammeledningslengdene. Vi kutter deretter ledningene til riktig lengde og legger til mannlige toppnål til dem.

Alle 5V- og jordforbindelsene til berøringsknappene kommer sammen til en 2 -pinners kontakt. De 4 utgangskablene får en 4 -pinners kontakt og lyssensorlinjen samt de to høyttalerkablene slått sammen til en trepolet kontakt. Ikke glem å merke den ene siden av hver stikkontakt og kontakt med en skarpe eller tape, slik at du ikke tilfeldigvis plugger dem på feil måte.

Trinn 8: Monter klokken

Sett sammen klokken
Sett sammen klokken
Sett sammen klokken
Sett sammen klokken
Sett sammen klokken
Sett sammen klokken
Sett sammen klokken
Sett sammen klokken

Etter dette gikk jeg tilbake til frontpanelet og satte forsiktig på et klistremerke, laget av gjennomsiktig laserskriverfolie, som en siste berøring.

Selv om jeg brukte det veldig forsiktig, klarte jeg ikke å få et boblefritt resultat, som dessverre er tydelig synlig ved nærmere inspeksjon. Folien fester seg heller ikke veldig godt til hjørnene, så jeg kan egentlig ikke anbefale denne løsningen.

Det kan sannsynligvis gjøres med et bedre klistremerke, eller hvis du er god til å tegne, kan du legge til tallene med en skarp.

Nå har vi alle komponentene og kan montere klokken.

Vi starter med å sette lyslederen og frontpanelet sammen. Etter at alle fire boltene er satt inn, justerer vi de to panelene og strammer dem deretter. Et par nøtter senere kommer lyspanelet, der vi må se på retningen. Kabelen skal være øverst.

Det tredje stykket er knapprammen. Husk at når du ser fra forsiden, skal høyttaleren være på høyre side av klokken. Trekk kabelen til LED -panelet ditt gjennom midten av rammen, før du fikser det på plass.

Nå legger vi frontmonteringen og går videre til bakpanelet. På bildet kan du også se min vakre selvlagde 90 graders mini USB -adapter. Jeg koblet deg til en skikkelig adapter, så du slipper å håndtere denne typen rot. Du kan ganske enkelt koble adapteren til og føre kabelen gjennom et hull på bakpanelet.

Vi tar våre M3 -skruer og PCB -avstandsstykker for å fikse det lille vinduet. Det er viktig å stramme skruene nøye, ettersom vi ikke ønsker å skade vår akryl. Deretter tar vi kretskortet, plugger inn adapteren og skrur den på avstandsstykkene. Komponentsiden skal vende mot vinduet, mens Arduino USB -port vender mot bunnen av klokken.

Deretter kobler vi til alle kontaktene fra frontenheten, mens vi holder polariteten i bakhodet og presser alle ledningene forsiktig inn i klokken. Vi kan deretter lukke den opp med bakpanelet og stramme de fire gjenværende låsemutrene.

Til slutt vil du ha en vaskemaskin på hver side av hvert panel, mens lyslederen er plassert rett bak frontpanelet. Vi har en mutter mellom lyslederen og LED -panelet og to til, som skiller den fra knapprammen. Du kan også se det på det siste bildet.

Siden jeg brukte korte bolter med en lengde på 40 mm, har jeg bare 3 muttere som holder bakpanelet og rammen fra hverandre. Med de riktige 45 mm boltene vil du legge til en annen mutter her, i tillegg til en eller to ekstra skiver. På slutten av monteringen har vi låsemutteren vår, slik at alt holder seg på plass.

Trinn 9: Last opp koden og kalibrer lyssensoren

Last opp koden og kalibrer lyssensoren
Last opp koden og kalibrer lyssensoren
Last opp koden og kalibrer lyssensoren
Last opp koden og kalibrer lyssensoren
Last opp koden og kalibrer lyssensoren
Last opp koden og kalibrer lyssensoren

På tide å laste opp koden vår.

Først laster vi ned alle nødvendige filer og pakker dem ut. Vi åpner deretter mappen Arduino biblioteker og slipper alle de nye bibliotekene inn i den.

Nå åpner vi lyssensorkalibreringsskissen, som vil gi oss de lyse og mørke verdiene for klokkens automatiske dimmerfunksjon. Vi laster den opp, åpner den serielle skjermen og følger instruksjonene på skjermen.

Etter at det er gjort åpner vi den faktiske koden for binære klokker og erstatter de to verdiene med de vi nettopp har målt.

Vi lukker alle andre vinduer, laster opp koden til klokken vår og vi er ferdige.

På tide å leke med den nye gadgeten vår.

Trinn 10: En rask introduksjon til det binære systemet

En rask introduksjon til det binære systemet
En rask introduksjon til det binære systemet
En rask introduksjon til det binære systemet
En rask introduksjon til det binære systemet
En rask introduksjon til det binære systemet
En rask introduksjon til det binære systemet
En rask introduksjon til det binære systemet
En rask introduksjon til det binære systemet

Før vi går videre vil jeg svare på det ene spørsmålet som sannsynligvis allerede har gått gjennom tankene dine, "Hvordan i all verden leser du denne klokken?"

Vel, for dette vil jeg gi deg en kort introduksjon til det binære systemet.

Vi er alle kjent med desimalsystemet, hvor hvert siffer kan ha 10 forskjellige tilstander, alt fra 0 til 9. I binær kan hvert siffer bare ha to tilstander, enten 1 eller 0, derfor kan du bruke noe så enkelt som en ledet til vise et binært tall.

For å vise tall som er raspere enn 9 i desimal, legger vi til flere sifre. Hvert siffer kommer med en viss multiplikator. Det første sifferet fra høyre kommer med en multiplikator på 1 den neste er 10 og den neste er 100. Med hvert nytt siffer er multiplikatoren ti ganger så stor som den i sifferet før. Så vi vet at tallet to plasserte ett siffer til venstre, representerer tallet 20. Mens to siffer til venstre, representerer det 200.

I det binære systemet kommer hvert siffer også med en multiplikator. Ettersom hvert siffer bare kan ha to forskjellige tilstander, er hver nye multiplikator to ganger så stor som den forrige. Oh, og forresten, binære sifre kalles Bits. Så la oss ta en titt på vårt første eksempel, hvis vi plasserer en 1 på den laveste posisjonen er det en enkel 1, men hvis vi plasserer den på den neste høyere posisjonen, hvor vår multiplikator er 2, representerer den tallet 2 i binær.

Hva med det litt mer vanskelige eksemplet nederst på bildet. Den tredje og den første biten er på. For å få desimaltallet som er representert her, legger vi ganske enkelt til verdiene til de to bitene. Så 4 * 1 + 1 * 1 eller 4 + 1 gir oss tallet 5.

8 biter kalles en byte, så la oss se hvilket tall vi får hvis vi fyller en hel byte med en.1+2+4+8+16+32+64+128 som er 255 som er den høyeste verdien en enkelt byte kan ha.

Forresten, mens i desimalsystemet sifferet med den høyeste multiplikatoren alltid kommer først, har du to måter å skrive et tall ned i binært. De to metodene kalles minst signifikant byte først (LSB) og mest signifikant byte først (MSB). Hvis du vil lese et binært tall, må du vite hvilket av de to formatene som brukes. Siden det er nærmere desimalsystemet, bruker vår binære klokke MSB -varianten.

La oss komme tilbake til vårt virkelige eksempel. Som fremhevet i det sjette bildet, har klokken vår 4 bits for å vise timen. Enn vi har 6 biter for minuttet og også 6 biter for det andre. Videre har vi en enkel am/pm bit.

Ok, fortell meg hva klokken er på det sjette bildet, enn å hoppe til det siste.. ….

i timeavsnittet har vi 2+1 som er 3 og pm -biten er på, så det er kveld. Neste minutt 32+8, det vil si 40. For sekundene har vi 8+4+2 som er 14. Så det er 15:40:14 eller 15:40:14.

Gratulerer, du har nettopp lært å lese en binær klokke. Selvfølgelig tar det litt tid å venne seg til, og i begynnelsen må du legge tallene sammen, hver gang du vil vite hva klokken er, men i likhet med en analog klokke uten urskive, blir du vant til LED -mønstrene over tid.

Og det er en del av det dette prosjektet handler om, å ta noe så abstrakt som det binære systemet ut i den virkelige verden og bli bedre kjent med det.

Trinn 11: Bruke den binære vekkerklokken

Bruk av binær vekkerklokke
Bruk av binær vekkerklokke
Bruk av binær vekkerklokke
Bruk av binær vekkerklokke
Bruk av binær vekkerklokke
Bruk av binær vekkerklokke

Nå vil vi endelig leke med klokken, så la oss ta en rask titt på kontrollene.

Programvaren kan skille mellom et enkelt knappetrykk, et dobbeltklikk og et langt trykk. Så hver knapp kan brukes til flere handlinger.

Et dobbeltklikk på opp eller ned -knappen endrer fargemodusen til LED -en. Du kan velge mellom forskjellige statiske og falmende fargemoduser, samt en temperaturmodus. Hvis du er i en av de statiske fargemodusene, holder du opp- eller ned -knappen endret fargen. I en fading -modus endrer et enkelt trykk animasjonshastigheten.

For å stille inn dimmermodus, dobbelttrykker du på ok -knappen. LED -panelet indikerer innstilt modus ved å blinke flere ganger.

  • En gang betyr ingen dimmer.
  • To ganger betyr at lysstyrken styres av lyssensoren.
  • Tre ganger og lysdiodene slås av automatisk etter 10 sekunders inaktivitet.
  • Fire ganger og begge dimmermodusene er kombinert.

Hvis du trykker lenge på ok -knappen, kommer du til tidsinnstillingsmodus, der du kan bruke pil opp og ned for å endre nummeret. Et enkelt trykk på ok -knappen tar deg fra timene til minuttene, ett trykk til, og du kan angi sekunder. Etter det sparer et siste trykk den nye tiden. Hvis du accedentialy går inn i tidsinnstillingsmodus, kan du bare vente i 10 sekunder og klokken vil automatisk forlate den.

Som med ok -knappen kan du stille alarmen ved å trykke lenge på alarmknappen. Dobbelttrykk på alarmknappen aktiverer eller deaktiverer alarmen.

Hvis klokken ringer, trykker du enkelt på alarmknappen for å sende den i dvale i 5 minutter eller holde den inne for å deaktivere deaktivering av alarmen.

Dette var alle funksjonene klokken har så langt. Jeg kan legge til flere i fremtiden som du kan få hvis du laster ned den nyeste fastvareversjonen.

Trinn 12: Forstå koden (valgfritt)

Forstå koden (valgfritt)
Forstå koden (valgfritt)

Jeg vet at mange mennesker ikke liker programmering særlig godt. Heldigvis for disse menneskene er det nesten ingen programmeringskunnskap som kreves for å bygge og bruke denne binære klokken. Så hvis du ikke bryr deg om programmeringssiden, kan du bare hoppe over dette trinnet.

Imidlertid, hvis du er interessert i kodingsdelen, vil jeg gi deg en generell oversikt over programmet.

Å forklare hver minste detalj av klokkekoden ville være en instruerbar på egen hånd, så jeg vil holde det enkelt ved å forklare programmet på en objektorientert måte.

Hvis du ikke vet hva det betyr, er objektorientert programmering (OOP) et konsept for de fleste moderne programmeringsspråk som C ++. Den lar deg organisere forskjellige funksjoner og variabler i såkalte klasser. En klasse er en mal som du kan lage ett eller flere objekter fra. Hvert av disse objektene får et navn og sitt eget sett med variabler.

For eksempel bruker klokkens kode et par MultiTouchButton -objekter som alarmButton. Det er objekter fra klassen MultiTouchButton, som er en del av Button -biblioteket mitt. Det som er kult med disse objektene er at du kan grensesnitt med dem som ligner på virkelige objekter. For eksempel kan vi kontrollere om alarmknappen ble dobbeltklikket ved å ringe alarmButton.wasDoubleTapped (). Videre er implementeringen av denne funksjonen pent gjemt i en annen fil, og vi trenger ikke bekymre deg for å bryte den ved å endre noe annet i koden vår. En rask inngang til verden av objektorientert programmering finner du på Adafruit -nettstedet.

Som du kan se i grafikken ovenfor, har klokkeprogrammet en haug med forskjellige objekter.

Vi snakket nettopp om knappobjektene, som kan tolke inngangssignaler som et trykk, et dobbelttrykk eller et langt trykk.

Jukeboksen, som navnet antyder, kan lage støy. Den har flere melodier som kan spilles gjennom en liten høyttaler.

BinaryClock -objektet administrerer tid og alarminnstillinger, samt alarmvisning. Det får dessuten tid fra rtc -modulen og konverterer den til en binær informasjonsbuffer for ledPanel.

ColorController inkapsler alle fargeeffektfunksjonene og gir colorBuffer for ledPanel. Det sparer også tilstanden i Arduinos EEProm.

Dimmeren tar seg av klokkenes lysstyrke. Den har forskjellige moduser som brukeren kan sykle gjennom. Gjeldende modus lagres også i EEProm.

LedPanel administrerer forskjellige buffere for fargeverdi, lysstyrkeverdi og binær tilstand for hver LED. Når pushToStrip () -funksjonen kalles, overlapper den dem og sender dem til LED -stripen.

Alle objektene er "tilkoblet" gjennom hoveddelen (filen med oppsett- og sløyfefunksjonene), som bare inneholder et par funksjoner for å utføre 3 viktige oppgaver.

  1. Tolke brukerinndata - Det får input fra de fire knappene og setter dem gjennom en logikk. Denne logikken sjekker klokkens nåværende tilstand for å avgjøre, om klokken er i normal, tidsinnstilling eller ringemodus og kaller forskjellige funksjoner fra de andre objektene tilsvarende.
  2. Håndtere kommunikasjon mellom objekter - Den spør konstant om det binære klokkeobjektet, om det har ny informasjon tilgjengelig eller om alarmen ringer (). Hvis den har ny informasjon, får den informationBuffer fra binaryClock og sender den til ledPanel -objektet. Hvis klokken ringer starter jukeboksen.
  3. Oppdatere objekter - Hvert av programmets objekter har en oppdateringsprosedyre, som brukes til ting som å kontrollere innganger eller endre LED -fargene. De må ringes flere ganger i sløyfefunksjonen for at klokken skal fungere skikkelig.

Det bør gi deg en generell forståelse av hvordan de enkelte kodene fungerer sammen. Hvis du har mer spesifikke spørsmål, kan du bare spørre meg.

Siden min kode definitivt er langt fra perfekt, vil jeg forbedre den ytterligere i fremtiden, så noen få funksjoner kan endre seg. Det som er kult med OOP er at det fortsatt vil fungere på en veldig lik måte, og at du fortsatt kan bruke grafikken til å forstå det.

Trinn 13: Siste ord

Siste ord
Siste ord

Jeg er glad for at du fortsatte å lese til dette punktet. Det betyr at prosjektet mitt ikke var for kjedelig:).

Jeg legger massevis av arbeid i denne lille klokken og enda mer arbeid i all dokumentasjon og video, for å gjøre det enkelt for deg å bygge din egen binære vekkerklokke. Jeg håper innsatsen min var verdt det, og jeg kan koble deg til en god idé for ditt neste helgeprosjekt eller i det minste gi deg litt inspirasjon.

Jeg vil gjerne høre hva du synes om klokken i kommentarene nedenfor:).

Selv om jeg prøvde å dekke alle detaljer, har jeg kanskje savnet en ting eller to. Så spør gjerne om det er noen spørsmål igjen.

Som alltid, tusen takk for at du leser og liker å lage.

LED -konkurranse 2017
LED -konkurranse 2017
LED -konkurranse 2017
LED -konkurranse 2017

Runner Up i LED -konkurransen 2017

Anbefalt: