Menta-tamaño éxito metro (dejar de fumar!) con Arduino (3 / 8 paso)

Paso 3: Código de Arduino

Hay tres librerías adicionales para obtener este funcionamiento:
Tiempo
Adafruit_GFX
Adafruit_PCD8544

El código se ha inspirado en el Maker Faire Bay Area cuenta regresiva por MaceTech, a quien también se puede obtener la última ChronoDot. El archivo .ino es adjunto (Arduino 1.0 requiere) y el código está a continuación.

En este ejemplo, la fecha de dejar de fumar es 01 de abril de 2012. En realidad, la fecha de dejar de fumar es el 14 de abril de 2012 pero que en el futuro. La mejor manera de comprobarlo es conectar todo, pero prueba los componentes individuales (ChronoDot, LCD) con su código de ejemplo antes de intentar poner todo junto.

/*
Temporizador de éxito sin humo
Utilizando un ChronoDot y una pantalla LCD de Nokia 5110.

Biblioteca de tiempo de, bibliotecas de Adafruit PCD, RTC y el alambre necesario.

El propósito de este dibujo es mostrar un nuevo no fumador
Cuánto tiempo han estado sin cigarrillos en días y
horas y un número constantemente creciente de la cantidad de
dinero ahorrado por no fumar.

Gran parte del código se inspiró en la Maker Faire Bay
Reloj de cuenta regresiva del área Publicada en
http://macetech.com/blog/node/115

De abril de 2012, Daniel Gentleman, thoughtfix.com
*/

#include < Wire.h >
#include < Time.h >
#include < DS1307RTC.h > / ChronoDot/DS3231 trabaja como el DS1307

Cosas de la LCD:
#include < Adafruit_GFX.h >
#include < Adafruit_PCD8544.h >

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

PIN 7 - reloj Serial (SCLK)
PIN 6 - datos en serie a (DIN)
pin 5 - comando de datos Seleccione (D/C)
Pin 4 - selección de chip LCD (CS)
PIN 3 - LCD reset (RST)

Configuración de variables:
time_t dejar de fumar; Día/hora del último humo
time_t difftime; diferencia entre el tiempo actual y dejar de fumar
int diff_seconds;
int diff_minutes;
int diff_hours;
int diff_days;
Float PackCost = 6.50; Costo por paquete. US $6,50
Float PackDay = 1.5; Frecuencia de fumar. 1.5 paquetes/día
Float MinutesQuit;
Float CostPerHour;
Float CashSaved;

Inicializar el RTC y LCD
void setup() {}
Serial.Begin(9600); Set baud de 9600
display.Begin();
display.setContrast(40);
display.clearDisplay();
display.display();
setSyncProvider(RTC.get); sistema sync con el ChronoDot
setSyncInterval(10); sincronizar cada 10 segundos si es posible

Compruebe si sync trabajado
if(timeStatus()! = ajuste del horario)
Serial.println ("no se puede sincronizar con el RTC");
otra cosa
Serial.println ("RTC ha establecido la hora del sistema");

quit_elements de tmElements_t; matriz de elementos hasta la fecha de dejar de fumar.

Medianoche en 01 de abril de 2012
quit_elements. Segundo = 0;
quit_elements. Minuto = 0;
quit_elements. Hora = 0;
quit_elements. Wday = 7;
quit_elements. Día = 1;
quit_elements. Mes = 4;
quit_elements. Año = 2012-1970;
salir = makeTime(quit_elements); Marca de tiempo UNIX dejar fecha
Delay(1000);
}
time_t systime; tiene hora para el cálculo de diff

void loop() {}

Si (systime! = now()) {/ / espere nueva segunda a hacer cualquier cosa
SYSTIME = now();
difftime = systime - dejar de fumar; restar tiempo de dejar de fumar de hora actual
diff_seconds = difftime % 60; segundos
difftime = 60; convertir a minutos
diff_minutes = difftime % 60; obtener minutos
difftime = 60; convertir a horas
diff_hours = difftime % 24; Haz horas
difftime = 24; convertir en días
diff_days = difftime; obtener días
}
DisplayTime();
Delay(1000);
display.clearDisplay();
}

modificar la rutina ejemplo de biblioteca de tiempo de
void DisplayTime() {}
MinutesQuit = ((systime-quit)/60);
CashSaved = ((PackCost * PackDay * MinutesQuit) / 1440);
En primer lugar, la pantalla LCD
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 ("libre de tabaco!");
display.setCursor(0,30);
display.Print("$");
display.Print(CashSaved);
display.println ("guardado");
display.display();
Opcionalmente: Serial
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 ("libre de tabaco!");
}

Artículos Relacionados

LCD, potenciómetro y pwm led con Arduino

LCD, potenciómetro y pwm led con Arduino

Lo que usted necesita:Placa ArduinoPANTALLA LCD 16 * 2Recortador de 10 kΩPotenciómetro 10 kΩLED 5mm220, 330 resistencias ΩAlgunos puentesProtoboardQué dibujo se hace:En este bosquejo, se imprimirá el valor de potenciómetro analógico en la pantalla lc
Uso de un acelerómetro y un giroscopio con Arduino

Uso de un acelerómetro y un giroscopio con Arduino

he comprado recientemente una combinación de 3 ejes acelerómetro y giroscopio de 2 ejes de Sparkfun y quería publicar parte del código utiliza para conseguirlo ya está en marcha.  Estoy pensando en usarlo en un Arduino basado en controlador MIDI que
Cómo dejar de fumar mediante hipnosis

Cómo dejar de fumar mediante hipnosis

si eres un heavy o un fumador social, dejar de fumar es una tarea desalentadora. Pero mientras que es ciertamente difícil, hay muchas ventajas de este mal hábito de fumar. Su salud mejorará y también sientes victorioso en saber que tienes con éxito k
Dejar de fumar emergencia caja

Dejar de fumar emergencia caja

parecen tener inheirited uno de los amigos de compañero de trabajo de mi esposa.  Sabes, la focha viejo jubilado clase. Aunque es como la familia y de alguna manera debo mantener un ojo sobre él. Por supuesto, sabes que estás en marcación para tech s
Fácil bocado para ayudarle a usted dejar de fumar!

Fácil bocado para ayudarle a usted dejar de fumar!

Alrededor 60% de los fumadores dicen que quieren dejar de fumar, pero pocos realmente tener éxito. Nicotina, considerado entre los expertos, uno de los más difíciles de dar la patada, puede ser un viaje tedioso y doloroso.Un viejo truco de comer troz
Cómo dejar de fumar ahora

Cómo dejar de fumar ahora

Dejar de fumar puede ser difícil - pero es la mejor opción, realmente. Si usted ha estado posponiendo lo por un tiempo - detener. Dejar de fumar ahora mismo. Vamos a ver algunos pasos de tops para ayudarle a dejar de fumar inmediatamente.Paso 1: Tire
Dejar de fumar!, de motivación placa de pared.

Dejar de fumar!, de motivación placa de pared.

Dejar de fumar puede ser una de las cosas más difíciles que puedes hacer en tu vida. Es realmente depende de usted si es el momento para dejar de fumar, o no.Este proyecto pretendía mostrar un trofeo de 3,5 pulgadas de mi logro poco ;)tenía este hábi
Cómo dejar de fumar

Cómo dejar de fumar

Cómo dejar de fumar! ¿- Los videos más populares aquí son divertidos, dosis trabajo? no realmente, pero es un video que muestra que es apenas un lil programa como estos que puede hacer u dejar de fumar, más que un placebo, si algo de lo que establece
Cómo dejar de fumar cigarrillos

Cómo dejar de fumar cigarrillos

Si usted quiere dejar de fumar que usted necesitaCompruebe hacia fuera el sistema de verdad de adicción aquí: usted encontrará algunas técnicas inusuales y grandes recursos para ayudarle a dejar de fumar para siempre.http://www.truthofaddiction.com/
Guía de giroscopio y acelerómetro con Arduino incluye filtrado de Kalman

Guía de giroscopio y acelerómetro con Arduino incluye filtrado de Kalman

esta guía fue publicada primero en el foro de Arduino y se puede encontrar aquí: http://arduino.cc/forum/index.php/topic, 58048.0.htmlYo apenas había publicado, así que aún más conseguirá un uso. El código se puede encontrar aquí:https://github.com/T
Smart termómetro Personal con Arduino

Smart termómetro Personal con Arduino

Este instructable es preparado como parte de nuestra tarea para TfCD (tecnología para el diseño de concepto) el curso en TU Delft. Se prepara el siguiente instructivo:bo Koperdraat: 4209567Karthik Mahadevan: 4501578En este instructable aprenderá a co
Lector de mente con Arduino

Lector de mente con Arduino

Hola a todos!!!!Este es mi lector de mente para Arduino.El lector de la mente te puede decir qué letra del alfabeto (ABC) o que jugando la tarjeta le han imaginado con sólo algunas preguntas.Es un proyecto muy simple para la Asamblea y con pocas cone
Arduino LCD termómetro / control de temperatura con sensor de temperatura TMP36GZ añadido 2 relé de chanel, agregó RTC ds1307, añadido un case.based en la guía de WWC.

Arduino LCD termómetro / control de temperatura con sensor de temperatura TMP36GZ añadido 2 relé de chanel, agregó RTC ds1307, añadido un case.based en la guía de WWC.

HY mi primer guid basado en la guía de WWC.03 de octubre de 2013 agregado caso (Paso 13)23 de septiembre de 2013 ha añadido RTC (realtimeclock) Ds1307 (paso 11)13 de septiembre de 2013 ha añadido 2 relé de chanel apagar la lámpara de calefacción. (pa
Creación de un termómetro digital con Arduino

Creación de un termómetro digital con Arduino

¿imaginaste alguna vez que hace su propio termómetro digital? Con el desarrollo de la tecnología cada vez más sofisticado, que nada es imposible.Esta vez el proyecto es crear su propio termómetro digital con Arduino. Que debe ser aprendido en este tu