Pobieranie informacji za pomocą portu szeregowego

Masz problem, z którym nie możesz sobie poradzić? Pisz śmiało!
ODPOWIEDZ
albert81a
Młodszy majsterkowicz
Posty: 2
Rejestracja: 16 lut 2018, 22:51

Pobieranie informacji za pomocą portu szeregowego

Post autor: albert81a » 16 lut 2018, 22:57

Witam, mam problem, gdyż nie mogę wprowadzić parametrów do programu, gdyż program nie czeka na wpisanie przez użytkownika wartości, tylko pobiera ją od razu po wyświetleniu polecenia. Podpowiecie w którym miejscu robię błąd? Tymczasowo ominąłem problem komendą delay(), ale nie zadowala mnie ta opcja, gdyż jest sprzeczne z naturalną reakcją- chcę, żeby wyświetliło się polecenie, a użytkownik podał wartość i program przeszedł dalej, tak jak cin<<'em w c++.

Kod: Zaznacz cały

void silnik() {

  //***********************Pobieranie danych od użytkownika***************************************************//

  char kierunek = '0';
  char sterowanie = '0';
  unsigned long kroki = 0;
  unsigned long predkosc = 0;
Serial.print("\n\nPodaj tryb sterowania silnika:\n1. Falowe\n2. Pełnokrokowe\n3. Półkrokowe\n");

  delay(10000);
  if (Serial.available() > 0)
    sterowanie = (char)Serial.read();
  delay(1500);
  Serial.print(sterowanie);

  Serial.print("\n\nPodaj kierunek obrotu:\n1. Zgodnie z ruchem wskazówek zegara\n2. Przeciwnie do ruchu wskazówek zegara\n");
  delay(10000);
  if (Serial.available() > 0)
    kierunek = (char)Serial.read();
  delay(1500);
  Serial.print(kierunek);

  Serial.print("\n\nPodaj opóżnienie między krokami silnika:\n");
  delay(10000);
  if (Serial.available() > 0)
    predkosc = (Serial.readString()).toInt();
  delay(1500);
  Serial.print(predkosc);

  Serial.print("\n\nPodaj liczbę kroków silnika:\n");
  delay(10000);
  if (Serial.available() > 0)
    kroki = (Serial.readString().toInt());
  delay(1500);
  Serial.print(kroki);
}

Co miesiąc do wygrania nagrody o wartości ponad 1600 zł!


Awatar użytkownika
Marhef
Złota rączka
Posty: 1140
Rejestracja: 18 lis 2011, 02:18

Re: Pobieranie informacji za pomocą portu szeregowego

Post autor: Marhef » 17 lut 2018, 00:22

A zamiast delay'a coś w stylu

Kod: Zaznacz cały

while (!Serial.available());
Strzelam, nawet nie mam jak sprawdzić
albert81a
Młodszy majsterkowicz
Posty: 2
Rejestracja: 16 lut 2018, 22:51

Re: Pobieranie informacji za pomocą portu szeregowego

Post autor: albert81a » 17 lut 2018, 00:26

Marhef pisze:
17 lut 2018, 00:22
A zamiast delay'a coś w stylu

Kod: Zaznacz cały

while (!Serial.available());
Strzelam, nawet nie mam jak sprawdzić
Próbowałem, ale nie zadziałało w moje implementacji- czekał wtedy na pobranie ale nie przekazał wartości dla zmiennej (korzystałem wtedy z do while). Dzięki za zainteresowanie i odpowiedź. :)
ODPOWIEDZ

Strony partnerskie: