Tentang proyek ini
Proyek ini memberi saya info yang saya butuhkan tentang ketinggian air di tangki air. Saat level rendah, LED hijau menyala. Saat level sedang, LED kuning menyala. Ketika levelnya TINGGI, LED merah berkedip bersamaan dengan suara bel. Jarak dari sensor ke ketinggian air diukur oleh sensor ultrasonik dan dicetak ke LCD bersama dengan suhu di tangki itu. Proyek ini merupakan bagian dari proyek yang lebih besar. Bagian kedua adalah 6 LED mengejar yang dipasang dalam lingkaran untuk menunjukkan pompa sedang memompa. Lihat:https://create.arduino.cc/projecthub/MichDragstar/arduino-uno-or-trinket-pro-5v-6-chasing-leds-with-pot-and-pb-23a1d7 Bagian ke-3 akan memulai pompa ketika level tinggi dan hentikan pompa saat level rendah. (sedang dibangun) Untuk proyek nyata saya menggunakan sensor ultrasonik tahan air, ini tidak akan mengubah kabel atau kode. Saya tidak tahu apa yang terjadi dengan pembacaan ketika sensor basah (kelembaban), jadi proyek ini hanya memberi saya informasi, proyek ke-3 digunakan untuk aktivitas pompa dan akan dilakukan oleh kontak magnetik.
#include //Load Liquid Crystal Library#include #include #define ONE_WIRE_BUS 6 // Kabel data dicolokkan ke pin 6 pada Arduino OneWire oneWire(ONE_WIRE_BUS); // Siapkan instans oneWire untuk berkomunikasi dengan perangkat OneWire// (bukan hanya IC suhu Maxim/Dallas)Sensor suhu Dallas(&oneWire); // Berikan referensi oneWire kami ke Dallas Temperature.LiquidCrystal LCD(12, 11, 5, 4, 3, 2); //Buat Objek Kristal Cair bernama LCDint trigPin =9; //Sensor Trip pin terhubung ke Arduino pin 9int echoPin =7; //Sensor Echo pin terhubung ke pin Arduino 7int myCounter =0; //deklarasikan variabel myCounter Anda dan setel ke 0float pingTime; //waktu ping melakukan perjalanan dari sensor ke target dan returnfloat targetDistance; //Jarak ke Target dalam Centimetersfloat speedOfSound =776,5; //Kecepatan suara dalam mil per hourvoid setup() { Serial.begin(9600); pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); LCD.begin(16, 2); //Beri tahu Arduino untuk memulai LCD LCD 16x2 Anda.setCursor(0, 0); //Set kursor LCD ke pojok kiri atas, kolom 0, baris 0 LCD.print("Jarak:"); //Cetak Pesan pada Sensor Baris Pertama.begin(); // Jalankan library pinMode(8, OUTPUT); //pin 8, 10, 13 pin keluaran pinMode(10, OUTPUT); pinMode(13, OUTPUT);}void loop() { digitalWrite(trigPin, RENDAH); // Setel pin pemicu delay rendahMicroseconds(2000); //Biarkan sinyal menyelesaikan digitalWrite(trigPin, HIGH); //Setel trigPin tunda tinggiMikrodetik(15); //Delay dalam keadaan tinggi digitalWrite(trigPin, LOW); //ping sekarang telah dikirim delayMicroseconds(10); //Delay dalam keadaan tinggi pingTime =pulseIn(echoPin, HIGH); //pingTime dalam mikrodetik pingTime =pingTime / 1000000; //mengubah pingTime menjadi detik dengan membagi 1000000 (mikrodetik dalam satu detik) pingTime =pingTime / 3600; //mengubah waktu ping menjadi jam dengan membaginya dengan 3600 (detik dalam satu jam) targetDistance =speedOfSound * pingTime; //Ini akan dalam mil, karena kami menyatakan kecepatan suara sebagai kilometer per jam; meskipun kita akan mengubahnya kembali ke sentimeter targetDistance =targetDistance / 2; //Ingat ping bergerak ke target dan kembali dari target, jadi Anda harus membaginya dengan 2 untuk jarak target yang sebenarnya. targetDistance =targetDistance * 160934.4; //Mengonversi mil ke sentimeter dengan mengalikannya dengan 160934,4 sensor.requestTemperatures(); // Kirim perintah untuk mendapatkan pembacaan suhu LCD.setCursor(10, 0); //Atur kursor ke kolom kesepuluh dari baris pertama LCD.print(" "); //Cetak kosong untuk menghapus baris LCD.setCursor(10, 0); //Setel Kursor lagi ke kolom kesepuluh dari baris pertama LCD.print((int) (targetDistance + 0.5)); //Cetak jarak terukur LCD.print("cm"); //Cetak unit Anda LCD.setCursor(0, 1); //Atur kursor ke kolom pertama dari baris kedua LCD.print(" "); //Cetak kosong untuk menghapus baris LCD.setCursor(0, 1); //Set Cursor lagi ke kolom pertama dari baris kedua if (targetDistance> 40) { LCD.print("LEV LOW "); LCD.print(sensors.getTempCByIndex(0)); LCD.print((char)223); LCD.print("C"); } else if (jarak target <40 &&jarak target> 20) { LCD.print("LEV MED "); LCD.print(sensors.getTempCByIndex(0)); LCD.print((char)223); LCD.print("C"); } else (jarak target <20); { LCD.print("LEV TINGGI"); LCD.print(sensors.getTempCByIndex(0)); LCD.print((char)223); LCD.print("C"); } penundaan(2000); if (Jarak target> 40) { digitalWrite (13, TINGGI); //LED Hijau NYALA } else { digitalWrite(13, LOW); //LED Hijau MATI } if (jarak target <40 &&jarak target> 20) { digitalWrite (8, TINGGI); //LED Kuning NYALA } else { digitalWrite(8, LOW); //LED Kuning MATI } if (jarak target <20) { digitalWrite(10, HIGH); //Red LED ON delay(2000); digitalWrite(10, RENDAH); //LED Merah MATI } else { digitalWrite(10, LOW); //LED Merah MATI }}
Kode
File tanpa judulC/C++
#include //Load Liquid Crystal Library#include #include #define ONE_WIRE_BUS 6 // Kabel data dicolokkan ke pin 6 pada Arduino OneWire oneWire(ONE_WIRE_BUS ); // Siapkan instans oneWire untuk berkomunikasi dengan perangkat OneWire// (bukan hanya IC suhu Maxim/Dallas)Sensor suhu Dallas(&oneWire); // Berikan referensi oneWire kami ke Dallas Temperature.LiquidCrystal LCD(12, 11, 5, 4, 3, 2); //Buat Objek Kristal Cair bernama LCDint trigPin =9; //Sensor Trip pin terhubung ke Arduino pin 9int echoPin =7; //Sensor Echo pin terhubung ke pin Arduino 7int myCounter =0; //deklarasikan variabel myCounter Anda dan setel ke 0float pingTime; //waktu ping melakukan perjalanan dari sensor ke target dan returnfloat targetDistance; //Jarak ke Target dalam Centimetersfloat speedOfSound =776,5; //Kecepatan suara dalam mil per hourvoid setup() { Serial.begin(9600); pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); LCD.begin(16, 2); //Beri tahu Arduino untuk memulai LCD LCD 16x2 Anda.setCursor(0, 0); //Set kursor LCD ke pojok kiri atas, kolom 0, baris 0 LCD.print("Jarak:"); //Cetak Pesan pada Sensor Baris Pertama.begin(); // Jalankan library pinMode(8, OUTPUT); //pin 8, 10, 13 pin keluaran pinMode(10, OUTPUT); pinMode(13, OUTPUT);}void loop() { digitalWrite(trigPin, RENDAH); // Setel pin pemicu delay rendahMicroseconds(2000); //Biarkan sinyal menyelesaikan digitalWrite(trigPin, HIGH); //Setel trigPin tunda tinggiMikrodetik(15); //Delay dalam keadaan tinggi digitalWrite(trigPin, LOW); //ping sekarang telah dikirim delayMicroseconds(10); //Delay dalam keadaan tinggi pingTime =pulseIn(echoPin, HIGH); //pingTime dalam mikrodetik pingTime =pingTime / 1000000; //mengubah pingTime menjadi detik dengan membagi 1000000 (mikrodetik dalam satu detik) pingTime =pingTime / 3600; //mengubah waktu ping menjadi jam dengan membaginya dengan 3600 (detik dalam satu jam) targetDistance =speedOfSound * pingTime; //Ini akan dalam mil, karena kami menyatakan kecepatan suara sebagai kilometer per jam; meskipun kita akan mengubahnya kembali ke sentimeter targetDistance =targetDistance / 2; //Ingat ping bergerak ke target dan kembali dari target, jadi Anda harus membaginya dengan 2 untuk jarak target yang sebenarnya. targetDistance =targetDistance * 160934.4; //Mengonversi mil ke sentimeter dengan mengalikannya dengan 160934,4 sensor.requestTemperatures(); // Kirim perintah untuk mendapatkan pembacaan suhu LCD.setCursor(10, 0); //Atur kursor ke kolom kesepuluh dari baris pertama LCD.print(" "); //Cetak kosong untuk menghapus baris LCD.setCursor(10, 0); //Setel Kursor lagi ke kolom kesepuluh dari baris pertama LCD.print((int) (targetDistance + 0.5)); //Cetak jarak terukur LCD.print("cm"); //Cetak unit Anda LCD.setCursor(0, 1); //Atur kursor ke kolom pertama dari baris kedua LCD.print(" "); //Cetak kosong untuk menghapus baris LCD.setCursor(0, 1); //Set Cursor lagi ke kolom pertama dari baris kedua if (targetDistance> 40) { LCD.print("LEV LOW "); LCD.print(sensors.getTempCByIndex(0)); LCD.print((char)223); LCD.print("C"); } else if (jarak target <40 &&jarak target> 20) { LCD.print("LEV MED "); LCD.print(sensors.getTempCByIndex(0)); LCD.print((char)223); LCD.print("C"); } else (jarak target <20); { LCD.print("LEV TINGGI"); LCD.print(sensors.getTempCByIndex(0)); LCD.print((char)223); LCD.print("C"); } penundaan(2000); if (Jarak target> 40) { digitalWrite (13, TINGGI); //LED Hijau NYALA } else { digitalWrite(13, LOW); //LED Hijau MATI } if (jarak target <40 &&jarak target> 20) { digitalWrite (8, TINGGI); //LED Kuning NYALA } else { digitalWrite(8, LOW); //LED Kuning MATI } if (jarak target <20) { digitalWrite(10, HIGH); //Red LED ON delay(2000); digitalWrite(10, RENDAH); //LED Merah MATI } else { digitalWrite(10, LOW); //LED Merah MATI } }
Skema
lcd_pot_led_buzz_pb_distsens_temp_EHVdF6S1L7.fzz