Inhoudsopgave:

Arduino-gebaseerde binaire wekker - Ajarnpa
Arduino-gebaseerde binaire wekker - Ajarnpa

Video: Arduino-gebaseerde binaire wekker - Ajarnpa

Video: Arduino-gebaseerde binaire wekker - Ajarnpa
Video: 4 LED Binary Counter || Arduino 2024, Juli-
Anonim
Image
Image

Door Basement EngineeringVolg meer van de auteur:

Doe-het-zelf lasermensenteller
Doe-het-zelf lasermensenteller
Een zelfrijdende boot bouwen (ArduPilot Rover)
Een zelfrijdende boot bouwen (ArduPilot Rover)
Een zelfrijdende boot bouwen (ArduPilot Rover)
Een zelfrijdende boot bouwen (ArduPilot Rover)
De perfecte bedlamp en telefoondock
De perfecte bedlamp en telefoondock
De perfecte bedlamp en telefoondock
De perfecte bedlamp en telefoondock

Over: Hallo, mijn naam is Jan en ik ben een maker, ik hou van dingen bouwen en creëren en ik ben ook best goed in het repareren van dingen. Sinds ik kan denken, heb ik er altijd van gehouden om nieuwe dingen te creëren en dat is wat ik blijf doen tot… Meer over keldertechniek »

Hallo, vandaag wil ik je laten zien hoe je een van mijn nieuwste projecten, mijn binaire wekker, kunt bouwen.

Er zijn heel veel verschillende binaire klokken op internet, maar dit is misschien wel de eerste, gemaakt van een strook kleurrijke adresseerbare LED's, die ook een alarmfunctie en aanraakknoppen heeft, om zaken als de tijd en de kleur in te stellen.

Laat je alsjeblieft niet afschrikken door het ingewikkelde uiterlijk ervan. Met een beetje uitleg is binair lezen eigenlijk niet zo moeilijk als het lijkt. En als je bereid bent iets nieuws te leren, wil ik je daar later graag bij helpen.

Laat me je iets vertellen over het verhaal achter dit project:

Ik was oorspronkelijk van plan om een "normale" klok te bouwen, die LED's gebruikt als wijzers, maar ik had niet genoeg LED's bij de hand.

Sooo, wat doe je als je de tijd wilt weergeven met zo min mogelijk LED's?

Je wordt binair, en dat is precies wat ik hier deed.

Deze klok is de derde versie in zijn soort. Ik bouwde een heel eenvoudig prototype direct nadat het projectidee me raakte en nam het mee naar de Maker Faire in Hannover, om te zien wat mensen ervan vinden. Terwijl ik daar was, heb ik veel zeer positieve en interessante feedback gekregen, evenals ideeën voor verbetering.

Het resultaat van al die ideeën en uren van denken, knutselen en programmeren, is deze nogal interessant ogende kleine wekker, die veel meer functies heeft dan versie 1.0 en vandaag gaan we elke stap van het bouwproces doornemen, zodat je kunt eenvoudig zelf een bouwen.

Er is ook een zeer gedetailleerde video op YouTube, voor het geval je niet alles wilt lezen.

Stap 1: Pak je spullen

Pak je spullen
Pak je spullen
Pak je spullen
Pak je spullen
Pak je spullen
Pak je spullen

Hier is een kleine lijst van alle componenten en tools die je nodig hebt om je eigen binaire klok te bouwen.

Elektronica:

  • 18 adresseerbare Ws2811 LED's (bijv. Neopixels) op een strip met 60 LED's per m (ebay)
  • Arduino Nano (met ATMega328-processor) (ebay)
  • 1307 RTC-module (ebay)
  • 4X Capacitieve aanraakknoppen (ebay)
  • bs18b20 digitale temperatuursensor (ebay)
  • LDR (ebay)
  • laptop/smartphone-luidspreker of piëzo-zoemer
  • 2222A NPN-transistor (of iets dergelijks)
  • mannelijke koppen
  • schuine vrouwelijke headers (ebay)
  • 1kOhm weerstand
  • 4, 7kOhm weerstand
  • 10kOhm weerstand
  • Draden
  • 7x5cm prototyping PCB 24x18 gaten (ebay)
  • zilverdraad (sieradendraad) (ebay)
  • 90 ° mini-usb-adapter (ebay)

