Apa yang kita lakukan?
Mendapatkan inputan dari potensiometer bisa berguna untuk eksperimen yang dikendalikan manusia, tapi gimana kalau kita mau eksperimen yang dikendalikan lingkungan? Kita menggunakan prinsip yang hampir sama, tapi dibandingkan menggunakan potensiometer, kita pakai photo resistor (light dependent resistor / sensor cahaya). Arduino gak bisa merasakan resistansi langsung (dia merasakan voltage), jadi kita membuat voltage divider.
Rangkaian :
Code (bisa didapatkan di http://ardx.org/CODE09)
/* * A simple programme that will change the intensity of * an LED based * on the amount of light incident on * the photo resistor. * */ //PhotoResistor Pin int lightPin = 0; //the analog pin the photoresistor is //connected to //the photoresistor is not calibrated to any units so //this is simply a raw sensor value (relative light) //LED Pin int ledPin = 9; //the pin the LED is connected to //we are controlling brightness so //we use one of the PWM (pulse width // modulation pins) void setup() { pinMode(ledPin, OUTPUT); //sets the led pin to output } /* * loop() - this function will start after setup * finishes and then repeat */ void loop() { int lightLevel = analogRead(lightPin); //Read the // lightlevel lightLevel = map(lightLevel, 0, 900, 0, 255); //adjust the value 0 to 900 to //span 0 to 255 lightLevel = constrain(lightLevel, 0, 255);//make sure the //value is betwween //0 and 255 analogWrite(ledPin, lightLevel); //write the value }
Coding ini menghasilkan LED yang akan mati kalau sensor mendeteksi cahaya.
Gak jalan?
- LED tetap gak nyala
Inilah kesalahan yang terus kita bikin yang terus terusan ngabisin waktu. Coba aja mereka bisa bikin LED yang bisa ditukar PIN nya.
Coba putar LED nya, baru coba lagi. - Sensornya gak merespon perubahan cahaya
Karena tempat merakitnya memang sempit, mungkin aja salah rakit. Coba rakit ulang. - Masih gak jalan juga?
Mungkin kamu berada di ruangan yang terlalu terang, atau terlalu gelap. Coba matiin lampu. Atau kalau ada senter (di lab sini adanya laser), coba pakai.
Lebih lanjut : http://ardx.org/CIRC09
Tugas kampus : Ketika lasernya kena sensor, LEDnya hidup. Kalau lasernya dimatikan, lampunya mati. Tampilkan keluaran sensor pada Serial Monitor.
int lightPin=0; void setup() { Serial.begin(9600); pinMode(ledPin, OUTPUT); //sets the led pin to output } void loop() { int lightLevel = analogRead(lightPin); Serial.print(lightLevel); Serial.print("\n"); lightLevel = map(lightLevel, 0, 300, 255, 0); lightLevel = constrain(lightLevel, 0, 255);//make sure the //value is betwween //0 and 255 analogWrite(ledPin, lightLevel); //write the value }
Hasil :
https://www.instagram.com/p/BVD1Erbh5Ig/?taken-by=rinaldojonathan
Tugas 2 :
- Buat buzzer yang membunyikan lagu “Ibu Kita Kartini” (ARDX CIRC06)
- Buzzer baru hidup setelah sensor mendeteksi adanya cahaya.
int speakerPin = 9; int ledPin = 9; int lightPin=0; int length = 52; // the number of notes char notes[] = "cdefgecaCbagfagfecdfedcfefagagecedefgefefagagecedfbdc"; // a space represents a rest int beats[] = { 3,1,2,2,3,1,4,3,1,2,2,8,3,1,2,2,4,4,3,1,2,2,8, 3,1,2,2,1,1,1,1,2,2,2,2,2,2,8,3,1,2,2,1,1,1,1,2,2,2,2,2,2,8 }; int tempo = 300; void playTone(int tone, int duration) { for (long i = 0; i < duration * 1000L; i += tone * 2) { digitalWrite(speakerPin, HIGH); delayMicroseconds(tone); digitalWrite(speakerPin, LOW); delayMicroseconds(tone); } } void playNote(char note, int duration) { char names[] = { 'c', 'd', 'e', 'f', 'g', 'a', 'b', 'C' }; int tones[] = { 1915, 1700, 1519, 1432, 1275, 1136, 1014, 956 }; // play the tone corresponding to the note name for (int i = 0; i < 8; i++) { if (names[i] == note) { playTone(tones[i], duration); } } } void setup() { Serial.begin(9600); pinMode(ledPin, OUTPUT); //sets the led pin to output pinMode(speakerPin, OUTPUT); } void loop() { int lightLevel = analogRead(lightPin); lightLevel = map(lightLevel, 0, 900, 0, 255); //adjust the value 0 to 900 to //span 0 to 255 lightLevel = map(lightLevel, 0, 300, 255, 0); if ( lightLevel >200) { for (int i = 0; i < length; i++) { if (notes[i] == ' ') { delay(beats[i] * tempo); // rest } else { playNote(notes[i], beats[i] * tempo); } // pause between notes delay(tempo / 2); } } }
https://www.instagram.com/p/BVD4b-eBnVg/?taken-by=rinaldojonathan
Kesimpulan : Sekarang kami bisa menggunakan sensor cahaya dengan Arduino. Tapi untuk menghidupkan lagu dengan cahaya, saya belum tahu apa kegunaannya :hammers
Incoming Terms
- Laporan Praktikum Buzzer