Arduino Polska Forum

Pełna wersja: Serial i zapisywanie do zmiennej
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
Witam mam pewien problem zacznę możne od informacji że w arduino programuje nie długo wcześniej pisałem w języku baskom około 8 lat .
problem mam następujący w bakomie z konsoli wpisuje do zmiennej string i w select case dokonuje operacji na zmiennej, w c się tak nie da swich nie przyjmuje typu string jak sobie z tym poradzić by otrzymana dana wpisać do zmiennej z serialu i wykonać działanie.
napisze kod obrazując to co chce osiągnac.
Kod:
String dana="";
void loop()
{
dana=serial.read()
switch(dana)
{
case "op1":
  led=1
break;
case 'op2":
 led=0
break;
}

wy bakomie to by działo tu nie działa proszę o pomoc w rozwiązaniu tego problemu.
Funkcja case nie obsługuje ciągów możesz zrobić to jak w poniższym kodzie zamieniając ciąg na zmienną int

Kod:
String dane;

int led = 0;

int x=0;

void setup(){
  
  Serial.begin(9600);
  
}

void loop()
{
    
  while (Serial.available() >0){
      
        dane = Serial.readString();
        odczyt();}

switch(x)
{
    case 1:
    led = 1;
    break;
    case 2:
    led = 2;
    break;
  }
  if(led != 0)Serial.println(led);
  led = 0;x=0;
}

void odczyt(){
  
if ( dane == "raz"  ){ x=1;}
if ( dane == "dwa"  ){ x=2;}

}
robiłem podobnie ale mi nie działało nie wiem czemu dzięki wielki ja się z tym 2 tygodnie mecze
;
Zapewne korzystałeś przy odczycie portu z poniższego przykładu , niestety nie zawsze on działa . W twoim programie powoduje to rozbicie ciągu na pojdyncze znaki i dlatego nie działało .

Kod:
while (Serial.available() > 0){
      char c = Serial.read();
      readString += c;    }
      
      if (readString.length() >0){
      message = readString;
      readString=""
ja robiłem jak kolega z tym ze nie dałem while tylko samo jesli jaki znak to .... i tu jest różnica dzięki naprawdę cieszko mi z baskoma nie przeczuci jam jest to o wiele prościej i mniej miejsca zajmuje