Arduino 用串口控制rgb
时间: 2024-05-12 07:20:06 浏览: 174
LED灯的代码:
```C++
int redPin = 3; // 红色LED的数字引脚
int greenPin = 5; // 绿色LED的数字引脚
int bluePin = 6; // 蓝色LED的数字引脚
void setup() {
Serial.begin(9600); // 初始化串口通信
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);
}
void loop() {
if (Serial.available() > 0) { // 如果串口有数据
String input = Serial.readStringUntil('\n'); // 读取串口数据直到遇到换行符
input.trim(); // 去除空格
if (input.length() == 6) { // 如果数据长度为6(即R、G、B三个分量都有)
int r = hexToDec(input.substring(0, 2)); // 将16进制字符串转换为10进制数
int g = hexToDec(input.substring(2, 4));
int b = hexToDec(input.substring(4, 6));
analogWrite(redPin, r); // 控制LED的亮度
analogWrite(greenPin, g);
analogWrite(bluePin, b);
}
}
}
int hexToDec(String hexString) { // 将16进制字符串转换为10进制数
int decValue = 0;
int hexLength = hexString.length();
for (int i = 0; i < hexLength; i++) {
char c = hexString.charAt(i);
if (isdigit(c)) { // 如果是数字字符
decValue += (c - '0') * pow(16, hexLength - i - 1);
} else { // 如果是字母字符
decValue += (c - 'A' + 10) * pow(16, hexLength - i - 1);
}
}
return decValue;
}
```
通过串口向Arduino发送RGB颜色值的代码:
```Python
import serial
def send_color(color):
ser = serial.Serial('COM3', 9600) # 指定串口和波特率
ser.write(color.encode()) # 发送颜色值
ser.close() # 关闭串口
send_color('FF0000') # 发送红色
send_color('00FF00') # 发送绿色
send_color('0000FF') # 发送蓝色
```
阅读全文