13-14視力保健機
(2017/01/16)
前陣子利用超音波測距模組(HC-SR04)製作智慧型垃圾桶,想再多做一些應用,想了想發現可以製作[視力保健機],當小朋友看書的距離太近時,蜂鳴器就會嗶嗶叫來警示,光這樣可能太單薄了一些,所以又加入[光敏電阻]來測光,當光線太暗時,蜂鳴器就會嗶嗶叫來警示,最後再加入[傾斜開關],如果姿勢歪掉,也會嗶嗶叫來警示!先利用Transformer來測試,最後再用MotoBlockly來完成離線裝置!
說明:利用簡單的Arduino模組,如超音波測距模組(HC-SR04)來測看書距離;[光敏電阻]來測環境的亮度;[傾斜開關]來測頭部是否歪斜,利用上述模組來做一個視力保健機!
所需材料:
Arduino控制板 X 1
超音波距離感測器 HC-SR04 X 1
光敏電阻模組 X 1
RGB三色LED燈 X 1
無源蜂鳴器 X 1
傾斜開關 X1 (含10K電阻(棕黑橙金)一個)
小型麵包板 X 1
9V電池及電池扣 X 1 (離線工作用)
杜邦線
簡易頭燈 X 1 (改裝成視力保健機)
整理盒(Motoduino的盒子) X 1
硬體部分:
接線說明:
傾斜開關接線說明(參考資料:https://learn.adafruit.com/tilt-sensor/using-a-tilt-sensor)
啟動Transformer 2.0,並進入Scratch2.0
Scratch程式:(程式也很簡單,所以才說適合國小學生來做)
問題:
有關光敏電阻值究竟高於多少才算太暗,這要再經過實測才知道?
傾斜開關究竟要傾斜到多少才算姿勢不良,這也要去調整,然後再給予固定!
測試成功!
題目二:視力保健機(MotoBlockly版,離線版)
硬體的部分同上
進入Moto Blockly (檔案於附件,程式寫法同上)
Arduino程式
int ultrasonic_trig = 10;int ultrasonic_echo = A0;float ultrasonic_distance() { digitalWrite(ultrasonic_trig, LOW); digitalWrite(ultrasonic_echo, LOW); delayMicroseconds(5); digitalWrite(ultrasonic_trig, HIGH); delayMicroseconds(10); digitalWrite(ultrasonic_trig, LOW); unsigned long sonic_duration = pulseIn(ultrasonic_echo, HIGH); float distance_cm = (sonic_duration / 2.0) / 29.1; return distance_cm;}void setup(){ pinMode( ultrasonic_trig , OUTPUT); pinMode( ultrasonic_echo , INPUT); pinMode(2, OUTPUT); pinMode(13, OUTPUT); pinMode(4, OUTPUT); pinMode(7, INPUT); pinMode(3, OUTPUT);}void loop(){ if (ultrasonic_distance( ) <= 30 && ultrasonic_distance( ) >= 15) { digitalWrite(2,HIGH); tone(13,255,200); delay(200); digitalWrite(2,LOW); delay(200); } if (ultrasonic_distance( ) < 15) { digitalWrite(2,HIGH); tone(13,255,100); delay(100); digitalWrite(2,LOW); delay(100); } if (analogRead(A1) > 500) { digitalWrite(4,HIGH); tone(13,300,100); delay(100); digitalWrite(4,LOW); delay(100); } if (digitalRead(7) == 1) { digitalWrite(3,HIGH); tone(13,300,100); delay(100); digitalWrite(3,LOW); delay(100); } digitalWrite(2,LOW); digitalWrite(3,LOW); digitalWrite(4,LOW);}
離線版完成圖
實作相片
測試成功