Arduino Magic Clock: 16 trin (med billeder)

Arduino Magic Clock: 16 trin (med billeder)

Indholdsfortegnelse:

Anonim

Hvad hvis et ur kunne fortælle dig mere end bare tiden? I denne vejledning skal vi lave et ur, der med et blik kan fortælle nogen, hvor du er, og bare for at krydre tingene op i omgivelserne. Okay, tag din Arduino og lad os komme i gang:)

Ting du skal bruge til dette vejledende:

  • Arduino
  • breadboard
  • ledninger
  • Træ (Balsa eller endda pap)
  • Servo
  • Temperatur måler
  • modstande
  • Hot Lim
  • Glitter
  • Papir

forsyninger:

Trin 1: Prototyping Clock Design

Start dit design ved at skrive ned de steder, du sandsynligvis vil være i løbet af dagen. Disse vil være de første få stillinger på uret, så tilføj et par sjove til at gøre dit ur unikt. Jeg tilføjede "Mortal Danger" og "Lost" til uret. Tænk nu på 5 ord for at beskrive temperaturen, fra superkold til super varm. Jeg brugte "freezing", "cold", "just right", "warm" og "swelter".

Dernæst gik jeg om at designe min prototype i Illustrator. Hvis du vil bruge min skabelon, er du velkommen til at downloade den vedhæftede fil. Jeg udskår papirprototypen med en Xacto kniv og spores den ydre cirkel på et stykke træ. Mit ur vil have en diameter på omkring 12 inches. Hvis din printer ikke kan håndtere hele urets ansigt på én gang, skal du bare tape to halvdele af billedet sammen og markere dine hulpositioner.

Trin 2: Klip Paint Clock Face

Brug en X-acto eller sav til at klippe dit urs udvendige profil og en 3/4 "borekrone for at skære hullerne ud. Jeg brugte derefter malere tape til sektionen af ​​den øverste halvdel og sprøjtede det blåt. Når det var tørt Jeg reverserede båndlinjen og sprøjtede den nederste halv sølv. Mens alting tørrer, skal du bruge din X-acto kniv til at skære positionsstederne til dit ur.

Trin 3: Dekorer uret ansigt

Nu, hvor vores stillinger er blevet skåret ud, vippes dem over, gnider lidt lim, centrerer dem på urets ur og trykker dem ned.

Jeg har måske fået lidt at lyst på denne del, men jeg tænkte "du ved hvad der ville gøre denne ur mere magisk ….. glitter!" Så jeg løb kugler lim rundt om kanten af ​​urpositionerne og derefter sprinklede rigelige mængder glitter ovenpå. Når du har rystet det, vil det efterlade en flot skinnende kant omkring dit bogstaver.

Trin 4: Tilføjelse af servomotor

Jeg havde brug for at justere hulstørrelsen i midten af ​​uret for at imødekomme servo, en drill og fil gør kort arbejde med denne proces. Dernæst varm lim i servomotoren. Det er meget vigtigt at holde servo 90 grader til forsiden, så din urmekanisme vil ikke skrabe på urets ansigt. Jeg holdt servo i den rigtige stilling, indtil limen tørrede.

Trin 5: LED-forlængelser

Vi bliver nødt til at forlænge LED'ens ben, så de let kan stikke ind i vores brødbræt. For at gøre dette skal vi dreje ledningerne sammen og derefter forbinde dem elektrisk med loddetid. Begynd med at strippe begge ender af ledningerne med den universelle stripper. Dernæst drej ledningerne sammen for at danne en stærk mekanisk lås, du bør være i stand til let at trække på ledningerne uden at de kommer fra hinanden. Tøv ikke med at bruge tænger for at hjælpe med at få et par flere vendinger. Brug derefter din jern og loddetrådene sammen.

Trin 6: Tilføj LED'er til ur

Med alle LED's loddetid kan du tilføje dem til bagklokken. Jeg bøjede ledningerne ved bunden af ​​LED'ens 90 grader, og ved hjælp af den varme limpistol fik de dem i midten af ​​de fem temperaturudskæringer.

Trin 7: Ledning af LED'ens del 1

Ved hjælp af dobbeltstribe blev jeg fastspændt på Arduino og brødbrættet på bagsiden af ​​uret. For at begynde at ledning op LED'erne sætter jeg alle jordledningerne (grønne ledninger) ind i den negative kolonne på brødbrættet. Derefter stikede jeg alle strømledningerne i rækkefølge i brødbrættet.

Trin 8: Ledning af LED-del 2

Tilføj nu en anden ledning fra alle de positive leders ledninger til Arduino. Jeg brugte ben 4 til 8 til dette, men du kan selvfølgelig bruge nogle pins, du ønsker.

Trin 9: Kabelføring Servomotor

Begynd med at sætte servokraftkablet i 5V-stikket på Arduino. Tilslut derefter den sorte ledning til GND og signalkablet (du kan være hvid eller orange afhængigt af din servo) til en pin med PWM-kapacitet. Jeg brugte pin 3. Når du har din servo tilsluttet og din LED er tilsluttet, tilføj en ledning danne Arduino GND til jordskinnen bruges af alle LED'erne.

Trin 10: Tilføjelse af temperaturføler

Denne temperatursensor virker ved at ændre spændingen afhængigt af temperaturen i rummet, meget ligner den måde, som lyssensoren ændrer spændingen ud fra hvor meget lys der var i rummet. For at tilslutte temperatursensoren begynder du ved at placere en ledning fra mellembenet, hvilket signal er til A0-stiften. I mit kredsløb er signaltråden orange.

