|
本帖最後由 40123223 於 2014-12-18 16:00 編輯
使用arduino uno
現在不知道是紅外線感測那顆有問題
還是程式有問題
現在的狀況是有時候會正常執行柵欄升起放下的程序
大部分都是燈號紅綠亂閃,伺服馬達就一下一下動而已
我們這個東西的目的是一個人流控制的柵欄
當紅燈亮起,柵欄放下擋住行人;綠燈亮起,柵欄升起讓行人通行
考慮到沒有人,它還是自己一直在那邊升起放下
所以加了一顆紅外線感測器,當偵測到人進入升起放下的程序
然後沒有偵測到人時,紅燈亮著,柵欄維持在放下的位置
電路圖
程式碼
- #include <Servo.h>
- Servo myservo;
- int pos = 0;
- int redpin = 12;
- int bluepin =13;
- int val;
- const int PIRSensor = 2; // 紅外線動作感測器連接的腳位
- int sensorValue = 0; //紅外線動作感測器訊號變數
- void setup()
- {
- myservo.attach(9);
- pinMode(PIRSensor, INPUT);
- pinMode(redpin, OUTPUT);
- pinMode(bluepin, OUTPUT);
- }
- void loop()
- {
- sensorValue = digitalRead(PIRSensor);
- if(sensorValue == HIGH) //當偵測到行人時進入程序
- {
- digitalWrite(12, HIGH);
- delay(15);
- for(pos=0;pos<90;pos+=1)
- {
- myservo.write(pos);
- delay(15);
- }
- delay(5000);
- digitalWrite(12, LOW);
- delay(15);
- digitalWrite(13, HIGH);
- delay(15);
- for(pos=90;pos>=0;pos-=1)
- {
- myservo.write(pos);
- delay(15);
- }
- delay(5000);
- digitalWrite(13, LOW);
- }
- else {digitalWrite(12, HIGH); digitalWrite(13, LOW); digitalWrite(9, LOW);}
- }
複製代碼 |
|