modifications to original autoblindscontroller

Fork of AutoBlindsController by Max Mujica

Committer:
mmujica6
Date:
Thu Oct 17 05:47:51 2013 +0000
Revision:
0:cf0ddcf40339
Child:
1:3fa00a470e50
Automatic Blinds Controller;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mmujica6 0:cf0ddcf40339 1 // Sweep the motor speed from full-speed reverse (-1.0) to full speed forwards (1.0)
mmujica6 0:cf0ddcf40339 2
mmujica6 0:cf0ddcf40339 3 #include "mbed.h"
mmujica6 0:cf0ddcf40339 4 #include "Motor.h"
mmujica6 0:cf0ddcf40339 5 #include "TextLCD.h"
mmujica6 0:cf0ddcf40339 6
mmujica6 0:cf0ddcf40339 7 Motor m(p21, p23, p28); // pwm, fwd, rev
mmujica6 0:cf0ddcf40339 8 DigitalOut led(LED1);
mmujica6 0:cf0ddcf40339 9 TextLCD lcd(p14, p16, p17, p18, p19, p20, TextLCD::LCD20x4); // rs, e, d4-d7
mmujica6 0:cf0ddcf40339 10 DigitalOut high(p22);
mmujica6 0:cf0ddcf40339 11 DigitalIn pb(p6);
mmujica6 0:cf0ddcf40339 12 DigitalOut high2(p29);
mmujica6 0:cf0ddcf40339 13 AnalogIn slider(p15);
mmujica6 0:cf0ddcf40339 14 Serial pc(USBTX, USBRX);
mmujica6 0:cf0ddcf40339 15 void open();
mmujica6 0:cf0ddcf40339 16 void close();
mmujica6 0:cf0ddcf40339 17 void printTime(double);
mmujica6 0:cf0ddcf40339 18 int state;
mmujica6 0:cf0ddcf40339 19 char buffer[32];
mmujica6 0:cf0ddcf40339 20 time_t seconds;
mmujica6 0:cf0ddcf40339 21 double setTime;
mmujica6 0:cf0ddcf40339 22 struct tm* timeInfo;
mmujica6 0:cf0ddcf40339 23
mmujica6 0:cf0ddcf40339 24 int main() {
mmujica6 0:cf0ddcf40339 25 set_time( 702000900 );
mmujica6 0:cf0ddcf40339 26 state = 1; //Start with blinds closed (0 is open)
mmujica6 0:cf0ddcf40339 27 pb.mode(PullUp);
mmujica6 0:cf0ddcf40339 28 int lastPb = pb;
mmujica6 0:cf0ddcf40339 29 lcd.cls();
mmujica6 0:cf0ddcf40339 30 wait(1);
mmujica6 0:cf0ddcf40339 31 while (1){
mmujica6 0:cf0ddcf40339 32 seconds = time(NULL);
mmujica6 0:cf0ddcf40339 33 if (abs(slider-setTime)>.01){
mmujica6 0:cf0ddcf40339 34 setTime = slider;
mmujica6 0:cf0ddcf40339 35 }
mmujica6 0:cf0ddcf40339 36 printTime(setTime);
mmujica6 0:cf0ddcf40339 37 high = 1;
mmujica6 0:cf0ddcf40339 38 high2 = 1;
mmujica6 0:cf0ddcf40339 39 if (!pb){
mmujica6 0:cf0ddcf40339 40 if (state == 1){
mmujica6 0:cf0ddcf40339 41 open();
mmujica6 0:cf0ddcf40339 42 led = 1;
mmujica6 0:cf0ddcf40339 43 pc.printf("open");
mmujica6 0:cf0ddcf40339 44 }
mmujica6 0:cf0ddcf40339 45 else {
mmujica6 0:cf0ddcf40339 46 close();
mmujica6 0:cf0ddcf40339 47 led = 0;
mmujica6 0:cf0ddcf40339 48 pc.printf("close");
mmujica6 0:cf0ddcf40339 49 }
mmujica6 0:cf0ddcf40339 50 }
mmujica6 0:cf0ddcf40339 51 m.speed(0);
mmujica6 0:cf0ddcf40339 52 wait(.2);
mmujica6 0:cf0ddcf40339 53 }
mmujica6 0:cf0ddcf40339 54 }
mmujica6 0:cf0ddcf40339 55
mmujica6 0:cf0ddcf40339 56 void open() {
mmujica6 0:cf0ddcf40339 57 m.speed(-1);
mmujica6 0:cf0ddcf40339 58 wait(2.6);
mmujica6 0:cf0ddcf40339 59 state = 0;
mmujica6 0:cf0ddcf40339 60 }
mmujica6 0:cf0ddcf40339 61
mmujica6 0:cf0ddcf40339 62 void close() {
mmujica6 0:cf0ddcf40339 63 m.speed(1);
mmujica6 0:cf0ddcf40339 64 wait(2.6);
mmujica6 0:cf0ddcf40339 65 state = 1;
mmujica6 0:cf0ddcf40339 66 }
mmujica6 0:cf0ddcf40339 67
mmujica6 0:cf0ddcf40339 68 // Takes analog input from 0 to 1 and displays a time based on that
mmujica6 0:cf0ddcf40339 69 void printTime(double in) {
mmujica6 0:cf0ddcf40339 70 int totMins = in*1440; //maps to integer based on mins in a day
mmujica6 0:cf0ddcf40339 71 int hrs = totMins/60;
mmujica6 0:cf0ddcf40339 72 int mins = totMins%60;
mmujica6 0:cf0ddcf40339 73 timeInfo = localtime(&seconds);
mmujica6 0:cf0ddcf40339 74 lcd.locate(0,0);
mmujica6 0:cf0ddcf40339 75 lcd.printf("%d:%d",timeInfo->tm_hour,timeInfo->tm_min);
mmujica6 0:cf0ddcf40339 76 lcd.locate(0,1);
mmujica6 0:cf0ddcf40339 77 lcd.printf("%d:%d",hrs,mins);
mmujica6 0:cf0ddcf40339 78 if ((state == 1) && (hrs == timeInfo->tm_hour) && (mins == timeInfo->tm_min)){
mmujica6 0:cf0ddcf40339 79 open();
mmujica6 0:cf0ddcf40339 80 }
mmujica6 0:cf0ddcf40339 81 }