如何使2个触摸传感器移动一个伺服



我想让两个触摸传感器做同样的事情,那就是移动伺服。如果任一触摸传感器被触摸,电机会根据其先前的位置向上或向下移动。第二个触摸传感器应命名为touch_sensor_PIN2

这是代码:

#include <Servo.h>
const int TOUCH_SENSOR_PIN   = 6;   // Arduino pin connected to touch sensor's pin
const int SERVO_PIN          = 9;   // Arduino pin connected to servo motor's pin

Servo servo; // create servo object to control a servo

// variables will change:
int angle = 141;           // the current angle of servo motor
int lastTouchState;      // the previous state of touch sensor
int currentTouchState;   // the current state of touch sensor


void setup() {
Serial.begin(9600);      // initialize serial
pinMode(TOUCH_SENSOR_PIN, INPUT);
servo.attach(SERVO_PIN);       // attaches the servo on pin 9 to the servo object

servo.write(angle);
currentTouchState = digitalRead(TOUCH_SENSOR_PIN);
}

void loop() {
lastTouchState    = currentTouchState;  // save the last state
currentTouchState = digitalRead(TOUCH_SENSOR_PIN);  //read new state 

if(lastTouchState == LOW && currentTouchState == HIGH) {

// change angle of servo motor
if(angle == 141)
angle = 156;
else
if(angle == 156)
angle = 141;


// control servo motor arccoding to the angle
servo.write(angle);


}
}

我还没有尝试过,但应该可以。请将<pin number>替换为连接第二个触摸传感器的引脚编号。

#include <Servo.h>
const int TOUCH_SENSOR_PIN   = 6;   // Arduino pin connected to touch sensor's pin
const int TOUCH_SENSOR_PIN2   = <pin number>;
const int SERVO_PIN          = 9;   // Arduino pin connected to servo motor's pin
Servo servo; // create servo object to control a servo
// variables will change:
int angle = 141;           // the current angle of servo motor
int lastTouchState;      // the previous state of touch sensor
int currentTouchState;   // the current state of touch sensor
int lastTouchState2;      // the previous state of touch sensor 2
int currentTouchState2;   // the current state of touch sensor 2

void setup() {
Serial.begin(9600);      // initialize serial
pinMode(TOUCH_SENSOR_PIN, INPUT);
pinMode(TOUCH_SENSOR_PIN2, INPUT);
servo.attach(SERVO_PIN);       // attaches the servo on pin 9 to the servo object
servo.write(angle);
currentTouchState = digitalRead(TOUCH_SENSOR_PIN);
currentTouchState2 = digitalRead(TOUCH_SENSOR_PIN2);
}
void loop() {
lastTouchState    = currentTouchState;  // save the last state
currentTouchState = digitalRead(TOUCH_SENSOR_PIN);  //read new state 

lastTouchState2    = currentTouchState2;  // save the last state
currentTouchState2 = digitalRead(TOUCH_SENSOR_PIN2);  //read new state 
if((lastTouchState == LOW && currentTouchState == HIGH) || (lastTouchState2 == LOW && currentTouchState2 == HIGH)) {
// change angle of servo motor
if(angle == 141)
angle = 156;
else
if(angle == 156)
angle = 141;

// control servo motor arccoding to the angle
servo.write(angle);

}
}

最新更新