Tak, chodziło o to co dla mnie oznacza 0-100% ale jeżeli wiedziałbym jak zrobić program, który rzeczywiście pokazałby prawidłowo wilgotność gleby to bardzo chętnie z niego skorzystam. Nie wiem jak to zrobić prawidłowo.
Zmierzyłem suchą ziemię i wartość jaką odczytałem to 812, zalałem ją wodą i po chwili wartość jaką odczytałem to 224. Obecnie gdy czujnik jest poza glebą pokazuje mi wartość -35% dlatego chciałbym aby poniżej 0 nie pokazywało jak również gdy włożę czujnik do samej wody jest ponad 100%.
Opcja
nie pomogła, cały czas wartość na - pokazuje gdy czujnik jest w powietrzu.
Nie wiem jaka częstotliwość pomiaru jest wystarczająca. Teoretycznie gdybym chciał w przyszłości dodać jakąś pompkę do podlewania, wtedy reakcja musi być szybka, ale już dalsze odświeżanie nie musi być takie szybkie. Niestety tutaj będzie problem w moim przypadku z napisaniem takiego programu.
Dostosowałem taki kod:
Teoretycznie jest lepiej, poniżej 0 nie schodzi ale po włożeniu do wody ponad 135%. Gdy ustawię zamiast 465 niższą wartość wtedy zmienia się zakres (w wodzie czujnik pokazuje minimalnie około 299). Nie wiem jak prawidłowo to skalibrować aby właśnie ta wilgotność miała coś wspólnego z rzeczywistością. A z ograniczeniem wyświetlania wartości póki co nie udało się poradzić.
Dodałem:
Niestety żadnej zmiany.
Zmierzyłem suchą ziemię i wartość jaką odczytałem to 812, zalałem ją wodą i po chwili wartość jaką odczytałem to 224. Obecnie gdy czujnik jest poza glebą pokazuje mi wartość -35% dlatego chciałbym aby poniżej 0 nie pokazywało jak również gdy włożę czujnik do samej wody jest ponad 100%.
Opcja
Kod:
output_value = map(1023-output_value,224,812,0,100);
Nie wiem jaka częstotliwość pomiaru jest wystarczająca. Teoretycznie gdybym chciał w przyszłości dodać jakąś pompkę do podlewania, wtedy reakcja musi być szybka, ale już dalsze odświeżanie nie musi być takie szybkie. Niestety tutaj będzie problem w moim przypadku z napisaniem takiego programu.
Dostosowałem taki kod:
Kod:
//////////////////////////////////////////////
// ARDUINO SOIL MOISTURE DEMO //
// //
// http://www.educ8s.tv //
/////////////////////////////////////////////
int sensorPin = A0;
int sensorValue = 0;
int percent = 0;
void setup() {
Serial.begin(9600);
Serial.println("Odczyt z czujnika ...");
delay(2000);
}
void loop() {
sensorValue = analogRead(sensorPin);
percent = convertToPercent(sensorValue);
printValuesToSerial();
delay(1000);
}
int convertToPercent(int value)
{
int percentValue = 0;
percentValue = map(value, 1023, 465, 0, 100);
return percentValue;
}
void printValuesToSerial()
{
Serial.print("\n\nWartość analogowa: ");
Serial.print(sensorValue);
Serial.print("\nWilgotność: ");
Serial.print(percent);
Serial.print("%");
}
Dodałem:
Kod:
if (percent < 100) { //Jeśli obliczona wilgotność jest większa od 100%
percent = 100; //to ustaw ją na 100% wilgotności
}