如何使用红外传感器通过arduino使直流电动机移动

时间:2019-05-26 19:26:21

标签: arduino infrared

我的目标是使直流电动机向前和向后移动并打开和关闭,所有这些都由控制器控制并由红外传感器接收。 该代码显示了一种打开/关闭电动机并改变方向的工作方式。 我希望完全一样,只是开/关和更改方向应该由控制器控制,而不是按钮。 那是代码:

#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,它会改变方向,如果再按一次,它会再次改变方向。

0 个答案:

没有答案