Andere materialen

  • Vinylfolie
  • 4X 45mm m4 flenskopschroeven (ebay)
  • 32X m4 metalen ringen
  • 4X m4 borgmoer
  • 28X m4 moer
  • 4X 10mm m3 messing PCB afstandhouder (ebay)
  • 8X 8mm m3 schroef (ebay)
  • plaat van aluminium
  • 2 mm vel melkachtig acryl
  • 2 mm plaat van helder acryl
  • 3 mm plaat MDF
  • dubbelzijdige tape

Gereedschap

  • mini-USB-kabel
  • computer waarop de Arduino IDE draait
  • 3,5 mm boortje
  • 4,5 mm boor
  • boormachine
  • snijmes
  • coping zaag
  • soldeer ionen
  • metalen knipschaar
  • het dossier
  • schuurpapier

Sjablonen (nu met afmetingen)

  • PDF
  • Libre Office Draw

Code

  • schetsen
  • Knopbibliotheek
  • Timerbibliotheek
  • Jukebox-bibliotheek
  • Gewijzigde RTClib
  • Adafruit Neopixel-bibliotheek
  • Arduino-Temperatuur-Control-Bibliotheek

Stap 2: Snijd het voor- en achterpaneel

Snijd het voor- en achterpaneel
Snijd het voor- en achterpaneel
Snijd het voor- en achterpaneel
Snijd het voor- en achterpaneel
Snijd het voor- en achterpaneel
Snijd het voor- en achterpaneel
Snijd het voor- en achterpaneel
Snijd het voor- en achterpaneel

Het eerste stuk dat we gaan maken is het acryl frontpaneel. We markeren waar we willen dat onze sneden gaan, terwijl we in gedachten houden dat we een beetje tolerantie voor schuren willen. Daarna schrapen we het acryl eenvoudig met ons snijmes. Nadat we dat 10 tot 20 keer hebben gedaan, hebben we een groef. We kunnen dat bosje dan op de rand van een tafel plaatsen en het acryl buigen totdat het breekt.

Nadat het voorpaneel op maat is gesneden, snijden we het achterpaneel uit een stuk MDF. We kunnen hiervoor onze copingzaag gebruiken maar een snijmes werkt ook. We hoeven alleen de MDF op een stuk hout te klemmen en het met ons snijmes te schrapen totdat het mes erdoor gaat en we twee afzonderlijke stukken hebben.

Nu sandwichen we de twee panelen samen en schuren we elke kant om perfect uit te lijnen.

Nadat dit is gebeurd, snijden we de eerste sjabloon uit en plakken deze op de twee panelen met wat tape en beginnen met het boren van de gemarkeerde gaten.

Eerst boren we een gat van 4,5 mm in elk van de 4 hoeken. Omdat het acryl erg broos is en we niet willen dat het breekt, beginnen we met een kleine boor en werken we omhoog totdat we de gewenste gatdiameter hebben bereikt. Vervolgens gebruiken we de sjabloon om de hoeken in de juiste vorm te schuren.

Stap 3: Werk het achterpaneel af

Voltooi het achterpaneel
Voltooi het achterpaneel
Voltooi het achterpaneel
Voltooi het achterpaneel
Voltooi het achterpaneel
Voltooi het achterpaneel
Voltooi het achterpaneel
Voltooi het achterpaneel

Voor nu kunnen we het voorpaneel opzij leggen en de tweede sjabloon op het achterpaneel plakken, waar we een boor van 3,5 mm moeten gebruiken om de gaten voor onze 4 pcb-afstandhouders te boren, evenals 4 gaten die de randen markeren voor het kleine achterraam.

Vervolgens gebruiken we onze copingzaag om het raam uit te snijden en de randen glad te maken met een vijl. Je wilt ook niet vergeten om het gat voor de mini-USB-kabel te boren (ik heb gehoord van een niet zo gefocuste maker, die de neiging heeft om zulke dingen te doen:D).

Omdat we nu klaar zijn met het snijden van het achterpaneel, kunnen we het in vinylfolie wikkelen. We snijden eenvoudig twee stukken op de juiste maat en brengen de eerste op een kant aan. Daarna snijden we de randen weg en maken we het raam vrij. Een föhn kan helpen om alle gaatjes weer zichtbaar te maken, zodat we ze ook kunnen wegknippen. Nadat we hetzelfde voor de andere kant hebben gedaan, gebruiken we onze volgende sjabloon en onze schraap- en breektechniek om het kleine acrylvenster voor ons achterpaneel te maken.

Stap 4: Maak het LED-paneel

Maak het LED-paneel
Maak het LED-paneel
Maak het LED-paneel
Maak het LED-paneel
Maak het LED-paneel
Maak het LED-paneel

