一个简单的遥控开关窗的小程序,0 1 口用的外部中断接限位开关,12 13遥控器, 2 3 电机驱动板。但是不知道为什么 子函数 mode1()和mode2()在向2或3口写低电平时总是只有3.8v左右,而不是0,而且执行完mode1,2()后 2,3口不是之前写入的高或低的状态,通通变成HIGH。只要删掉中断 ,其他的就很正常 不知道程序哪里出了问题,请大家帮忙看一下
- int guan = 12;
- int kai = 13;
- void setup()
- {
- pinMode(2,OUTPUT); //2 3电机驱动接口
- pinMode(3,OUTPUT);
- attachInterrupt(0,xv1,LOW); //限位开关中断
- attachInterrupt(1,xv2,LOW);
- pinMode(0,INPUT_PULLUP); //设置中断口为内部上拉模式
- pinMode(1,INPUT_PULLUP);
- pinMode(guan,INPUT_PULLUP);
- pinMode(kai ,INPUT_PULLUP); // 遥控器
- }
- void loop()
- {
- if(digitalRead(guan)==LOW)
- {
- motor();
- }
- if(digitalRead(kai)==LOW)
- {
- motor2();
- }
- //其他模块及函数............
- }
- //**********************************************
- void motor1() //关窗电机函数
- {
- digitalWrite(2,HIGH); //改high与low可控制电机正反转
- digitalWrite(3,LOW);
- }
- void motor2() //开窗电机函数
- {
- digitalWrite(2,LOW); //改high与low可控制电机正反转
- digitalWrite(3,HIGH);
- }
- //111111111111111111111111111111111111111
- void xv1() //限位1
- {
- digitalWrite(2,HIGH);//电机刹车
- digitalWrite(3,HIGH);
- }
- //22222222222222222222222222222222222222
- void xv2() //限位2
- {
- digitalWrite(2,HIGH); //电机刹车
- digitalWrite(3,HIGH);
- }
复制代码 |