3 UART в один
- Войдите на сайт для отправки комментариев
Сб, 19/01/2013 - 15:49
Набросал код думал заработает сразу, надо было попробывать перенаправить данные с трех сериалов в ардуино мега, на основной.
Данные приходящие в эти порты успешно появляются в "главном" сериале, вроде все нормально, но при попытке "зажечь" светодиод, ничего не выходит, хотя если послать в главный сериал все работает.
Что я не так сделал ?
Вот кусочек кода:
void loop() {
while (Serial1.available() > 0) { // UART1 to UART
char a = Serial1.read();
Serial.write(a);
}
while (Serial2.available() > 0) { // UART2 to UART
char b = Serial2.read();
Serial.write(b);
}
while (Serial3.available() > 0) { // UART3 to UART
char c = Serial3.read();
Serial.write(c);
}
while (Serial.available() > 0 ) { // UART
char val = Serial.read();
if (val=='w') {
digitalWrite(led1, HIGH);
}
if (val=='q'){
digitalWrite(led1, LOW);
Что значит "при попытке "зажечь" светодиод, ничего не выходит, хотя если послать в главный сериал все работает" как вы пытветесь его зажечь? силой мысли?
Терминалом отправляю w в UART светодиод включается, отправляю q выключается ,
тоже самое делаю с UART1, UART2, UART3..., в UART приходят w или q, но светодиод не включается.
Так а с чего вдруг он должен зажечься, если у вас то что касается светодиода работает только когда что-то приходит в Serial.?
while (Serial.available() > 0 ) { // UART char val = Serial.read(); if (val=='w') { digitalWrite(led1, HIGH); } if (val=='q'){ digitalWrite(led1, LOW); } }char val = 0; void loop() { if(Serial1.available() > 0) { // UART1 to UART val = Serial1.read(); Serial.write(val); } while (Serial2.available() > 0) { // UART2 to UART val = Serial2.read(); Serial.write(val); } while (Serial3.available() > 0) { // UART3 to UART val = Serial3.read(); Serial.write(val); } while (Serial.available() > 0 ) { // UART val = Serial.read(); Serial.write(val); } if (val=='w') digitalWrite(led1, HIGH); if (val=='q') digitalWrite(led1, LOW); }Спасибо, заработало.