scan2
Dependencies: LcdAcm1602ni QEI mbed
Diff: scan2.cpp
- Revision:
- 0:ae1d54517aa0
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scan2.cpp Thu Mar 22 08:47:02 2018 +0000 @@ -0,0 +1,207 @@ +/*--------------------------------ライブラリ------------------------------------*/ +// +// 以下の3つのライブラリを使用するので、それぞれのライブラリをImportする。 +// (1) EthernetInterface +// (2) mbed-rtos +// (3) TextLCD + +#include "mbed.h"//20170621 バージョン固定 +#include "LPC17xx.h"//LPCExpresso +#include "LcdAcm1602ni.h" +#include "string.h" +#include <limits.h> +//#include "TextLCD.h" +#include "Serial.h" +//#include "QEI.h" +# +/*-----------------------------------定義--------------------------------------*/ + +//MOTOR +#define CW 0 +#define CCW 1 + + +//MLED +#define OFF 0 +#define ON 1 + +/*--------------------------------ピン定義-------------------------------------*/ + +//MLED mbed内LEDの設定 +DigitalOut mled0(LED1); +DigitalOut mled1(LED2); +DigitalOut mled2(LED3); +DigitalOut mled3(LED4); + +//TextLCD lcd(p24, p26, p27, p28, p29, p30); +LcdAcm1602ni lcd(p28,p27);// sda,scl + +//インターフェイス +//LED +//DigitalOut open_led(p9); +//DigitalOut close_led(p10); + +//スイッチ +//DigitalIn close_sw(p19); +DigitalIn open_sw(p20); + +//エンコーダー +//InterruptIn pulse_input(p17); + + +//モーター① 入出力ピン +DigitalOut ccw_pwm(p21);//CW方向へ回転 +DigitalOut cw_pwm(p22);//CCW方向へ回転 +DigitalIn close_limit(p15); +DigitalIn open_limit(p16); +DigitalIn pulse_input(p9); + +Ticker flipper; +Serial pc(USBTX,USBRX); +/*-------------------------------グローバル変数---------------------------------*/ + +long wt = 500;//モーターパルス用変数 wt = 周期T/2 max500 +int dir = 1; +float tim_pulse = 0; +float lastpulse = 0; +float tim_d = 0; +int tim_arry[30] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; +int state = 0; +int nstep = 0; +int cstep = 0; +int count = 0; +int pulse = 0; + +/*-----------------------------set up -----------------------------------*/ +/*for (int i = 0; i < 2; i++) { + // pinMode(sw[i],INPUT_PULLUP); + pinMode(tim_pulse, INPUT_PULLUP); //光電センサ変更時に変更 プルダウン必要 + }*/ +/*-----------------------------flip 割り込み-----------------------------------*/ +//tim.mode(PullNone); +void flip(){ + //tim_pulse = tim.read(); + //tim_d = last_tim - tim_pulse; + //last_tim = tim_pulse; + //palse = wheel.getPulses(); + //wheel.reset(); + //rpm = 60000*palse/1024; + mled1 = ON; + pulse = pulse_input.read(); + //pc.printf("%d",pulse); + if (pulse != lastpulse){ + //ラストパルス(一つ前のパルス)と同じではないとき !←同じでない + if (pulse == 1) count ++; //パルスが1の時カウント + lcd.initialize(); + lcd.locate(0,1); + lcd.printf(" count"); + //pc.printf("%d",count); + mled2 = ON; + } + lastpulse = pulse; //00または、11の意味 + mled3 = ON; + //pc.printf("int : %d",pulse_input); +} + +/*-----------------------------シリアル通信-------------------------------------*/ +/*int recvStr(void) { + int i = 0, flg = 0; + char c, buf[30] = ""; + state = -1; + pc.printf("waiting"); + do { + while (Serial.available()) { + c = Serial.read(); + buf[i] = c; + if (i == 1 && state < 0) { + if (strcmp(buf, "sp") == 0) { + state = SP; + i = -1; + } + else if (strcmp(buf, "gc") == 0) state = GC; + else if (strcmp(buf, "gp") == 0) state = GP; + else if (strcmp(buf, "gv") == 0) state = GV; + else if (strcmp(buf, "rp") == 0) state = RP; + } + + if (c == ';') { + buf[i + 1] = '\0'; + nstep = atoi(buf); + if (nstep == 0 && state == SP) + state = RP; + flg = 1; + //CRLFを読みとり、シリアルバッファをクリアにする + Serial.read(); + Serial.read(); + break; + } + else if (state >= 0 || (buf[0] == 'g' || buf[0] == 's' || buf[0] == 'r')) { + i++; + delay(1); + } + } + } while (flg == 0); + + return flg; +}*/ + + +/*-----------------------------MotorContoroll---------------------------------*/ +void motorControll(){ + + // if(long i = 0; i < abs(nstep[ch]); i++){ + // if(i == 0){ + // digitalWrite(con[0],HIGH);) + if(open_sw == ON){ + if(open_limit == OFF){ + //mled1 = ON; + cw_pwm = ON; + wait_us(wt); + + cw_pwm = OFF; + wait_us(wt); + } + else + { + //mled2 = ON; + ccw_pwm = ON; + wait_us(wt); + + ccw_pwm =OFF; + wait_us(wt); + } + + } + else + { + //mled1= OFF; + //mled2= OFF; + } + +} + +int main(){ + lcd.initialize(); + lcd.locate(0,0); + lcd.printf("*scan*"); + pc.printf("*AutoSlideCover*"); + lcd.locate(1,0); + lcd.printf("setup...."); + pc.printf("setup...."); + //char c; + //count = 0; + pc.baud(115200); + flipper.attach(&flip, 2.0); + //tim.mode(PullNone); + + while(1){ + //flipper.attach(&flip, 2.0); + dir = CW; + motorControll(); + dir = CCW; + motorControll(); + + //pc.printf("Pulses is: %i\n", wheel.getPulses()); + //pc.printf("rpm is: %i\n", rpm); + } +} \ No newline at end of file