• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

problem z odbieraniem napisów przez arduino

Object Storage Arubacloud
0 głosów
463 wizyt
pytanie zadane 11 kwietnia 2019 w Mikrokontrolery przez Konrad Gałach Użytkownik (880 p.)

witam arduino chce reagować na znaki podawane przez monitor portu szeregowego

void setup() {
  Serial.begin(9600);
  pinMode(13,1);

}
char znak;
void loop() {
  if(Serial.available() >0)
  { 

    znak=Serial.read();
    if(znak=='z') digitalWrite(13,1); 
    
  }
  

}

ale już nie na napisy

void setup() {
  Serial.begin(9600);
  pinMode(13,1);

}
String napis;
void loop() {
  if(Serial.available() >0)
  { 
    
    napis=Serial.readString();
    if(napis=="napis") digitalWrite(13,1); 

  }
  

}

moje pytanie :dlaczego?

komentarz 12 kwietnia 2019 przez DragonCoder Nałogowiec (36,500 p.)
Teoretycznie wyglada to okay, sprobuj zamiast "", '' pojedynczymi. Bo wiem, ze w arduino string to nie do konca string, gdzie o tym czytałem. Oprocz tego polecam zapytac na arduino forum, odpowiedz szybsza i sprawdzenie stacka, czy ktos nie mial podobnego problemu
komentarz 12 kwietnia 2019 przez daniel89 Użytkownik (700 p.)
Nie ma znczenia czy to pojedyńczy czy podwójny cudzysłów , kompilator oba przypadki traktuje jako ciąg znaków.

1 odpowiedź

0 głosów
odpowiedź 12 kwietnia 2019 przez daniel89 Użytkownik (700 p.)
String odczyt_serial = "";
boolean koniec_odczytu = false;

void setup() {
  Serial.begin(9600);
  Serial.println("Wpisz cos: ");
}

void loop() {
  if (Serial.available() > 0){
           while (Serial.available()){
            char znak = (char)Serial.read();
                        if(znak != '\n'){
                            odczyt_serial += znak;
                        }
                        if(znak == '\n'){
                              koniec_odczytu = true;
                        }
           }
              if(koniec_odczytu == true){
               Serial.print("otrzymalem: ");
               Serial.println(odczyt_serial);
               koniec_odczytu = false;
               odczyt_serial = "";
              }
              
           } //koniec odczyt serial  
              
}//koniec loop

 

Musisz dodawać CHAR do STRINGa tak jak tutaj to jest zrobione . Jak chcesz wiedzieć czemu od razu nie przypiszesz do STRINGa to musiał być zobaczyć budowę klasy Serial. Jak widzisz domyślnie klasa serial nie przyjmie Ci stringa, tylko char lub liczbę w kodzie ASCII. Możesz ciąg znaków pobrać i zapisać do Stringa kodem co Ci podałem.

Podobne pytania

0 głosów
1 odpowiedź 126 wizyt
0 głosów
1 odpowiedź 264 wizyt
0 głosów
2 odpowiedzi 877 wizyt

92,572 zapytań

141,422 odpowiedzi

319,645 komentarzy

61,959 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...