scan2

Dependencies:   LcdAcm1602ni QEI mbed

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