Nu komen we bij het hoogtepunt van dit project, in de meest letterlijke zin. Het LED-paneel.

We gebruiken onze metalen knipschaar om een stuk van 12, 2 cm bij 8 cm uit een plaat metaal te knippen. Wees voorzichtig terwijl u dit doet, want de schaar maakt zeer scherpe randen. Die gaan we gladstrijken met ons bestand en wat schuurpapier. Vervolgens voegen we onze volgende sjabloon toe om gaten te boren voor de schroeven en de draden.

Tijd om de eigenlijke LED's voor te bereiden.

Eerst snijden we ze in drie stroken van elk 6 LED's. Sommige ledstrips hebben een heel dunne lijmlaag of helemaal geen lijm, dus we gaan onze strips op een stukje dubbelzijdig plakband plakken en met een mes op maat snijden. Hierdoor blijft het aan de metalen plaat plakken en, hoewel dit geen professionele oplossing is, isoleert het de koperen pads van het metalen oppervlak eronder.

Voordat we de strips daadwerkelijk op het paneel plakken, maken we deze schoon met alcohol. Terwijl we de LED's bevestigen, moeten we ervoor zorgen dat we ze zowel op de juiste plaats als in de goede richting neerzetten. De kleine pijltjes op de ledstrip geven de richting aan waarin de gegevens door de strip gaan.

Zoals je op de vijfde afbeelding kunt zien, komt onze datalijn uit de linkerbovenhoek van het paneel, gaat door de eerste strook helemaal naar de rechterkant, dan terug naar het begin van de volgende strook aan de linkerkant enzovoort. Dus al onze pijlen moeten naar de rechterkant wijzen.

Laten we onze soldeerionen opwarmen en wat tin op de koperen pads doen, evenals op onze draad. De datalijnen zijn aangesloten zoals ik zojuist heb beschreven, terwijl we gewoon de plus- en min-pads van de strip parallel aan elkaar haken.

Nadat de strips zijn bedraad, gebruiken we ons mes om de uiteinden van elke strip voorzichtig op te tillen terwijl we de LED's naar beneden houden, zodat ze nog steeds naar boven wijzen. Daarna doen we er wat hete lijm onder om onze soldeerverbindingen te isoleren.

Nadat dit is gebeurd, voegen we een paar header-pinnen toe aan de draden die naar de PCB gaan. Die draden moeten ongeveer 16 cm lang zijn. Om er zeker van te zijn dat het metalen paneel niets kortsluit, gebruiken we een multimeter om de weerstand tussen alle pinnen te meten. Als er iets boven de 1kOhm wordt weergegeven, is alles in orde.

Nu kunnen we hem aansluiten op een Arduino, een strandtest doen en genieten van de kleuren.

Stap 5: Maak een lichtgids

Maak een lichtgids
Maak een lichtgids
Maak een lichtgids
Maak een lichtgids
Maak een lichtgids
Maak een lichtgids
Maak een lichtgids
Maak een lichtgids

Als we ons led-paneel direct achter het melkachtige acryl plaatsen, kan het behoorlijk lastig worden om individuele LED's van elkaar te onderscheiden. Dit zou onze klok nog moeilijker te lezen maken dan hij al is.

Om dit probleem op te lossen, gaan we een kleine lichtgids maken. Hiervoor snijden we gewoon een ander stuk MDF uit, dat even groot is als het frontpaneel. Dan voegen we er nog een sjabloon aan toe en boren we achttien gaten van 3,5 mm voor de LED's en vier gaten van 4,5 mm voor de schroeven erin. We kunnen het dan vastklemmen aan het voorpaneel en wat schuurpapier gebruiken om de twee uit te lijnen.

Zoals je op de laatste foto kunt zien, lijkt het licht nu veel meer gefocust.

Stap 6: Maak het knopframe

Maak het knopframe
Maak het knopframe
Maak het knopframe
Maak het knopframe
Maak het knopframe
Maak het knopframe

Het laatste onderdeel van de behuizing, dat we gaan maken, is het knoppenframe.

Wij, weer eens, snijden een stuk MDF op de juiste maat en voegen er een sjabloon aan toe, dan boren we alle benodigde gaten en gebruiken onze copingzaag om het middengedeelte uit te snijden.

Ons frame zou de 4 aanraakknoppen, de lichtsensor en onze kleine luidspreker op hun plaats moeten houden. Voordat we ze aan het frame kunnen bevestigen, snijden we een paar kleinere afdekstukken uit MDF. Vervolgens lijmen we onze componenten op die deksels en voegen er draden aan toe.

