我的目标是使直流电动机向前和向后移动并打开和关闭,所有这些都由控制器控制并由红外传感器接收。 该代码显示了一种打开/关闭电动机并改变方向的工作方式。 我希望完全一样,只是开/关和更改方向应该由控制器控制,而不是按钮。 那是代码:
#include <IRremote.h>
#include <IRremoteInt.h>
const int enablePin = 9;
const int forwardPin = 3;
const int reversePin = 2;
const int switchPin = 5;
const int dirSwitchPin = 4;
int previousSwitchState = 0;
int switchState = 0;
int directionSwitchState = 0;
int previousDirectionSwitchState = 0;
int motorOn = 0;
int motorDirection = 0;
void setup(){
pinMode(enablePin, OUTPUT);
pinMode(forwardPin, OUTPUT);
pinMode(reversePin, OUTPUT);
pinMode(switchPin, INPUT);
digitalWrite(enablePin, LOW);
}
void loop() {
switchState = digitalRead(switchPin);
delay(1);
directionSwitchState = digitalRead(dirSwitchPin);
if(switchState != previousSwitchState){
if(switchState == HIGH){
motorOn = !motorOn;
}
}
if(directionSwitchState != previousDirectionSwitchState){
if(directionSwitchState == HIGH){
motorDirection = !motorDirection;
}
}
if(motorDirection == 1){
digitalWrite(forwardPin, LOW);
digitalWrite(reversePin, HIGH);
}
else{
digitalWrite(forwardPin, HIGH);
digitalWrite(reversePin, LOW);
}
if (motorOn ==1){
digitalWrite(enablePin, HIGH);
}
else{
digitalWrite(enablePin, LOW);
}
previousDirectionSwitchState = directionSwitchState;
previousSwitchState = switchState;
}
我有一个红外传感器,但是我无法弄清楚电动机应如何读取一个十六进制值。 我想要的是,如果按下控制器上的button1,它将打开电动机,如果再次按下,它将关闭。 如果我按下button2,它会改变方向,如果再按一次,它会再次改变方向。