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

Problem z deklaracją stringa w arduino.

Object Storage Arubacloud
0 głosów
112 wizyt
pytanie zadane 30 marca 2018 w C i C++ przez Badzonor Obywatel (1,410 p.)

Witam! Mam następujący problem:

Robię program który przesyła dane dwoma pinami, robię to w kodzie binarnym więc muszę zrobić sobie konwerter do liczby decymalnej, lecz nastąpił taki problem, mianowicie zadeklarowałem zmienną bin, i wtedy  wszystko działa poprawnie ale gdy dodałem drugą zmienną string wygląda to tak: wszystko się normalnie wgrywa, lecz ta zmienna jest nie do użycia, czyli nie da się jej wyświetlić czy coś do niej wpisać.

Oto kod z jednym stringiem: (działa on poprawnie)

#include <LiquidCrystal.h>
String bin = "-------";
unsigned long start;

LiquidCrystal lcd(10, 9, 3, 2, 1, 0);

void setup() {
  lcd.begin(8, 2);
  pinMode(7, OUTPUT);
  pinMode(8, INPUT);
}

void loop() {
  if (digitalRead(8) == HIGH)
  {
    bin = "";
    bool i = true;
    while (i == true)
    {
      digitalWrite(7, HIGH);
      start = micros();
      unsigned long r;
      while (digitalRead(8) == HIGH) ;
      r = micros() - start;
      if ((r > 0) && (r <= 100)) bin += "0";
      else if ((r > 100) && (r <= 200)) bin += "1";
      else if ((r > 200) && (r <= 300)) bin += " ";
      else bin += "r";
      digitalWrite(7, LOW);

      start = micros();
      while ((digitalRead(8) == LOW) && (i == true))
        {
          r = micros() - start;
          if(r > 400) i = false;
        }
    }
  }
    lcd.setCursor(0, 0);
    lcd.print(bin);
}

A to kod w drugim stringiem: (i to on nie działa)

#include <LiquidCrystal.h>
String bin = "-------"; 
String napis;
unsigned long start;

LiquidCrystal lcd(10, 9, 3, 2, 1, 0);

void setup() {
  lcd.begin(8, 2);
  pinMode(7, OUTPUT);
  pinMode(8, INPUT);
}

void loop() {
  if (digitalRead(8) == HIGH)
  {
    bin = "";
    bool i = true;
    while (i == true)
    {
      digitalWrite(7, HIGH);
      start = micros();
      unsigned long r;
      while (digitalRead(8) == HIGH) ;
      r = micros() - start;
      if ((r > 0) && (r <= 100)) bin += "0";
      else if ((r > 100) && (r <= 200)) bin += "1";
      else if ((r > 200) && (r <= 300)) bin += " ";
      else bin += "r";
      digitalWrite(7, LOW);

      start = micros();
      while ((digitalRead(8) == LOW) && (i == true))
        {
          r = micros() - start;
          if(r > 400) i = false;
        }
    }
  }
    napis = bin;
    lcd.setCursor(0, 0);
    lcd.print(bin);
    lcd.setCursor(0, 1);
    lcd.print(napis);
}


Naprawdę proszę o pomoc. Pozdrawiam!

komentarz 31 marca 2018 przez Paweł Dymek Bywalec (2,300 p.)
Co to znaczy, że nie da się jej użyć? Spróbuj wyświelić ją w górnym rzędzie a dopiero potem bin w dolnym. Spróbuj zdefiniować przy deklaracji. Napisz jaki jest efekt, bo "nie da się jej użyć" nic nie mówi.

1 odpowiedź

0 głosów
odpowiedź 30 marca 2018 przez Bondrusiek Maniak (61,410 p.)

Witam,

polecam zobaczyć co znajduje się w zmiennych. Może to pomoże

void setup() { 
/*

*/
  Serial.begin(9600); //Inicjalizacja UART
} 
 
void loop() { 
/*

*/
Serial.println("napis " + napis);
Serial.println("bin" + bin);
 napis = bin; 
}

 

komentarz 30 marca 2018 przez Badzonor Obywatel (1,410 p.)
Ale dla attiny44 Serial nie działa...

String napis, bin = "siema";
void setup() {
  Serial.begin(9600);
}

void loop() {
  napis = bin;
  Serial.println("napis " + napis);
  Serial.println("bin" + bin);
}
'Serial' was not declared in this scope
komentarz 30 marca 2018 przez Bondrusiek Maniak (61,410 p.)

Z tego co się orientuje to środowisko IDE dla Arduino nie posiada debuggera i należy się wspomagać obiektem Serial. Porównałem dwa programy i niczym się za bardzo nie różnią tylko deklaracja i przypisanie do zmiennej napis.

void loop() {
/*


*/
    napis = bin;
    lcd.setCursor(0, 0);
    lcd.print(napis);
}

 

Podobne pytania

0 głosów
1 odpowiedź 697 wizyt
0 głosów
0 odpowiedzi 415 wizyt
pytanie zadane 1 lipca 2021 w Sprzęt komputerowy przez danehcan Obywatel (1,170 p.)
0 głosów
0 odpowiedzi 228 wizyt
pytanie zadane 25 listopada 2020 w Mikrokontrolery przez Kacper33662 Nowicjusz (140 p.)

92,632 zapytań

141,500 odpowiedzi

319,878 komentarzy

62,011 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!

...