相關(guān)商品
【創(chuàng)客學(xué)堂】玩轉(zhuǎn)Arduino-脈寬調(diào)制(PWM)實例
編輯:Xtm2014-09-17 瀏覽次數(shù):1386
這次就用Arduino和一組三色燈(紅、黃、綠)來實際應(yīng)用一下PWM吧,首先先觀察一下Arduino板子,共有六個PWM接口,他們分別是數(shù)字接口3、5、6、9、10、11 ,方便起見我們使用9、10、11這三個連續(xù)的PWM接口。在編寫程序的過程中,我們會用到模擬寫入analogWrite(PWM接口,模擬值)函數(shù),對于模擬寫入analogWrite()函數(shù),PWM的調(diào)制頻率被設(shè)置為30KHz。
先按照下圖連接好電路
這里我使用的電阻阻值是50歐姆,這里并不唯一,需要根據(jù)所使用的LED及其亮度選擇適合阻值的電阻。
下面就可以編寫程序了,我們就讓三個小燈依次緩慢亮起再緩慢熄滅,這樣往復(fù)循環(huán)。
int redpin=11;//定義LED接口
int yellowpin=10;
int greenpin=9;
int redval;//定義LED變量
int yellowval;
int greenval;
int i=0;
void setup()
{
pinMode(redpin,OUTPUT);//設(shè)置LED接口為輸出接口
pinMode(yellowpin,OUTPUT);
pinMode(greenpin,OUTPUT);
pinMode(redval,INPUT);//設(shè)置LED變量為輸入值
pinMode(yellowval,INPUT);
pinMode(greenval,INPUT);
Serial.begin(9600);//連接到串行端口,波特率為9600
}
void loop()
{
i++;
if(i<200)
{
redval+=1;//紅燈變亮
greenval-=1;//綠燈變暗
yellowval=1;//黃燈不變
}
else if(i<400)
{
redval-=1;//紅燈變暗
greenval=1;//綠燈不變
yellowval+=1;// 黃燈變亮
}
else if(i<600)
{
redval=1;//紅燈不變
greenval+=1;//綠燈變亮
yellowval-=1; //黃燈變暗
}
else
{
i=0;//重新給i賦值進行新循環(huán)
}
analogWrite(redpin,redval);//給LED接口賦模擬值
analogWrite(yellowpin,yellowval);
analogWrite(greenpin,greenval);
Serial.print(i,DEC);//顯示出i的值
Serial.print( " R:");//分別顯示出各個LED的模擬值
Serial.print(redval,DEC);
Serial.print( " Y:");
Serial.print(yellowval,DEC);
Serial.print( " G:");
Serial.println(greenval,DEC);
}
下載好程序就可以看到最終結(jié)果了。
相關(guān)文章:玩轉(zhuǎn)Arduino-脈寬調(diào)制
本文轉(zhuǎn)自:Rebecca●Arduino極客
用戶評價
暫時還沒有任何用戶評論