Untitled
unknown
c_cpp
3 years ago
1.5 kB
6
Indexable
#include <ESP32Servo.h> //請先安裝ESP32Servo程式庫
#define LED1 2
#define LED2 16
Servo myServo; //建立一個伺服馬達物件
const byte SW = 18;
TaskHandle_t handleA;
void warningLight(void *pvParam){
while(1){
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
digitalWrite(LED1, HIGH);
//ledcWriteTone(0, 659); // 通道0的頻率設成659Hz
vTaskDelay(50);
digitalWrite(LED2, LOW);
//ledcWriteTone(0, 440); // 通道0的頻率設成440Hz
vTaskDelay(50);
digitalWrite(LED1, LOW);
//ledcWriteTone(0, 659); // 通道0的頻率設成440Hz
vTaskDelay(50);
digitalWrite(LED2, HIGH);
//ledcWriteTone(0, 440); // 通道0的頻率設成440Hz
vTaskDelay(50);
yield();
}
}
void setup(){
Serial.begin(115200);
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
myServo.attach(17, 500, 2400); //SG90的脈衝寬度500~2400
pinMode(SW, INPUT_PULLUP);
xTaskCreate(warningLight, "blink LED", 1000, NULL, 1, &handleA);
}
void loop(){
if(digitalRead(SW)){
Serial.println("高電平");
vTaskSuspend(handleA);
delay(1000);
}
else{
Serial.println("低電平");
vTaskResume(handleA);
myServo.write(90);//轉到90度
Serial.println("打開柵欄");
delay(5000);
myServo.write(0);//轉到0度(原點)
digitalWrite(LED1, LOW);
digitalWrite(LED2, LOW);
Serial.println("關閉柵欄");
}
}Editor is loading...