Skocz do zawartości

Problem z potencjometrem


Pomocna odpowiedź

Napisano

Witam chciałem zrobić taki program aby kręcąc potencjometrem można było zmieniać którą led zapalamy tutejszy układi program coś nie działa i nie wiem dlaczego proszę o pomoc.

Ps dopiero zaczynam więc proszę o wyrozumiałość

#define ledgreen 9
#define ledred 8
#define pot A5

int value;

void setup() {
//  Serial.begin(9600);
  pinMode(ledgreen, OUTPUT);
  pinMode(ledred, OUTPUT);
  pinMode(pot, INPUT);
}

void loop() {

//  Serial.println(value);
//  delay(500);

  value = analogRead(pot);

  while (value <= 511) {}

  digitalWrite(ledgreen, HIGH);
  digitalWrite(ledred, LOW);

  while (value > 511) {}
  digitalWrite(ledgreen, LOW);
  digitalWrite(ledred, HIGH);

}

 

20211220_124508.jpg

(edytowany)

Zastanów się jak działa pętla while i dlaczego program jest zablokowany

Edytowano przez _LM_
  • Lubię! 1
1 godzinę temu, farmaceuta napisał:

jesli raz ustawisz zmienna na warunek spelniony to juz nie wyskoczysz z while

Chyba to nie tak.

Warunek jest sprawdzany przy każdym "obrocie" pętli - w tym wypadku zależy on od wartości wejscia analogowego, więc może "wyskoczyć". Nigdy nie wyskoczy z konstrukcji typu while(1) {}.

Tu problemem jest, że pętla jest pusta.

(edytowany)
12 minut temu, jand napisał:

Warunek jest sprawdzany przy każdym "obrocie" pętli - w tym wypadku zależy on od wartości wejscia analogowego, więc może "wyskoczyć".

Nie moze wyskoczyc bo jak raz wpadnie do while ktore wyglada while(1) to juz stan analogowy jest nie istotny bo jest po za while...wiec while ciagle juz wyglada jak while(1)...no tak sie mi wydaje..

Tu wlasnie problemem jest to ze petla while jest nieskonczona...gdyby aktualizowanie zmiennej zachodzilo w while to wtedy by dzialalo...while to przeciwienstwo if...

Edytowano przez farmaceuta
  • Lubię! 2
(edytowany)
15 minut temu, jand napisał:

Tu problemem jest, że pętla jest pusta.

Pokażę Ci pustą pętlę która potrafi się zakończyć 

Char str[] = "test" 
  
  while(++*str);

 

Edytowano przez _LM_
  • Lubię! 1
(edytowany)

@farmaceuta uważam że daliśmy podpowiedzi wystarczające do rozwiązania problemu, lub zadawania kolejnych pytań. Co za problem napisać ten kod tak aby działał. Tylko co z tego wyniesie autor wątku? No chyba że oczekuje gotowca, ale to by chyba napisał? 

Edytowano przez _LM_
1 godzinę temu, _LM_ napisał:

Pokażę Ci pustą pętlę która potrafi się zakończyć 

Nieporozumienie. Miałem na myśli, że pętla pusta jest problemem programu kol. @KryspinRudzkij, a nie to że pętla pusta nie może się skończyć.

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...