【安信可BW16-Kit】rgb

[复制链接]
查看594 | 回复10 | 2024-3-31 16:18:12 | 显示全部楼层 |阅读模式

在使用安信可BW16-Kit来点亮RGB LED灯时,完成一系列步骤,确保硬件正确连接、环境配置妥当,并编写合适的代码来控制RGB LED灯的颜色和亮度。

先了解RGB LED灯的工作原理。RGB LED灯由红、绿、蓝三种颜色的LED芯片组成,通过调整每种颜色LED的亮度,可以混合出各种颜色。因此,您需要分别控制这三个颜色的LED芯片。

硬件连接:

  • 将RGB LED灯的正极(长脚)分别连接到BW16-Kit的三个GPIO引脚(PA12、PA14、PA13),每个颜色对应一个引脚。
  • 将RGB LED灯的负极(短脚)连接到GND引脚。

请注意,根据RGB LED灯的类型和规格,您可能需要在LED灯与GPIO引脚之间添加适当的限流电阻,以防止电流过大损坏LED灯或BW16-Kit。

  • 确保您的开发环境已经配置好,包括安装了Arduino IDE和必要的板级包。
  • 创建一个新的Arduino项目,并编写代码来控制RGB LED灯。以下是一个简单的示例代码,用于循环显示红、绿、蓝三种颜色:

原理图:

1711872917897.jpg

参考代码:

  1. #define LED_R PA12 // 红色LED连接的引脚  
  2. #define LED_G PA14 // 绿色LED连接的引脚  
  3. #define LED_B PA13 // 蓝色LED连接的引脚  
  4.   
  5. void setup() {  
  6.   pinMode(LED_R, OUTPUT);  
  7.   pinMode(LED_G, OUTPUT);  
  8.   pinMode(LED_B, OUTPUT);  
  9. }  
  10.   
  11. void loop() {  
  12.   // 显示红色  
  13.   digitalWrite(LED_R, HIGH);  
  14.   digitalWrite(LED_G, LOW);  
  15.   digitalWrite(LED_B, LOW);  
  16.   delay(1000); // 等待一秒  
  17.   
  18.   // 显示绿色  
  19.   digitalWrite(LED_R, LOW);  
  20.   digitalWrite(LED_G, HIGH);  
  21.   digitalWrite(LED_B, LOW);  
  22.   delay(1000); // 等待一秒  
  23.   
  24.   // 显示蓝色  
  25.   digitalWrite(LED_R, LOW);  
  26.   digitalWrite(LED_G, LOW);  
  27.   digitalWrite(LED_B, HIGH);  
  28.   delay(1000); // 等待一秒  
  29.   
  30.   // 重复上述过程  
  31. }
复制代码

实现的代码:

  1. void setup() {
  2.   // initialize digital pin's from all 3 colors as an output.
  3.   pinMode(LED_R, OUTPUT);
  4.   pinMode(LED_G, OUTPUT);
  5.   pinMode(LED_B, OUTPUT);
  6. }

  7. // blink RED, GREEN, BLUE
  8. void blink() {
  9.   digitalWrite(LED_R, HIGH);  // turn the RED LED on (HIGH is the voltage level)
  10.   delay(1000);                // wait for a second
  11.   digitalWrite(LED_R, LOW);   // h:\Evaluation\BW16 KIT\led\led\led.inoturn the RED LED off by making the voltage LOW
  12.   delay(1000);                // wait for a second
  13.   digitalWrite(LED_G, HIGH);  // turn the GREEN LED on (HIGH is the voltage level)
  14.   delay(1000);                // wait for a second
  15.   digitalWrite(LED_G, LOW);   // turn the GREEN LED off by making the voltage LOW
  16.   delay(1000);                // wait for a second
  17.   digitalWrite(LED_B, HIGH);  // turn the BLUE LED on (HIGH is the voltage level)
  18.   delay(1000);                // wait for a second
  19.   digitalWrite(LED_B, LOW);   // turn the BLUE LED off by making the voltage LOW
  20.   delay(1000);                // wait for a second
  21. }

  22. // fade RED and BLUE
  23. void fade() {
  24.   // fade RED in from min to max in increments of 5 points:
  25.   for (int fadeValue = 0; fadeValue <= 255; fadeValue += 5) {
  26.     // sets the value (range from 0 to 255):
  27.     analogWrite(LED_R, fadeValue);
  28.     // wait for 30 milliseconds to see the dimming effect
  29.     delay(30);
  30.   }

  31.   // fade RED out from max to min in increments of 5 points:
  32.   for (int fadeValue = 255; fadeValue >= 0; fadeValue -= 5) {
  33.     // sets the value (range from 0 to 255):
  34.     analogWrite(LED_R, fadeValue);
  35.     // wait for 30 milliseconds to see the dimming effect
  36.     delay(30);
  37.   }

  38.   // fade BLUE in from min to max in increments of 5 points:
  39.   for (int fadeValue = 0; fadeValue <= 255; fadeValue += 5) {
  40.     // sets the value (range from 0 to 255):
  41.     analogWrite(LED_B, fadeValue);
  42.     // wait for 30 milliseconds to see the dimming effect
  43.     delay(30);
  44.   }

  45.   // fade BLUE out from max to min in increments of 5 points:
  46.   for (int fadeValue = 255; fadeValue >= 0; fadeValue -= 5) {
  47.     // sets the value (range from 0 to 255):
  48.     analogWrite(LED_B, fadeValue);
  49.     // wait for 30 milliseconds to see the dimming effect
  50.     delay(30);
  51.   }
  52. }
  53. // the loop function runs over and over again forever
  54. void loop() {
  55.   blink();      // blink RED, GREEN, BLUE
  56.   fade();       // fade RED, BLUE
  57.   delay(1000);  // wait for a second
  58. }
复制代码

上传与测试:

  • 选择正确的开发板和端口,在Arduino IDE中点击上传按钮,将代码烧录到BW16-Kit上。
  • 观察RGB LED灯是否按照代码中的逻辑显示不同的颜色。如果LED灯没有按预期工作,请检查硬件连接和代码逻辑是否正确。

实际显示效果:

a1558b8bdf60ef8838ff96c6475b347d.zip (1.97 MB, 下载次数: 0)

回复

使用道具 举报

lovzx | 2024-3-31 17:27:53 | 显示全部楼层
学习
回复

使用道具 举报

干簧管 | 2024-3-31 18:05:14 | 显示全部楼层
回复

使用道具 举报

1084504793 | 2024-3-31 18:31:38 | 显示全部楼层
回复

使用道具 举报

WT_0213 | 2024-4-1 08:49:03 | 显示全部楼层
还是arduino看着舒服
回复 支持 反对

使用道具 举报

bzhou830 | 2024-4-1 08:49:44 | 显示全部楼层
学习
选择去发光,而不是被照亮
回复

使用道具 举报

lazy | 2024-4-1 10:57:10 | 显示全部楼层
学习
回复

使用道具 举报

1055173307 | 2024-4-1 16:06:06 | 显示全部楼层
学习
回复

使用道具 举报

noonezero | 2024-4-10 11:16:45 | 显示全部楼层
赞一下
回复

使用道具 举报

物联网 | 2024-4-10 11:36:45 | 显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则