Indholdsfortegnelse:

Multitimer m/ ekstern kontrol: 13 trin
Multitimer m/ ekstern kontrol: 13 trin

Video: Multitimer m/ ekstern kontrol: 13 trin

Video: Multitimer m/ ekstern kontrol: 13 trin
Video: Three Days Grace - Animal I Have Become 2024, Juli
Anonim
Multitimer m/ ekstern kontrol
Multitimer m/ ekstern kontrol

Dette projekt Instructable er en opbygning af en multifunktionstimer

Denne timer kan fungere som:

  1. En almindelig alarm med valgbare tider mellem 1 sekund og +90 timer. At have en nedtælling med hørbar alarm og/eller kontrol af ekstern enhed, indtil den er færdig, derefter en optælling af tid siden alarmen.
  2. En luretimer med 7 valgbare tider, nedtælling og alarm ved afslutning.
  3. En meditationstimer med 4 valgbare tidspunkter, med nedtælling og et kort kvidren ved afslutning, optælling med en anden kvidring 5 minutter efter det.

Dette projekt kan ether bygges som beskrevet her eller ændres, så det passer. Jeg har tidligere bygget en timer med denne funktionalitet og brugte den i min første Instructable til at styre UV -eksponeringsboksen.

Jeg tænkte, at jeg bare kunne udgive det originale program og tavledesign. Af en eller anden grund kunne jeg dog ikke finde koden. Jeg ville også foretage forbedringer af hardwaren for at gøre styrekredsløbene mere fleksible og reducere batteridræn. Det resulterende redesign af hovedkortet og omskrivning af koden giver mulighed for at diskutere programmering og hardware design tilgang.

Når jeg opretter et printkort, finder jeg ofte ud af, at der er fejl i konstruktionen eller placeringen af komponenter. De plader, jeg bygger, er også en af to offs. Plus, jeg kan bare lide at være involveret i alle aspekter af et projekt fra start til slut. Dette er nogle af grundene til, at jeg laver mine egne printkort frem for at sende Gerber -filerne til udlandet til fremstilling. Måske er jeg bare gammel og sidder fast i mine veje. Dette projekt afspejler denne bias. Da jeg laver mine egne printkort, mine designs og mine Gerber -filer ikke opfylder fremstillingsstandarder, har jeg ikke inkluderet disse filer. Dem, der ikke ønsker at ætse og afslutte brædderne, er velkomne til at forberede deres egne designs og sende Gerber -filerne i kommentarfeltet. Få dine tavler fremstillet og testet, før du sender dem.

Trin 1: Oversigt over hardwareelementer

Enheden drives af 4 AAA -batterier og styres af en Arduino Pro Mini 5V.

En lille summer/højttaler giver en lydalarm.

Et miniatyr 5v relæ giver styrespændinger til eksterne enheder. Fleksibilitet tilvejebringes i kilden til denne styrespændingsudgang.

En roterende encoder med trykknap giver menuvalg.

Et OLED -display og en øjeblikkelig start/stop -switch fuldender brugergrænsefladen.

Yderligere elektronisk hardware består af en SPDT -afbryder og et miniaturetelefonstik til tilslutning til eksterne enheder.

Derudover findes der filer til at hjælpe dig i dette projekt:

STL -filer til en 3D -trykt projektkasse.

Kobber- og loddemaskebilleder til ætsning og efterbehandling af styrekredsløbskortet og roterende encoder.

Skematiske og tavlebilleder som reference for dem, der ønsker at ændre mit design.

Du vil måske gennemgå min Instructable om oprettelse af dobbeltsidede printkort som et eksempel på fremstilling af printkort.

Trin 2: Softwareoversigt

Sammen med Arduino -kildefilerne, nogle yderligere oplysninger, der kan være nyttige..

Hardwarekontrolbiblioteker bruges, når de er tilgængelige (knap-afvisning, OLED-kontrol, aflæsning af roterende encoder).

Programmet implementerer en simpel finite state -maskine (FSM) til at styre kodeudførelse som en switch -sætning i loop -funktionen.

En menuklasse er defineret til at tillade valg af viste muligheder på OLED og valg ved hjælp af drejekoder.

Input implementeres ved direkte polling (non-interrupt driven), da det ikke er tidskritisk og gør koden tydeligere.

Udskrivningserklæringer til Serial bruges til at spore kodeudførelse og fejlfinding

Forskellige typer programstrukturelementer, herunder:

  • Flere kodefaner for at isolere nogle af hardwarekontrollens funktioner og variabler.
  • Skift sætninger for at indstille tilstandsværdien (FSM) og kontrolvariabler.
  • Struktur definition
  • Optællinger for at tillade tildeling af statsværdier som tekst.
  • #define præ-processor definitioner for hardware pin og standardværdier.

Trin 3: Deleliste

Opret kabinettet
Opret kabinettet

Jeg var ikke sikker på, hvor jeg skulle sætte dette trin, da det kan gøres på næsten ethvert tidspunkt. Jeg brugte en 3D -trykt kabinet. Du har muligvis ikke adgang til en 3D -printer eller foretrækker en anden type kabinet, såsom aluminiumskasse, laserskåret plastik, håndskåret træ eller anden type, du bruger til dine elektroniske projekter. Jeg har inkluderet STL -filerne til toppen, bunden, drejeknapknappen og OLED -rammen. Brug disse filer og skiven efter eget valg til at oprette gcode -filer til din printer.

Jeg udskriver alle dele ved hjælp af PLA -filament, en farve til kabinetets top og bund, en anden kontrasterende til knappen og rammen (som er limet til toppen.) Jeg vil ikke angive alle mine skiverindstillinger, men brug en Tri -Heksagon -fyldning mindst 35% for at muliggøre tapning af hjørneskruerne og en "ingen understøttelse" -indstilling for den indskårne bogstav, der skal læses. Jeg printede boksen ved hjælp af mine printere "normal" laghøjde.

Trin 9: Design og skriv kode

Dette trin er valgfrit, men foreslås for bedre forståelse.

Hovedparten af indsatsen i form af timer er skrivning af koden. Du kan springe dette trin over, hvis du bruger det vedhæftede program som -is. Det foreslås dog, at du tager dig tid til at gennemgå koden for at få en bedre forståelse eller ændring for at imødekomme dine behov.

Følgende kommentarer kan være nyttige til at forstå denne proces.

  • Kommentarer - Kommenter udførligt, mens du går - jeg skriver ofte kommentarerne, før jeg skriver koden.
  • Opdel og erobre - brug funktioner, klasser og moduler (faner.) Brug hyppige kompiler (Verificer) til at kontrollere syntaks. Debug - Brug udskriftssætninger til at kontrollere flow- og testværdier og hardware -grænseflader. Vær ikke bange for at løse problemerne, mens du skriver, ingen skriver kode, der er fejlfri!
  • Konstanter - #define pre -compiler instruktioner tildele navne til pin -numre. Const variable definitioner med kommentarer reducerer eller fjerner "magiske" tal. Brugen af konstanter placeret i starten af et program eller en funktion gør det muligt at ændre parametrene uden at omskrive kode
  • Foruddefinerede biblioteker - Brug af foruddefinerede biblioteker reducerer programmeringsbyrden og fejlfindingstiden.
  • Designblokke - Oprettet ved hjælp af funktioner, isolering af kode i separate faner (tilhørende programmer og.hfiler), optællinger, klasser og strukturer. Fokuser din opmærksomhed på hver enkelt for at forstå, hvordan de fungerer i forhold til resten af koden.
  • State Machine (s) - Dette er et programmeringsmønster, der fungerer godt med Arduinos eller programmer, der bruges til at styre output eller reagere input. Der findes flere varianter af statsmaskiner. Denne kode bruger en tilstandsmaskine baseret på switch -sætningen i loop -funktionen. Denne formular er let at forstå og fejlsøge.
  • Skærm og menuer - OLED -output er stramt, men giver nok feedback til afslappede brugere og understøtter valg af valgmuligheder. Det integreres godt med statsmaskinen (næsten alle stater har en tilhørende OLED -skærm). Menuklassen var nyttig til at isolere kode for at vise og vælge menuindstillinger

Læs programmet flere gange. Det hjælper med at tage en funktion eller sektion ad gangen. Jeg forstår ofte ikke kode, som jeg har skrevet, medmindre jeg har læst den mindst to gange!

Trin 10: Installer programmet

Kopier den vedhæftede fil til din computer, og pak den derefter ud i dit Sketches -bibliotek

Tilslut Arduino til din computer, og download programkoden på normal vis. Åbn Arduino IDE seriel skærm for at kontrollere, at programmet kører og hjælper med fejlfinding.

Trin 11: Saml timeren

Saml timeren
Saml timeren
Saml timeren
Saml timeren
Saml timeren
Saml timeren
Saml timeren
Saml timeren

Når de øverste og nederste dele af kabinettet er udskrevet og ryddet op, kan komponenterne fastgøres ved hjælp af små selvskærende plastskruer. Først klikkes batteriholderen ind i ryggen. Resten af delene er fastgjort til kabinettets top i følgende rækkefølge:

  1. OLED og kabel
  2. Start/stop kontakt & ledninger
  3. Rotary Encoder og kabel
  4. Højttaler / summer og ledninger
  5. Ekstern kontrolstik og ledninger
  6. Tænd/sluk skydekontakt og ledninger (dobbelttjek retning, så tændt er i den ønskede retning

Hvis du lodder kablerne direkte til dit printkort, skal du gøre dette, efter at alle delene er fastgjort til dit kabinet for at reducere trådbrud. Du skal vente, indtil kablerne er forbundet til hovedkortet, før du skruer kortet på bagsiden.

Hvis du bruger pinhoveder og Dupont -stik, skal du først fastgøre hovedkortet på bagsiden ved hjælp af skruer og derefter tilslutte komponenterne. Vær forsigtig, når du slutter batteriet til hovedkortet, og observer den korrekte polaritet. Du bør også opsætte relæstyringshopperne eller ledningerne på dette tidspunkt.

Bunden af kabinettet forbindes til toppen ved hjælp af 4-40 rundskruer med maskine, et i hvert hjørne. De fire huller i toppen skal enten tappes med et 4/40 tryk, eller hvis du bruger 4-40 gevindindsatser, skal du bore hullerne for at acceptere dem. De 4 huller til hovedkortkortmonteringen i bunden skal også bores. Sæt dette kort fast til snap-in batteriholderen, og markér hullernes placering. Bor efter behov til dine monteringsskruer.

Trin 12: Integrationstest

Integrationstest
Integrationstest
Integrationstest
Integrationstest
Integrationstest
Integrationstest

Endelig (integration) test opnås ved at prøve alle menuindstillingerne og kontrollere, at de fungerer med hardwaren som designet. For den kode, jeg angav, burde det være tilstrækkeligt. Hvis du skrev din egen kode eller ændrede min, skal din test være mere omfattende. Jeg tror ikke, at alle timing -valg skal udøves, men du skal prøve alle standardalarmindstillinger og validere Nap og Meditation -alarmer, der fungerer som designet.

Trin 13: Endelige tanker

Tillykke med dit vellykkede, jeg håber, projekt. Jeg er sikker på, at du stødte på problemer undervejs, som du skulle løse. Jeg er også sikker på, at nogle af mine instruktioner kunne have været mere komplette eller klarere. Lad mig vide i kommentarfeltet, hvad dine resultater var og kom med forslag til, hvordan disse instruktioner kan forbedres.

Tak for din tid med at se og/eller bygge dette projekt.

Anbefalede: