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

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

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