久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> Arduino >> 瀏覽文章

Arduino機(jī)器人第3課:創(chuàng)意LED

作者:謝作如   來(lái)源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時(shí)間:2014年05月04日   【字體:
《創(chuàng)意LED》是第一章《LED》的第三個(gè)專題。通過(guò)前兩個(gè)專題的學(xué)習(xí),學(xué)生已經(jīng)具備一定的編程能力,熟悉了Arduino的基本語(yǔ)法,掌握了變量、選擇結(jié)構(gòu)以及digitalWrite()和digitalRead()函數(shù)。本專題通過(guò)增加傳感器使學(xué)生掌握analogWrite()、analogRead()函數(shù)、循環(huán)結(jié)構(gòu)等內(nèi)容。但是學(xué)習(xí)這些的最終目的是讓學(xué)生有足夠的技術(shù)基礎(chǔ)設(shè)計(jì)有創(chuàng)意的LED作品。
 
相關(guān)資源下載地址:http://pan.baidu.com/s/1kTqOYs3
 
1.理解PWM
 
PWM——脈沖寬度調(diào)制,可以將數(shù)字信號(hào)轉(zhuǎn)換成模擬信號(hào)。Arduino板子上有6個(gè)引腳支持PWM信號(hào),分別是3、5、6、9、10、11。通過(guò)數(shù)字口的PWM輸出analogWrite()函數(shù)可以改變LED的亮度。analogWrite(pin,vlaue)——pin 接引腳(3、5、6、9、10、11) value值為0~255。
 
2.按鈕控制LED明暗
 
這個(gè)部分,我們主要是和學(xué)生一起完成按下按鈕,led慢慢亮,延遲一段時(shí)間,led慢慢暗的任務(wù)。這個(gè)時(shí)候我們就需要用到循環(huán)結(jié)構(gòu)了,循環(huán)結(jié)構(gòu)有兩種,一種是while,一種是for,兩種都可以實(shí)現(xiàn),這次我們用while結(jié)構(gòu)來(lái)實(shí)現(xiàn)。
 
程序如下:
 
 int b;  int i=0;
 
void setup()
 
 {
 
  pinMode(3,OUTPUT);
 
  pinMode(5,INPUT);
 
}
 
void loop()
 
 {
 
  b=digitalRead(5);
 
  if(i==LOW)
 
{
 
while(i<255) 
 
{
 
analogWrite(3,i);  
 
  i=i+1;    
 
}
 
    delay(3000);//延時(shí)時(shí)間
 
     while(i>0)
 
{
 
    analogWrite(3,i);
 
    i=i-1;
 
}
 
}
 
}
 
 
 
在上面的程序中,可以看到我們?cè)诿總(gè)while()函數(shù)里面都加了delay(10),這里的延時(shí)是很重要的,如果去掉延時(shí),很多情況下,我們都看不到燈光漸變的效果,這是因?yàn)閘oop()循環(huán)的非?欤袝r(shí)候肉眼看不出來(lái)燈光的明暗變化,加了延時(shí),就相當(dāng)于將led漸變拉成慢鏡頭,從而呼吸燈的效果也就非常明顯了。
 
3. 光控LED亮滅
 
在這一部分,我們引導(dǎo)學(xué)生使用光線傳感器控制LED的亮滅,我們用analogRead(pin)函數(shù)了。該函數(shù)可以讀取模擬口的輸入值,pin是模擬輸入口的編號(hào)。在講解完光控LED亮滅,進(jìn)一步啟發(fā)學(xué)生通過(guò)光線傳感器控制燈光暗滅時(shí),有個(gè)學(xué)生自己寫(xiě)出了如下程序:
 
int a;
 
void setup()
 
{
 
 pinMode(6 , OUTPUT);//LED接數(shù)字口6
 
}
 
void loop()
 
{
 
 a = analogRead(A0) ;//讀取傳感器值
 
    analogWrite( 3 , a);/
 
}  
 
光線傳感器讀取到外界的值是0-1023的,我們那天上課的時(shí)候光線傳感器讀出來(lái)的值大約在1000左右,但是我們知道PWM的值是0到255,所以學(xué)生產(chǎn)生了疑問(wèn),為什么analogWrite( 3 , a)中a是1000多,我們的led燈還是有明暗變化的,0到1023和0到255又有什么對(duì)應(yīng)轉(zhuǎn)化關(guān)系。值得高興的是,我們的這個(gè)同學(xué)在經(jīng)過(guò)多次嘗試以后,發(fā)現(xiàn)了兩者之間的周期性關(guān)系。雖然是一個(gè)很小的探索,但是學(xué)生的這種求知和實(shí)踐還是很讓人高興的。我們以后在上課的時(shí)候,也可以提一提兩者之間的轉(zhuǎn)換關(guān)系,正好這個(gè)知識(shí)點(diǎn)與下面的map()函數(shù)的教學(xué)相對(duì)應(yīng),也過(guò)度自然。
 
 
 
最后一個(gè)光控LED明暗小實(shí)驗(yàn)中,因?yàn)閍nalogRead()函數(shù)讀出來(lái)的值是0~1023之間的值;而PWM值為0~255,這兩者之間就需要用到轉(zhuǎn)換。在這里我們使用map()函數(shù)。
 
map(value, fromLow, fromHigh, toLow, toHigh),在這里value指要轉(zhuǎn)換的值,fromLow指值現(xiàn)在的下界,romHigh指值現(xiàn)在的上界,toLow指值目標(biāo)范圍的上界,oHigh指值目標(biāo)范圍的上界。因?yàn)槲覀円瓿傻氖?-1023到0-255的轉(zhuǎn)換,所以map(a,0,1023,0,255)是可以理解的,但是我們給的程序顯示的是map(a,800,1023,0,255),在這里,需要讓學(xué)生自己測(cè)試兩個(gè)寫(xiě)法的不同效果,進(jìn)而總結(jié)出把0改成800的原因,代碼如下:
 
int b;
 
int i;
 
void setup() {
 
pinMode(3,OUTPUT);
 
pinMode(0,INPUT);
 
}
 
void loop() {
 
  b=analogRead(0);
 
  i=map(b,800,1023,0,255);
 
  analogWrite(3,i);
 
}
關(guān)閉窗口

相關(guān)文章

主站蜘蛛池模板: 久久艳片www.17c.com | 97色伦图片 | 精品蜜桃一区二区三区 | 欧美在线视频一区 | 欧美激情xxxx| 国产免费av网站 | 天堂网中文在线 | 欧美一级特黄视频 | 爱爱免费小视频 | 久婷婷 | 欧美视频亚洲视频 | 久久久影院 | 激情都市亚洲 | 色综合五月 | 97人人插| 欧美性猛交xxxx黑人交 | av网站在线免费观看 | 久在线观看 | 四虎影院www | 久久精品在线播放 | 日韩毛片网 | 午夜成人在线视频 | 国产精品91在线 | 91午夜精品亚洲一区二区三区 | 国产一级黄 | 日韩av不卡在线 | 日韩精品免费在线观看 | 亚洲精品影院 | 久久久不卡 | 色精品 | 日日操夜夜骑 | 五月婷婷六月丁香 | 涩五月婷婷 | h片在线 | 波多野结衣在线观看一区二区 | 亚欧在线观看 | 日韩精品视频在线 | 国产精品99久久久久久久久 | 五月激情网站 | 99热99| 免费观看一区二区三区毛片 |