Een kleine Tea Timer (TTT) machine voor Arduino en ATtiny (1 / 3 stap)

Stap 1: Functionaliteit ontwerp en programmering


Het idee van de functionaliteit van de Arduino Script kan worden gezien in deze grafiek.

  • Nadat u bent overgeschakeld op de macht de servomotor wordt verplaatst naar de eerste positie en wacht op een thee
    tas moet worden gevoegd.
  • Dan is de knop ingedrukt herhaaldelijk – één keer voor elke brouwen minuut.
  • Wanneer de knop niet langer dan 2 seconden ingedrukt is verplaatst de servomotor naar het brouwen
    positie en tellen begint.
  • Wanneer de brouwen tijd is voorbij de servomotor terugverplaatst naar einde positie (hetzelfde als de beginpositie) en macht kan worden uitgeschakeld.

Ik heb 2 versies van het script verstrekt.

De eerste is geïmplementeerd voor een standaard Arduino board en in gebruik was voor enige tijd en is ideaal voor het maken
wijzigingen in het programma zonder een programmeur. In het tweede voorbeeld wordt geïmplementeerd voor het gebruik van een ATtiny85-processor.

Het begon als een eenvoudige versie zeer vergelijkbaar met de scripts van de software u in de andere gevallen vindt. Maar het bleek dat er worden enkele toevoegingen moest maken het echt handig voor dagelijks gebruik se had ik verschillende meer eisen ten uitvoer moeten worden gelegd. Deze verbeterde versies zijn hier beschikbaar.

Een kleine statusmachine

Het programma dient altijd te weten van de huidige situatie van de tijd wanneer de macht was ingeschakeld totdat de brouwen tijd voorbij is. Daarom is er een globale variabele met de naam staat , die de juiste waarde overeenkomt met de situatie kunnen nemen:

uint8_t staat;

In de bovenstaande afbeelding ziet u hoe de Staten worden gebruikt. Het is een ongecompliceerd implementatie met uitzondering van de herhalende wanneer de knop wordt gedrukt tijdens de programmeringsfase meerdere malen.

Om een goede leesbaarheid de mogelijke worden statuswaarden gedefinieerd in de constante sectie van het script:

#define STATE_INIT 0x00 / / / < wachten op eerste knop ingedrukt
#define STATE_DOWN 0x10 / / / < de knop is ingedrukt
#define STATE_UP 0x11 / / / < de knop wordt vrijgegeven dus de thee-tijd te verhogen met één.
#define STATE_ENTER 0x21 / / / < door aan te tonen van het aantal minuten invoeren van het brouwen fase
#define STATE_BREW 0x22 / / / < Voer het theezakje en wachten tot het einde van het brouwen van tijd
#define STATE_END 0x99 / / / < tijd eindigde brouwen.

Servo / theezakje posities

De standpunten die we nodig voor de servo hebben moeten worden gevonden door trial and error, omdat ze afhangen van de concrete opzet van de thee-timer en de servo. Voor een eenvoudig ontwerp zijn 2 posities genoeg (initiële en ENTER). Ze zijn gedefinieerd in de constante sectie van het script:

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

Dit zijn de posities voor de begintoestand te hechten een theezakje, het brouwen standpunt, een kleine beweging die was aangevraagd door een aantal gebruikers en de uit positie, niet te hoog zodat de laatste druppels in de theepot vallen kunnen. Op het einde wordt de servo verplaatst naar de aanvangspositie loskoppelen van het theezakje.

De servo langzaam

De meeste wenste versterking van de eerste versie moest maken van de servo langzaam in plaats van de eenvoudige "zo snel mogelijk" versie geïmplementeerd in de eerste versie. Dus de tbSetPosition methode niet verplaatst het servo direct maar in plaats daarvan registreert de positie van de bestemming in een globale variabele. Dan is van tijd tot tijd door het aanroepen van de functie tbCheckPosition de huidige positie van de servo gewijzigd door 1 in de gewenste richting. Tot slot, wanneer de servo betreffendedepositie van de bestemming heeft bereikt de servo wordt losgekoppeld om energie te besparen.
De variabelen tbPosition en tbPositionNext opslaan de huidige en de gewenste positie.

Verplaatsen van de servo onder zware belasting

