国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

用Arduino設(shè)計一個智能日晷

2018-03-26 07:34劉正云謝作如
中國信息技術(shù)教育 2018年5期
關(guān)鍵詞:日晷針腳舵機

劉正云 謝作如

日晷是白天通過測日影定時間的儀器。利用日晷計時的方法是人類在天文計時領(lǐng)域的重大發(fā)明。但傳統(tǒng)日晷的最大不足在于要靠人工去看時間,這很不方便。如果利用Arduino配合傳感器做一個可以自動判斷時間的智能日晷,能否既保留古代科技的偉大,又結(jié)合現(xiàn)代科技的神奇呢?

● 日晷的工作原理

在設(shè)計智能日晷之前,我們首先要知道日晷的工作原理,這要從影子開始說起。當(dāng)物體被太陽照射時,會有影子產(chǎn)生。在一天的不同時刻,影子的長短以及方向在不斷改變。首先,是影子長短的改變,早晨物體的影子最長,隨著時間的流逝,影子逐漸縮短,直至中午達到最短,一過中午,影子又慢慢變長;其次,是影子方向的改變,在北回歸線以北的地方,早晨影子在西邊,中午影子在北邊,傍晚影子在東邊。

日晷通常由晷針和晷面組成,垂直穿過圓盤中心的是晷針,與地軸平行;石制的圓盤叫做晷面,安放在石臺上,呈南高北低,與赤道平行。從原理上來說,根據(jù)影子的長度或方向都可以計時。一天當(dāng)中,太陽最高位于正南,為地方時12點。根據(jù)每小時走15度的運動規(guī)律,太陽的運動軌跡每變動15度,時差就相差一小時。日影與太陽位置保持相反,太陽的位置變動多少度,影子的位置也會跟著變動多少度。早晨,影子投向盤面西端的卯時附近(如圖1);當(dāng)太陽達正南最高位置(上中天)時,針影位于正北(下)方,指示著當(dāng)?shù)氐奈鐣r正時刻(如圖2)。午后,太陽西移,日影東斜,依次指向未、申、酉各個時辰(如圖3)。

日晷的晷面有十二個刻度,即子、丑、寅、卯、辰、巳、午、未、申、酉、戌、亥,分別代表了十二個時辰,每個刻度與現(xiàn)代時間的對應(yīng)關(guān)系如圖4所示。根據(jù)日晷的運行原理,只要利用傳感器得到影子的方向,就能計算出當(dāng)前的時間。那么,利用什么辦法能獲知影子的方向呢?有一個很簡單的辦法,在一個晷針或者晷盤的下方布滿光線傳感器,即光線傳感器陣列,哪個方向的傳感器數(shù)值最小,就可以得知影子的方向。但是這樣需要好多個光線傳感器,又浪費又不好看。于是,筆者采用了一個折中的方案,讓舵機帶著一個光線傳感器轉(zhuǎn)動,然后算出數(shù)值最小的角度。至于時間的顯示,可以用LED來表示,發(fā)光比晷盤上的數(shù)字更加明顯。

● 智能日晷的硬件實現(xiàn)

首先要設(shè)計的是晷面和晷針。筆者使用AI設(shè)計軟件分別設(shè)計出晷面以及裝器材的盒子,用激光切割機切割出來,并在晷盤上放置七個LED發(fā)光模塊,分別代表早晨6點、8點、10點,中午12點,下午2點、4點、6點這七個時間點,兩個LED發(fā)光模塊的中間則對應(yīng)上午7點、9點,中午11點,下午1點、3點、5點,如圖5所示。

將智能日晷的晷針根部連接舵機模塊,晷針上連接橫向結(jié)構(gòu)件,并放置光線傳感器模塊,整個智能日晷的啟動由按鈕控制。按下按鈕,程序啟動,舵機轉(zhuǎn)動并帶動晷針在晷面上方轉(zhuǎn)動180度,用光線傳感器模塊測量七個時辰十三個時間點的陰影強弱程度,光線最弱位置的時間點即為此時的具體地方時間,若地方時為上午6、8、10、12時及下午2、4、6時整,則對應(yīng)LED發(fā)光模塊點亮;若地方時為上午7、9、11時及下午1、3、5時整,則其左右兩邊的LED發(fā)光模塊一起點亮。

智能日晷用到的硬件器材清單如下:Romeo控制器(可以用任何一款A(yù)rduino主板)、LED發(fā)光模塊、模擬環(huán)境光線傳感器、舵機、按鈕。分別將七個LED發(fā)光模塊連接在Arduino Romeo控制器的數(shù)字針腳上,如針腳2、3、4、5、6、7、8;將光線傳感器接在Arduino Romeo控制器的模擬針腳上,如模擬針腳1;將舵機接在Arduino Romeo控制器的數(shù)字針腳,如針腳11;同時,將控制程序啟動的按鈕接在控制板的數(shù)字針腳上,如針腳13,硬件連接如圖6所示。

● 智能日晷的軟件實現(xiàn)

智能日晷的程序主要包含三個部分:一是獲取各個角度的光線數(shù)值;二是計算出最小的數(shù)值位置;三是顯示時間。即移動點亮相應(yīng)的LED。智能日晷運行流程圖如圖7所示。

在應(yīng)用啟動之初,首先,需要將七個LED(針腳2~8)全部熄滅,將舵機轉(zhuǎn)到0度待命,同時將0度(也就是早上6點)位置上的光線值賦給最小光線值變量minLight,程序如下頁圖8所示。

主程序第一部分是轉(zhuǎn)動舵機并獲取晷面上午6點到下午6點共13個時間點所在位置光線值的程序。使用數(shù)組light[]存放不同位置的光線值。舵機在晷面不同時間點的具體位置依次轉(zhuǎn)動,根據(jù)日晷工作原理可知,每兩個時間點間隔15度。因此,舵機轉(zhuǎn)動、舵機下方對應(yīng)LED點亮、光線傳感器獲取不同時間點位置的光線值并將其存儲在數(shù)組中的具體程序如下頁圖9所示,變量a為數(shù)組light[]的下標(biāo)。根據(jù)數(shù)學(xué)運算可得知,舵機轉(zhuǎn)動角度為a×15,舵機下方對應(yīng)LED針腳值為a÷2+2。

其次,也是智能日晷最重要的地方,是求出不同時間點位置光線值中最小的一個,也就是太陽陰影的所在點,哪個時間點位置光線值最小,該位置所顯示的時間點即為此時具體地方的時間。

求13個數(shù)值中的最小值,可將第一個數(shù)值與后面一個數(shù)值相比較,取兩者之間較小的一個,再與下一個數(shù)值進行比較,取小者,依次循環(huán),直至將13個時間點的光線值全部比較完畢,程序中將最小光線值用minLight表示,將最小光線值時所對應(yīng)的下標(biāo)a賦值給servoLocation,LED所在針腳值變量用ledLocation表示,ledLocation由數(shù)組的下標(biāo)a換算而來,ledLocation=a÷2+2。

minLight初始值已經(jīng)在應(yīng)用啟動準(zhǔn)備程序中被賦值為早上6點位置的光線值,第二部分主程序如圖10所示。

最后,將晷針移至光線最暗的時間點位置,并點亮此處的LED發(fā)光裝置。倘若晷針正好指向LED發(fā)光裝置,則點亮該LED;倘若晷針指向兩個LED發(fā)光裝置之間,則同時點亮其左右兩個LED發(fā)光裝置。通過servoLocation取余2的值,來判斷光線最暗的時間點位置是在一個LED上方,還是兩個LED中間,其數(shù)學(xué)運算表達式為“servoLocation % 2”(如圖11)。

當(dāng)然,整個智能日晷由按鈕按下啟動,千萬不要忘記按鈕功能實現(xiàn)的程序編寫。

● 拓展提升

完成硬件和代碼后,現(xiàn)在可以開始測試了:按下按鈕,晷針運行180度之后,又回到光線最暗的地方,并點亮了相應(yīng)的LED發(fā)光裝置。當(dāng)看到日冕變得智能后,有沒有一種“老樹開花”的感覺呢?

當(dāng)然,要實現(xiàn)影子的智能測量還有很多方法,利用攝像頭識別也是很好的方案之一。這需要學(xué)習(xí)圖片處理方面的知識,要求較高,并且智能硬件要改為樹莓派或者lattepanda,才能完成圖像數(shù)據(jù)的運算處理。

● 結(jié)語

智能日晷是一個非常適合中小學(xué)生的研究項目,其價值是將現(xiàn)代電子技術(shù)與古代天文科學(xué)原理相結(jié)合,通過動手造物的形式,讓學(xué)生真正理解影子、太陽和時間之間的關(guān)系。小學(xué)科學(xué)課程中本來就有相關(guān)的學(xué)習(xí)內(nèi)容,二者完全可以結(jié)合起來學(xué)習(xí)。

通過現(xiàn)代電子技術(shù),重新對傳統(tǒng)工具、玩具等進行設(shè)計,可以改造成很有趣的STEAM項目,如使用距離傳感器制作手勢控制的二胡;使用馬達和無線遙控器制作可遙控的電動龍舟;使用蜂鳴器、LED發(fā)光模塊等制作更具互動效果的舞獅;利用多個舵機、MP3模塊和激光切割設(shè)計獨具一格的皮影;等等。在Mixly、Ardublock、Scratch等圖形化編程軟件的幫助下,智能硬件的學(xué)習(xí)門檻已經(jīng)越來越低,它有必要作為一個學(xué)習(xí)工具在中小學(xué)課堂中普及。

參考文獻:

[1]王德昌.日晷——時間的雕塑和測量[J].科學(xué),2005,57(04):55-58.

[2]日晷[EB/OL].https://baike.baidu.com/item/%E6%97%A5%E6%99%B7/765113?fr=aladdin,2018-1-1.

猜你喜歡
日晷針腳舵機
時間的雕塑
穿越時空的記憶
褶皺藝術(shù)
主板功能不浪費 擴展針腳要會用
簡易日晷
在確定圓心的過程中認(rèn)識圓
論明末清初日晷設(shè)計的特點
海太克HS—1100WP數(shù)字舵機
超音速舵機保護器
菜鳥看模型
库伦旗| 邮箱| 黎川县| 黄山市| 桃园市| 江西省| 康马县| 常德市| 林口县| 九寨沟县| 西林县| 永宁县| 周宁县| 武陟县| 长岛县| 岑溪市| 永新县| 射阳县| 黑龙江省| 张北县| 深圳市| 开化县| 曲阳县| 黔西县| 新津县| 梅河口市| 拜城县| 开封市| 建水县| 运城市| 龙口市| 垫江县| 玉门市| 金坛市| 腾冲县| 迭部县| 江源县| 新龙县| 尖扎县| 尼木县| 林周县|