• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ankieta: Czy ktos sie juz z tym zmagal
tak
0%
0 0%
nie
0%
0 0%
Razem 0 głosów 0%
*) odpowiedź wybrana przez Ciebie [Wyniki ankiety]

Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Serial i zapisywanie do zmiennej
#1
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.
 
Odpowiedź
#2
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;}

}
Ważne aby robić co się lubi albo lubić co się robi .
Arduino UNO, TINY, PRO MINI
Pomoc nagradzamy punktami reputacji Wink
 
Odpowiedź
#3
robiłem podobnie ale mi nie działało nie wiem czemu dzięki wielki ja się z tym 2 tygodnie mecze
;
 
Odpowiedź
#4
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=""
Ważne aby robić co się lubi albo lubić co się robi .
Arduino UNO, TINY, PRO MINI
Pomoc nagradzamy punktami reputacji Wink
 
Odpowiedź
#5
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
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości