Arduino通过电位器调节RGB灯颜色

  电位器模块可以通过旋转旋钮调节调节内部可变电阻的阻值,从而输出0-1023的数值信号。那么就可以通过analogRead()函数读取输出值。

int analogInputVal = analogRead(A0);

一种简单的方法是直接用map()函数将0-1023映射到0-255上,并直接写入RGB灯的三个通道内:
int brightness = map(analogInputVal, 0, 1023, 0, 255);

analogWrite(PIN_RED, brightness);
analogWrite(PIN_GREEN, 255-brightness);
analogWrite(PIN_BLUE, 255);

如上,就可以实现RGB灯从红色到绿色随着旋钮旋转而逐渐变化的效果。

  当然,Arduino UNO只有一个5V供电输出,我们所使用的RGB灯和电位器都需要5V供电,这里可以通过将引脚设置为高电平状态来充当一个5V供电。

  pinMode(VCC, OUTPUT);

  digitalWrite(VCC, HIGH);

有关Arduino引脚的问题可以查看这一篇文章:详解Arduino Uno开发板的引脚分配图及定义(重要且基础) - Neo0820 - 博客园 (cnblogs.com)

完整代码:

int PIN_RED = 9;
int PIN_GREEN = 10;
int PIN_BLUE = 11;
int r,g,b;
int VCC = 7;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(PIN_RED, OUTPUT);
pinMode(PIN_GREEN, OUTPUT);
pinMode(PIN_BLUE, OUTPUT);
pinMode(VCC, OUTPUT);

}

void loop() {
// put your main code here, to run repeatedly:
digitalWrite(VCC, HIGH);
int analogInputVal = analogRead(A0);
int brightness = map(analogInputVal, 0, 1023, 0, 255);
analogWrite(PIN_RED, brightness);
analogWrite(PIN_GREEN, 255-brightness);
analogWrite(PIN_BLUE, 255);
Serial.println(analogInputVal);

}

posted @ 2022-06-05 16:26  第一性问题  阅读(352)  评论(0)    收藏  举报