如何使用瞬时操纵杆开关作为拨动开关(Arduino)

时间:2015-08-15 12:12:03

标签: arduino switch-statement toggle

我有一个马达我可以用操纵杆转动CW / CCW。 我想只有按下操纵杆按钮才能做到这一点,这是一个瞬时开关。

我相信它应该通过每次按下和释放按钮时将状态更改为1(或0),然后在该状态为1时使电机仅转动。

我尝试过谷歌搜索的不同代码,但到目前为止,它们仍然让我的开关像瞬间开关一样。 :-S

有人可以帮我解决如何在我的代码中实现这样的功能吗?

   
#include <Wire.h>

// L9110 connections
#define L9110_B_IA 10 // Pin D10 --> Motor B Input A
#define L9110_B_IB 11 // Pin D11 --> Motor B Input B

// Motor Speed & Direction
#define MOTOR_B_PWM L9110_B_IA // Motor PWM Speed
#define MOTOR_B_DIR L9110_B_IB // Motor Direction

const int SW_pin = 2;  //Joystick Switch
const int X_pin = 0; //Joystick X-axis
const int Y_pin = 1; //Joystick Y-axis
const int TresholdHigh = 520; //Deadband for joystick
const int TresholdLow = 480; //Deadband for joystick

void setup()
{
  pinMode(SW_pin, INPUT);
  digitalWrite(SW_pin, HIGH);
  pinMode(13,OUTPUT);
  digitalWrite(13,LOW);
  pinMode( MOTOR_B_DIR, OUTPUT );
  pinMode( MOTOR_B_PWM, OUTPUT );
  digitalWrite( MOTOR_B_DIR, LOW ); // Set motor to off
  digitalWrite( MOTOR_B_PWM, LOW );
  Serial.begin(9600);

  Wire.begin();
}

void loop()
{

   if(analogRead(Y_pin) > (TresholdHigh))
    {
      digitalWrite(13,HIGH);
      digitalWrite( MOTOR_B_DIR, LOW );
      analogWrite( MOTOR_B_PWM, 100 );
    }
    else if(analogRead(Y_pin) < (TresholdLow))
    {
      digitalWrite(13,HIGH);
      digitalWrite( MOTOR_B_DIR, HIGH );
      analogWrite( MOTOR_B_PWM, 100 );
    }

    else 
    {
      digitalWrite(13,LOW);
      digitalWrite( MOTOR_B_DIR, LOW );
      digitalWrite( MOTOR_B_PWM, LOW );
    }

}
编辑:我已尝试实施此功能但似乎无法正常工作。 :P

const int SW_pin = 2;  //Joystick Switch
boolean buttonState = true; // store for toggle state, false = off true = on

void setup()
{
  pinMode(SW_pin, INPUT);
  digitalWrite(SW_pin, HIGH);
  }


void loop()
 {

  if(SW_pin == LOW && buttonState == false) // if button is pressed and toggled off
{
    buttonState = true; // set button state to on
}

if(SW_pin == LOW && buttonState == true) // if button is pressed and toggled on
{
     buttonState = false; // set button state to off
  }
}

1 个答案:

答案 0 :(得分:0)

感谢您提供Ignacio Vazquez-Abrams链接。我使用了链接中的代码并更改了代码中的反函数,因此它在每秒推送时打开/关闭。现在它工作正常。 : - )

Pushbutton state change turtorial