Use IQS62X sensor and move motor by detected angle

Dependencies:   DRV8830 IQS62x IQSDisplayTerminal UIT_ACM1602NI mbed

Fork of Nucleo_ACM1602_I2C_DC by Thinkbed

Committer:
8mona
Date:
Wed Jun 07 15:01:11 2017 +0000
Revision:
2:ea066749e515
Parent:
1:d5e9bd9b38ad
Child:
3:6474ab60854e
1st Version to enable angle sensor and velocity

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MikamiUitOpen 0:132eb47d57fb 1 //------------------------------------------------------------
MikamiUitOpen 0:132eb47d57fb 2 // Demo program for LCD ACM1602NI using I2C interface
MikamiUitOpen 0:132eb47d57fb 3 // Pullup resistors for SDA and SCL: 4.7 kΩ
MikamiUitOpen 1:d5e9bd9b38ad 4 // 2016/04/01, Copyright (c) 2016 MIKAMI, Naoki
MikamiUitOpen 0:132eb47d57fb 5 //------------------------------------------------------------
MikamiUitOpen 0:132eb47d57fb 6
MikamiUitOpen 0:132eb47d57fb 7 #include "ACM1602NI.hpp"
8mona 2:ea066749e515 8 //Cycle
8mona 2:ea066749e515 9 #define ON_DURATION 20 //On time [*100ms]
8mona 2:ea066749e515 10 #define SWITCH_PERIOD 200 //Cycle time[*100ms]
8mona 2:ea066749e515 11 #define TOTAL_TIMES 10000 //total times n
8mona 2:ea066749e515 12 #define INITIAL_DELAY 10 //Initial delay for cycle
8mona 2:ea066749e515 13
8mona 2:ea066749e515 14
MikamiUitOpen 0:132eb47d57fb 15 using namespace Mikami;
MikamiUitOpen 0:132eb47d57fb 16
MikamiUitOpen 0:132eb47d57fb 17 Acm1602Ni lcd_; // Default, OK
MikamiUitOpen 0:132eb47d57fb 18 //Acm1602Ni lcd_(D14, D15); // OK
MikamiUitOpen 0:132eb47d57fb 19 //Acm1602Ni lcd_(D14, D15, 200000); // OK
MikamiUitOpen 0:132eb47d57fb 20 //Acm1602Ni lcd_(D14, D15, 200000, true, true); // OK
MikamiUitOpen 0:132eb47d57fb 21 //Acm1602Ni lcd_(PB_3, PB_10); // OK
MikamiUitOpen 0:132eb47d57fb 22 //Acm1602Ni lcd_(PC_9, PA_8); // OK
MikamiUitOpen 0:132eb47d57fb 23 //Acm1602Ni lcd_(PB_4, PA_8); // OK
MikamiUitOpen 0:132eb47d57fb 24
MikamiUitOpen 0:132eb47d57fb 25 Ticker timer_;
8mona 2:ea066749e515 26 DigitalOut Relay1(D2);
8mona 2:ea066749e515 27 InterruptIn button1(USER_BUTTON);
MikamiUitOpen 0:132eb47d57fb 28
MikamiUitOpen 0:132eb47d57fb 29 // Display elapsed time in minutes and seconds
MikamiUitOpen 0:132eb47d57fb 30 void TimerIsr()
MikamiUitOpen 0:132eb47d57fb 31 {
MikamiUitOpen 0:132eb47d57fb 32 static int k = 0;
8mona 2:ea066749e515 33 static char ctext[4]="---";
8mona 2:ea066749e515 34
8mona 2:ea066749e515 35 div_t d_Cycle = div (k, SWITCH_PERIOD);
8mona 2:ea066749e515 36
8mona 2:ea066749e515 37 //for Current time
8mona 2:ea066749e515 38 div_t d_sec = div(k,600); //60s * 10n
8mona 2:ea066749e515 39 int t_min = d_sec.quot;
8mona 2:ea066749e515 40 div_t d_min = div(t_min,60); //1min=60s
8mona 2:ea066749e515 41 int t_hr = d_min.quot;
8mona 2:ea066749e515 42
8mona 2:ea066749e515 43 //for Current time
8mona 2:ea066749e515 44 div_t df_sec = div(TOTAL_TIMES*SWITCH_PERIOD,600); //60s * 10n
8mona 2:ea066749e515 45 int tf_min = df_sec.quot;
8mona 2:ea066749e515 46 div_t df_min = div(tf_min,60); //1min=60s
8mona 2:ea066749e515 47 int tf_hr = df_min.quot;
MikamiUitOpen 1:d5e9bd9b38ad 48
8mona 2:ea066749e515 49
8mona 2:ea066749e515 50
8mona 2:ea066749e515 51 if(d_Cycle.rem ==INITIAL_DELAY)
8mona 2:ea066749e515 52 {
8mona 2:ea066749e515 53 Relay1=1;
8mona 2:ea066749e515 54 strcpy(ctext," ON");
8mona 2:ea066749e515 55 //ctext="ON!";
8mona 2:ea066749e515 56 }
8mona 2:ea066749e515 57 else if (d_Cycle.rem == (INITIAL_DELAY+ON_DURATION) )
8mona 2:ea066749e515 58 {
8mona 2:ea066749e515 59 Relay1=0;
8mona 2:ea066749e515 60 strcpy(ctext,"OFF");
8mona 2:ea066749e515 61 }
8mona 2:ea066749e515 62
8mona 2:ea066749e515 63
8mona 2:ea066749e515 64 if(d_Cycle.quot==TOTAL_TIMES)
8mona 2:ea066749e515 65 {
8mona 2:ea066749e515 66 timer_.detach();
8mona 2:ea066749e515 67 }
8mona 2:ea066749e515 68
8mona 2:ea066749e515 69
MikamiUitOpen 1:d5e9bd9b38ad 70 /*
MikamiUitOpen 0:132eb47d57fb 71 char str[20];
8mona 2:ea066749e515 72 sprintf(str, "%d'%2d\"", msec.quot, msec.rem);
MikamiUitOpen 0:132eb47d57fb 73 lcd_.WriteStringXY(str, 0, 1);
MikamiUitOpen 1:d5e9bd9b38ad 74 */
8mona 2:ea066749e515 75
8mona 2:ea066749e515 76 //1 Row
8mona 2:ea066749e515 77 //lcd_.WriteStringXY("#",0,0);
8mona 2:ea066749e515 78 lcd_.WriteValueXY("%s", ctext, 0,0);
8mona 2:ea066749e515 79 lcd_.WriteValue("% 5d/", d_Cycle.quot);
8mona 2:ea066749e515 80 lcd_.WriteValue("%0d",TOTAL_TIMES);
8mona 2:ea066749e515 81
8mona 2:ea066749e515 82 //2 Row
8mona 2:ea066749e515 83 lcd_.WriteValueXY("%03dh", t_hr, 0, 1);
8mona 2:ea066749e515 84 lcd_.WriteValue("%02dm", d_min.rem);
8mona 2:ea066749e515 85 lcd_.WriteValue("%03ds/", d_sec.rem);
8mona 2:ea066749e515 86 lcd_.WriteValue("%03dh", tf_hr);
8mona 2:ea066749e515 87 lcd_.WriteValue("%02dm", df_min.rem);
8mona 2:ea066749e515 88
8mona 2:ea066749e515 89
8mona 2:ea066749e515 90 k++;
MikamiUitOpen 0:132eb47d57fb 91 }
MikamiUitOpen 0:132eb47d57fb 92
8mona 2:ea066749e515 93
8mona 2:ea066749e515 94
8mona 2:ea066749e515 95 void flip() {
8mona 2:ea066749e515 96 static bool b = false;
8mona 2:ea066749e515 97
8mona 2:ea066749e515 98 if(b==false)
8mona 2:ea066749e515 99 {
8mona 2:ea066749e515 100 timer_.attach(&TimerIsr, 0.1);
8mona 2:ea066749e515 101 }
8mona 2:ea066749e515 102
8mona 2:ea066749e515 103 else
8mona 2:ea066749e515 104 {
8mona 2:ea066749e515 105 timer_.detach();
8mona 2:ea066749e515 106 Relay1=0;
8mona 2:ea066749e515 107 }
8mona 2:ea066749e515 108
8mona 2:ea066749e515 109 b=!b;
8mona 2:ea066749e515 110
8mona 2:ea066749e515 111
8mona 2:ea066749e515 112
8mona 2:ea066749e515 113 }
8mona 2:ea066749e515 114
8mona 2:ea066749e515 115
MikamiUitOpen 0:132eb47d57fb 116 int main()
MikamiUitOpen 0:132eb47d57fb 117 {
8mona 2:ea066749e515 118
8mona 2:ea066749e515 119 //LCD_cont=0;
MikamiUitOpen 0:132eb47d57fb 120 if (lcd_.IsConnected()) printf("\r\nConnected");
MikamiUitOpen 0:132eb47d57fb 121 else printf("\r\nDisconnected");
MikamiUitOpen 0:132eb47d57fb 122
MikamiUitOpen 0:132eb47d57fb 123
MikamiUitOpen 0:132eb47d57fb 124 TimerIsr();
8mona 2:ea066749e515 125 //timer_.attach(&TimerIsr, 0.1);
8mona 2:ea066749e515 126 button1.fall(&flip);
MikamiUitOpen 0:132eb47d57fb 127
MikamiUitOpen 0:132eb47d57fb 128 while (true) {}
MikamiUitOpen 0:132eb47d57fb 129 }
MikamiUitOpen 0:132eb47d57fb 130