diff --git a/%E4%B8%89%E8%BB%B8%E5%B9%B3%E5%8F%B0IO%E8%A8%AD%E5%AE%9A_V1.md b/%E4%B8%89%E8%BB%B8%E5%B9%B3%E5%8F%B0IO%E8%A8%AD%E5%AE%9A_V1.md new file mode 100644 index 0000000..568343b --- /dev/null +++ b/%E4%B8%89%E8%BB%B8%E5%B9%B3%E5%8F%B0IO%E8%A8%AD%E5%AE%9A_V1.md @@ -0,0 +1,138 @@ +## 三軸平台 +### IO對應腳位 +#### 控制台上之按鈕與燈 + 啟動燈 PIN = 22 + 啟動鈕 PIN = 24 + 重啟鈕 PIN = 26 + 急停鈕 PIN = 28 + 停止鈕 PIN = 30 +#### 三軸之運動相關輸出與輸入 + X極限 PIN = 5 + X方向 PIN = 8 + X運動 PIN = 9 + + Y極限 PIN = 6 + Y方向 PIN = 10 + Y運動 PIN = 11 + + Z極限 PIN = 7 + Z方向 PIN = 12 + Z運動 PIN = 13 + ### 相關寫法 - 控制台按鈕 + ``` C + // 控制台之按鈕 + const int stop_bt = 30; // 停止鈕 + const int scram_bt = 28; //急停鈕 + const int resetting_bt = 26; //重啟鈕 + const int activate_bt = 24; //啟動鈕 + const int activate_led = 22; //啟動燈 + + //設定 + void setup(){ + Serial.begin(115200); + pinMode( stop_bt, INPUT_PULLUP ); // 停止鈕 + pinMode( scram_bt, INPUT_PULLUP ); //急停鈕 + pinMode( resetting_bt, INPUT_PULLUP ); //重啟鈕 + pinMode( activate_bt, INPUT_PULLUP ); //啟動鈕 + pinMode( activate_led, OUTPUT ); //啟動燈 +} +//讀取按鈕狀態 +void loop(){ + stop_state = digitalRead(stop_bt); //讀取按鈕狀態,按下為LOW + scram_state = digitalRead(scram_bt); //讀取按鈕狀態,按下為LOW + resetting_state = digitalRead(resetting_bt); //讀取按鈕狀態,按下為LOW + activate_state = digitalRead(activate_bt); //讀取按鈕狀態,按下為LOW + + if (stop_state == LOW){ + stop_clicked(); //運行觸發程式 + digitalWrite( activate_led, LOW ); + } + if (scram_state == LOW){ + scram_clicked(); //運行觸發程式 + digitalWrite( activate_led, LOW ); + } + if (resetting_state == LOW){ + resetting_clicked(); //運行觸發程式 + } + if (activate_state == LOW){ + activate_clicked(); //運行觸發程式 + digitalWrite( activate_led, HIGH ); + } + + } + ``` + ### 相關寫法 - 三軸運動方式 + ``` C +const int PIN_5 = 5; //X極限 +const int PIN_6 = 6; //Y極限 +const int PIN_7 = 7; //Z極限 +//設定 +void setup(){ + Serial.begin(115200); + //設置極限腳位 + pinMode( PIN_5, INPUT ); + pinMode( PIN_6, INPUT ); + pinMode( PIN_7, INPUT ); + //設置馬達腳位 + pinMode(9, OUTPUT); //X_運動 + pinMode(8, OUTPUT); //X_方向 + pinMode(13, OUTPUT); //Z_運動 + pinMode(12, OUTPUT); //Z_方向 + pinMode(11, OUTPUT); //Y_運動 + pinMode(10, OUTPUT); //Y_方向 + + go_home(); // 回原點 + + } +// 原點function +void go_home(){ + Serial.println("馬達X軸啟動"); + digitalWrite(8, HIGH); // 方向 + while (1){ + if (LOW != digitalRead(PIN_5)){ + digitalWrite(9, HIGH); // 将引脚设置为高电平 + delayMicroseconds(50); // 等待5毫秒 + digitalWrite(9, LOW); // 将引脚设置为低电平 + delayMicroseconds(50); // 等待5毫秒 + } + else{ + break; + } + } + Serial.println("馬達X軸結束"); + + Serial.println("馬達Y軸啟動"); + digitalWrite(10, HIGH); // 方向 + while (1){ + if (LOW != digitalRead(PIN_6)){ + digitalWrite(11, HIGH); // 将引脚设置为高电平 + delayMicroseconds(50); // 等待5毫秒 + digitalWrite(11, LOW); // 将引脚设置为低电平 + delayMicroseconds(50); // 等待5毫秒 + } + else{ + break; + } + } + Serial.println("馬達Y軸結束"); + + Serial.println("馬達Z軸啟動"); + digitalWrite(12, HIGH); // 方向 + while (1){ + if (LOW != digitalRead(PIN_7)){ + digitalWrite(13, HIGH); // 将引脚设置为高电平 + delayMicroseconds(80); // 等待8毫秒 + digitalWrite(13, LOW); // 将引脚设置为低电平 + delayMicroseconds(80); // 等待8毫秒 + } + else{ + break; + } + } + Serial.println("馬達Z軸結束"); + + } + + ``` + + \ No newline at end of file