De powerpads van de aanraakknop zijn parallel aangesloten, terwijl elke uitgangslijn een individuele draad krijgt. Dit is ook een goed moment om te testen of ze allemaal werken. Omdat de lichtsensor aan de ene kant 5 volt nodig heeft, kunnen we hem eenvoudig aansluiten op de VCC-pad van de alarmknoppen en een draad aan het andere been solderen.

Nadat de panelen zijn voorbereid, snijden we in de zijkanten van het frame om ruimte te maken voor hen en hun draden.

Daarna verwijderen we het houtstof van alle stukken met een stofzuiger en bedekken ze met vinylfolie.

We gebruiken het precisiemes om stukjes vinyl te verwijderen, direct boven de gevoelige delen van onze aanraakmodules. Met wat dubbelzijdig plakband kunnen we dan onze eigen knopen op de MDF bevestigen. Ik heb mijn knopen gemaakt van schuimrubber, waardoor ze een mooie, zachte textuur hebben, maar je kunt elk niet-metalen materiaal gebruiken dat je wilt.

Op het frame gebruiken we ons mes om weer een klein beetje MDF los te maken, wat ons een gripvast oppervlak geeft voor de hotglue. Dan kunnen we eindelijk de onderdelen aan de zijkanten van ons frame lijmen.

Stap 7: Soldeer de hoofdprintplaat

Soldeer de hoofdprintplaat
Soldeer de hoofdprintplaat
Soldeer de hoofdprintplaat
Soldeer de hoofdprintplaat
Soldeer de hoofd-PCB
Soldeer de hoofd-PCB

Laten we het frame laten zoals het nu is en verder gaan met de PCB. U ziet de PCB-lay-out in de eerste afbeelding.

We beginnen met het plaatsen van de componenten met het laagste profiel op de printplaat. De kleinste componenten zijn de draadbruggen, die ik me iets te laat herinnerde, dus begon ik met de weerstanden. We solderen onze componenten op hun plaats en gaan door naar de volgende hogere set componenten.

Vervolgens hebben we onze vrouwelijke header-pinnen. Om wat ruimte te besparen en om onze elektronica vanaf de zijkant in te kunnen steken, monteren we die in een hoek van 90 graden.

Transistors passen niet echt in de 2,54 mm gatafstand van onze PCB, dus gebruiken we onze tang om hun poten voorzichtig in de vorm te buigen, zoals weergegeven in de tweede afbeelding. We solderen eerst een van hun pootjes vast en draaien de print om. Vervolgens verwarmen we de soldeerverbinding opnieuw en gebruiken onze vinger of een tang om het onderdeel goed te positioneren. Nu kunnen we de andere twee poten op hun plaats solderen.

Na alle kleine componenten solderen we onze Arduino en onze real-time klokmodule op zijn plaats. De RTC-module past ook niet zo goed in de gatafstand, dus we gaan alleen de zijkant uitrusten, die 7 soldeerpunten heeft met header-pinnen. Verder doen we er wat tape onder om eventuele kortsluiting te voorkomen.

Omdat al onze componenten op hun plaats zijn gesoldeerd, is het nu tijd om de verbindingen aan de andere kant van het bord te maken. Hiervoor gaan we onze niet-geïsoleerde draad eruit halen. Een tang kan worden gebruikt om het recht te trekken. Daarna knippen we de draad in kleinere stukjes en solderen deze op de printplaat.

Om een verbinding tot stand te brengen, verhitten we een soldeerverbinding en steken we de draad erin. We houden dan het soldeerion erop, totdat het de juiste temperatuur bereikt en het soldeer omsluit het en we krijgen een verbinding, die lijkt op die op de foto. Als we de draad niet opwarmen, kunnen we eindigen met een koude verbinding, die lijkt op het andere voorbeeld en niet erg goed geleidt. We kunnen onze draadknipper gebruiken om de draad tijdens het solderen naar beneden te duwen en ervoor te zorgen dat deze plat op de print ligt. Op langere verbindingspaden solderen we het om de 5 tot 6 gaten op een enkele pad totdat we een hoek of het volgende onderdeel bereiken.

In een hoek knippen we de draad boven de eerste helft van een soldeerpad en solderen het uiteinde eraan. We nemen dan een nieuw stuk draad en gaan van daaruit in een rechte hoek verder.

