我有这个Arduino代码我想运行,它侦听通过从我写的一些C++代码串行输入进来。这些信息正在写入连接,但我在Arduino方面看到了一些非常奇怪的行为。Arduino项目需要打印语句工作
如果我不把打印语句放在(特别是非printRGB()语句)中,我看不到任何输出到串行控制台。只要我加入他们,他们开始再次出现。这是怎么回事?
#define LED_PIN 13
#define R_PIN 3
#define G_PIN 5
#define B_PIN 6
#define frameBegin ((char) 255)
char colors[] = {
0,0,0};
void setup() {
Serial.begin(9600);
pinMode(LED_PIN, OUTPUT);
pinMode(R_PIN, OUTPUT);
pinMode(G_PIN, OUTPUT);
pinMode(B_PIN, OUTPUT);
// establishContact();
Serial.println("blah");
}
void loop() {
if (Serial.available() > 0) {
char inByte = Serial.read();
toggleLED();
// Got a new frame
//Serial.println('S');
if (inByte == frameBegin) {
//Serial.println('B');
//write bass
boolean allThree = true;
for (int i=0; i < 3; i++) {
char rgb = Serial.read();
if (rgb == frameBegin) {
//Serial.println('F');
allThree = false;
break;
}
else {
colors[i] = rgb;
}
}
if (allThree) {
//printRGB();
analogWrite(R_PIN, colors[0]);
analogWrite(G_PIN, colors[1]);
analogWrite(B_PIN, colors[2]);
}
}
}
}
void printRGB() {
Serial.print("rgb: ");
Serial.print((uint8_t) colors[0]);
Serial.print(" ");
Serial.print((uint8_t) colors[1]);
Serial.print(" ");
Serial.println((uint8_t) colors[2]);
}
如果你不打印序列号,你期望读什么? 你自己的命令不会出现,因为它们不是由arduino写的,串口监视器不会给你一个你写的东西的日志。 – Lesto
请参阅printRGB()。在我得到一个特定的字节表示一个“帧”的开始并且我得到我期望的值的数量之后调用它。 – amruthv
如果你删除它,你将看不到任何东西,因为它永远不会被调用。我不明白什么是错的。为什么您期望在SerialConsole上读取一些内容,删除在串行上写入该值的代码? – Lesto