De eerste versie vrijstaande de servo onmiddellijk na het verplaatsen naar de nieuwe positie. Echter niet de servo met zware belasting zijn eindbestemming bereikt op een betrouwbare manier. Dit werd opgelost door gebruik te maken van de specifieke timer variabele tbLastMove die altijd wordt ingesteld op de huidige tijd na het verplaatsen van de servo.

De servo is vrijstaand 400 msec. na de laatste beweging.

Kijken naar de tijd

De gemakkelijkste manier voor het beheersen van de tijd-afhankelijke functies is het gebruik van de millis()-functie die resulteert in het aantal milliseconden die zijn verstreken sinds het opstarten.

Ik gebruik deze functie om de "huidige tijd" en vergelijken met de laatste keer wanneer iets interessants gebeurd.

Elke keer als de loop-functie wordt gestart, de nu-variabele is ingesteld en de duur van de huidige fase wordt berekend met behulp van de variabelen:

niet-ondertekende lang;
niet-ondertekende lang begonnen;
niet-ondertekende lange duur;

Deze aanpak is veruit beter dan het gebruik van de functie delay() voor de uitvoering van de algemene timing mechanisme. Echter, soms is het gewoon makkelijker om te delay() bijvoorbeeld gebruiken voor schakelen de LED in- en uitschakelen of het aantal milliseconden te wachten totdat de servo kreeg verplaatst.

Er zijn sommige timing-constanten zijn gedefinieerd in de koptekst van de schets die u aan uw behoeften aanpassen kunt:

#define MSECS_TO_START 2000 / / / < wanneer knop is niet ingedrukt sinds 2 seconden, de start brouwen.
#define MSECS_FOR_DROPS 10000 / / / < het aantal seconden in de zak over de theepot in de buurt is.
#define MSECS_TO_DETACH 400 / / / < na 400 msec geen beweging heeft plaatsgevonden de servo wordt losgekoppeld om energie te besparen.

De minimale tijd in milliseconden die een druk op de knop moet duren ernstig wordt genomen is geprogrammeerd als 50. Het gebeurt vaak dat een knop het signaal niet op een juiste manier maar stuitert of twee keer overschakelen voordat u volledig sluit. Deze kleine snelle sequenties zijn gewoon genegeerd.

Voordat de LED knippert één keer voor elke minuut tijd brouwen.

Reset en probeer het opnieuw

Soms gebeurt het dat de TTT start niet correct omdat het theezakje springt af of geeft het niet graag gaan duiken het aantal geprogrammeerde minuten was verkeerd. In dit geval moet u uit en weer overschakelen.

Ik omvatte meer reacties in de broncode weergeven. Lezen en wijzigen...

Gerelateerde Artikelen

Hoe te Diy een kleine lade te recycleren vuilnis voor uw tabel

Hoe te Diy een kleine lade te recycleren vuilnis voor uw tabel

Het is altijd vuil en rommelig wanneer we Diy iets over uw werktafel. Als er een gemonteerd onder de tabel kleine lade zoals vuilnis, beschadigde huid Shredder draad ingevoerd weggevaagd en de tafel schoon te houden. U kunt zelfs stellen veelgebruikt
Maak een kleine zonne-aangedreven vijver & tuin voor rond de $100

Maak een kleine zonne-aangedreven vijver & tuin voor rond de $100

verhuizen naar een nieuw huis met alleen maar gras in de achtertuin, (hebben links onze zorgvuldig gecultiveerde, goed onderhouden, critter-vriendelijke tuin achter), was onthutsend - vooral met geen budget voor tuinieren.   Maar na de eerste paar we
2-draads LCD-interface voor Arduino of Attiny

2-draads LCD-interface voor Arduino of Attiny

LCD's in het algemeen behoefte 11signal lijnen + 3 of 5 lijnen voor de Vcc, grond en contrast en in sommige gevallen een extra 2 voor achtergrondverlichting.Met behulp van het LCD-scherm in 4 bitsmodus bespaart 4 pins, maar vaak is dat niet genoeg. H
Een kleine schakelaar en Potentiometer Box voor uw Arduino

Een kleine schakelaar en Potentiometer Box voor uw Arduino

hebben elkaar geflanst ladingen van Arduino circuits en altijd vond mezelf prikken schakelaars en potentiometers via karton ik dacht dat het was tijd om iets een beetje mooier te produceren. Dus is hier hoe maak je een mooie kleine doos te houden 5 p
WireBeings Bèta: een 3D Printed en uitbreidbaar Robot voor Arduino met Android controle

WireBeings Bèta: een 3D Printed en uitbreidbaar Robot voor Arduino met Android controle

http://wirebeings.com/Bekijk de video hier:Dit is een mooi project waaraan u blijven kunt werken op en wijzigen naarmate je meer Arduino projecten leert. Dit Instructable doorloopt de volledige bouwen voor de bluetooth toegelaten robot in de eerste h
Hoe het bouwen van een huis gemaakt Coil kronkelende Machine voor Bifilar Trifilar spoelen en daarna

Hoe het bouwen van een huis gemaakt Coil kronkelende Machine voor Bifilar Trifilar spoelen en daarna

dit is een Video van de Coil kronkelende machine die ik heb gemaakt, meestal zetten samen met behulp van schroot items, alleen een paar dingen werden gekocht in de store (Verdeeldozen, Counter), de rest ik afkomstig uit een magnetron, schroot hout ha
Splinter: Een kleine k'nex bal machine

Splinter: Een kleine k'nex bal machine

dit is Splinter:Kenmerken:2 padenMicro achtbaan trackUniek design.Ik wil snel instructies.Blijf op de hoogte! C:
De magnetron: Een 3D Scanner van de kleur voor kleine voorwerpen

De magnetron: Een 3D Scanner van de kleur voor kleine voorwerpen

Heb je ooit wilde 3D scan een gevulde, mens of dier een beetje keramische dinosaurus, of misschien een uil whistle? Weet je, bij te dragen tot het volumetrische digitale archief van de beschaving. Nou, ik heb goed nieuws voor u - alles wat u nodig he
Folding opslag en catio voor een vrachtwagen camper. (of een kleine hond patio)

Folding opslag en catio voor een vrachtwagen camper. (of een kleine hond patio)

Als gevolg van het ontwerp van mijn truck en trailer berust de trailer op twee punten aan de achterkant van de truck in plaats van op het bed van de vrachtwagen zoals het hoort. Dit probleem is vrij algemeen. U kunt oplossen door dit, moest ik iets v
Logger Shield: Dataloggen voor Arduino

Logger Shield: Dataloggen voor Arduino

Data logging schildHier is een handige Arduino schild: we hebben een heleboel mensen op zoek naar een toegewijde en goed ontworpen gegevensregistratie schild. Wij hard gewerkt aan een goedkoop maar goed-rond gemaakte ontwerp ingenieur. Niet alleen is
Android gecontroleerd lichten en macht, pfodDevice voor Arduino

Android gecontroleerd lichten en macht, pfodDevice voor Arduino

Update: Zie Andriod/Arduino voor Beginners - ontwerp Custom Andriod menu's aan de Arduino uitgangen wissel voort en vandoor. Absoluut geen programmering vereist voor een alternatief dat niet vereist programmering helemaal.============================
Prototyping shield voor Arduino Mega

Prototyping shield voor Arduino Mega

dit is een down dirty prototyping schild dat voor Arduino Mega's werken zal en pin er compatibel klonen. Dit is de eerste keer dat ik dit forum heb gemaakt, maar ik heb andere projecten die ik denk dat dit zou handig zijn voor.Gebruikte materialen:Pr
Micro - een Mini K'nex bal Machine project

Micro - een Mini K'nex bal Machine project

Project Micro is een kleine, desk-top bal-machine die 2 routes bevat; eenmaal correct is ingesteld, wordt de ballen nooit af vallen.Helaas ben ik veel te lui om te zitten en tellen van alle stukken. Als u niet, laat het me weten. Mijn gok is ongeveer
Bouwen van een kleine server

Bouwen van een kleine server

Het project bestaat in het bouwen van een kleine maar staat server voor een home lab gericht op virtualisatie of soortgelijk. Het eindresultaat als een kleine server met volledige mogelijkheden voor IPMI, 32G RAM, een grote SSD en een 8-core CPU draa