|
- //定義引腳
- int Pin0 = 8;
- int Pin1 = 9;
- int Pin2 = 10;
- int Pin3 = 11;
- int _step = 0;
- boolean dir = false;//正反轉
- int stepperSpeed = 1;//電機轉速,1ms一步
- //脈沖總數,或者說步的總數
- int stepsum=0;
- void setup()
- {
- pinMode(Pin0, OUTPUT);
- pinMode(Pin1, OUTPUT);
- pinMode(Pin2, OUTPUT);
- pinMode(Pin3, OUTPUT); }
- void loop()
- {
- //進步機的驅動方式,有八種
- switch(_step){
- case 0:
- digitalWrite(Pin0, LOW);
- digitalWrite(Pin1, LOW);
- digitalWrite(Pin2, LOW);
- digitalWrite(Pin3, HIGH);
- break;
- case 1:
- digitalWrite(Pin0, LOW);
- digitalWrite(Pin1, LOW);
- digitalWrite(Pin2, HIGH);
- digitalWrite(Pin3, HIGH);
- break;
- case 2:
- digitalWrite(Pin0, LOW);
- digitalWrite(Pin1, LOW);
- digitalWrite(Pin2, HIGH);
- digitalWrite(Pin3, LOW);
- break;
- case 3:
- digitalWrite(Pin0, LOW);
- digitalWrite(Pin1, HIGH);
- digitalWrite(Pin2, HIGH);
- digitalWrite(Pin3, LOW);
- break;
- case 4:
- digitalWrite(Pin0, LOW);
- digitalWrite(Pin1, HIGH);
- digitalWrite(Pin2, LOW);
- digitalWrite(Pin3, LOW);
- break;
- case 5:
- digitalWrite(Pin0, HIGH);
- digitalWrite(Pin1, HIGH);
- digitalWrite(Pin2, LOW);
- digitalWrite(Pin3, LOW);
- break;
- case 6:
- digitalWrite(Pin0, HIGH);
- digitalWrite(Pin1, LOW);
- digitalWrite(Pin2, LOW);
- digitalWrite(Pin3, LOW);
- break;
- case 7:
- digitalWrite(Pin0, HIGH);
- digitalWrite(Pin1, LOW);
- digitalWrite(Pin2, LOW);
- digitalWrite(Pin3, HIGH);
- break;
- default:
- digitalWrite(Pin0, LOW);
- digitalWrite(Pin1, LOW);
- digitalWrite(Pin2, LOW);
- digitalWrite(Pin3, LOW);
- break;
- }
- //判斷是正轉還是反轉
- if(dir)
- {
- _step++;
- }else{
- _step--;
- }
- //每八步一個驅動方式的循環
- if(_step>7){
-
- _step=0;
- }
- if(_step<0){
-
- _step=7;
- }
-
- delay(stepperSpeed);
- //計算脈沖數,每4096個脈沖停1秒
- stepsum++;
- if(stepsum==4096)
- {
- Serial.println(stepsum);
- stepsum=0;
- delay(1000);
- }
- }
復制代碼
用ardiuno實現的電機正反轉
|
-
-
正反轉.doc
2017-12-23 14:03 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
18 KB, 下載次數: 18, 下載積分: 黑幣 -5
如題
評分
-
查看全部評分
|