Sensor, yang dicadangkan oleh Instructables di bawah nama panggilan AdnanA61, membolehkan anda mengesan sinaran inframerah gelombang pendek dari sumber seperti kawalan jauh, api, lampu pijar, dan matahari. Ia tidak bertindak balas kepada satu lagi bentuk radiasi inframerah - gelombang panjang, sumber yang semuanya objek dipanaskan kepada suhu biasa. Buatan sendiri menghasilkan dua jenis isyarat: analog dan diskret, yang kedua terbentuk oleh komparator, ambang yang dibuat laras. Kedua-dua isyarat boleh digunakan untuk kedua-duanya Arduino, dan peranti lain dengan atau tanpa mikropengawal. Berikut adalah reka bentuk lembaga lain, litar tidak berbeza:
Sensor dibuat pada salah satu daripada dua pembanding microcircuit LM393; yang kedua dapat digunakan untuk menyelesaikan masalah lain jika diinginkan. Jika anda tidak menggunakannya, lebih baik untuk menyambung kedua-dua inputnya dengan wayar biasa, dan meninggalkan output yang tidak berkaitan.
Skim ini direka supaya membacanya tidak begitu mudah. Tiga titik yang ditetapkan sebagai A0 mestilah dihubungkan bersama. Dua mata yang ditetapkan sebagai D0 - juga. Jadi ia menjadi jelas apa yang berkaitan dengan dan bagaimana ia berfungsi. Tiada teka-teki. Jika anda memasang sensor dari pereka, pinout sisir di papan yang termasuk dalam kit akan seperti berikut:
Sudah tentu, di papan tempel, papan cetak atau papan lapis, pinout ini boleh dibuat untuk memudahkan anda. Anda boleh menyemak lembaga dalam tindakan dan menyesuaikan ambang pembanding sebaik sahaja pemasangan, hanya dengan membekalkan kuasa, terima kasih kepada LED di atas kapal. LED kedua menyala secara berterusan apabila kuasa dihidupkan. Kemudian anda boleh menyambungkan sensor ke Arduino dan menguji output analog dengan lakaran ini:
// salin kod ini dalam ide arduino dari baris ini
// nota: - kod ini adalah untuk nilai analog
int sensor = A0; / // memulakan pin analog
int buzzer = 3; // memulakan pin buzzer
nilai int;
void setup () {
Serial.begin (9600);
pinMode (sensor, INPUT); / // menegaskan jenis mod pin pin sebagai input atau output
pinMode (buzzer, OUTPUT);
}
kekosongan gelung () {
nilai = analogRead (sensor); // membaca valus dari sensor
nilai = peta (nilai, 0.1023,0,255); // pemetaan nilai dari 0 hingga 1023 b / w 0 hingga 255
digitalWrite (buzzer, value); // menukar bel atau mematikan dengan nilai yang dipetakan
}
Dan digital - dengan lakaran lain:
// salin kod ini dalam ide arduino dari baris ini
// nota: - kod ini adalah untuk nilai digital
int sensor_digital = 2; / // memulakan pin digital
int buzzer = 3;
nilai int;
void setup () {
Serial.begin (9600);
pinMode (sensor_digital, INPUT);
pinMode (buzzer, OUTPUT);
}
kekosongan gelung () {
nilai = digitalRead (sensor_digital); // membaca dat digital dari sensor
digitalWrite (buzzer, value); // menghidupkan atau mematikan buzzer
}
Apabila semuanya berfungsi, anda boleh menulis program yang melaksanakan algoritma kerumitan yang lebih besar. Misalnya, robot "takut" mendekati api atau lampu pijar yang kuat supaya tidak merosot. Dan dia melakukan perkara yang betul, kerana memegang papan sensor untuk sumber pemanasan yang kuat pada jarak kurang dari 100 mm boleh merosakkannya.