1.給ChayGPT校網上的SONIC範例
2..給ChayGPT校網上的SG90伺服馬達範例
可以讓ChayGPT直接參考停車場(超音波+伺服馬達)
https://lujuer.blogspot.com/2024/12/blog-post.html
3.請ChayGPT參考上述程式碼寫超音波感應揮手
程式碼如下:
#include <Servo.h>
// 設定伺服馬達控制引腳
#define sg90Pin 6 // 伺服控制引腳 (連接到伺服馬達的控制線)
// 定義超音波感應器的引腳
#define echoPin 8 // 超音波感應器的 Echo 引腳 (接收回波信號)
#define trigPin 9 // 超音波感應器的 Trigger 引腳 (發送觸發信號)
// 設定伺服物件
Servo servo;
void setup() {
Serial.begin(9600);
// 設定超音波感應器的引腳
pinMode(trigPin, OUTPUT); // Trigger 引腳設為輸出,用來發送超音波信號
pinMode(echoPin, INPUT); // Echo 引腳設為輸入,用來接收回波信號
// 連接伺服馬達到指定引腳
servo.attach(sg90Pin); // 設定伺服馬達控制引腳,這裡是 pin 6
}
void loop() {
long duration, distance;
// 發送一個超音波脈衝
digitalWrite(trigPin, LOW); // 設定 Trigger 引腳為低電位
delayMicroseconds(2); // 等待 2 微秒
digitalWrite(trigPin, HIGH); // 設定 Trigger 引腳為高電位,發送超音波
delayMicroseconds(10); // 發送超音波信號持續 10 微秒
digitalWrite(trigPin, LOW); // 停止發送超音波信號
// 測量回波的持續時間並計算距離
duration = pulseIn(echoPin, HIGH); // 計算 Echo 引腳接收到的回波時間
distance = (duration / 2) / 29.1; // 計算距離(單位:公分)
// 如果距離小於 100 cm,則進行揮手動作
if (distance < 100) {
Serial.print(distance); // 輸出測量到的距離
Serial.println(" cm - 距離小於 100 cm,開始揮手");
// 揮手 4 次
for (int i = 0; i < 4; i++) {
servo.write(45); // 揮手動作(45 度)
delay(500); // 停頓 0.5 秒
servo.write(0); // 回到原點(0 度)
delay(500); // 停頓 0.5 秒
}
// 完成揮手後,再休息一段時間
delay(2000); // 等待 2 秒後再測量距離
} else {
// 如果距離大於 100 cm,伺服保持在 0 度位置
servo.write(0); // 保持伺服在 0 度
}
delay(500); // 延遲 0.5 秒後再進行下一次測量
}
留言
張貼留言