Derefter vil du gerne tilføje strøm og jord til sensoren. Dette vil kræve en lille ændring af servomotorens kredsløb. I stedet for at tilslutte servostrømmen direkte til 5V-stiften på Arduino, skal du køre en ledning fra 5V strøm til brødbrættet og derefter tilslutte både temperatursensoren og servoen i samme række. Hvis dit kredsløb ligner det nedenstående er du på rette spor.

Trin 11: Tilslut klok hånd

Nu da alle kredsløbene til dette projekt er færdige, kan vi vende døgnet rundt og arbejde på ansigtet. For at gøre urhånden begyndte jeg at trimme en urhånd ud af et gammelt ur, jeg fandt. Brug dine sikkerhedsbriller, mens du gør dette bare incase:) Tag derefter din varme limpistol og læg en tynd lim på servomotorens vedhæftning, og fastgør derefter klok hånden hurtigt.

Trin 12: Kodning Del 1

Vi starter vores kodning med en standard, men lidt større initialisering af 5 LED'erne, Servo og temperaturføleren. Derudover opretter vi pladsholdervariabler for servoklokstilling og temperaturvariablen, som jeg kalder initialTemp. Bemærk, at dette er mærket som en float og indeholder et tal med et decimaltal, hvilket giver os mere opløsning på temperaturmålinger

#include Servo myservo; int clockPos = 0; int tempSensorPin = A0; const float initialTemp = 20.0; int tempLED1 = 4; int tempLED2 = 5; int tempLED3 = 6; int tempLED4 = 7; int tempLED5 = 8;

Udover en masse opsætning af pinModes skal vi vedhæfte den servo, vi har tilsluttet Arduino til dens software, herunder bibliotek. Jeg har vedhæftet servo til pin tre, så ved hjælp af funktionen myservo.attach (3) vil Arduino vide, hvilken pin skal være PWM.

void setup () {Serial.begin (9600); myservo.attach (3);

Trin 13: Kodning del 2

For at gøre det lettere at kontrollere urhånden, skal vi programmere Arduino til at markere de mulige positioner på uret (fx: arbejde, rejse osv.) Med tal fra 0 til 6. Ved hjælp af kommandoen Serial.parseInt () forstå de tal, vi sender til Arduino.For at udløse den faktiske bevægelse af hånden kontrollerer vi for at se om indtastningsnøglen er ramt, husk den usynlige " n", der sendes, vi skal nu kontrollere slutningen af ​​vores besked, og hvis den er fundet, vil vi skrive en ny position til servo.

if (Serial.available ()> 0) {int clockPos = Serial.parseInt (); hvis (Serial.read () == ' n') {myservo.write (clockPos * 25 + ((clockPos + 1) * 3)); forsinkelse (200); }}

Matematikken jeg plejede at få urets position vinkler ned tog en masse tweaking, men det kommer ned til at gange antallet vi indtastede (clockPos) med 25 og derefter finde ud af den korrekte forskydning for at få pilen spids tæt på midten af ​​stillingen logo på uret ansigt. For mig tilføjede jeg en og derefter multipliceret med tre for at få et godt udseende. Lad os løbe gennem matematikken med nogle rigtige tal for at vise dig, hvordan det virker.

Servo Position Math

Ved hjælp af mine urpositioner antager jeg, at jeg vil vise, at jeg er "Rejser". Dette ville være repræsenteret af nummer 2, hvor 1 var "Mortal Danger" og 0 var "Work".

Så vores clockPos = 2 derfor:

Servo Angle = (2 * 25) + ((2 + 1) * 3)

Servo Angle = 59 grader

Til Arduino, når det først løser matematikken, ser servo skrivelinien ud som dette nu, hvilket er præcis det, vi vil have.

myservo.write (59);

Trin 14: Kodning Del 3

I den næste kodeblok går vi tilbage i hovedløkken og analogt læser temperatursensoren. En kort forsinkelse sikrer, at værdien har tid til at afregne. Derefter for at konvertere spændingen bliver indlæst i temperatur, deler vi det nummer, vi får fra ADC med den maksimale værdi på 1024 og multipliceres med 5V. Dette giver os temperatursensorværdien i volt. For at få det i grader trækker vi af.5 og multiplicerer så hele ting med 100. Whew! Det var kompliceret, men vi er næsten færdige.

int tempVal = analogRead (tempSensorPin); forsinkelse (10); float temp = (((tempVal / 1024,0) * 5) -.5) * 100; Serial.println (temp);

For at afslutte kodning af temperatursensorerne skal vi oprette en skiftekasse til hvert LED-lys ved hjælp af en masse af samme kode og funktioner, som vi tidligere anvendte. Den eneste tilføjelse, vi skal lave, er at kortlægge temperaturen i rummet til et tal fra 0 til 4. Dette vil gøre det muligt for os at let bruge omskifterhuset til at styre LED'erne.

int switchcase = kort (temp, 12, 28, 0, 4); Serial.println (switchcase);

Trin 15: Upload kode og test

Pyha! Det var langt den mest udfordrende kode, vi har skrevet hidtil. Nu kan vi uploade det og teste vores ur.

Trin 16: Nyd dit nye ur!

DU GJORDE DET!!!! Hæng dit ur stolt på et sted, som alle kan se. Ikke alene sluttede du et fantastisk projekt, men du lærte så meget.