新增 三軸平台IO設定_V1

leo 2024-07-29 12:34:02 +08:00
parent 955fd1c37d
commit 019921d9e4

@ -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軸結束");
}
```