Innholdsfortegnelse:
- Trinn 1: Oversikt over maskinvareelementer
- Trinn 2: Oversikt over programvare
- Trinn 3: Deleliste
- Trinn 9: Design og skriv kode
- Trinn 10: Installer programmet
- Trinn 11: Monter timeren
- Trinn 12: Integrasjonstesting
- Trinn 13: Avsluttende tanker
Video: Multitimer med ekstern kontroll: 13 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:22
Dette prosjektet Instructable er et bygg av en multifunksjonstimer
Denne timeren kan fungere som:
- En generell alarm med valgbare tider mellom 1 sekund og +90 timer. Å ha nedtelling med hørbar alarm og/eller kontroll av ekstern enhet til den er ferdig, deretter en tellende indikasjon på tid siden alarmen.
- En lur timer med 7 valgbare tider, nedtelling og alarm ved fullføring.
- En meditasjonstimer med 4 valgbare tider, med nedtelling og kort kvitring etter fullføring, opptelling med ytterligere kvitring 5 minutter etter det.
Dette prosjektet kan eter bygges som beskrevet her eller endres for å passe. Jeg bygde tidligere en timer med denne funksjonaliteten og brukte den i min første Instructable for å kontrollere UV -eksponeringsboksen.
Jeg trodde jeg bare kunne publisere det originale programmet og brettdesignene. Av en eller annen grunn kunne jeg imidlertid ikke finne koden. Jeg ønsket også å gjøre forbedringer av maskinvaren for å gjøre kontrollkretsene mer fleksible og redusere batteridrift. Den resulterende redesignen av hovedkortet og omskriving av koden gir en mulighet til å diskutere tilnærming til programmering og maskinvaredesign.
Når jeg lager et kretskort, oppdager jeg ofte at det er feil ved utforming eller plassering av komponenter. Brettene jeg bygger er også ett av to avslag. I tillegg liker jeg å være involvert i alle aspekter av et prosjekt fra start til slutt. Dette er noen av grunnene til at jeg lager mine egne kretskort i stedet for å sende Gerber -filene til utlandet for produksjon. Kanskje jeg bare er gammel og sitter fast i mine veier. Dette prosjektet gjenspeiler denne skjevheten. Siden jeg lager mine egne kretskort, designene mine og Gerber -filene mine ikke oppfyller produksjonsstandarder, har jeg ikke tatt med disse filene. De som ikke ønsker å etse og gjøre ferdig brettene, er velkommen til å forberede sine egne design og legge ut Gerber -filene i kommentarfeltet. Vennligst la tavlene produseres og testes før du legger ut.
Trinn 1: Oversikt over maskinvareelementer
Enheten drives av 4 AAA -batterier og styres av en Arduino Pro Mini 5V.
En liten summer/høyttaler gir en hørbar alarm.
Et miniatyr 5v relé gir kontrollspenninger til eksterne enheter. Fleksibilitet er gitt i kilden til denne kontrollspenningsutgangen.
En roterende encoder med trykknapp gir menyvalg.
En OLED -skjerm og en kort start/stopp -bryter fullfører brukergrensesnittet.
Ekstra elektronisk maskinvare består av en SPDT -strømbryter og en miniatyrtelefonkontakt for tilkobling til eksterne enheter.
I tillegg finnes det filer som kan hjelpe deg i dette prosjektet:
STL -filer for en 3D -trykt prosjektetui.
Kobber- og loddemasker for etsing og etterbehandling av styrekretskortet og dreiekoderen.
Skjematiske og tavlebilder som referanse for de som ønsker å endre designet mitt.
Du vil kanskje lese min instruks om hvordan du lager tosidige kretskort som et eksempel på hvordan du produserer kretskort.
Trinn 2: Oversikt over programvare
Sammen med Arduino -kildefilene, noen tilleggsinformasjon som kan være nyttig.
Maskinvarekontrollbiblioteker brukes når de er tilgjengelige (knappestopp, OLED-kontroll, lesing av roterende koder).
Programmet implementerer en enkel finite state machine (FSM) for å kontrollere kodeutførelse som en switch -setning i loop -funksjonen.
En menyklasse er definert for å tillate valg av viste alternativer på OLED og valg ved hjelp av dreiekoderen.
Inndata implementeres ved direkte avstemning (ikke-avbruddsdrevet) siden det ikke er tidskritisk og gjør koden tydeligere.
Utskriftserklæringer til Serial brukes til å spore kodeutførelse og feilsøking
Ulike typer programstrukturelementer, inkludert:
- Flere kodefaner for å isolere noen av maskinvarekontrollfunksjonene og variablene.
- Bytt setninger for å angi tilstandsverdi (FSM) og kontrollvariabler.
- Struktur definisjon
- Oppregninger for å tillate tildeling av tilstandsverdier som tekst.
- #definere forprosessordefinisjoner for maskinvarepinne og standardverdier.
Trinn 3: Deleliste
Jeg var ikke sikker på hvor jeg skulle sette dette trinnet siden det kan gjøres på nesten hvilket som helst tidspunkt. Jeg brukte en 3D -trykt skapboks. Du har kanskje ikke tilgang til en 3D -skriver eller foretrekker en annen type kabinett, for eksempel aluminiumsboks, laserskåret plast, håndskåret tre eller annen type du bruker til dine elektroniske prosjekter. Jeg har inkludert STL -filene for topp, bunn, dreiekoderknapp og OLED -ramme. Bruk disse filene og skiven du ønsker for å lage gcode -filer for skriveren.
Jeg skriver ut alle delene med PLA -filament, en farge for kabinettet øverst og nederst, en annen kontrast for knotten og rammen (som er limt til toppen.) Jeg kommer ikke til å spesifisere alle mine skiverinnstillinger, men bruk en Tri -Heksagonfyll minst 35% for å tillate tapping av hjørneskruene og en "ingen støtte" -innstilling for at den innskårne bokstaven skal leses. Jeg skrev ut esken ved hjelp av skriverens "normale" laghøyde.
Trinn 9: Design og skriv kode
Dette trinnet er valgfritt, men foreslått for bedre forståelse.
Hovedtyngden av innsatsen når det gjelder timer er skriving av koden. Du kan hoppe over dette trinnet hvis du bruker det vedlagte programmet som -is. Det er imidlertid foreslått at du tar deg tid til å gjennomgå koden for bedre forståelse eller endring for å dekke dine behov.
Følgende kommentarer kan være nyttige for å forstå denne prosessen.
- Kommentarer - Kommenter mye underveis - jeg skriver ofte kommentarene før jeg skriver koden.
- Del og erobre - bruk funksjoner, klasser og moduler (faner.) Bruk hyppige kompiler (Bekreft) for å kontrollere syntaksen. Debug - Bruk utskriftserklæringer for å bekrefte flyt- og testverdier og maskinvaregrensesnitt. Ikke vær redd for å løse problemene mens du går, ingen skriver kode som er feilfri!
- Konstanter - #define forhåndskompilatorinstruksjoner tilordne navn til pin -tall. Const variable definisjoner med kommentarer reduserer eller eliminerer "magiske" tall. Bruk av konstanter plassert ved starten av et program eller en funksjon tillater endring av parametrene uten å omskrive kode
- Forhåndsdefinerte biblioteker - Ved å bruke forhåndsdefinerte biblioteker reduseres programmeringsbyrden og feilsøkingstid.
- Designblokker - Opprettet ved hjelp av funksjoner, Isolering av kode i separate faner (tilknyttede programmer og.hfiler), oppføringer, klasser og strukturer. Fokuser oppmerksomheten på hver enkelt for å forstå hvordan de fungerer i forhold til resten av koden.
- State Machine (s) - Dette er et programmeringsmønster som fungerer bra med Arduinos eller programmer som brukes til å kontrollere utganger eller reagere innganger. Det finnes flere smaker av statsmaskiner. Denne koden bruker en tilstandsmaskin basert på switch -setningen i loop -funksjonen. Dette skjemaet er lett å forstå og feilsøke.
- Display og menyer - OLED -utgangen er tett, men gir nok tilbakemelding for uformelle brukere og støtter valg av alternativer. Den integreres godt med statsmaskinen (nesten alle stater har en tilhørende OLED -skjerm). Menyklassen var nyttig for å isolere kode for å vise og velge menyalternativer
Les programmet flere ganger. Det hjelper å ta én funksjon eller seksjon om gangen. Jeg forstår ofte ikke koden jeg har skrevet med mindre jeg har lest den minst to ganger!
Trinn 10: Installer programmet
Kopier den vedlagte filen til datamaskinen, og pakk den ut i Sketches -katalogen
Koble Arduino til datamaskinen din og last ned programkoden på vanlig måte. Åpne Arduino IDE seriell skjerm for å bekrefte at programmet kjører og hjelpe til med feilsøking.
Trinn 11: Monter timeren
Når de øverste og nedre delene av saken er skrevet ut og ryddet opp, kan komponentene festes med små selvskærende plastskruer. Først klikkes batteriholderen inn i ryggen. Resten av delene er festet til skapets topp i følgende rekkefølge:
- OLED og kabel
- Start/stopp bryter og ledninger
- Rotary Encoder og kabel
- Høyttaler / summer og ledninger
- Ekstern kontrollkontakt og ledninger
- Slå av/på skyvebryter og ledninger (dobbel sjekk retningen slik at på er i ønsket retning
Hvis du lodder kablene direkte til kretskortet, gjør du dette etter at alle delene er festet til kabinettet for å redusere ledningsbrudd. Du må vente til kablene er koblet til hovedkortet før du skruer kortet på baksiden.
Hvis du bruker pinnehoder og Dupont -kontakter, må du først feste hovedkortet på baksiden med skruer og deretter plugge inn komponentene. Vær forsiktig når du kobler batteriet til hovedkortet og observer riktig polaritet. Du bør også sette opp relékontrollhoppere eller ledninger på dette tidspunktet.
Bunnen av kabinettet kobles til toppen ved hjelp av 4-40 runde maskinskruer, ett i hvert hjørne. De fire hullene i toppen bør enten tappes med en 4/40 kran, eller hvis du bruker 4-40 gjengede innsatser, må du bore hullene for å godta dem. De 4 hullene for hovedkortkortmonteringen på bunnen må også bores. Fest dette brettet til snap-in batterifeste og merk plasseringene til hullene. Bor etter behov for monteringsskruene.
Trinn 12: Integrasjonstesting
Den siste (integrering) testing utføres ved å prøve alle menyalternativene og kontrollere at de fungerer med maskinvaren slik den er designet. For koden jeg oppga, burde det være tilstrekkelig. Hvis du skrev din egen kode eller endret min, må testen din være mer omfattende. Jeg tror ikke at alle timevalg må utøves, men du må prøve alle standardalarmalternativer og validere Nap og meditasjonsalarmer som de er designet.
Trinn 13: Avsluttende tanker
Gratulerer med ditt vellykkede, jeg håper, prosjekt. Jeg er sikker på at du støtte på problemer du måtte løse underveis. Jeg er også sikker på at noen av instruksjonene mine kunne vært mer fullstendige eller tydeligere. Gi meg beskjed gjennom kommentarfeltet hva resultatene dine var, og kom med forslag til hvordan disse instruksjonene kan forbedres.
Takk for at du tok deg tid til å se og/eller bygge dette prosjektet.
Anbefalt:
Ekstern VGA / GPU for bærbare datamaskiner som bruker EXP GDC Beast: 15 trinn (med bilder)
Ekstern VGA / GPU for bærbare datamaskiner som bruker EXP GDC Beast: Hei gutter .. Dette er min første opplæring om instrukser. Engelsk er ikke mitt morsmål, så tilgi mine grammatiske feil. Jeg lagde dette basert på min erfaring med å oppgradere min bærbare. Og jeg kommer ikke til å kjede deg med lang introduksjon siden jeg vet nei
Hacking en Strobe Blacklight for Steady-On og ekstern kontroll: 5 trinn (med bilder)
Hacking en Strobe Blacklight for Steady-On og ekstern kontroll: Hvert år selger de store boksbutikkene strobesorte lys med UV-lysdioder. Det er en knott på siden som kontrollerer strobehastigheten. Disse er morsomme og rimelige, men de mangler en kontinuerlig på -modus. Dessuten ville det vært fint å kontrollere lyset
Installere Windows på ekstern stasjon med Mac -partisjon på Mac: 5 trinn (med bilder)
Installere Windows på ekstern stasjon med Mac -partisjon på Mac: Hvis du har kjøpt noe som en baseline MacBook pro og spart litt penger, men så snart slo med lagringsproblemet når du prøver å installere Windows ved hjelp av Bootcamp Vi vet alle at 128 gb ikke er nok disse, så vi kan ha kjøpt noe
Ekstern Winamp -kontroll: 4 trinn
Ekstern Winamp -kontroll: I dag har winamp full støtte til hurtigtaster. Men en gang, da winamp ikke hadde denne funksjonen, tenkte jeg på en eller annen måte å gjøre en enkel måte å endre musikk ved å trykke på en knapp, det ville gjøre ting raskere og ville
Lag en ekstern harddisk fra gammel ekstern CD/RW: 5 trinn
Lag en ekstern harddisk fra gammel ekstern CD/RW: Ganske rett fremover konvertering av en gammel ekstern cd/rw til en mer nyttig ekstern harddisk. Rekvisita 1-ekstern cd/rw (helst den mer boksete typen) 1-harddisk (må stemme overens med den interne kontakten på stasjonshuset, må formateres/syses) 1-sm