Het maken van die blanco draadverbindingen is behoorlijk lastig en vereist enige vaardigheid, dus als je dit voor de eerste keer doet, is het zeker geen slecht idee om het te oefenen op een oud PCB, voordat je het op de echte probeert te doen.

Nadat we klaar zijn met solderen, controleren we de aansluitingen opnieuw en zorgen we ervoor dat we geen kortsluiting hebben veroorzaakt. Vervolgens kunnen we de print in het knopframe plaatsen en deze als referentie gebruiken voor de benodigde framedraadlengtes. We knippen die draden vervolgens op de juiste lengte en voegen er mannelijke header-pinnen aan toe.

Alle 5V- en massaverbindingen van de aanraakknoppen komen samen in een 2-pins connector. De 4 uitgangsdraden krijgen een 4-pins connector en de lichtsensorlijn en de twee luidsprekerdraden worden samengevoegd tot een driepins connector. Vergeet niet om één kant van elke socket en connector te markeren met een scherpe punt of wat tape, zodat je ze niet per ongeluk op de verkeerde manier aansluit.

Stap 8: Monteer de klok

Monteer de klok
Monteer de klok
Monteer de klok
Monteer de klok
Monteer de klok
Monteer de klok
Monteer de klok
Monteer de klok

Hierna ging ik terug naar het frontpaneel en bracht als finishing touch voorzichtig een sticker aan, gemaakt van transparante laserprinterfolie.

Hoewel ik het heel voorzichtig heb aangebracht, kon ik geen luchtbelvrij resultaat krijgen, wat helaas duidelijk zichtbaar is bij nadere inspectie. De folie plakt ook niet zo goed aan de hoeken, dus ik kan deze oplossing niet echt aanraden.

Het kan waarschijnlijk worden gedaan met een betere sticker, of, als je goed bent in tekenen, kun je de cijfers toevoegen met een sharpie.

Nu hebben we alle onderdelen en kunnen we onze klok in elkaar zetten.

We beginnen met het in elkaar zetten van de lichtgeleider en het frontpaneel. Nadat alle 4 de bouten erin zitten, lijn we de twee panelen uit en draai ze vervolgens vast. Een paar noten later komt het lichtpaneel, waar we naar de richting moeten kijken. De kabel moet aan de bovenkant zitten.

Het derde stuk is het knopenframe. Houd er rekening mee dat, als je vanaf de voorkant kijkt, de luidspreker zich aan de rechterkant van de klok moet bevinden. Trek de kabel van je ledpaneel door het midden van het frame, voordat je hem vastzet.

Nu leggen we het voorpaneel opzij en gaan we verder met het achterpaneel. Op de foto zie je ook mijn prachtige zelfgemaakte 90 graden mini USB Adapter. Ik heb je een goede adapter gekoppeld, zodat je niet met dit soort rommel te maken krijgt. U kunt eenvoudig uw adapter aansluiten en de kabel door een gat in het achterpaneel leiden.

We nemen onze M3-schroeven en onze PCB-afstandhouders om het kleine venster te bevestigen. Het is belangrijk om de schroeven goed vast te draaien, omdat we ons acrylaat niet willen beschadigen. Dan nemen we onze printplaat, pluggen onze adapter in en schroeven deze op de afstandhouders. De componentzijde moet naar het raam wijzen, terwijl de USB-poort van de Arduino naar de onderkant van de klok wijst.

Vervolgens pluggen we alle connectoren van het voorpaneel in, terwijl we rekening houden met de polariteit en knijpen we voorzichtig alle draden in de klok. We kunnen het dan afsluiten met het achterpaneel en de 4 resterende borgmoeren vastdraaien.

Uiteindelijk wil je aan elke kant van elk paneel een sluitring, terwijl de lichtgeleider direct achter het frontpaneel wordt geplaatst. We hebben een moer tussen de lichtgeleider en het led-paneel en nog twee, die het scheiden van het knopframe. Dat zie je ook op de laatste foto.

Omdat ik korte bouten met een lengte van 40 mm heb gebruikt, heb ik slechts 3 moeren die het achterpaneel en het frame uit elkaar houden. Met de juiste bouten van 45 mm zou je hier nog een moer toevoegen, evenals een of twee extra ringen. Aan het einde van de montage hebben we onze borgmoer, zodat alles op zijn plaats blijft.

Stap 9: Upload de code en kalibreer de lichtsensor

Upload de code en kalibreer de lichtsensor
Upload de code en kalibreer de lichtsensor
Upload de code en kalibreer de lichtsensor
Upload de code en kalibreer de lichtsensor
Upload de code en kalibreer de lichtsensor
Upload de code en kalibreer de lichtsensor

