您現在的位置是:首頁 > 棋牌

Arduino開發設計呼吸燈實驗

  • 由 擁有知識真理 發表于 棋牌
  • 2023-01-11
簡介 以十六進位制輸出光敏電阻讀取的資料delay(500)

拼音怎麼打出來

、實驗目的

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,標識“~”。

Arduino開發設計呼吸燈實驗

2。電位器(相當於物理電器中的滑動變阻器)

Arduino開發設計呼吸燈實驗

電位器是具有三個引出端、阻值可按某種變化規律調節的電阻元件。電位器通常由電阻體和可移動的電刷組成。當電刷沿電阻體移動時,在輸出端即獲得與位移量成一定關係的電阻值或電壓。電位器既可作三端元件使用也可作二端元件使用。後者可視作一可變電阻器,由於它在電路中的作用是獲得與輸入電壓(外加電壓)成一定關係的輸出電壓,因此稱之為電位器。

透過電位器滑動埠可以控制輸出電壓取值從 0 – Vcc 變化,如果輸出值為呼吸燈漸變亮度的最大值,則可以透過輸出值的變化控制呼吸燈亮滅的頻率。

3。呼吸燈電路原理

Arduino開發設計呼吸燈實驗

原理圖:

Arduino開發設計呼吸燈實驗

⑶ 呼吸燈原理

人在呼吸時,透過擴大胸腔、壓縮胸腔進行吸氣、呼氣實現呼吸功能,不斷吸氣、呼氣形成規律的呼吸功能。呼吸燈透過控制燈的亮度,從暗逐漸變化最亮、再逐漸變化到最暗,不斷重複,形似人的呼吸,稱為呼吸燈。

4。3 實驗內容

1。電位器模擬訊號值的輸出

電路圖:

Arduino開發設計呼吸燈實驗

原理圖:

Arduino開發設計呼吸燈實驗

流程圖:

Arduino開發設計呼吸燈實驗

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);

}

程式碼測試:

Arduino開發設計呼吸燈實驗

5。2電位器制 控制 LED 燈的亮度

電路圖:

Arduino開發設計呼吸燈實驗

原理圖和流程圖:

Arduino開發設計呼吸燈實驗

程式碼:

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);

}

程式碼測試:

Arduino開發設計呼吸燈實驗

拓展試驗:

更改以上電路與源程式,用 R、G、B 三色的 LED 實現一個顏色不斷變化的炫彩燈效果,要求:⑴ R\G\B單色漸變;⑵ R\G\B 雙色漸變;⑶ R\G\B 三色漸變;⑷ R\G\B 顏色隨機變化。

電路圖:

Arduino開發設計呼吸燈實驗

單色漸變程式碼:

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);

}

}

}

}

實驗現象:

Arduino開發設計呼吸燈實驗

Top