Buat Sensor Cahaya Lingkungan dengan Fotoresistor dan LED: Panduan Langkah demi Langkah
Komponen dan Perlengkapan
 |
|
× |
1 |
|
 |
|
× |
1 |
|
 |
|
× |
2 |
|
 |
|
× |
1 |
|
 |
|
× |
2 |
|
 |
|
× |
1 |
|
 |
|
× |
1 |
|
Aplikasi dan Layanan Online
Tentang Proyek Ini
Saya menggunakan Arduino selama beberapa saat dan saya memutuskan saatnya untuk merancang proyek saya sendiri dari awal. Saya memodifikasi beberapa rangkaian yang saya temukan online dari Alex Glow dan Joe Coburn sehingga lebih sesuai dengan proyek ini. Harap, jika Anda menemukan masalah apa pun, atau pikir Anda menemukan sesuatu yang bekerja lebih baik dari desain saya, harap berkomentar di bawah dan saya akan merespon Anda.
Pemasangan
Saya memasang fotoresistor ke pin analog 0 (pin analog mana pun akan bekerja) dan 5V di sisi kanan breadboard. Ini melalui resistor 1K ohm yang dihubungkan ke ground. Saya memasang LED (warna apa pun) di sisi berlawanan breadboard ke pin digital 13 (pin digital mana pun akan bekerja) dan resistor 220-ohm yang dihubungkan ke ground (resistor 100-ohm juga akan bekerja). Sedikit ke kanan dari LED pertama, saya memasang LED dengan warna berbeda dengan cara yang sama, hanya dengan pin digital yang berbeda.
Cara Kerja
Jika fotoresistor membaca nilai di atas 450, ia mencetak "It is quite light!" pada serial monitor dan mematikan semua LED, seperti ini:
if(light > 450) { // If it is bright... Serial.println("It is quite light!"); digitalWrite(13,LOW); //turn left LED off digitalWrite(12,LOW); // turn right LED off }
Jika membaca nilai antara 230 dan 450, ia mencetak "It is average light!" pada serial monitor dan menghidupkan LED kiri, seperti ini:
else if(light > 229 && light < 451) { // If it is average light... Serial.println("It is average light!"); digitalWrite(13, HIGH); // turn left LED on digitalWrite(12,LOW); // turn right LED off }
Ini hanya meninggalkan nilai di bawah 230 untuk diperhitungkan. Jika nilai di bawah 230, ia mencetak "It is quite dark!" pada serial monitor dan menghidupkan kedua LED, seperti ini:
else { // If it's dark... Serial.println("It is pretty dark!"); digitalWrite(13,HIGH); // Turn left LED on digitalWrite(12,HIGH); // Turn right LED on }
Saya menambahkan delay 1000 di akhir loop saya untuk mencegah overload informasi ke serial monitor, seperti ini:
delay(1000); // don't spam the computer!
Pastikan Anda melihat skematik dan memeriksa kode Anda sebelum mengunggah atau menjalankan apa pun.
Kode
LED_PR_Light_ReadArduino
int light = 0; // store the current light value void setup() { // put your setup code here, to run once: Serial.begin(9600); //configure serial to talk to computer pinMode(13, OUTPUT); // configure digital pin 13 as an output pinMode(12, OUTPUT); // configure digital pin 12 as an output } void loop() { // put your main code here, to run repeatedly: light = analogRead(A0); // read and save value from PR Serial.println(light); // print current light value if(light > 450) { // If it is bright... Serial.println("It is quite light!"); digitalWrite(13,LOW); //turn left LED off digitalWrite(12,LOW); // turn right LED off } else if(light > 229 && light < 451) { // If it is average light... Serial.println("It is average light!"); digitalWrite(13, HIGH); // turn left LED on digitalWrite(12,LOW); // turn right LED off } else { // If it's dark... Serial.println("It is pretty dark!"); digitalWrite(13,HIGH); // Turn left LED on digitalWrite(12,HIGH); // Turn right LED on } delay(1000); // don't spam the computer! }
Skematik