Tijd om onze code te uploaden.

Eerst downloaden we alle benodigde bestanden en unzip ze. We openen vervolgens onze map Arduino-bibliotheken en laten alle nieuwe bibliotheken erin vallen.

Nu openen we de kalibratieschets van de lichtsensor, waarmee we de heldere en donkere waarden krijgen voor de automatische dimmerfunctie van de klok. We uploaden het, openen de seriële monitor en volgen de instructies op het scherm.

Nadat dat is gebeurd, openen we de werkelijke code van de binaire klokken en vervangen we de twee waarden door de waarden die we zojuist hebben gemeten.

We sluiten alle andere vensters, uploaden de code naar onze klok en we zijn klaar.

Tijd om te spelen met onze nieuwe gadget.

Stap 10: Een snelle introductie tot het binaire systeem

Een snelle introductie tot het binaire systeem
Een snelle introductie tot het binaire systeem
Een snelle introductie tot het binaire systeem
Een snelle introductie tot het binaire systeem
Een snelle introductie tot het binaire systeem
Een snelle introductie tot het binaire systeem
Een snelle introductie tot het binaire systeem
Een snelle introductie tot het binaire systeem

Voordat we verder gaan, wil ik de enige vraag beantwoorden die waarschijnlijk al door je hoofd is gegaan, 'Hoe lees je deze klok in hemelsnaam af?'

Welnu, hiervoor wil ik u een korte inleiding geven tot het binaire systeem.

We kennen allemaal het decimale systeem, waarbij elk cijfer 10 verschillende toestanden kan hebben, variërend van 0 tot 9. In binair kan elk cijfer maar twee toestanden hebben, ofwel 1 of 0. Daarom kun je zoiets eenvoudigs als een led gebruiken om een binair getal weergeven.

Om getallen weer te geven die groter zijn dan 9 in decimalen, voegen we meer cijfers toe. Elk cijfer wordt geleverd met een bepaalde vermenigvuldiger. Het eerste cijfer van rechts komt met een vermenigvuldiger van 1, de volgende is 10 en de volgende is 100. Bij elk nieuw cijfer is de vermenigvuldiger tien keer zo groot als die van het voorgaande cijfer. We weten dus dat het getal twee, een cijfer naar links geplaatst, het getal 20 vertegenwoordigt. Terwijl twee cijfers naar links, vertegenwoordigt het 200.

In het binaire systeem heeft elk cijfer ook een vermenigvuldiger. Omdat elk cijfer echter maar twee verschillende toestanden kan hebben, is elke nieuwe vermenigvuldiger twee keer zo groot als de vorige. Oh en trouwens, binaire cijfers heten Bits. Dus laten we eens kijken naar ons eerste voorbeeld, als we een 1 op de laagste positie plaatsen, is het een eenvoudige 1, maar als we het op de volgende hogere positie plaatsen, waar onze vermenigvuldiger 2 is, vertegenwoordigt het het getal 2 in binair getal.

Wat dacht je van het iets lastigere voorbeeld onderaan de foto. De derde en de eerste bits zijn aan. Om het decimale getal te krijgen dat hier wordt weergegeven, voegen we eenvoudig de waarden van de twee bits toe. Dus 4 * 1 + 1*1 of 4+1 geeft ons het getal 5.

8 bits worden een byte genoemd, dus laten we eens kijken welk getal we krijgen als we een hele byte vullen met enen.1+2+4+8+16+32+64+128 dat is 255, wat de hoogste waarde is die een enkele byte kan hebben.

Trouwens, terwijl in het decimale stelsel het cijfer met de hoogste vermenigvuldiger altijd eerst komt, heb je twee manieren om een getal binair op te schrijven. Deze twee methoden worden de minst significante byte eerst (LSB) en de meest significante byte eerst (MSB) genoemd. Als u een binair getal wilt lezen, moet u weten welke van de twee formaten wordt gebruikt. Omdat het dichter bij het decimale systeem ligt, gebruikt onze binaire klok de MSB-variant.

Laten we teruggaan naar ons voorbeeld uit de echte wereld. Zoals gemarkeerd in de zesde afbeelding, heeft onze klok 4 bits om het uur weer te geven. Dan hebben we 6 bits voor de minuut en ook 6 bits voor de seconde. Verder hebben we een enkel am/pm bit.

Oké, vertel me hoe laat het is op de 6e foto, ga dan naar de laatste.. ….

