Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: SPI_TFT_ILI9341 TFT_fonts Adafruit_RTCLib RTC-DS1307 TSI
Revision 20:e8ff6955c24e, committed 2017-05-26
- Comitter:
- sfaghihi
- Date:
- Fri May 26 11:14:53 2017 +0000
- Parent:
- 19:450dbcda696e
- Commit message:
- sfsdfd
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/DS1307.lib Fri May 26 11:14:53 2017 +0000 @@ -0,0 +1,1 @@ +http://developer.mbed.org/users/harrypowers/code/DS1307/#c3e4da8feb10
--- a/Display.cpp Thu May 25 21:56:06 2017 +0000
+++ b/Display.cpp Fri May 26 11:14:53 2017 +0000
@@ -749,16 +749,16 @@
myTFT.foreground(Red);
myTFT.set_font((unsigned char*)Arial24x23);
if (set_alarm_state == 1)
- myTFT.fillrect(155, 195, 175, myTFT.height(), Black);
+ myTFT.fillrect(145, 195, 185, myTFT.height(), Black);
else if (set_alarm_state == 2)
- myTFT.fillrect(175, 195, 195, myTFT.height(), Black);
+ myTFT.fillrect(200, 195, 245, myTFT.height(), Black);
else if (set_alarm_state == 3)
- myTFT.fillrect(195, 195, 230, myTFT.height(), Black);
- wait(1);
+ myTFT.fillrect(245, 195, 310, myTFT.height(), Black);
+ wait(0.5);
char buf[15];
sprintf(buf, "%02d:%02d %s\n", alarmTime->hour == 12 ? 12 : alarmTime->hour%12, alarmTime->minute, alarmTime->hour>=12 ? "p.m." : "a.m.");
- myTFT.locate(160,200);
- text(160, 200, buf);
+ myTFT.locate(150,200);
+ text(150, 200, buf);
myTFT.set_font((unsigned char*)Arial12x12);
myTFT.foreground(White);
}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/RTC-DS1307.lib Fri May 26 11:14:53 2017 +0000 @@ -0,0 +1,1 @@ +http://developer.mbed.org/users/sjj698/code/RTC-DS1307/#08a857b18432
--- a/Wifi.cpp Thu May 25 21:56:06 2017 +0000
+++ b/Wifi.cpp Fri May 26 11:14:53 2017 +0000
@@ -28,13 +28,21 @@
char *Wifi::getTimeDate()
{
+ int id = 0;
LOG("IN HERE\r\n");
- socket.open(&esp);
+ esp._esp.open("TCP", id, TD_HOST, TD_PORT);
LOG("Socket opened\r\n");
socket.connect(TD_HOST, TD_PORT);
LOG("Socket connected\r\n");
- socket.send("time\r\n", 6);
+ char buf[] = "GET / HTTP/1.1\r\nHost: time.jsontest.com\r\n\r\n";
+ esp._esp.send(id, buf, sizeof(buf));
+ LOG("SENT\r\n");
char *data = (char *)calloc(23, 1);
+ while (1)
+ {
+ if (esp._esp._serial.readable())
+ pc_io.putc(esp._esp._serial.getc());
+ }
socket.recv(data, 22);
LOG("Data: %s\r\n", data);
socket.close();
--- a/Wifi.h Thu May 25 21:56:06 2017 +0000 +++ b/Wifi.h Fri May 26 11:14:53 2017 +0000 @@ -5,8 +5,8 @@ #define ESP_TX PTE22 #define ESP_RX PTE23 #define ESP_RST PTC16 -#define TD_HOST "67.205.147.133" -#define TD_PORT 5005 +#define TD_HOST "172.217.23.19" +#define TD_PORT 80 const int time_out = 30;
--- a/main.cpp Thu May 25 21:56:06 2017 +0000
+++ b/main.cpp Fri May 26 11:14:53 2017 +0000
@@ -4,11 +4,15 @@
#include "TSISensor.h"
#include "DS1307.h"
+
+
// Hardware abstractions
RawSerial pc_io(USBTX, USBRX, 115200);
Display screen;
Wifi wifi(WIFI_SSID, WIFI_PASS);
TSISensor tsi;
+InterruptIn set_a(SET_A_PIN);
+
bool wifi_con = false;
bool alarm_dup = false;
int set_alarm_state = 0;
@@ -22,6 +26,8 @@
TimeClass *programAlarm = NULL;
DateClass *programDate = NULL;
WeatherClass *programWeather = NULL;
+Thread setAlarmThread;
+Thread playAlarmThread;
// Timer Interrupt objects
Ticker clockTimer;
@@ -32,10 +38,13 @@
void init_state_hw()
{
//pc_io.baud(115200);
- if (wifi.connect())
+ /*if (wifi.connect()) {
+ char *data = NULL;
+ data = wifi.getTimeDate();
wifi_con = true;
- else
- LOG("NO");
+ LOG("Data: %s\r\n", data);
+ } else
+ LOG("NO");*/
programTime = new TimeClass(11, 0, 0);
programPrevTime = new TimeClass(11, 0, 0);
programDate = new DateClass(11, 11, 1918, 1);
@@ -72,6 +81,27 @@
}
}
+void serial_test()
+{
+ char c = pc_io.getc();
+ pc_io.putc(c);
+ if (c == 'x')
+ {
+ set_alarm_state = (set_alarm_state + 1)%4;
+ if (set_alarm_state == 1) {
+ set_alarm_state = 4;
+ }
+ }
+}
+
+void set_a_fnc()
+{
+ set_alarm_state = (set_alarm_state + 1)%4;
+ if (set_alarm_state == 1) {
+ set_alarm_state = 4;
+ }
+}
+
void refresh_and_inc()
{
//led1 = !led1;
@@ -87,7 +117,7 @@
if (!alarm_dup) {
alarm_dup = true;
programState->duringAlarm = true;
- playAlarmSound(programState);
+ playAlarmThread.start(&playAlarmSound);
}
} else
alarm_dup = false;
@@ -97,12 +127,12 @@
programState->duringAlarm = false;
else {
held_hand_time ++;
- if (!dist_dup && held_hand_time >= CHANGE_SET_ALARM_TIME) {
+ /*if (!dist_dup && held_hand_time >= CHANGE_SET_ALARM_TIME) {
dist_dup = true;
set_alarm_state = (set_alarm_state + 1)%4;
if (set_alarm_state == 1)
- setAlarmTime();
- }
+ set_alarm_state = 4;
+ }*/
}
} else {
dist_dup = false;
@@ -197,8 +227,11 @@
int main()
{
init_state_hw();
+ pc_io.attach(&serial_test);
+ //update_rtc(programState);
read_rtc(programState);
fetch_data();
+ set_a.rise(&set_a_fnc);
//LOG("AFTER\r\n");
//printf("OI OI");
@@ -208,6 +241,7 @@
// Timer initializations
clockTimer.attach(&refresh_and_inc, REFRESH_PERIOD);
+
fetchTimer.attach(&fetch_data, FETCH_PERIOD);
//alarmTimer.attach(&stopAlarm, 40);
@@ -215,6 +249,11 @@
//LOG("YAY\r\n");
// Infinite loop
while (true) {
+ if (set_alarm_state == 4) {
+ set_alarm_state = 1;
+ setAlarmThread.start(&setAlarmTime);
+ }
+
}
}
--- a/utility.cpp Thu May 25 21:56:06 2017 +0000
+++ b/utility.cpp Fri May 26 11:14:53 2017 +0000
@@ -33,10 +33,12 @@
: time(t), prevTime(p), weather(w), date(d), alarm(a), screenState(0), screenActive(true), duringAlarm(false) {}
-void playAlarmSound(StateClass *ps)
+extern StateClass *programState;
+
+void playAlarmSound()
{
PwmOut speaker(ALARM_PIN); // alarm sound of regular beeps
- while (ps->duringAlarm) {
+ while (programState->duringAlarm) {
speaker.period(1.0/150.0); // 150hz period
speaker =0.0125;
wait(0.5);
@@ -54,35 +56,48 @@
cs = 1;
wait_us(30);
adc = ain.read(); // read analog as a float
- volts = adc * 4.5; // convert to volts
- inches = volts / 0.0095;
+ volts = adc * 3.3; // convert to volts
+ inches = volts / 0.0064;
cs = 0;
return inches <= RANGE_THRESHOLD;
}
-I2C master(RTC_SDA, RTC_SCL);
-RtcDs1307 rtc(master);
+//I2C master(RTC_SDA, RTC_SCL);
+Rtc_Ds1307 rtc(RTC_SDA, RTC_SCL);
void read_rtc(StateClass *ps)
{
+ Rtc_Ds1307::Time_rtc data;
+ //rtc.twentyfour_hour();
LOG("IN RTC\r\n");
- DateTime data = rtc.now();
- LOG("%d:%d:%d", data.hour(), data.minute(), data.second());
- if (!rtc.isRunning())
- return;
- ps->time->hour = data.hour();
- ps->prevTime->hour = data.hour();
- ps->time->minute = data.minute();
- ps->prevTime->minute = data.minute();
- ps->time->second = data.second();
- ps->prevTime->second = data.second();
- ps->date->year = data.year();
- ps->date->day = data.day();
- ps->date->month = data.month();
- ps->date->dow = data.dayOfWeek();
+ int s = 0, m = 0, h = 0, dow = 0, d = 0, mo = 0, y = 0;
+ //rtc.gettime(&s, &m, &h, &dow, &d, &mo, &y);
+ rtc.getTime(data);
+ h = data.hour;
+ m = data.min;
+ s = data.sec;
+ dow = data.wday - 1;
+ d = data.date;
+ mo = data.mon;
+ y = data.year;
+ LOG("%d:%d:%d", h, m, s);
+ //if (!rtc.isRunning())
+ // return;
+ ps->time->hour = h;
+ ps->prevTime->hour = h;
+ ps->time->minute = m;
+ ps->prevTime->minute = m;
+ ps->time->second = s;
+ ps->prevTime->second = s;
+ ps->date->year = y;
+ ps->date->day = d;
+ ps->date->month = mo;
+ ps->date->dow = dow-1;
}
void update_rtc(StateClass *ps)
{
+ /*
DateTime data(ps->date->year, ps->date->month, ps->date->day, ps->time->hour, ps->time->minute, ps->time->second);
- rtc.adjust(data);
+ rtc.adjust(data);*/
+ //rtc.settime(ps->time->second, ps->time->minute, ps->time->hour, ps->date->dow, ps->date->day, ps->date->month, ps->date->year);
}
\ No newline at end of file
--- a/utility.h Thu May 25 21:56:06 2017 +0000
+++ b/utility.h Fri May 26 11:14:53 2017 +0000
@@ -7,7 +7,7 @@
#include "math.h"
#include "string"
#include "string.h"
-#include "DS1307.h"
+#include "Rtc_Ds1307.h"
// Some macros
extern RawSerial pc_io;
@@ -15,14 +15,15 @@
#define M_PI 3.14159265358979323846 /* pi */
#define REFRESH_PERIOD 1 // (s)
#define FETCH_PERIOD 3600
-#define RANGE_THRESHOLD 9.0 // (inches)
+#define RANGE_THRESHOLD 12.0 // (inches)
#define CHANGE_SCREEN_TIME 1
#define CHANGE_SET_ALARM_TIME 3
// THe pin macros
#define ALARM_PIN PTD4
-#define RTC_SDA PTC11 //PTC2
-#define RTC_SCL PTC10 //PTC1
+#define RTC_SDA PTC2 //PTC2
+#define RTC_SCL PTC1 //PTC1
+#define SET_A_PIN D0
#define RANGE_AN PTB1
#define RANGE_CS PTA5
@@ -74,7 +75,7 @@
StateClass(TimeClass *t, TimeClass *p, WeatherClass *w, DateClass *d, TimeClass *a);
};
-void playAlarmSound(StateClass *ps);
+void playAlarmSound();
bool getDistance();
void read_rtc(StateClass *ps);
void update_rtc(StateClass *ps);