在 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);
}