ver1.1

Dependencies:   EthernetInterface LcdAcm1602ni QEI TextLCD mbed-rtos mbed

Files at this revision

API Documentation at this revision

Comitter:
acura55
Date:
Wed May 02 05:20:15 2018 +0000
Commit message:
ver1.1

Changed in this revision

EthernetInterface.lib Show annotated file Show diff for this revision Revisions of this file
LcdAcm1602ni.lib Show annotated file Show diff for this revision Revisions of this file
QEI.lib Show annotated file Show diff for this revision Revisions of this file
TextLCD.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed-rtos.lib Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/EthernetInterface.lib	Wed May 02 05:20:15 2018 +0000
@@ -0,0 +1,1 @@
+http://developer.mbed.org/users/mbed_official/code/EthernetInterface/#183490eb1b4a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/LcdAcm1602ni.lib	Wed May 02 05:20:15 2018 +0000
@@ -0,0 +1,1 @@
+http://developer.mbed.org/users/orivant/code/LcdAcm1602ni/#b5829a58bbaf
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/QEI.lib	Wed May 02 05:20:15 2018 +0000
@@ -0,0 +1,1 @@
+http://developer.mbed.org/users/aberk/code/QEI/#5c2ad81551aa
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/TextLCD.lib	Wed May 02 05:20:15 2018 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/simon/code/TextLCD/#308d188a2d3a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Wed May 02 05:20:15 2018 +0000
@@ -0,0 +1,280 @@
+/*--------------------------------ライブラリ------------------------------------*/
+//
+// 以下の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"
+
+/*-----------------------------------定義--------------------------------------*/
+
+//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);
+DigitalOut open_signal(p9);
+DigitalOut close_signal(p10);
+//スイッチ
+DigitalIn close_sw(p19);
+DigitalIn open_sw(p20);
+
+//モーター① 入出力ピン
+DigitalOut  ccw_pwm(p21);//CW方向へ回転 
+DigitalOut  cw_pwm(p22);//CCW方向へ回転
+DigitalIn close_limit(p15);
+DigitalIn open_limit(p16);
+DigitalIn tim(p17);
+
+
+//モーター②
+DigitalOut  ccw_pwm_1(p11);//CW方向へ回転 
+DigitalOut  cw_pwm_1(p12);//CCW方向へ回転
+DigitalIn close_limit_1(p7);
+DigitalIn open_limit_1(p8);
+DigitalIn tim1(p18);
+
+//マスター判別ピン
+DigitalIn master_pin(p23);
+
+Ticker flipper;
+Serial pc(USBTX,USBRX);
+/*-------------------------------グローバル変数---------------------------------*/
+ 
+long wt = 800;//モーターパルス用変数 wt = 周期T/2 max500
+int dir = 1;
+int master_flg = 0;
+float tim_pulse = 0;
+float tim1_pulse = 0;
+float last_tim = 0;
+float last_tim1 = 0;
+float tim_d = 0;
+float tim1_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 tim1_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};
+
+/*-----------------------------------step-------------------------------------*/
+//モーターに1パルスを与える
+void step(){
+    mled3 = ON;
+    //open
+      if(dir == CW){
+        mled2 = ON;
+       if(master_flg == 1 && open_limit == OFF){
+        //if(master_flg == 1 && close_limit == ON){
+           open_signal = OFF;
+        }else{
+            cw_pwm = ON;
+            cw_pwm_1 = ON;
+        }
+        wait_us(wt);
+        cw_pwm = OFF;
+        cw_pwm_1 = OFF;
+        wait_us(wt);
+      }
+        //close
+      if(dir == CCW){
+        mled1 = ON;
+        if(master_flg == 1 && close_limit == OFF){
+        //if(master_flg == 1 && open_limit == ON){
+            close_signal = OFF;
+        }else{
+            ccw_pwm = ON;
+            ccw_pwm_1 = ON;
+        }
+        wait_us(wt);
+        ccw_pwm = OFF;
+        ccw_pwm_1 = OFF;
+        wait_us(wt);
+      }
+      mled1 = OFF;
+      mled3 = OFF;
+}
+
+/*-----------------------------flip 割り込み----------------------------------------*/
+void flip(){
+      tim_pulse = tim.read();
+      tim1_pulse = tim1.read();
+      tim_d = last_tim - tim_pulse;
+      tim1_d = last_tim1 - tim1_pulse; 
+      last_tim = tim_pulse;
+      last_tim1 = tim1_pulse;
+}
+
+/*-----------------------------MotorContoroll---------------------------------*/
+/*20180130
+void motorControll(){
+    mled3 = ON;
+    lcd.initialize();
+    lcd.locate(0,0);
+    lcd.printf("  ***STATE***");
+    while(open_sw == ON||close_sw == ON){
+      if(open_limit == ON && close_limit == ON){
+        open_led = OFF;
+        close_led = OFF;
+      }
+      if(open_limit == OFF && open_limit_1 == OFF && open_sw == ON){
+        lcd.locate(1,0);
+        lcd.printf("open");
+        open_led = ON;
+      } 
+      if(close_limit == OFF && close_limit_1 == OFF && close_sw == ON){
+        lcd.locate(1,0);
+        lcd.printf("close");
+        open_led = ON;
+        close_led = ON;
+      }
+      step();
+    }
+    mled3 = OFF;
+*/
+//timパルス実装検討中
+void motorControll(){
+    mled2 = ON;
+    while(open_sw == ON||close_sw == ON){    
+        step();
+    }
+    mled2 = OFF;
+}
+
+
+/*---------------------------------main---------------------------------------*/
+
+int main(){
+//LCD初期化   
+/*
+    lcd.initialize();
+    lcd.locate(0,0);
+    lcd.printf("*AutoSlideCover*");
+    pc.printf("*AutoSlideCover*");
+    lcd.locate(1,0);
+    lcd.printf("setup....");
+    pc.printf("setup....");
+*/
+//ピンモード初期化
+    open_sw.mode(PullDown);
+    close_sw.mode(PullDown);
+    open_limit.mode(PullDown);
+    open_limit_1.mode(PullDown);
+    close_limit.mode(PullDown);
+    close_limit_1.mode(PullDown);
+    tim.mode(PullDown);
+    tim1.mode(PullDown);
+    master_pin.mode(PullDown);
+    
+//    tim.mode(PullNone);
+//    tim1.mode(PullNone);
+//    wait(2.0);
+
+//    lcd.locate(1,0);
+//    lcd.printf("complete!");
+//      pc.printf("complete!\n");
+//    wait_ms(100);
+    
+    if(master_pin == ON){
+        master_flg = 1;
+        mled0 = ON;
+    }
+    int open_buf[10]={0,0,0,0,0,0,0,0,0,0};
+    int close_buf[10]={0,0,0,0,0,0,0,0,0,0};
+    
+ /*   
+     if(close_limit == ON && close_limit_1 == ON){
+            lcd.initialize();
+            lcd.locate(0,0);
+            lcd.printf("  ***STATE***");
+        }
+        if(open_limit == ON && open_limit_1 == ON){
+            lcd.initialize();
+            lcd.locate(0,0);
+            lcd.printf("  ***STATE***");
+        }
+        if(close_limit == OFF && close_limit_1 == OFF){
+            lcd.initialize();
+            lcd.locate(0,0);
+            lcd.printf("  ***STATE***");
+            lcd.locate(1,0);
+            lcd.printf("close");
+        }
+        if(open_limit == OFF && open_limit_1 == OFF){
+            lcd.initialize();
+            lcd.locate(0,0);
+            lcd.printf("  ***STATE***");
+            lcd.locate(1,0);
+            lcd.printf("open");
+        }
+*/   
+    while(1){
+//        if(open_limit == 1)pc.printf("open_limit\n");
+//        if(close_limit == 1)pc.printf("close_limit\n");
+//        if(open_limit_1 == 1)pc.printf("open_limit_1\n");
+//        if(close_limit_1 == 1)pc.printf("close_limit_1\n");
+        if(master_flg == 0){
+            if(open_sw == ON){
+                mled0 = ON;
+                dir = CW;
+                motorControll();
+                mled0 = OFF;
+            }
+            if(close_sw == ON){
+                mled1 = ON;
+                dir = CCW;
+                motorControll();
+                mled1 = OFF;
+            }
+        }else if(master_flg == 1){
+            mled1 = OFF;
+            mled2 = OFF;
+            mled3 = OFF;
+            int open_sum = 0;
+            int close_sum = 0;
+            for(int i=0;i<10;i++){
+                open_buf[i] = open_sw;
+                close_buf[i] = close_sw;
+                wait_ms(50);
+            }
+            for(int j=0;j<10;j++){
+                open_sum = open_sum + open_buf[j];
+                close_sum = close_sum + close_buf[j];
+            }
+            if(open_sum == 10){
+                dir = CW;
+                open_signal = ON;
+                motorControll();
+                open_signal = OFF;
+            }
+            if(close_sum == 10){
+                dir = CCW;
+                close_signal = ON;
+                motorControll();
+                close_signal = OFF;
+            }
+        } 
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed-rtos.lib	Wed May 02 05:20:15 2018 +0000
@@ -0,0 +1,1 @@
+http://developer.mbed.org/users/mbed_official/code/mbed-rtos/#5713cbbdb706
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Wed May 02 05:20:15 2018 +0000
@@ -0,0 +1,1 @@
+https://mbed.org/users/mbed_official/code/mbed/builds/0f02307a0877
\ No newline at end of file