打印
[DemoCode下载]

NUC131在Arduino下的全彩LED操作实例

[复制链接]
464|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
稳稳の幸福|  楼主 | 2024-2-28 10:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
int redpin = 11;    // select LED output pin for red LED
int bluepin =10;    // select LED output pin for blue LED
int greenpin =9;    // select LED output pin for green LED
int val;

void setup()
{
    pinMode(redpin, OUTPUT);
    pinMode(bluepin, OUTPUT);
    pinMode(greenpin, OUTPUT);
    Serial.begin(9600);
}

void loop()
{
    for(val=255; val>0; val--)
    {
        analogWrite(redpin, val);
        analogWrite(bluepin, 255-val);
        analogWrite(greenpin, 128-val);
        delay(1);
    }
    for(val=0; val<255; val++)
    {
        analogWrite(redpin, val);
        analogWrite(bluepin, 255-val);
        analogWrite(greenpin, 128-val);
        delay(1);
    }
    Serial.println(val, DEC);
}


使用特权

评论回复
沙发
稳稳の幸福|  楼主 | 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信号的不同占空比。

使用特权

评论回复
5
天灵灵地灵灵| | 2024-2-28 15:19 | 只看该作者
请注意,analogWrite()函数名可能会误导一些人,因为它实际上用于模拟PWM信号,而不是产生真正的模拟信号。真正的模拟输出可以使用analogWrite()函数对应的数字引脚上。PWM的频率通常是固定的,由Arduino的系统时钟决定,在大多数情况下是几十kHz。

这个函数通常用于控制LED的亮度,马达的速度,舵机的角度等应用场景。

使用特权

评论回复
6
幸福小强| | 2024-2-28 16:27 | 只看该作者
要使用 analogWrite() 函数控制全彩LED,您需要连接全彩LED的三个颜色引脚到Arduino的PWM引脚(通常标有 ~ 符号的引脚)。PWM(脉冲宽度调制)引脚可以产生模拟信号,允许您控制LED的亮度。然后,您可以使用 analogWrite() 函数为每个颜色通道设置亮度。

使用特权

评论回复
7
幸福小强| | 2024-2-28 16:27 | 只看该作者
// 定义三个全彩LED的引脚
int redPin = 9;    // 连接红色LED的引脚
int greenPin = 10; // 连接绿色LED的引脚
int bluePin = 11;  // 连接蓝色LED的引脚

void setup() {
  // 设置引脚模式为输出
  pinMode(redPin, OUTPUT);
  pinMode(greenPin, OUTPUT);
  pinMode(bluePin, OUTPUT);
}

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

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

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

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

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

  // 逐渐减小蓝色通道的亮度
  for (int brightness = 255; brightness >= 0; brightness--) {
    analogWrite(bluePin, brightness);
    delay(10);
  }
}

使用特权

评论回复
8
幸福小强| | 2024-2-28 16:27 | 只看该作者
在这个示例中,我们逐渐增加和减小了红、绿、蓝三个颜色通道的亮度,实现了一种颜色的渐变效果。您可以根据需要修改 analogWrite() 函数中的亮度值,以实现不同的颜色效果和渐变速度。

使用特权

评论回复
9
xinpian101| | 2024-2-28 20:22 | 只看该作者
只能按照百分百控制。

使用特权

评论回复
10
xinpian101| | 2024-2-28 20:23 | 只看该作者
更细微的控制,这个好像不能实现。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

175

主题

3190

帖子

8

粉丝