Menu
CoddyTech

Utrzymywanie wartości w zakresie

Część sekcji Wejścia ścieżki Arduino w Coddy. Lekcja 11 z 22.

Czasami powinna liczyć się tylko część zakresu. Załóżmy, że znaczenie ma tylko środkowa część ruchu pokrętła, czyli odczyty od 200 do 800, i że powinno to odpowiadać zakresowi od 0 do 100 procent:

int percent = map(reading, 200, 800, 0, 100);

To daje 0 przy 200 i 100 przy 800, ale map() nie zatrzymuje się na końcach zakresu. Odczyt 0 daje -33, a 1023 daje 137. Procent poniżej 0 lub powyżej 100 nie ma sensu.

constrain(x, low, high) utrzymuje liczbę w zakresie: wszystko poniżej low staje się równe low, wszystko powyżej high staje się równe high, a wszystko pomiędzy pozostaje bez zmian.

percent = constrain(percent, 0, 100);
challenge icon

Wyzwanie

Łatwy

Pokrętło jest podłączone do A0. Wypisuj wartość procentową, gdzie odczyty od 200 do 800 odpowiadają wartościom od 0 do 100:

  • przeskaluj odczyt z zakresu od 200 do 800 na zakres od 0 do 100
  • ogranicz go do zakresu od 0 do 100 za pomocą constrain()
  • wypisz go, a następnie odczekaj 100 ms

Naciśnij Run, przekręć pokrętło maksymalnie w obie strony, a następnie naciśnij Check.

Spróbuj swoich sił

void setup() {
  Serial.begin(9600);
}

void loop() {
  int reading = analogRead(A0);
  // przeskaluj zakres 200..800 na 0..100, utrzymaj wynik w zakresie 0..100, wypisz go, odczekaj 100 ms
}
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Wejścia

Poćwicz samodzielnie: Edytor online Arduino