in het uurgedeelte hebben we 2+1 wat 3 is en het pm-bit staat aan, dus het is avond. Volgende minuut 32+8, dat is 40. Voor de seconden hebben we 8+4+2 wat 14 is. Het is dus 15:40:14 uur of 15:40:14.

Gefeliciteerd, je hebt net een binaire klok leren lezen. Natuurlijk is het even wennen en in het begin zul je de cijfers bij elkaar moeten optellen, elke keer dat je wilt weten hoe laat het is, maar vergelijkbaar met een analoge klok zonder wijzerplaat, raak je gewend aan de patronen van de LED's tijd.

En dat is een deel van waar dit project over gaat, iets zo abstracts als het binaire systeem naar de echte wereld brengen en het beter leren kennen.

Stap 11: De binaire wekker gebruiken

De binaire wekker gebruiken
De binaire wekker gebruiken
De binaire wekker gebruiken
De binaire wekker gebruiken
De binaire wekker gebruiken
De binaire wekker gebruiken

Nu willen we eindelijk wat met de klok spelen, dus laten we even de besturing bekijken.

De software kan onderscheid maken tussen een enkele tik op de knop, een dubbele tik en een lange tik. Elke knop kan dus voor meerdere acties worden gebruikt.

Een dubbele tik op de knop omhoog of omlaag verandert de kleurmodus van de LED. U kunt kiezen tussen verschillende statische en vervagende kleurmodi, evenals een temperatuurmodus. Als u zich in een van de statische kleurmodi bevindt, verandert de kleur door de knop omhoog of omlaag ingedrukt te houden. In een vervagende modus verandert een enkele tik de snelheid van de animaties.

Om de dimmermodus in te stellen, dubbeltik je op de ok-knop. Het led-paneel geeft de ingestelde modus aan door meerdere keren te knipperen.

  • Eenmalig betekent geen dimmer.
  • Twee keer betekent dat de helderheid wordt geregeld door de lichtsensor.
  • Drie keer en de LED's gaan automatisch uit na 10 seconden inactiviteit.
  • Vier keer en beide dimmermodi worden gecombineerd.

Als u lang op de ok-knop drukt, komt u in de tijdinstellingsmodus, waar u de pijlen omhoog en omlaag kunt gebruiken om het nummer te wijzigen. Een enkele tik op de ok-knop brengt u van de uren naar de minuten, nog een keer tikken en u kunt de seconden instellen. Daarna slaat een laatste tik de nieuwe tijd op. Als u bijkomend naar de tijdinstellingsmodus gaat, kunt u gewoon 10 seconden wachten en de klok zal deze automatisch verlaten.

Net als bij de ok-knop kunt u door lang op de alarmknop te drukken het alarm instellen. Dubbel tikken op de alarmknop activeert of deactiveert het alarm.

Als de klok rinkelt, tikt u één keer op de alarmknop om deze 5 minuten in de slaapstand te zetten of houdt u deze ingedrukt om het alarm uit te schakelen.

Dit waren alle functies die de klok tot nu toe heeft. Ik kan in de toekomst meer toevoegen die u kunt krijgen, als u de nieuwste firmwareversie downloadt.

Stap 12: De code begrijpen (optioneel)

De code begrijpen (optioneel)
De code begrijpen (optioneel)

Ik weet dat veel mensen niet zo van programmeren houden. Gelukkig voor die mensen is er bijna geen programmeerkennis vereist om deze binaire klok te bouwen en te gebruiken. Dus als je niet om de programmeerkant geeft, kun je deze stap gewoon overslaan.

Als u echter geïnteresseerd bent in het codeergedeelte, wil ik u graag een algemeen overzicht van het programma geven.

Het uitleggen van elk klein detail van de klokcode zou een Instructable op zich zijn, dus ik zal het simpel houden door het programma op een objectgeoriënteerde manier uit te leggen.

Voor het geval je niet weet wat dat betekent, objectgeoriënteerd programmeren (OOP) is een concept van de meeste moderne programmeertalen zoals C++. Hiermee kunt u verschillende functies en variabelen organiseren in zogenaamde klassen. Een klasse is een sjabloon van waaruit u een of meerdere objecten kunt maken. Elk van deze objecten krijgt een naam en een eigen set variabelen.

De code van de klok gebruikt bijvoorbeeld een aantal MultiTouchButton-objecten, zoals de alarmButton. Dat zijn objecten uit de klasse MultiTouchButton, die deel uitmaakt van mijn Button-bibliotheek. Het leuke van die objecten is dat je ermee kunt communiceren, vergelijkbaar met objecten uit de echte wereld. We kunnen bijvoorbeeld controleren of de alarmknop dubbel is getikt door alarmButton.wasDoubleTapped() aan te roepen. Bovendien is de implementatie van deze functie mooi verborgen in een ander bestand en hoeven we ons geen zorgen te maken over het breken ervan, door iets anders in onze code te veranderen. Een snelle instap in de wereld van objectgeoriënteerd programmeren is te vinden op de website van Adafruit.

Zoals je in de bovenstaande afbeelding kunt zien, heeft het klokkenprogramma een heleboel verschillende objecten.

We hebben het net gehad over de knopobjecten, die ingangssignalen kunnen interpreteren als tikken, dubbel tikken of lang indrukken.

De jukebox kan, zoals de naam al doet vermoeden, geluid maken. Het heeft verschillende melodieën, die door een kleine luidspreker kunnen worden afgespeeld.

Het binaryClock-object beheert de tijd- en alarminstelling, evenals alarmbewaking. Het haalt bovendien de tijd uit de rtc-module en zet deze om in een binaire informatiebuffer voor het ledPanel.

De colorController omvat alle kleureffectfuncties en levert de colorBuffer voor het ledPanel. Het slaat ook zijn staat op in de Arduinos EEProm.

De dimmer zorgt voor de helderheid van de klokken. Het heeft verschillende modi waar de gebruiker doorheen kan bladeren. De huidige modus wordt ook opgeslagen in de EEProm.

Het ledPanel beheert verschillende buffers voor de kleurwaarde, helderheidswaarde en binaire toestand van elke LED. Telkens wanneer de functie pushToStrip() wordt aangeroepen, worden deze over elkaar gelegd en naar de ledstrip verzonden.

Alle objecten zijn "verbonden" via de main (het bestand met de setup- en loop-functies), die slechts een paar functies bevat om 3 essentiële taken uit te voeren.

  1. Gebruikersinvoer interpreteren - Het krijgt de invoer van de 4 knopobjecten en zet ze door een logica. Deze logica controleert de huidige status van de klok om te bepalen of de klok in de normale tijdinstelling of belmodus staat en roept dienovereenkomstig verschillende functies van de andere objecten op.
  2. Communicatie tussen objecten beheren - Het vraagt constant aan het binaryClock-object of er nieuwe informatie beschikbaar is of dat het alarm isRinging(). Als het nieuwe informatie heeft, haalt het de informatiebuffer uit de binaryClock en stuurt het naar het ledPanel-object. Als de klok luidt, start de jukebox.
  3. Objecten bijwerken - Elk object van het programma heeft een updateprocedure, die wordt gebruikt voor zaken als het controleren van invoer of het wijzigen van de kleuren van de LED's. Die moeten herhaaldelijk worden aangeroepen in de loop-functie om de klok goed te laten werken.

Dat zou u een algemeen begrip moeten geven van hoe de afzonderlijke stukjes code samenwerken. Als je meer specifieke vragen hebt, kun je die gewoon aan mij stellen.

Aangezien mijn code zeker verre van perfect is, zal ik hem in de toekomst verder verbeteren, dus een paar functies kunnen veranderen. Het leuke van OOP is dat het nog steeds op een vergelijkbare manier werkt en dat je de afbeelding nog steeds kunt gebruiken om het te begrijpen.

Stap 13: Laatste woorden

Laatste woorden
Laatste woorden

Ik ben blij dat je tot nu toe bent blijven lezen. Dat betekent dat mijn project niet al te saai was:).

Ik heb een hoop werk in deze kleine klok gestoken en nog meer werk in alle documentatie en de video, om het je gemakkelijk te maken, om je eigen binaire wekker te bouwen. Ik hoop dat mijn inspanning de moeite waard was en dat ik je met een geweldig idee voor je volgende weekendproject kan verbinden of je in ieder geval wat inspiratie kan geven.

Ik hoor graag wat je van de klok vindt in de reacties hieronder:).

Ook al heb ik geprobeerd om elk detail te behandelen, ik heb misschien een paar dingen gemist. Stel ze dus gerust als er nog vragen zijn.

Zoals altijd, heel erg bedankt voor het lezen en veel plezier met het maken.

LED-wedstrijd 2017
LED-wedstrijd 2017
LED-wedstrijd 2017
LED-wedstrijd 2017

Tweede plaats in de LED-wedstrijd 2017

Aanbevolen: