This program can log data that is read from RTC(real time clock) which is embedded inside LPC1768. It saves the data to the LPC1768’s memory as “log.txt”.
Diff: main.cpp
- Revision:
- 0:a5ea226b5b26
- Child:
- 2:e51a43447d68
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Wed Jul 08 11:26:38 2015 +0000 @@ -0,0 +1,92 @@ +/* Datalogging with Real Time Clock on LPC1768 +* +* @author: Baser Kandehir +* @date: July 8, 2015 +* @license: Use this code however you'd like +* +* @description of the program: + +* This program can log data that is read from RTC(real time clock) which is embedded inside LPC768. +* It saves the data to the LPC1768’s memory as “log.txt”. For this example program, the data is how many times the button is +* pressed and when it is pressed in terms of real time. It can also display the button count as 4-bit binary number using 4 leds +* on the LPC1768. There are two different time settings on the code. One can set the time from the terminal or manually by +* uncommenting the corresponding portion of code. Once the time is set, if there is a battery connected to real-time clock, +* RTC will continue to keep track of current time. In order not to reset the real-time to its initial value every time microcontroller +* is reset, it is neccessary to set the time once and delete the portion of code which sets the time and keep the rest. +* +* @connections: +*-------------------------------------------------------------- +* LPC1768 ________________Peripherals +* Pin 13 --------> (TX) RX pin of the FTDI or Bluetooth etc. +* Pin 14 --------> (RX) TX pin of the FTDI or Bluetooth etc. +* Pin 20 --------> Pull-up connected button +* GND -----------> GND of any peripheral +* VOUT (3.3 V) --> Pull-up resistor +*--------------------------------------------------------------- +* +*/ + +#include "mbed.h" +#include "ledCounter.h" + +Serial ftdi(p13, p14); // setup terminal link +LocalFileSystem local("local"); // define local file system +DigitalIn button(p20); // pull-up button is connected to p20 + +int count=0; // button count +struct tm t; // current time will be stored here + +int main() +{ + /* UNCOMMENT BELOW if you want to set the time from the terminal. */ +/* + ftdi.printf("Enter current date and time:\r\n"); + ftdi.printf("YYYY MM DD HH MM SS[enter]\r\n\r\n"); + ftdi.scanf("%d %d %d %d %d %d", &t.tm_year, &t.tm_mon, &t.tm_mday, &t.tm_hour, &t.tm_min, &t.tm_sec); + ftdi.printf("-------------------------- \r\n"); + + t.tm_year = t.tm_year - 1900; // adjust for tm structure required values + t.tm_mon = t.tm_mon - 1; + + set_time(mktime(&t)); // set the time +*/ + + /* UNCOMMENT BELOW if you want to set time manually */ +/* + t.tm_year = 2015; // current year + t.tm_mon = 7; // current month + t.tm_mday = 7; // current day + t.tm_hour = 15; // current hour + t.tm_min = 16; // current minute + t.tm_sec = 0; // current second + + t.tm_year = t.tm_year - 1900; // adjust for tm structure required values + t.tm_mon = t.tm_mon - 1; + + set_time(mktime(&t)); // set the time +*/ + + /* Once the time is set, if there is a battery (3V) connected to VB pin and GND, RTC will remember the exact time. */ + + while(1) + { + time_t seconds = time(NULL); + + if(button.read()==0) // if the button is pressed + { + while(button.read()==0); // wait until release + wait_ms(20); // button debounce + count++; // count up + + FILE* Logfile = fopen ("/local/log.txt","a"); // open file for appending + + ftdi.printf("Time: %s \rButton count: %d \r\n",ctime(&seconds),count); // send data to terminal + ftdi.printf("-------------------------- \r\n"); + + fprintf(Logfile, "Time: %s \rButton count: %d \r\n",ctime(&seconds),count); // save data to log.txt file + fprintf(Logfile, "-------------------------- \r\n"); + fclose(Logfile); + } + ledCounter(count); // display the count as binary + } +}