Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Using arduino code to setup time/date/day . A keypad will be used to allow the c

ID: 3705990 • Letter: U

Question

Using arduino code to setup time/date/day .

A keypad will be used to allow the consumer to set the time/date, clear any alerts, and navigate the menu. The menu, at a minimum, should provide the owner with options to update the current date and time, scheduled an automatic brew time, select the desired brew cup size, and start a brew. After 30 seconds of idle time, idle meaning that no buttons are being pressed, the LCD will cycle between the current date and time, number of cups brewed (grouped by size) and the current water level (measured in percentage). If the LCD can display the statistics on one screen in a simple to understand manner, then that would be acceptable (for example if you decide to purchase a 20x4 LCD, touchscreen or Graphical LCD).

Explanation / Answer

#include <DateTime.h>

#include <DateTimeStrings.h>

#define TIME_MSG_LEN 11 // time sync to PC is HEADER and unix time_t as ten ascii digits

#define TIME_HEADER 255 // Header tag for serial time sync message

void setup(){

Serial.begin(19200);

}

void loop(){

getPCtime(); // try to get time sync from pc

if(DateTime.available()) ( // update clocks if time has been synced

unsigned long prevtime = DateTime.now():

while(prevtime == DateTime.now() ) // wait for the second to rollover

DateTime.available(); //refresh the Date and time properties

digitalClockDisplay( ); // update digital clock

// send our time to an app listening on the serial port

Serial.print(TIME_HEADER,BYTE); // this is the header for the current time

Serial.println(DateTime.now());

}

}

void getPCtime() {

// if time available from serial port, sync the DateTime library

while(Serial.available() >= TIME_MSG_LEN)( // time message

if(Serial.read() == TIME_HEADER) (

time_t pctime = 0;

for(int i=0; i < TIME_MSG_LEN -1; i++){

char c = Serial.read();

if(c >= '0' && c <= '9')

pctime = (10 * pctime) + (c - '0') ; // convert digits to a number

}

DateTime.sync(pctime); // Sync DateTime clock to the time received on the serial port

}

}

}

void digitalClockDisplay(){

// digital clock display of current time

Serial.print(DateTime.Hour,DEC);

printDigits(DateTime.Minute);

printDigits(DateTime.Second);

Serial.print(" ");

Serial.print(DateTimeStrings.dayStr(DateTime.DayofWeek));

Serial.print(" ");

Serial.print(DateTimeStrings.monthStr(DateTime.Month));

Serial.print(" ");

Serial.println(DateTime.Day, DEC);

}

void printDigits(byte digits){

// utility function for digital clock display: prints colon and leading 0

Serial.print(":");

if(digits < 10)

Serial.print('0');

Serial.print(digits,DEC);

}

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote