Skocz do zawartości

Polecenia z serial monitora, ARDUINO


RedBoy

Pomocna odpowiedź

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
Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

(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
Link do komentarza
Share on other sites

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
Link do komentarza
Share on other sites

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).

Link do komentarza
Share on other sites

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...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.