[DemoCode下载] NUC131在Arduino下的全彩LED操作实例

[复制链接]
 楼主| 稳稳の幸福 发表于 2024-2-28 10:41 | 显示全部楼层 |阅读模式
  1. int redpin = 11;    // select LED output pin for red LED
  2. int bluepin =10;    // select LED output pin for blue LED
  3. int greenpin =9;    // select LED output pin for green LED
  4. int val;

  5. void setup()
  6. {
  7.     pinMode(redpin, OUTPUT);
  8.     pinMode(bluepin, OUTPUT);
  9.     pinMode(greenpin, OUTPUT);
  10.     Serial.begin(9600);
  11. }

  12. void loop()
  13. {
  14.     for(val=255; val>0; val--)
  15.     {
  16.         analogWrite(redpin, val);
  17.         analogWrite(bluepin, 255-val);
  18.         analogWrite(greenpin, 128-val);
  19.         delay(1);
  20.     }
  21.     for(val=0; val<255; val++)
  22.     {
  23.         analogWrite(redpin, val);
  24.         analogWrite(bluepin, 255-val);
  25.         analogWrite(greenpin, 128-val);
  26.         delay(1);
  27.     }
  28.     Serial.println(val, DEC);
  29. }


 楼主| 稳稳の幸福 发表于 2024-2-28 10:41 | 显示全部楼层
说实话如果都移植到Arduino上就有个好处,就是所有的单片机都可以用同一套Arduino库函数来操作了。
天灵灵地灵灵 发表于 2024-2-28 15:19 | 显示全部楼层
Arduino的analogWrite()函数用于在数字引脚上模拟PWM(脉冲宽度调制)输出。PWM输出是通过在一段时间内将引脚设置为高电平和低电平之间快速切换来模拟一个特定电平的技术。在Arduino上,使用analogWrite()函数可以在支持PWM功能的引脚上生成模拟信号。
天灵灵地灵灵 发表于 2024-2-28 15:19 | 显示全部楼层
analogWrite(pin, value);
pin参数是一个整数,用于指定要输出PWM信号的引脚。在Arduino Uno等板上,只有某些特定的引脚支持PWM输出,通常标有符号“~”。
value参数是一个介于0到255之间的整数,用于指定PWM输出的占空比。0表示输出为低电平(0%占空比),255表示输出为高电平(100%占空比),而中间的值则表示对应于PWM信号的不同占空比。
天灵灵地灵灵 发表于 2024-2-28 15:19 | 显示全部楼层
请注意,analogWrite()函数名可能会误导一些人,因为它实际上用于模拟PWM信号,而不是产生真正的模拟信号。真正的模拟输出可以使用analogWrite()函数对应的数字引脚上。PWM的频率通常是固定的,由Arduino的系统时钟决定,在大多数情况下是几十kHz。

这个函数通常用于控制LED的亮度,马达的速度,舵机的角度等应用场景。
幸福小强 发表于 2024-2-28 16:27 | 显示全部楼层
要使用 analogWrite() 函数控制全彩LED,您需要连接全彩LED的三个颜色引脚到Arduino的PWM引脚(通常标有 ~ 符号的引脚)。PWM(脉冲宽度调制)引脚可以产生模拟信号,允许您控制LED的亮度。然后,您可以使用 analogWrite() 函数为每个颜色通道设置亮度。
幸福小强 发表于 2024-2-28 16:27 | 显示全部楼层
  1. // 定义三个全彩LED的引脚
  2. int redPin = 9;    // 连接红色LED的引脚
  3. int greenPin = 10; // 连接绿色LED的引脚
  4. int bluePin = 11;  // 连接蓝色LED的引脚

  5. void setup() {
  6.   // 设置引脚模式为输出
  7.   pinMode(redPin, OUTPUT);
  8.   pinMode(greenPin, OUTPUT);
  9.   pinMode(bluePin, OUTPUT);
  10. }

  11. void loop() {
  12.   // 逐渐增加红色通道的亮度
  13.   for (int brightness = 0; brightness <= 255; brightness++) {
  14.     analogWrite(redPin, brightness);
  15.     delay(10); // 延迟一段时间,使得变化可以观察到
  16.   }

  17.   // 逐渐减小红色通道的亮度
  18.   for (int brightness = 255; brightness >= 0; brightness--) {
  19.     analogWrite(redPin, brightness);
  20.     delay(10);
  21.   }

  22.   // 逐渐增加绿色通道的亮度
  23.   for (int brightness = 0; brightness <= 255; brightness++) {
  24.     analogWrite(greenPin, brightness);
  25.     delay(10);
  26.   }

  27.   // 逐渐减小绿色通道的亮度
  28.   for (int brightness = 255; brightness >= 0; brightness--) {
  29.     analogWrite(greenPin, brightness);
  30.     delay(10);
  31.   }

  32.   // 逐渐增加蓝色通道的亮度
  33.   for (int brightness = 0; brightness <= 255; brightness++) {
  34.     analogWrite(bluePin, brightness);
  35.     delay(10);
  36.   }

  37.   // 逐渐减小蓝色通道的亮度
  38.   for (int brightness = 255; brightness >= 0; brightness--) {
  39.     analogWrite(bluePin, brightness);
  40.     delay(10);
  41.   }
  42. }
幸福小强 发表于 2024-2-28 16:27 | 显示全部楼层
在这个示例中,我们逐渐增加和减小了红、绿、蓝三个颜色通道的亮度,实现了一种颜色的渐变效果。您可以根据需要修改 analogWrite() 函数中的亮度值,以实现不同的颜色效果和渐变速度。
xinpian101 发表于 2024-2-28 20:22 | 显示全部楼层
只能按照百分百控制。
xinpian101 发表于 2024-2-28 20:23 | 显示全部楼层
更细微的控制,这个好像不能实现。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

203

主题

3409

帖子

8

粉丝
快速回复 在线客服 返回列表 返回顶部