Skocz do zawartości

Polecenia z serial monitora, ARDUINO


Pomocna odpowiedź

Napisano (edytowany)

Witam, mam pewien problem na jednym z filmików na YT zostało pokazane sterowanie LEDami za pomocą poleceń z serial monitora. Chciałbym wykorzystać to rozwiązanie w swoim projekcie do sterowanie paskami LED lecz nawet po skopiowaniu kodu z filmu LEDy nie zapalają się. Chciałbym używać zmiennej typu string aby w kodzie było to ładnie widoczne i każdy rozumiał co się w nim dzieje, lecz tylko zmienna typu char zapala lub gasi LEDy. Proszę o pomoc w rozwiązaniu tego problemu bo nie rozumiem dlaczego kod na filmie działa z użyciem String a w moim identycznym przypadku już nie. Oto mój kod:

int redLED=2;
int greenLED=3;
int blueLED=4;
int yellowLED=5;
String comm;

void setup() {
  Serial.begin(9600);
  while(!Serial);
  pinMode(redLED,OUTPUT);
  pinMode(greenLED,OUTPUT);
  pinMode(blueLED,OUTPUT);
  pinMode(yellowLED,OUTPUT);
}

void loop() {
  if(Serial.available()){
      comm=Serial.readString();
      //RED LED
      if(comm=="red on"||comm=="RED ON"){
          digitalWrite(redLED,HIGH);
        }
      if(comm=="red off"||comm=="RED OFF"){
          digitalWrite(redLED,LOW);         
        }
      //GREEN LED
      if(comm=="green on"||comm=="GREEN ON"){
          digitalWrite(greenLED,HIGH);
        }
      if(comm=="green off"||comm=="GREEN OFF"){
          digitalWrite(greenLED,LOW);
        }
    }
}

 

Edytowano przez RedBoy
(edytowany)

@ethanak Dalej to samo, gdy String zmienię na char to wtedy wszystko jest okej a tak to totalna klapa ... String jedynie działa jak chce go potem wyświetlić czyli robię śmieszny program pytający jak mam na imię, podaje je i wtedy działa, nic nie dzieje się wtedy gdy chce String użyć jako polecenia do sterowania LEDami.

Edytowano przez RedBoy
(edytowany)

Wrzuć za:

comm=Serial.readString();

coś takiego:

Serial.print("["); Serial.print(comm);Serial.println("]");

Będziesz wiedział co tak naprawdę przyłazi.

A przy okazji - do tego się używa readStringUntil a nie readString.

Edytowano przez ethanak

Następnym razem użyj readStringUntil(), bo readString() nie zawsze zwróci to co chciałeś (w pewnych warunkach może zwrócić np. tylko pół napisu - jako ćwiczenie zastanów się kiedy).

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...