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
- Committer:
- 8mona
- Date:
- 2017-06-07
- Revision:
- 2:ea066749e515
- Parent:
- 1:d5e9bd9b38ad
- Child:
- 3:6474ab60854e
File content as of revision 2:ea066749e515:
//------------------------------------------------------------ // Demo program for LCD ACM1602NI using I2C interface // Pullup resistors for SDA and SCL: 4.7 kΩ // 2016/04/01, Copyright (c) 2016 MIKAMI, Naoki //------------------------------------------------------------ #include "ACM1602NI.hpp" //Cycle #define ON_DURATION 20 //On time [*100ms] #define SWITCH_PERIOD 200 //Cycle time[*100ms] #define TOTAL_TIMES 10000 //total times n #define INITIAL_DELAY 10 //Initial delay for cycle using namespace Mikami; Acm1602Ni lcd_; // Default, OK //Acm1602Ni lcd_(D14, D15); // OK //Acm1602Ni lcd_(D14, D15, 200000); // OK //Acm1602Ni lcd_(D14, D15, 200000, true, true); // OK //Acm1602Ni lcd_(PB_3, PB_10); // OK //Acm1602Ni lcd_(PC_9, PA_8); // OK //Acm1602Ni lcd_(PB_4, PA_8); // OK Ticker timer_; DigitalOut Relay1(D2); InterruptIn button1(USER_BUTTON); // Display elapsed time in minutes and seconds void TimerIsr() { static int k = 0; static char ctext[4]="---"; div_t d_Cycle = div (k, SWITCH_PERIOD); //for Current time div_t d_sec = div(k,600); //60s * 10n int t_min = d_sec.quot; div_t d_min = div(t_min,60); //1min=60s int t_hr = d_min.quot; //for Current time div_t df_sec = div(TOTAL_TIMES*SWITCH_PERIOD,600); //60s * 10n int tf_min = df_sec.quot; div_t df_min = div(tf_min,60); //1min=60s int tf_hr = df_min.quot; if(d_Cycle.rem ==INITIAL_DELAY) { Relay1=1; strcpy(ctext," ON"); //ctext="ON!"; } else if (d_Cycle.rem == (INITIAL_DELAY+ON_DURATION) ) { Relay1=0; strcpy(ctext,"OFF"); } if(d_Cycle.quot==TOTAL_TIMES) { timer_.detach(); } /* char str[20]; sprintf(str, "%d'%2d\"", msec.quot, msec.rem); lcd_.WriteStringXY(str, 0, 1); */ //1 Row //lcd_.WriteStringXY("#",0,0); lcd_.WriteValueXY("%s", ctext, 0,0); lcd_.WriteValue("% 5d/", d_Cycle.quot); lcd_.WriteValue("%0d",TOTAL_TIMES); //2 Row lcd_.WriteValueXY("%03dh", t_hr, 0, 1); lcd_.WriteValue("%02dm", d_min.rem); lcd_.WriteValue("%03ds/", d_sec.rem); lcd_.WriteValue("%03dh", tf_hr); lcd_.WriteValue("%02dm", df_min.rem); k++; } void flip() { static bool b = false; if(b==false) { timer_.attach(&TimerIsr, 0.1); } else { timer_.detach(); Relay1=0; } b=!b; } int main() { //LCD_cont=0; if (lcd_.IsConnected()) printf("\r\nConnected"); else printf("\r\nDisconnected"); TimerIsr(); //timer_.attach(&TimerIsr, 0.1); button1.fall(&flip); while (true) {} }