Pages: [1]   Go Down
Author Topic: Using the time library...  (Read 188 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 1
Posts: 9
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Basically what I'm trying to do:
1. On button press, print the current date and then the date x amount of time later (which will depend ultimately on the choice of four different buttons, in this case I was trying for two days later).

2. Not sure how exactly I tell day() to add a value. My attempt did not work.

Cheers,
~R

Code:
/*************************************************************************
  This is an Arduino library for the Adafruit Thermal Printer.
  Pick one up at --> http://www.adafruit.com/products/597
  These printers use TTL serial to communicate, 2 pins are required.

  Adafruit invests time and resources providing this open source code.
  Please support Adafruit and open-source hardware by purchasing products
  from Adafruit!

  Written by Limor Fried/Ladyada for Adafruit Industries.
  MIT license, all text above must be included in any redistribution.
 *************************************************************************/

// If you're using Arduino 1.0 uncomment the next line:
#include "SoftwareSerial.h"
// If you're using Arduino 23 or earlier, uncomment the next line:
//#include "NewSoftSerial.h"

#include "Adafruit_Thermal.h"
#include "adalogo.h"
#include <avr/pgmspace.h>
#include <Time.h>

int printer_RX_Pin = 5;  // This is the green wire
int printer_TX_Pin = 6;  // This is the yellow wire
const int buttonPin = 2;   // the number of the pushbutton pin
int foodType = 1;

int buttonState = 0;  // variable for reading the pushbutton status

Adafruit_Thermal printer(printer_RX_Pin, printer_TX_Pin);

void setup(){
  Serial.begin(9600);
  pinMode(7, OUTPUT); digitalWrite(7, LOW); // To also work w/IoTP printer
  // initialize the pushbutton pin as an input:
  pinMode(buttonPin, INPUT);
  printer.begin();
  Serial.begin(9600);
  setTime(9,29,0,10,18,12);
}

void printDigits (int digits) {
   // utility function for clock display: prints preceding colon and leading 0
   printer.println(":");
   if(digits < 10)
     printer.println('0');
   printer.println(digits);
 }

void loop(){
  // read the state of the pushbutton value:
  buttonState = digitalRead(buttonPin);

  // check if the pushbutton is pressed.
  // if it is, the buttonState is HIGH:
 // This prints the current date
  if (buttonState == HIGH) {        
  printer.println(foodType);
  printer.println(hour());
  printDigits(minute());
  printDigits(second());
  printer.println(" ");
  printer.println(day());
  printer.println(" ");
  printer.println(month());
  printer.println(" ");
  printer.println(year());
  printer.println();

 // This statement updates the date depending on type of food i.e. Vegetable, meat, etc.
  if (foodType == 1) {
    day = day + 2;
    printer.println("Use by this date: ");
    printer.println(day());
  }
  
  printer.println();
  printer.println();

  printer.sleep();      // Tell printer to sleep
  printer.wake();       // MUST call wake() before printing again, even if reset
  printer.setDefault(); // Restore printer to defaults  
  }
}

 

« Last Edit: October 29, 2013, 03:37:38 pm by rcrowen » Logged

Seattle, WA USA
Offline Offline
Brattain Member
*****
Karma: 610
Posts: 49077
Seattle, WA USA
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Specifically, I'm talking about my if statement in which I have the code in question currently commented out. Thoughts?
The code does (did) something. What that is is a mystery.
You want the code to do something. What that is is a mystery.

My thought is that you need to finish asking your question.

Code:
     // This prints the current date of fridge going into fridge
This does what?

Code:
  if (foodType = 1) {
= != ==

Logged

Offline Offline
Newbie
*
Karma: 1
Posts: 9
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Thanks for the response. Updated original to hopefully make a little clearer.

Cheers,
~R
Logged

Grand Blanc, MI, USA
Offline Offline
Faraday Member
**
Karma: 95
Posts: 4060
CODE is a mass noun and should not be used in the plural or with an indefinite article.
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

It's worth reading about the Time library and also looking through the actual code (specifically the Time.h and Time.cpp files).

The Time library defines a couple new data types that you will want to be familiar with.  It also defines a bunch of functions for working with these data types.

The time_t data type represents a particular point in time, to a resolution of one second.  Specifically, the value held in a time_t variable is just the number of seconds since 00:00:00 01Jan1970 (the Unix epoch; the Arduino Time library has a lot in common with the standard C time library).

Actually time_t is just an unsigned long integer.

To conveniently determine the month, day, year, hour, minute or second represented by a time_t variable, there are a bunch of functions that are explained on the page linked above.

Not documented at the link above is another data type called tmElements_t.  This is actually a structure that has different members representing year, month, day, etc.  Then there are two functions for converting between a time_t variable and a tmElements_t structure, makeTime() and breakTime().

Very useful library once you get the hang of it.  Have a look, then if you don't get it, ask questions.
Logged

MCP79411/12 RTC ... "One Million Ohms" ATtiny kit ... available at http://www.tindie.com/stores/JChristensen/

Pages: [1]   Go Up
Jump to: