在 Arduino 中使用 Serial.write 有一些问题
Having some problems with Serial.write in Arduino
我正在学习 Arduino 并编写一些基本的东西来锻炼身体,但我受困于 RGB LED。我将 link 代码以便您了解发生了什么。
int RGB_R = A5,
RGB_G = A4,
RGB_B = A3;
void setup() {
pinMode(RGB_R, OUTPUT);
pinMode(RGB_G, OUTPUT);
pinMode(RGB_B, OUTPUT);
Serial.begin(9600);
}
void loop() {
for(int i = 0; i < 256; i++){
Serial.write(i);
for(int j = 0; j < 256; j++){
for(int k = 0; k < 256; k++){
RGB_COLOR(i,j,k);
}
}
}
}
void RGB_COLOR(int R, int G, int B){
analogWrite(RGB_R, R);
analogWrite(RGB_G, G);
analogWrite(RGB_B, B);
}
我想随着 i, j and k
的增加慢慢改变 RGB 的颜色,但它在 2 种颜色之间变化。我遇到的另一个问题是我无法在 Serial 中打印 i, j and k
.
的值是多少
希望大家能帮帮我。
你必须在设置 RGB_COLOR
后提供一些延迟
因为代码执行得很快而且你看不到变化添加了一个delay
函数它会变慢
void loop() {
for(int i = 0; i < 256; i++){
for(int j = 0; j < 256; j++){
for(int k = 0; k < 256; k++){
// sending data to pc
Serial.print("\ti= ");Serial.print(i);
Serial.print("\tj= ");Serial.print(j);
Serial.print("\tk= ");Serial.println(k);
// change the data
RGB_COLOR(i,j,k);
delay(100); // wait for 100 ms
}
}
}
}
更新:
你必须连接 PWM 引脚上的引脚...如果你使用 arduino uno 它将是 (10,11,6,5,3) 并更改连接
int RGB_R = 10,
RGB_G = 11,
RGB_B = 6;
完整代码
连接 (10,11,6) 上的引脚 ... 因为 analogWrite 仅适用于 pwm 引脚
int RGB_R = 10,
RGB_G = 11,
RGB_B = 6;
void setup() {
pinMode(RGB_R, OUTPUT);
pinMode(RGB_G, OUTPUT);
pinMode(RGB_B, OUTPUT);
Serial.begin(9600);
}
void loop() {
for(int i = 0; i < 256; i++){
for(int j = 0; j < 256; j++){
for(int k = 0; k < 256; k++){
// sending data to pc
Serial.print("\ti= ");Serial.print(i);
Serial.print("\tj= ");Serial.print(j);
Serial.print("\tk= ");Serial.println(k);
// change the data
RGB_COLOR(i,j,k);
delay(100); // wait for 100 ms
}
}
}
}
void RGB_COLOR(int R, int G, int B){
analogWrite(RGB_R, R);
analogWrite(RGB_G, G);
analogWrite(RGB_B, B);
}
我正在学习 Arduino 并编写一些基本的东西来锻炼身体,但我受困于 RGB LED。我将 link 代码以便您了解发生了什么。
int RGB_R = A5,
RGB_G = A4,
RGB_B = A3;
void setup() {
pinMode(RGB_R, OUTPUT);
pinMode(RGB_G, OUTPUT);
pinMode(RGB_B, OUTPUT);
Serial.begin(9600);
}
void loop() {
for(int i = 0; i < 256; i++){
Serial.write(i);
for(int j = 0; j < 256; j++){
for(int k = 0; k < 256; k++){
RGB_COLOR(i,j,k);
}
}
}
}
void RGB_COLOR(int R, int G, int B){
analogWrite(RGB_R, R);
analogWrite(RGB_G, G);
analogWrite(RGB_B, B);
}
我想随着 i, j and k
的增加慢慢改变 RGB 的颜色,但它在 2 种颜色之间变化。我遇到的另一个问题是我无法在 Serial 中打印 i, j and k
.
希望大家能帮帮我。
你必须在设置 RGB_COLOR
后提供一些延迟因为代码执行得很快而且你看不到变化添加了一个delay
函数它会变慢
void loop() {
for(int i = 0; i < 256; i++){
for(int j = 0; j < 256; j++){
for(int k = 0; k < 256; k++){
// sending data to pc
Serial.print("\ti= ");Serial.print(i);
Serial.print("\tj= ");Serial.print(j);
Serial.print("\tk= ");Serial.println(k);
// change the data
RGB_COLOR(i,j,k);
delay(100); // wait for 100 ms
}
}
}
}
更新:
你必须连接 PWM 引脚上的引脚...如果你使用 arduino uno 它将是 (10,11,6,5,3) 并更改连接
int RGB_R = 10,
RGB_G = 11,
RGB_B = 6;
完整代码
连接 (10,11,6) 上的引脚 ... 因为 analogWrite 仅适用于 pwm 引脚
int RGB_R = 10,
RGB_G = 11,
RGB_B = 6;
void setup() {
pinMode(RGB_R, OUTPUT);
pinMode(RGB_G, OUTPUT);
pinMode(RGB_B, OUTPUT);
Serial.begin(9600);
}
void loop() {
for(int i = 0; i < 256; i++){
for(int j = 0; j < 256; j++){
for(int k = 0; k < 256; k++){
// sending data to pc
Serial.print("\ti= ");Serial.print(i);
Serial.print("\tj= ");Serial.print(j);
Serial.print("\tk= ");Serial.println(k);
// change the data
RGB_COLOR(i,j,k);
delay(100); // wait for 100 ms
}
}
}
}
void RGB_COLOR(int R, int G, int B){
analogWrite(RGB_R, R);
analogWrite(RGB_G, G);
analogWrite(RGB_B, B);
}