接线比上次更加凌乱了,接下来说点简单的,程序代码如下
- //wemos d1 + L6205 电机控制和中断测试
- int p_led = 4; //对应针脚GPIO4 接LED
- int p_a_fx =14; //A机方向 14->12
- int p_a_dl =13; //A机动力 13->3
- int p_a_zd =12; //A机的制动 12->9
- int p_ai =5; //对应针脚GPIO5 接中断信号
- volatile unsigned int r;
- void setup() {
- Serial.begin(115200);
- //delay(10);
-
- pinMode(p_led, OUTPUT);
- digitalWrite(p_led, 0);
- //启用电机A的三个管脚,全部设置为输出状态
- pinMode(p_a_fx,OUTPUT); //A机方向
- digitalWrite(p_a_fx, 0);
- pinMode(p_a_dl,OUTPUT); //A机动力
- digitalWrite(p_a_dl, 0);
- pinMode(p_a_zd,OUTPUT); //A机的制动
- digitalWrite(p_a_zd, 0);
- pinMode(p_ai,INPUT); //中断针脚 定义为输入模式
-
- analogWriteRange(1023); //PWM取值范围
-
- attachInterrupt(p_ai, blink, CHANGE); //中断信号
- //attachInterrupt(p_ai, blink, FALLING); //中断信号
- }
- void loop() {
- digitalWrite(p_led, 1);
- r=0;
- //A机状态 运行 正向
- digitalWrite(p_a_zd, 0); //松开电机A的制动
- digitalWrite(p_a_fx, 1); //设置方向为正向
- //A机动力
- analogWrite(p_a_dl,1000);
- delay(3000);
- //A机状态 停止
- analogWrite(p_a_dl,0); //A机动力
- digitalWrite(p_a_zd, 1); //电机A的制动
-
- digitalWrite(p_led, 0);
- Serial.println(r);
- delay(5000);
- r=0;
- //A机状态 运行 逆向
- digitalWrite(p_a_zd, 0); //松开电机A的制动
- digitalWrite(p_a_fx, 0); //设置方向为反向
- //A机动力
- analogWrite(p_a_dl,600);
- delay(3000);
- //A机状态 停止
- analogWrite(p_a_dl,0); //A机动力
- digitalWrite(p_a_zd, 1); //电机A的制动
-
-
- Serial.println(r);
- delay(5000);
- }
- void blink()
- {
- if (r<65535)
- { r = r+1; }
- else
- { r=0; }
- }
复制代码 |