• 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

0 głosów
707 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ź 290 wizyt
0 głosów
1 odpowiedź 551 wizyt
0 głosów
2 odpowiedzi 1,730 wizyt

93,741 zapytań

142,677 odpowiedzi

323,294 komentarzy

63,323 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

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...