Munt-en kleinbedrijf succes Meter (stoppen met roken!) met Arduino (3 / 8 stap)

Stap 3: Arduino Code


Zijn er drie extra bibliotheken nodig om dit uitvoeren:
Tijd
Adafruit_GFX
Adafruit_PCD8544

De code is sterk geïnspireerd op de Maker Faire Bay Area countdown-timer door MaceTech, door wie kan je ook de nieuwste ChronoDot. Het Ino bestand is bijgevoegd (Arduino 1.0 vereist) en de raw code is hieronder.

In dit voorbeeld is de quit datum 1 April 2012. In werkelijkheid, de quit datum is 14 April 2012, maar dat is in de toekomst. De beste manier om dit te testen is aan kabellengte tot alles, maar de afzonderlijke onderdelen (ChronoDot, LCD) testen met hun voorbeeldcode voordat je probeert om het allemaal samen.

/*
Rook-vrij succes timer
Met behulp van een ChronoDot en een Nokia 5110 LCD.

Tijd library, Adafruit PCD Bibliotheken, RTC en draad nodig.

Het doel van deze schets is om te laten zien van een nieuwe niet-roker
Hoe lang ze geweest zonder sigaretten in dagen en
uren en een voortdurend groeiend aantal de hoeveelheid
geld bespaard door niet roken.

Veel van de code werd geïnspireerd door de Maker Faire baai
Gebied countdown klok geplaatst op
http://macetech.com/blog/node/115

April 2012, Daniel Gentleman, thoughtfix.com
*/

#include < Wire.h >
#include < Time.h >
#include < DS1307RTC.h > / / DS3231/ChronoDot werkt als DS1307

LCD spullen:
#include < Adafruit_GFX.h >
#include < Adafruit_PCD8544.h >

Adafruit_PCD8544 display = Adafruit_PCD8544 (7, 6, 5, 4, 3);

pin 7 - seriële klok uit (SCLK)
pin 6 - seriële gegevens uit (DIN)
pin 5 - opdracht/gegevens selecteren (D/C)
pin 4 - LCD chip select (CS)
pin 3 - LCD reset (RST)

De variabelen van de instelling:
time_t stoppen; Dag/tijd van de laatste rook
time_t difftime; verschil tussen huidige en af te sluiten
int diff_seconds;
int diff_minutes;
int diff_hours;
int diff_days;
zweven PackCost = 6,50; Kosten per pack. US $6,50
zweven PackDay = 1.5; Rookvrije frequentie. 1.5 packs/dag
float MinutesQuit;
float CostPerHour;
float CashSaved;

Initialiseren van RTC en LCD
VOID Setup {}
Serial.begin(9600); set baud tot 9600
display.begin();
display.setContrast(40);
display.clearDisplay();
display.display();
setSyncProvider(RTC.get); sync te gebruiken de ChronoDot instellen
setSyncInterval(10); elke 10 seconden indien mogelijk synchroniseren

Controleer of sync werkte
if(timeStatus()! = timeSet)
Serial.println ("Unable to sync met de RTC");
anders
Serial.println ("RTC heeft de systeemtijd instellen");

tmElements_t quit_elements; de matrix van de elementen aan de datum van stoppen met roken.

Middernacht op 1 April 2012
quit_elements. Tweede = 0;
quit_elements. Minuten = 0;
quit_elements. Uur = 0;
quit_elements. Wdag = 7;
quit_elements. Dag = 1;
quit_elements. Maand = 4;
quit_elements. Jaar = 2012-1970;
stoppen = makeTime(quit_elements); UNIX timestamp stoppen datum/tijd
delay(1000);
}
time_t systime; huidige tijd voor diff berekening houdt

void loop {}

Als (systime! = now()) {/ / wait voor nieuwe tweede om iets te doen
systime = now();
difftime = systime - stoppen; aftrekken afsluiten tijd van de huidige tijd
diff_seconds = difftime % 60; krijgen seconds
difftime / = 60; converteren naar minuten
diff_minutes = difftime % 60; Ontvang minuten
difftime / = 60; omzetten in uren
diff_hours = difftime % 24; uren krijgen
difftime / = 24; omzetten in dagen
diff_days = difftime; dagen te krijgen
}
DisplayTime();
delay(1000);
display.clearDisplay();
}

routine van Time Library voorbeeld gewijzigd
VOID DisplayTime() {}
MinutesQuit = ((systime-quit)/60);
CashSaved = ((PackCost * PackDay * MinutesQuit) / 1440);
Ten eerste, het LCD-scherm
display.setTextSize(1);
display.setTextColor(BLACK);
display.setCursor(0,0);
display.Print(diff_days);
display.Print ("d");
display.Print(diff_hours);
display.Print(":");
if(diff_minutes < 10)
display.Print('0');
display.Print(diff_minutes);
display.Print(":");
if(diff_seconds < 10)
display.Print('0');
display.Print(diff_seconds);
display.setCursor(0,10);
display.println ("rook vrij!");
display.setCursor(0,30);
display.Print("$");
display.Print(CashSaved);
display.println ("opgeslagen");
display.display();
Optioneel: seriële
Serial.Print(diff_days);
Serial.Print ("d");
Serial.Print(diff_hours);
Serial.Print(":");
if(diff_minutes < 10)
Serial.Print('0');
Serial.Print(diff_minutes);
Serial.Print(":");
if(diff_seconds < 10)
Serial.Print('0');
Serial.Print(diff_seconds);
Serial.println ("rook vrij!");
}

Gerelateerde Artikelen

Weerstand kleur Code Calculator met Arduino

Weerstand kleur Code Calculator met Arduino

Dit is een 4 band mechanische weerstand Calculator van de kleur Code, het idee om die deze mechanische weerstand kwam toen ik per ongeluk mijn doos van weerstanden en alle weerstanden (1300 van hen liet) kreeg vermengd. Ooops!. Thank god er is een AP
Guard Dog and Mailman Scenario met Arduino

Guard Dog and Mailman Scenario met Arduino

Het doel van dit project is om te programmeren van twee robots om te communiceren met succes met elkaar, handelt uit een guard dog-mailman scenario. Het scenario wordt dat de Guard Dog-robot zijn huis (aka-lichtbron) beschermt tegen iets dat binnen h
AtoZ van RC hobby + DIY radio met ARDUINO

AtoZ van RC hobby + DIY radio met ARDUINO

Wikipedia omschrijft RC-voertuig alsEen afstandsbediening voertuig is een voertuig dat op afstand wordt bestuurd door een betekent dat de beweging met een externe oorsprong niet tot het apparaat beperkt. Dit is vaak een bedieningsorgaan radio, kabel
Het gebruik van de Module van de Camera van de OV7670 met Arduino?

Het gebruik van de Module van de Camera van de OV7670 met Arduino?

Hier introduceerden we één module van de camera van de OV7670 net gekocht online, met inbegrip van de mededeling van de cameramodule en Arduino UNO, met behulp van de manieren om te nemen van de foto via cameramodule, enzovoort. Dit is een cameramodu
Interfacing SIM900A GSM Modem met Arduino

Interfacing SIM900A GSM Modem met Arduino

Dit is een zeer goedkope en eenvoudige Arduino GSM- en GPRS-module. We gebruiken de module SIMCom SIM900A. Het is de goedkopere module nu beschikbaar in de markt. Dit bericht kunt u bellen met arduino gecontroleerd en ook het verzenden van tekstberic
PuttDuino putt-putt gat met arduino

PuttDuino putt-putt gat met arduino

mijn bedrijf heeft jaarlijkse evenementen waar we allemaal samen te komen voor leuk - om te blazen stoom af en hebben een beetje concurrentie. In het verleden hebben we Softbal en bowling competities. Dit jaar iemand had een bron van inspiratie: elke
Het gebruik van IR-afstandsbedieningen met Arduino (huidige en bijgewerkte)

Het gebruik van IR-afstandsbedieningen met Arduino (huidige en bijgewerkte)

Ik ben moe van deze ingewikkelde tutorials over het gebruik van bepaalde dingen. Ik hou van eenvoudige, gemakkelijk te begrijpen, stap voor stap instructies. Mijn grootste probleem was met IR en POV. Ik heb eindelijk onder de knie hoe u kunt besturen
Capaciteit meter met arduino en 555 timer

Capaciteit meter met arduino en 555 timer

CAPACITEIT METER MET ARDUINO EN 555 TIMER CHIPDit project heeft tot doel om te bouwen van een eenvoudige capaciteit meter, een apparaat voor het meten van de capaciteit in nanoFarads en microFarad, met een bereik van ongeveer 1 nanoFarad tot honderde
AM2320 met Arduino aansluiten

AM2320 met Arduino aansluiten

Hallo kerels. Dit is mijn eerste instructable. Ik besloot te vertellen u hoe een vochtigheid en temperatuur sensor AM2320 verbinden met Arduino board.Deze sensor is zeer nauwkeurig en gevoelig, dus het is geweldig voor hoge nauwkeurige metingen. Maar
Het maken van een DIY borstelloze Gimbal met Arduino

Het maken van een DIY borstelloze Gimbal met Arduino

Dit is een verhaal van mijn derde project met goedkope gyro en Arduino.Na de eerdere twee projecten, Gemakkelijk omgekeerd slinger en 3D kalligrafie, ik gedacht heb van het maken van Camera Gimbal met Arduino. Dan had ik drie beleidsregels voor het p
Verzenden en ontvangen van MIDI met Arduino

Verzenden en ontvangen van MIDI met Arduino

Dit instructable zal u tonen hoe te een Arduino gebruiken voor het verzenden en ontvangen van een verscheidenheid van MIDI-berichten, zodat u kunt beginnen met het opbouwen van uw eigen MIDI-controllers en instrumenten. Eerst ik zal praten een beetje
Hoe maak je een mobiele telefoon en Computer gecontroleerd 3D gedrukte Robot met Arduino - IoBot.

Hoe maak je een mobiele telefoon en Computer gecontroleerd 3D gedrukte Robot met Arduino - IoBot.

Als u op zoek bent naar een manier om een Arduino gebaseerde apparaten te controleren, zal deze instructie u tonen hoe om het te doen door het bouwen van eenvoudige robot.De IoBot kan worden gecontroleerd door mobiel en computer toepassing via LAN of
Programmeren van AVR met Arduino als ISP zonder Bootloader en externe Crystal

Programmeren van AVR met Arduino als ISP zonder Bootloader en externe Crystal

Hallo!!. Ik ben Avra en dit is mijn eerste instructable. Hier ga ik uitleggen hoe te branden van codes op standalone AVR ICs zonder gebruik te maken van elke USBASP, elke externe crystal en elke bootloader. U hoeft alleen een Arduino board. Mogelijk
Home Automation met behulp van RF-Transceiver met Arduino Micrcontroller

Home Automation met behulp van RF-Transceiver met Arduino Micrcontroller

Dit project laten zien voor het ontwerp en de ontwikkeling van een Home Automation systeem met behulp van RF-Transceiver gecontroleerd door Arduino Micrcontroller. De gebruiker zal verschillende indoor apparatuur zoals bollen, deuren en fans met behu