• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Higrometr FC-28 - zawężony zakres wartości
#1
Chcę zrobić prosty pomiar wilgotności gleby za pomocą higrometru FC-28 i Arduino UNO.
Podłączyłem VCC - 5V, GND - GND, A0 - A0.
Program wygląda tak:
Kod:
int sensor_pin = A0;
int output_value ;

void setup() {
 Serial.begin(9600);
 Serial.println("Odczyt z czujnika ...");
 delay(2000);
 }

void loop() {

 output_value= analogRead(sensor_pin);
 output_value = map(output_value,812,224,0,100);
 Serial.print("Wilgotność : ");
 Serial.print(output_value);
 Serial.println("%");
 delay(1000);
 }

Wszystko działa, wartość 812 jest dla gleby suchej, 224 dla gleby mokrej, zalanej wodą.
Po włożeniu czujnika w ziemię zakres w procentach mieści się pomiędzy 0-100% natomiast np. po wyjęciu czujnika z ziemi pokazuje się w monitorze szeregowym wartość na poziomie -35%, oczywiście po włożeniu czujnika do wody wartość przekracza 100%. Chciałbym aby wartości mieściły się w zakresie 0-100 w każdych okolicznościach ale chyba zrobienie tego za pomocą zmiany wartości output_value będzie złym pomysłem, bo wtedy wilgotna gleba (obecnie około 60%) będzie wyświetlana jako około 30%, chyba, że źle rozumiem zasadę działania czujnika i muszę podać cały zakres wartości, który mierzy się gdy czujnik jest wyjęty z gleby oraz włożony do wody, wtedy będzie pełen zakres.

Jeżeli powyższe rozumowanie jest błędne i należy zrobić tak jak jest obecnie to trzeba byłoby zrobić aby wartości nie przekraczały 0-100%. Próbowałem zrobić to korzystając z if:
Kod:
 if (output_value > 812) { //Jeśli obliczona wartość jest większa od 812
   output_value = 812; //to ustaw ją na 812 (0% wilgotności)
 }
 if (output_value < 224) { //Jeśli obliczona odległość jest mniejsza od 224
   output_value = 224; //to ustaw ją na 224 (100% wilgotności)
 }
Niestety to nie działa, zmiana znaków >/< nic nie daje, po dodaniu tych linijek przed:
Kod:
Serial.print("Wilgotność : ");
 Serial.print(output_value);
 Serial.println("%");
 delay(1000);
 }
Powoduje, że na monitorze wyświetla się ciągle 224% i w żadnej sytuacji się to nie zmienia.
 
Odpowiedź
  


Wiadomości w tym wątku
Higrometr FC-28 - zawężony zakres wartości - przez mrozilla - 04-05-2019, 11:51

Skocz do:


Przeglądający: 1 gości