Czujnik wilgotności gleby - odwrócenie wartości - Wersja do druku +- Arduino Polska Forum (https://forum.arduinopolska.pl) +-- Dział: Korzystanie z Arduino (https://forum.arduinopolska.pl/dzial-korzystanie-z-arduino) +--- Dział: Czujniki (https://forum.arduinopolska.pl/dzial-czujniki) +--- Wątek: Czujnik wilgotności gleby - odwrócenie wartości (/watek-czujnik-wilgotno%C5%9Bci-gleby-odwr%C3%B3cenie-warto%C5%9Bci) |
Czujnik wilgotności gleby - odwrócenie wartości - Rafcio_3D - 10-09-2022 Witam, Skombinowałem sobie czujnik wilgotności gleby, podłączony jest tylko pinem analogowym (z cyfrowego nie korzystam). Program pobiera wartość czujnika z przedziału 0-1024 i zamienia to na procent. Wartość w % = (wartość pinu A0 / 1024) * 100. Wszystko działa znakomicie, jest tyko jeden problem. Gdy ziemia jest sucha czujnik wskazuje 100% a gdy mokra 0%. Rozumiem że ta sytuacja ma miejsce ponieważ czujnik bazuje na oporności elektrycznej ośrodka w którym sie znajduje, w tym przypadku ziemi. Więc gdy jest sucha to oporność jest maksymalna a gdy mokra to oporność jest zerowa. Docelowo chcę aby program wyświetlał 0% gdy jest sucho i 100% gdy jest mokro. Pytane, czy ktoś wie jak to rozwiązać i pomógłby mi z tą zagwozdką? Pozdrawiam RE: Czujnik wilgotności gleby - odwrócenie wartości - Robson Kerman - 11-09-2022 x = map(x, 0, 100, 100, 0); RE: Czujnik wilgotności gleby - odwrócenie wartości - Jarewa0606 - 11-09-2022 Map rozwiąże problem, ale to problem już na etapie projektowania i podłączenia tego czujnika. Dlatego widzi odwrotnie... Wiec i można by było przerobić podłączenie i też by wróciło do normy... RE: Czujnik wilgotności gleby - odwrócenie wartości - Rafcio_3D - 11-09-2022 @Robson Kerman Bardzo dziękuję, zadziałało, przydatna funkcja. @Jarewa0606 Przeanalizuję układ czujnika, może znajdę rozwiązanie na odwrócenie wartości u jej źródła. RE: Czujnik wilgotności gleby - odwrócenie wartości - kaczakat - 11-09-2022 Nic nie trzeba odwracać u źródła, po prostu formuła była błędna, powinno być: Wartość w % =100- (wartość pinu A0 / 1024) * 100, i teraz masz tam gdzie 0 100, gdzie było 1 jest 99, gdzie było 100 jest 0. To samo może zrobić funkcja map, gdzie od razu podajesz wartość z pinu a0, x = map(analogRead(A0), 0, 1023, 100, 0); |