Pemantau Tanaman: Alarm Tanaman Kering
Termasuk bagian Proyek dalam perjalanan Arduino di Coddy. Pelajaran 19 dari 24.
Saat tanah tetap kering, monitor meminta bantuan dengan menyalakan buzzer pada pin 8. Tidak langsung: pembacaan bisa turun sesaat, dan alarm yang berbunyi tanpa alasan akan segera diabaikan. Aturannya adalah tanah kering selama lebih dari 5 detik (tanaman sungguhan akan menunggu berjam-jam).
Untuk mengetahui berapa lama tanah telah kering, catat saat tanah mulai kering. Kamu memerlukan satu informasi tambahan untuk diingat: apakah tanah kering pada pembacaan terakhir.
if (moisture < 30) {
if (wasDry == false) {
wasDry = true;
dryStart = millis(); // Baru saja menjadi kering
}
if (millis() - dryStart > 5000) {
tone(buzzerPin, 880, 200);
}
} else {
wasDry = false;
}else penting: saat tanah disiram, wasDry kembali menjadi false, sehingga periode kering berikutnya dihitung mulai dari awalnya sendiri.
loop() membaca sekali setiap detik, jadi bunyi bip 200 ms terdengar sekali setiap detik selama tanah tetap kering.
Tantangan
SedangTambahkan alarm kekeringan:
- ingat apakah tanah dalam keadaan kering (
bool wasDry) dan kapan tanah mulai kering (unsigned long dryStart) - setelah tanah kering selama lebih dari 5000 ms, bunyikan
tone(buzzerPin, 880, 200)setelah setiap pembacaan - ketika kelembapan mencapai 30% atau lebih, setel kembali
wasDrykefalse
Tekan Run, putar kenop ke bawah dan tunggu, lalu tekan Check.
Coba sendiri
// Kenop ini berfungsi sebagai sensor kelembapan tanah
const int sensorPin = A0;
// Lampu status: LED RGB
const int redPin = 9;
const int greenPin = 10;
const int bluePin = 6;
// Kelembapan dalam persen: 0 berarti sangat kering, 100 berarti sangat basah.
int readMoisture() {
int reading = analogRead(sensorPin);
return map(reading, 0, 1023, 0, 100);
}
// Merah saat kering, hijau saat kelembapannya cukup, biru saat basah.
void showStatus(int moisture) {
digitalWrite(redPin, LOW);
digitalWrite(greenPin, LOW);
digitalWrite(bluePin, LOW);
if (moisture < 30) {
digitalWrite(redPin, HIGH);
} else if (moisture <= 70) {
digitalWrite(greenPin, HIGH);
} else {
digitalWrite(bluePin, HIGH);
}
}
void setup() {
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);
Serial.begin(9600);
}
void loop() {
int moisture = readMoisture();
Serial.print("Moisture: ");
Serial.print(moisture);
Serial.println("%");
showStatus(moisture);
delay(1000);
}
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Proyek
2Game Reaksi
Game Reaksi: Waktu Tunggu AcakGame Reaksi: TimerGame Reaksi: Mulai Terlalu CepatGame Reaksi: Waktu Terbaik5Pemantau Tanaman
Pemantau Tanaman: KelembapanPemantau Tanaman: Lampu StatusPemantau Tanaman: Alarm Tanaman KeringPemantau Tanaman: LaporanLatihan sendiri: Playground Arduino