本次的小目標,希望能以伺服馬達當手、光敏電阻當眼睛,做出Google離線小恐龍的簡易自動破解器
首先在製作自動破解器前先說明一下Google離線小恐龍的遊玩方式,就是當小恐龍遇到障礙物時要跳起來躲避,而想要恐龍跳起來則需要用手按下空白鍵。
設計ㄟ原理
光敏電阻主要是利用光電效應的一種特殊的電阻,當有光線照射時,電阻內原本處於穩定狀態的電子受到激發,成為自由電子。 所以光線越強,產生的自由電子也就越多,電阻就會越小,透過會變化的電阻值,進一步產生輸出強弱訊號
讓我們進入正題,既然我們想要用伺服馬達代替手來操作,就需要讓伺服馬達轉動,這個部分就需要設計程式來解決 (補充1)
接下來我們在前面有說到,我們還需要用光敏電阻 (補充2) 當眼睛來判斷什麼時候需要讓小恐龍跳起來
所以最簡單的方式我們可以讓光敏電阻很靠近螢幕去感受該區域螢幕的亮度變化
然後搭配if-else 的「選擇性敘述」去確認 (補充3)
例如 : 如果(if)光敏電阻的讀取的數據低於0時則伺服馬達轉動,否則(else)伺服馬達不動 。
補充1. 使用函式#include <Servo.h>
Servo myservo; // 建立SERVO物件
myservo.attach(9); //決定要將伺服馬達接到哪一個Arduino 上的哪個腳位
myservo.write(角度); //旋轉到某一個角度 注意是轉到某個角度,而不是轉某個角度呦~
補充2. analogRead(s); 讀取數值
補充3. 請參考網站
步驟:
1.確認材料是不是都拿到了
2.把材料按照下面的接線圖接好
3.把程式碼上傳到Arduino
4.把光敏電阻固定到螢幕上,把伺服馬達固定到鍵盤上
5.先確定光敏電阻在亮跟暗的數值是多少,然後更改 sensorValue >= 0 中的0,改成數值介於兩者之間 讓夠區別亮和暗
6.開始遊戲
所需材料
1.伺服馬達*1
2.光敏電阻*1
3.杜邦線*8
接線圖:
程式碼:
#include <Servo.h> //載入函式庫,這是內建的,不用安裝
Servo myservo; // 建立SERVO物件
int r = A0 ; //假設一個字母R代替A0的孔洞
int sensorValue;
void setup() {
Serial.begin(9600);
myservo.attach(9); // 設定要將伺服馬達接到哪一個PIN腳
myservo.write(0); //歸零
// put your setup code here, to run once:
}
void loop() {
sensorValue = analogRead(r);
Serial.println(sensorValue);
if(sensorValue <= 0){ //如果光敏電阻的數值小於或大於某一數值時,則伺服馬達轉動。
myservo.write(30); //旋轉到30度
delay(100); //延遲0.5秒
myservo.write(0); //旋轉到0度
delay(100 ); //延遲0.5秒 可自行更改
}
}
//only for 360 motor
#include <Servo.h> //載入函式庫,這是內建的,不用安裝
Servo myservo; // 建立SERVO物件
int r = A0 ; //假設一個字母R代替A0的孔洞
int sensorValue;
void setup() {
Serial.begin(9600);
myservo.attach(9); // 設定要將伺服馬達接到哪一個PIN腳
// myservo.write(0); //歸零
// put your setup code here, to run once:
}
void loop() {
sensorValue = analogRead(r);
Serial.println(sensorValue);
if(sensorValue <= 130){ //如果光敏電阻的數值小於或大於某一數值時,則伺服馬達轉動。
myservo.write(10); //旋轉到30度
delay(200); //延遲0.5 秒
myservo.write(170); //旋轉到0度
delay(200); //延遲0.5秒 可自行更改
}
else{
myservo.write(90); //停止
delay(15);
}
}
約延伸思考
1.如果變成夜晚模式時要如何解決呢?
提示:可以增加其他感測器和更改程式碼
2.如果天上有鳥時要如何解決呢?
提示:可以增加其他感測器和更改程式碼
欲知詳情請付費解鎖更多功能 ~
小恐龍網址:https://dinosaur-game.io/