Use IQS62X sensor and move motor by detected angle
Dependencies: DRV8830 IQS62x IQSDisplayTerminal UIT_ACM1602NI mbed
Fork of Nucleo_ACM1602_I2C_DC by
main.cpp@2:ea066749e515, 2017-06-07 (annotated)
- 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?
User | Revision | Line number | New 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 |