Skocz do zawartości

Problem z potencjometrem


KryspinRudzki

Pomocna odpowiedź

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

Link do komentarza
Share on other sites

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.

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

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
Link do komentarza
Share on other sites

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
Link do komentarza
Share on other sites

@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_
Link do komentarza
Share on other sites

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...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.