En liten te Timer (TTT) maskin för Arduino och ATtiny (1 / 3 steg)

Steg 1: Funktionalitet design och programmering



Idén om funktionaliteten för Arduino skriptet kan ses i denna graf.

  • När du slår på strömmen servomotor flyttas till den ursprungliga placeringen och väntar på en te
    påsen skall bifogas.
  • Sedan trycker på knappen flera gånger – en gång för varje brygga minut.
  • När knappen inte trycks mer än 2 sekunder flyttas servomotor till bryggning
    position och börjar att räkna.
  • När brygga tiden är över servomotor flyttar tillbaka till slutpositionen (samma som startposition) och makt kan stängas av.

Jag har lämnat 2 versionen av skriptet.

Den första genomförs för en standard Arduino ombord och var i bruk under en tid och är bra för att göra
ändringar i programmet utan programmerare. Den andra en implementeras för att använda en ATtiny85 processor.

Det började som en enkel version liknar programvara skript kan du hitta i de andra exemplen. Men det visade sig att det måste finnas några tillägg till gör det verkligen användbart för daglig användning se jag hade flera ytterligare krav som skall genomföras. Dessa förbättrade versioner finns här.

En liten stat maskin

Programmet måste alltid veta den aktuella situationen från den tid när kraften var påslagen tills brygga tiden är över. Därför finns det en global variabel med namnet staten som kan ta lämpligt värde motsvarar situationen:

uint8_t staten.

På bilden ovan kan du se hur de används. Det är en rättfram implementation utom på den upprepande när knappen trycks in flera gånger under programplaneringsfasen.

För att ha en god läsbarhet i möjliga definieras lägesvärdena i avsnittet konstant i skriptet:

#define STATE_INIT 0x00 / / / < väntar på första knappen ner
#define STATE_DOWN 0x10 / / / < knappen trycks
#define STATE_UP 0x11 / / / < knappen släpps så ökas den te-tid med ett.
#define STATE_ENTER 0x21 / / / < in i brygga fas av visar hur många minuter
#define STATE_BREW 0x22 / / / < ange tepåse och vänta till slutet av brygga tid
#define STATE_END 0x99 / / / < bryggning tid avslutades.

Servo / tepåse positioner

De ståndpunkter som vi behöver för servo måste hittas genom försök och misstag eftersom de beror på den konkreta utformningen av te timern och servo. För en enkel design är 2 positioner tillräckligt (INITIAL och retur). De definieras i den konstanta delen av skriptet:

#define TEABAG_INITIAL 95
#define TEABAG_ENTER 65
#define TEABAG_DIP 70
#define TEABAG_OUT 83

Dessa är positionerna för den första staten att bifoga en tepåse, brygga position, en liten rörelse som begärdes av vissa användare och den ur positionen, inte för högt så att de sista dropparna kan falla i en tekanna. I slutändan flyttas servo till den första ståndpunkten att lossa tepåse.

Rör servo långsamt

Mest önskade förbättring från den första versionen var att göra servo rör långsamt i stället för enkelt "så snabbt som möjligt" version i första version. Därför den tbSetPosition metoden flyttas inte servo direkt men istället registrerar destination position i en global variabel. Sedan ändras från tid till annan genom att funktionen tbCheckPosition servo aktuella position av 1 i önskad riktning. Slutligen, när servo uppnådde destination servo är fristående för att spara energi.
Variablerna tbPosition och tbPositionNext lagrar aktuellt och önskat läge.

Flytta servo under tung belastning

Den första versionen fristående servo omedelbart efter flyttas till den nya positionen. Emellertid med tung belastning servo inte når sin slutdestination på ett tillförlitligt sätt. Detta löstes med hjälp av särskilda timer variabel tbLastMove som alltid som den aktuella tiden efter flyttanden servo.

Servo är fristående 400 msec. efter den sista satsen.

Titta på tiden

Det enklaste sättet för att kontrollera tid beroende av funktionerna är att använda funktionen millis() som returnerar antalet millisekunder som passerat sedan startades.

