Skocz do zawartości

Jak zrobić czujnik zmierzchu


Masterpc96

Pomocna odpowiedź

Witam, jeśli zły dział to przepraszam i proszę o przeniesienie 🙂

Chcę zrobić czujnik zmierzchu do zapalania żarówki, wszystko ładnie działa ale do pewnego momentu gdy na potencjometrze ustawię np. wartość 750 i fotorezystor będzie zgłaszał wartość raz 749 a raz 750 to żarówka migocze, próbowałem też zmniejszyć dokładność pomiaru wartość z fotorezystora i potencjometru podzieliłem przez 10 i zapisałem do inta, ale to nic nie pomogło, nie chciałbym kupować gotowego modułu.Podpinam to jak na schemacie. Z góry bardzo dziękuję za pomoc 🙂

Link do komentarza
Share on other sites

int fotorezystorV = analogRead (A1); // wartości od 0 do 1023
int potencjometrV = analogRead (A0); // wartości od 0 do 1023
if(fotorezystorV <= potencjometrV)
 { 
   digitalWrite(pin_dioda, HIGH);
 }
 if((fotorezystorV <= (potencjometrV+10)) && (fotorezystorV >= (potencjometrV-10)))
 {              
   digitalWrite(pin_dioda, HIGH);
 }
 if(fotorezystorV < potencjometrV)          
 {
   digitalWrite(pin_dioda, LOW); 
 }

W ten sposób?

Link do komentarza
Share on other sites

Coś w tym stylu ale za mocno komplikujesz.

Masz trzy możliwiści:

Jeślu oświetlenie spada poniżej x-n - włączasz światło.

Jeśli rośnie powyżej x+n - wyłączasz.

Jeśli jest w zakresie x-n do x+n - nic nie robisz.

  • Lubię! 1
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

kod teraz wygląda tak, dzisiaj dałem n=5 bo dla n=2 efekt był mizerny

 potencjometrV = analogRead (potencjometr);
     fotorezystorV = analogRead (fotorezystor);

     if(fotorezystorV < potencjometrV - n){
       pirOneV = digitalRead (pirOne);
       pirTwoV = digitalRead (pirTwo);

       if(pirOneV == HIGH || pirTwoV == HIGH){
         digitalWrite (ledOut, HIGH);
       }else if(pirOneV == LOW && pirTwoV == LOW){
         digitalWrite (ledOut, LOW);
       }
     }else if (fotorezystorV > potencjometrV + n){
       digitalWrite (ledOut, LOW);
     } else if ((fotorezystorV <= potencjometrV - n) && (fotorezystorV >= potencjometrV + n)){ 
     }



   delay(500);
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.