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

Jak zapisać kod, który ma sprawdzić, czy zawiera liczbę?

Object Storage Arubacloud
+1 głos
543 wizyt
pytanie zadane 15 listopada 2015 w Mikrokontrolery przez francus11 Gaduła (3,250 p.)

Witam. Po tytule pytania pewnie nikt nie wie o co chodzi. Już tłumaczę. Ostatnio bawię się silniczkiem DC za pomocą Arduino. Na razie zrobilem kod, który sprawia, że silnik kręci się w lewo, prawo lub zatrzymuje się. Całość wygląda tak:

String dane;
void setup() {
  pinMode(8, OUTPUT);
  digitalWrite(8, LOW);
  pinMode(7, OUTPUT);
  digitalWrite(8, LOW);
  pinMode(6, OUTPUT);
  digitalWrite(6, LOW);
  Serial.begin(9600);
}

void loop() {
  if(Serial.available() > 0){
  dane = Serial.readStringUntil('\n');
  }
  if (dane == "stop"){
    digitalWrite(8, LOW);
    digitalWrite(7, LOW);
    digitalWrite(6, LOW);}
  if (dane == "prawo"){
    digitalWrite(8, HIGH);
    digitalWrite(7, LOW);
    digitalWrite(6, HIGH);
  }
  if (dane == "lewo"){
    digitalWrite(8, LOW);
    digitalWrite(7, HIGH);
    digitalWrite(6, HIGH);
  }
  

}

Jak widać dane z monitora szeregowego zapisują się w formie zmiennej String. Chciałbym dodać kod, który dodatkowo kontrolowałby obroty. I tu rodzi się problem. Chcę, żeby po wpisaniu liczby od 0 do 255 obroty ustawiały sięna wpisaną liczbę. A ponieważ to jest zmienna string nie mogę tego zapisać w formie

if (0 <= dane && dane <= 255) // dane to tutaj zmienna int
{
   analogWrite(6, dane)}

Czy dałoby się zrobić, żeby liczby zapisywały się w zmiennej int, a wyrazy w String?

4 odpowiedzi

0 głosów
odpowiedź 15 listopada 2015 przez jeremus Maniak (59,720 p.)

pewnie potrzenujesz konwersji string to int

https://www.arduino.cc/en/Tutorial/StringToIntExample

0 głosów
odpowiedź 31 stycznia 2016 przez wrzaskun Początkujący (280 p.)
0 głosów
odpowiedź 26 listopada 2016 przez Patrix354 Bywalec (2,030 p.)

Według mnie najlepiej by było zrobić tak żeby wysłać jedną literę S, P lub L, następnie spacja i stan PWM, np. "S -1", czyli stop, "P 255", czyli jedź w prawo z pełną mocą (255) itd. Na dane stworzyłbym 2 zmienne. Pierwsza na kierunek ( tak się wpisuje zerowy znak do zmiennej kierunek, zerowy bo liczby w ciągu znaków numeruje się od zera)

kierunek = dane[0];

Oczywiście zmienna kierunek musi być zadeklarowana (jak i wszystkie inne co użyje). Czyli w zmiennej kierunek(typ char) jest S, P lub L. Druga na PWM, w tym celu trzeba stworzyć stringa przechowującego liczbę do konwersji.

liczba_str = dane.substring(2);

Za pomocą funkcji substring tworzę mniejszy napis, tym razem od znaku nr 2 (przypominam o numeracji od zera). Więc w zmiennej liczba_str jest liczba, tylko w postaci napisu. Następnie trzeba przekonwetować zmienną z napisu na liczbę. 

liczba_PWM = liczba_str.toInt();

Teraz można użyć zmiennej liczba_PWM do zmany prędkości obrotów silnika (w tym wypadku).

–1 głos
odpowiedź 15 listopada 2015 przez francus11 Gaduła (3,250 p.)

A wiesz do czego służy funkcja isDigit?

Podobne pytania

0 głosów
2 odpowiedzi 3,845 wizyt
0 głosów
1 odpowiedź 787 wizyt
0 głosów
3 odpowiedzi 720 wizyt

92,536 zapytań

141,377 odpowiedzi

319,456 komentarzy

61,922 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!

...