Jag använder denna funktion att få "aktuell tid" och jämför med förra gången när något intressant har hänt.

Varje gång funktionen loop() startas, nu variabeln är satt och varaktigheten av den nuvarande fasen beräknas med hjälp av variabler:

osignerade långa nu;
osignerade långa började;
osignerade långa varaktighet;

Detta tillvägagångssätt är överlägset bättre än att använda funktionen delay() för att genomföra övergripande timing mekanism. Men är ibland det bara enklare att använda delay() till exempel för koppla LED on and off eller väntar på några millisekunder tills servo fick flyttas.

Det finns vissa timing konstanter som definieras i huvudet på den skiss som du kan justera dina behov:

#define MSECS_TO_START 2000 / / / < när knappen är inte intryckt efter 2 sekunder, början bryggning.
#define MSECS_FOR_DROPS 10000 / / / < antal sekunder påsen är närliggande över te potten.
#define MSECS_TO_DETACH 400 / / / < efter 400 uppdateringsförsök ingen rörlighet servo är fristående för att spara energi.

Den minsta tid i millisekunder som en knapptryckning har till sist för att tas seriöst är programmerat som 50. Det händer ofta att en knapp inte växla signalen på ett korrekt sätt men studsar en eller två gånger innan du stänger helt. Dessa små snabba sekvenser är bara ignoreras.

Innan du börjar lysdioden blinkar en gång för varje brygga tid minut.

Reset och försök igen

Ibland händer det att TTT inte startar korrekt eftersom tepåse hoppar av eller inte gillar att gå dykning i programmerad minuter var fel. I detta fall måste du slå av och på igen.

Jag med fler kommentarer i källkoden. Läsa och ändra...

Se Steg
Relaterade Ämnen

Papper Man: en maskin skapad av Arduino och NFC.

Papper är en maskin som består av Arduino, NFC sköld, termoskrivare och en pappersmodell skal – Iron Man.Du kan direkt skickade meddelanden från din mobil till papper man tack vare NFC skölden, och papper man ska spotta ut av utskrift med termisk skr...

Finite State maskin på en Arduino

I dag kommer vi att genomföra en finite-state maskin (FSM) på en Arduino. Detta kan du ställa in system med en exakt definierade beteende utifrån skilda stater. Du lär dig vad en finite-state maskin är och vad det är bra för.I ett nötskal, kommer vi...

Kapacitans mätare med arduino och 555 timer

KAPACITANS MÄTARE MED ARDUINO OCH 555 TIMER CHIPDetta projekt syftar till att bygga en enkel kapacitans mätare, en enhet för att mäta kapacitans i nanoFarads och microFarad, med en räckvidd på ca 1 nanoFarad till hundratals microFarads.Detta projekt,...

Hemgjord Micro vertikal malning maskin DIY Z-axeln och komplett

Hemgjord Micro vertikal malning maskin DIY Z-axeln och komplettMotoriserad metall tabell Mini malning maskin för metallbearbetning DIY träbearbetning Power verktyg maskiner Student skola Modelmaking.This verktyg är en fräsning fräs, fräsning maskin,...

En liten låg profil maskin vise

jag visste min lilla gamla horisontal fräsmaskin behövs fräsar, arbor och arbor stöd, en dragstång, vakter och ett skruvstäd när jag fick den. Det visade sig att det behövs mycket mer än så.Jag har en fin gammal Wilton 3 1/2" på pelarborrmaskin vise,...

Liten Box Tim Pillow

Säg hej till lilla rutan Tim, en karaktär från universum av Markiplier. Markiplier att vara en ganska känd låt oss spelare på youtube. I huvudsak innebär att han spelar TV-spel och samtal, som registreras och ut på youtube för vår njutning. Ja jag ti...

Splittra: En liten k'nex ball maskin

detta är Splinter:Funktioner:2 banorMikro-och dalbana spårUnik design.Jag kommer att göra instruktioner snart.Håll ögonen öppna! C:...

FLING-AMA-STRING ultimata uppgraderingen: MOTION SENSOR & TIMER har katt tur det ON och OFF med hjälp av växelström (nr batterier) med nr människors INPUT

ett par veckor tillbaka jag kom över Fling-ama-String uppgradera 2.0 en katt leksak förbättras på instructable som är fantastisk och har åtgärder för att förbättra katt leksak Fling-AMA-String har en timer och större D-batterier.Ända sedan jag har ha...

555 timer kalkylator för RaspberryPi, Arduino eller en Linux-dator

Detta instructable är en kalkylator för att bestämma motstånd och kondensator värden att använda gemensamt 555 timer kretsar. Jag har inkluderat versioner för RaspberryPi och Arduino med enkla kretsar blinka två lysdioder som 555 skulle. Versionen fö...

Skapa en Casey Neistat time-lapse med en smart telefon och laptop

Casey Neistat är en otrolig filmskapare och vlogger. Alla hans vlogs har time-lapse clips liknar stilen i denna instructable. Caseys kanal: https://www.youtube.com/user/caseyneistat gå och kolla honom!Saker som behövs:• Video kamera, smart telefon fu...

Pomodoro timer med USSREN nixie rör och japanska mått "masu"

"Masu" är en japansk kubik trälåda som användes för att mäta rätt mängd ris, soja och så vidare i japan för 1300 år.Historiskt, var det mycket viktigt eftersom ris användes som skatt och lön, som salt i gamla Greece.First nämna om Masu finns i s...

Förstå en Janome broderi maskin: gängning maskinen och nålen

skriven av Eva Marie CooperDetta är en instruktions foto, klicka på bilderna för att få en fullständig detaljerad förklaring om hur att trä maskinen och nål. Jag använder en Janome brodermaskin på TechShop San Jose. Du får gärna lämna ett meddelande...

Liten Honda Dirtbike (XR80, XR100) - tändningsinställning och ventil klarering

Just ditt första motorn arbete och vet inte hur man åter tid din motor? Lär dig hur du ställer in din cam timing.Din dirtbike är svårt att starta eller tillbaka bränder? Lär dig hur du ställer in din ventil klarering.Cykeln används i det här exemplet...

Kyl dörr detektor larm

har det någonsin hänt dig att gå till kylen och upptäcka att dess dörren öppnas något... och antagligen mest maten gick till papperskorgen... Ghhhrr som fastnat dörr som behöver en extra push att göra det nära ordentligt...Detta instructables visar d...

Arduino Tutorials (del 4-21 Tutorial Pack)

Detta är Arduino Tutorial Pack del 4.Den 1: a delen finns här:Del 2 finns här:Den 3: e delen finns här:Till skillnad från andra tutorials här brukar jag ge någon bakgrund i teorin hur det fungerar. Den är inriktad på resultatet hur uppnå det - att gö...

CNC trä Inlays - med fri programvara

Gör trä inlays med en liten (prisvärda) CNC-maskin är skitkul. Och med hjälp av fri programvara (Inkscape för CAD) och Jscut.org för CAM-sidan gör det hela ännu mer awesome.Någon design antingen en som skapas i ett program för vektorgrafik, dras ut p...

Dolda Arduino termometer

visste du att många Arduinos och ATtiny marker har en inbyggd termometer? Temperaturen är inte kalibrerad, så du måste ta ett par behandlingar att karakterisera det. Den ursprungliga idén hittade jag i artikeln - Secret termometer . Jag har lagt till...

Arduino Lilypad toffel automatisk fot Massager

Jag gjorde en liten automatisk toffel fot massager med Lilypad Arduino och några av Lilypad Vibe styrelserna för faktiska Massageapparaten. Sensorn som används är en Lilypad Accelerometer som jag bara använder som en grundläggande tilt sensor. I huvu...

Arduino ControlWare-utföra aktiviteter utan omprogrammering Arduino

Hi Guys!Jag har gjort en liten GUI med vilken du kan styra arduino och utföra uppgifter som analogReads, digitala utgångar osv... och flera andra uppgifter också. Jag gjorde detta med en idé att felsöka kretsar genom att använda Arduino. Det hjälper...