您現在的位置是:首頁 > 棋牌
Arduino開發設計呼吸燈實驗
- 由 擁有知識真理 發表于 棋牌
- 2023-01-11
拼音怎麼打出來
一
、實驗目的
1 熟悉 PWM 控制與程式編寫原理;
2 掌握模擬 I/O 介面特性與函式的功能;
3 掌握對映函式的功能;
4 掌握程式設計控制實現呼吸燈功能的方法
二 、實驗裝置與環境
Arduino UNO 套件、Arduino IDE、計算機、電位器、LED 燈、電阻、杜邦線等
三 、實驗重點
1 實驗電路連線;2 控制程式程式碼編寫;3 程式功能除錯
四 、實驗難點
1 程式程式碼編寫、除錯
五 、實驗 內容
5。1 實驗 任務
任務描述:讀取、輸出電位器模擬訊號值;電位器的 LED 亮度控制(PWM);呼吸燈製作。
5。2 實驗 原理
1。PWM 控制
PWM為訊號週期內保持高電平的時間,是以佔空比進行脈寬除錯的技術,用於將資訊編碼為脈衝訊號。Arduino UNO 的 PWM 訊號頻率 f=490Hz,輸出埠為 3、5、6、9、10、11,標識“~”。
2。電位器(相當於物理電器中的滑動變阻器)
電位器是具有三個引出端、阻值可按某種變化規律調節的電阻元件。電位器通常由電阻體和可移動的電刷組成。當電刷沿電阻體移動時,在輸出端即獲得與位移量成一定關係的電阻值或電壓。電位器既可作三端元件使用也可作二端元件使用。後者可視作一可變電阻器,由於它在電路中的作用是獲得與輸入電壓(外加電壓)成一定關係的輸出電壓,因此稱之為電位器。
透過電位器滑動埠可以控制輸出電壓取值從 0 – Vcc 變化,如果輸出值為呼吸燈漸變亮度的最大值,則可以透過輸出值的變化控制呼吸燈亮滅的頻率。
3。呼吸燈電路原理
原理圖:
⑶ 呼吸燈原理
人在呼吸時,透過擴大胸腔、壓縮胸腔進行吸氣、呼氣實現呼吸功能,不斷吸氣、呼氣形成規律的呼吸功能。呼吸燈透過控制燈的亮度,從暗逐漸變化最亮、再逐漸變化到最暗,不斷重複,形似人的呼吸,稱為呼吸燈。
4。3 實驗內容
1。電位器模擬訊號值的輸出
電路圖:
原理圖:
流程圖:
const int light_Pin = A0;
void setup() {
Serial。begin(9600);
int light_Value;
}
void loop() {
light_Value = analogRead(light_Pin);
Serial。print(“light_Value =:”);
Serial。println(light_Value); // 輸出光敏電阻讀取的資料
Serial。println(light_Value,BIN); // 以二進位制輸出光敏電阻讀取的資料
Serial。println(light_Value,HEX); // 以十六進位制輸出光敏電阻讀取的資料
delay(500);
}
程式碼測試:
5。2電位器制 控制 LED 燈的亮度
電路圖:
原理圖和流程圖:
程式碼:
const int light_Pin = A0;
const int ledPin = 5;
void setup() {
Serial。begin(9600);
}
void loop() {
int light_Value;
light_Value = analogRead(light_Pin);
Serial。print(“ight_Value =:”);
Serial。println(light_Value);
light_Value = map(light_Value,0,1023,0,255);
analogWrite(ledPin,light_Value);
delay(100);
}
程式碼測試:
拓展試驗:
更改以上電路與源程式,用 R、G、B 三色的 LED 實現一個顏色不斷變化的炫彩燈效果,要求:⑴ R\G\B單色漸變;⑵ R\G\B 雙色漸變;⑶ R\G\B 三色漸變;⑷ R\G\B 顏色隨機變化。
電路圖:
單色漸變程式碼:
const int led_red = 11;
const int led_gr5een =10 ;
const int led_blue = 9;
void setup() {
pinMode(led_red, OUTPUT); //
設定為輸出模式
pinMode(led_green, OUTPUT);
pinMode(led_blue, OUTPUT);
analogWrite(led_red, 255); //
首先,先把所有的燈都關閉
analogWrite(led_green, 255); //
可以隨意設定開啟關閉哪些燈,搭配出不同組合有不同顏色
analogWrite(led_blue, 255);
}
void loop() {
for (int i = 0; i <255 ; i += 5) {
analogWrite(led_red, i);
analogWrite(led_green, 255);
analogWrite(led_blue, 255);
delay(100);
}
for (int i = 255; i > 0; i -= 5)
{
analogWrite(led_red, i);
analogWrite(led_green, 255);
analogWrite(led_blue, 255);
delay(50);
}
for (int i = 0; i <255 ; i += 5) {
analogWrite(led_red, 255);
analogWrite(led_green, i);
analogWrite(led_blue, 255);
delay(50);
}
for (int i = 255; i > 0; i -= 5)
{
analogWrite(led_red, 255);
analogWrite(led_green, i);
analogWrite(led_blue, 255);
delay(50);
}
for (int i = 0; i <255 ; i += 5) {
analogWrite(led_red, 255);
analogWrite(led_green, 255);
analogWrite(led_blue, i);
delay(50);
}
for (int i = 255; i > 0; i -= 5)
{
analogWrite(led_red, 255);
analogWrite(led_green, 255);
analogWrite(led_blue, i);
delay(50);
}
}
R,G,B
的雙色漸變程式碼:
程式碼:const int led_red = 11;
const int led_green =10 ;
const int led_blue = 9;
void setup() {
pinMode(led_red, OUTPUT); //
設定為輸出模式
pinMode(led_green, OUTPUT);
pinMode(led_blue, OUTPUT);
analogWrite(led_red, 255); //
首先,先把所有的燈都關閉
analogWrite(led_green, 255); //
可以隨意設定開啟關閉哪些燈,搭配出不同組合有不同顏色
analogWrite(led_blue, 255);
}
void loop() {
for (int i = 0; i <255 ; i += 5) {
analogWrite(led_red, i); //
黃
analogWrite(led_green, i);
analogWrite(led_blue, 255);
delay(100);
}
for (int i = 255; i > 0; i -= 5)
{
analogWrite(led_red, i); //
紫
analogWrite(led_green, 255);
analogWrite(led_blue, i);
delay(50);
}
for (int i = 0; i <255 ; i += 5) {
analogWrite(led_red, 255);
analogWrite(led_green, i); //
青
analogWrite(led_blue, i);
delay(50);
}
for (int i = 255; i > 0; i -= 5)
{
analogWrite(led_red, i);
analogWrite(led_green, i);
analogWrite(led_blue, 255);
delay(50);
}
for (int i = 0; i <255 ; i += 5) {
analogWrite(led_red, i);
analogWrite(led_green, 255);
analogWrite(led_blue, i);
delay(50);
}
for (int i = 255; i > 0; i -= 5)
{
analogWrite(led_red, 255);
analogWrite(led_green, i);
analogWrite(led_blue, i);
delay(50);
}
}
隨機顏色程式碼:
const int led_red = 11;
const int led_green = 10 ;
const int led_blue = 9;
void setup() {
pinMode(led_red, OUTPUT); //
設定為輸出模式
pinMode(led_green, OUTPUT);
pinMode(led_blue, OUTPUT);
analogWrite(led_red, 255); //
首先,先把所有的燈都關閉
analogWrite(led_green, 255); //
可以隨意設定開啟關閉哪些燈,搭配出不同組合有不同顏色
analogWrite(led_blue, 255);
}
void loop() {
for (int i = 0; i < 255 ; i ++) {
analogWrite(led_red, i);
delay(20);
if(i=100){
for (int j = 0; j < 255; j++) {
analogWrite(led_green, j);
delay(20);
}
}
if(i=200){
for (int k = 0; k < 255; k++) {
analogWrite(led_blue, k );
delay(20);
}
}
}
}
實驗現象: