基於arduino的光控窗簾 光控窗簾

2021-10-13 12:00:53 字數 3072 閱讀 4023

課程設計報告

設計目的:

居民對生活採光很重視,但現在的人們越來越「懶」,對智慧型化的要求越來越高。為了方便居民在白天把窗簾及時拉開,晚上把窗簾及時拉上,我們設計了光控窗簾。本設計硬體主要是光敏感測器,電機以及微控制器;軟體主要採用c語言進行程式設計。同時,為了考慮實際我們還額外加了一些手動裝置,以防陰天和雨天等特殊天氣。

硬體介紹:

arduino m2560r3微控制器,光敏感測器模組(頻寬電壓lm393比較器的光敏感測器7.5元),電機驅動(hd74hc14p,uln2003雙晶元電機驅動器11元),led燈,步進電機28byj-48(5元),導線若干繼電器模組(20元)。

對光的感應我們採用光敏感測器模組,驅動部分我們採用了步進電機,避免了一般電機要用額外電源帶動的麻煩,同時為了方便使用者,我們還加了兩個led指示燈,電機轉動拉開窗簾乙個指示燈亮,當電機反向轉動另乙個燈亮。

裝置通過光敏感測器的感知,對外界環境光線訊號輸入到微控制器,通過微控制器的控制,實現電機的自動開合。

電路圖軟體設計

在軟體設計上有三點,第一是微控制器在感到光線變強時驅動電機正轉或光線變暗時是驅動電機反轉,第二是在驅動一段時間以後必須停下驅動來達到省電以及省裝置的目的,第三就是合理控制電機轉動時間來達到窗簾的合理拉合。以下是軟體流程:

int read=a0;                       //定義read為a0口的值

int value =0;                      //給value賦初始值為0

int i,j=0;

intmotivate=0;                     //定義電機初始狀態

void setup(){

pinmode(read,input);             //定義read為輸入

pinmode(12, output);               //定義6個輸出口,兩個用於led指示燈,四個用於連線雙晶元電機驅動器

pinmode(13, output);

pinmode(24, output);

pinmode(26, output);

pinmode(28, output);

pinmode(30, output);

void loop()

value= digitalread(read);         //讀取a0口的值並賦值給value

if(low == value && motivate==0)    //如果value值為0,電機為狀態0

for(i=0;i<500;i++)               //執行電機反轉程式500次,

digitalwrite(24,low);             //步進電機反轉驅動四相:0011,1001,1100,0110

digitalwrite(26, low);

digitalwrite(28, high);

digitalwrite(30, high);

delay(2);

digitalwrite(24, high);

digitalwrite(26, low);

digitalwrite(28, low);

digitalwrite(30, high);

delay(2);

digitalwrite(24, high);

digitalwrite(26, high);

digitalwrite(28, low);

digitalwrite(30, low);

delay(2);

digitalwrite(24, low);

digitalwrite(26, high);

digitalwrite(28, high);

digitalwrite(30, low);

delay(2);

digitalwrite(12,high);            //點這led指示燈12

digitalwrite(13,low);             //關閉led指示燈13

else

if(high == value  && motivate==0)   //如果value值為1,電機為狀態0

for(j=0;j<1000;j++)             //執行電機正轉程式1000次

digitalwrite(24,low);             //電機正轉程式四相:0110,1100,1001,0011

digitalwrite(26, high);

digitalwrite(28, high);

digitalwrite(30, low);

delay(2);

digitalwrite(24, high);

digitalwrite(26, high);

digitalwrite(28, low);

digitalwrite(30, low);

delay(2);

digitalwrite(24, high);

digitalwrite(26, low);

digitalwrite(28, low);

digitalwrite(30, high);

delay(2);

digitalwrite(24, low);

digitalwrite(26, low);

digitalwrite(28, high);

digitalwrite(30,high);

delay(2);

digitalwrite(12,low);              //關閉led指示燈12

digitalwrite(13,high);             //點亮led指示燈13

if(value==digitalread(read))        //若valuew值與a0口值相等,

motivate=1;                        //則電機為狀態1

else

motivate=0;                        //否則電機為狀態0

應用在實際應用中,應該根據窗簾的長度來調節電機每次驅動所轉的轉數來調節窗簾是否拉到底或開到底。

光控小夜燈

光控diy小夜燈 之前,自己有乙個 小黃鴨 乙個插在220v電源的小夜燈,但是,每天23 00會停電,所以,突發奇想,自己搞個插在電腦供電的夜控燈。利用的電路原理也挺簡單的,模電的知識,下圖是它的電路圖,器件不多。電路圖 引數 e 供電電壓,直插電腦usb介面,3.3 5.0v c 電容10uf r...

Arduino使用魔術光杯

文字介紹37款感測器中的魔術光杯。魔術光杯包含兩個一模一樣的模組,單個模組是由乙個led燈和乙個水銀開關組成的。如下圖所示,它總共有4個引腳,各引腳意義如下 接gnd 接vcc s 輸出引腳,輸出水銀開關的狀態,猜測意義為switch l 輸入引腳,控制led燈,猜測意義為led 根據賣家給的示例 ...

基於結構光的立體視覺

1介紹 對立體視覺進行介紹,分析現有的缺陷。如何引進結構光,測量的原理和標定,效能測試與評估。二維的影象無法獲取深度資訊。雙目立體視覺 特徵提取 sift,suft,orb。特徵描述 特徵匹配 犧牲特徵點的數量。特徵點數目比較少,比較稀疏。無法實現識別。結構光視覺 視覺範圍 小於5m,精度 最大0....