// Example code for controlling a servo
// First include the servo library,
// this must be installed in the computer via Arduino IDE
#include <Servo.h>
// Define the pin that is used for sending data (i.e. the
// position) to the servo, and define a variable for the
// angle of the servo.
int servoPin = 8;
int servoAngle = 0;
int buttonPin = 2;
int buttonState = LOW;
int lastbuttonState = LOW;
boolean increaseAngle = false;
int ledPin = 13;
int ledState = LOW;
// Declare a servo object. In this example it is called
// flagServo, but can be called anything
Servo flagServo;
void setup() {
// Connect the servo object to the servo pin using attach
flagServo.attach(servoPin);
pinMode(buttonPin, INPUT);
pinMode(ledPin, OUTPUT);
pinMode(servoPin, OUTPUT);
}
void loop() {
// int servoAngle = 0;
// buttonState = digitalRead(buttonPin);
//1.0
// if (buttonState == HIGH && lastbuttonState == LOW){
// servoAngle = 0;
// increaseAngle = !increaseAngle;
// Serial.println("pressed");
// delay(500);
// }
// lastbuttonState = buttonState;
// if(servoAngle <= 90 && increaseAngle == true){
// flagServo.write(servoAngle);
// delay(1000);
// servoAngle += 10;
// }
// else if(servoAngle > 90){
// increaseAngle = false;
// }
//2.0
// 读取按钮状态
buttonState = digitalRead(buttonPin);
// 按下按钮,闹钟打开
if (buttonState == HIGH && lastbuttonState == LOW) {
//Serial.println("P");
// servo开始转
increaseAngle = !increaseAngle;
if(increaseAngle == true){
for(servoAngle == 0; servoAngle <= 90; servoAngle += 10){
//LED亮,表示闹钟为开启状态
ledState = true;
digitalWrite(ledPin, ledState);
flagServo.write(servoAngle);
delay(500);
if(servoAngle == 90 ){
//LED关,表示闹钟为关闭状态
ledState = false;
digitalWrite(ledPin, ledState);
increaseAngle = !increaseAngle;
}
}
}
else{
//LED关,表示闹钟为关闭状态
ledState = false;
digitalWrite(ledPin, ledState);
servoAngle = 0;
flagServo.write(servoAngle);
}
delay(1000);
}
// 更新上一次按钮状态
lastbuttonState = buttonState;
}