Skocz do zawartości

Polecenia z serial monitora, ARDUINO


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 to post
Share on other sites
(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 to post
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 to post
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 to post
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

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

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