Saya memiliki kode untuk sensor ultrasonik yang saya temukan dari sebuah situs. Ini kodenya:
#define trigPin 12
#define echoPin 13
void setup() {
Serial.begin (9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}
void loop() {
int duration, distance;
digitalWrite(trigPin, HIGH);
delayMicroseconds(1000);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (duration/2) / 29.1;
if (distance >= 200 || distance <= 0){
Serial.println("Out of range");
}
else {
Serial.print(distance);
Serial.println(" cm");
}
delay(500);
}
Namun, saya tidak mengerti pekerjaan pulseIn()
fungsi. Maksud saya, saya ingin tahu kapan penghitungan waktu dimulai dan kapan berakhir. Misalnya, dalam kode ini, apakah waktu mulai digitalWrite(trigPin, HIGH);
atau apakah waktu mulai pada pulseIn()
fungsi?
Jika yang kedua, ketika berhenti, lalu bagaimana waktu memberi kita jarak dari hambatan ketika saya sudah menunda 1000 mikrodetik setelah saya mengirim ping di udara?
arduino-uno
sensors
pulsein
shajib0o
sumber
sumber
How can i do this code in assembly languaje
- apa hubungannya dengan pertanyaan ini?Jawaban:
Dari dokumen:
Jadi, dalam hal ini,
pulseIn(echoPin, HIGH)
mulai menghitung jumlah mikrodetik hinggaechoPin
menjadi TINGGI dan menyimpannya dalamduration
.Itu dimulai dan berakhir pada baris itu, itulah yang dikenal sebagai fungsi pemblokiran. Ini akan benar-benar duduk di sana sampai
echoPin
menjadi tinggi dan memberi tahu Anda berapa lama (kecuali Anda menentukan batas waktu).Itu juga berarti bahwa setiap penundaan yang Anda miliki sebelum atau sesudah
pulseIn
panggilan tidak memengaruhi dengan cara apa pun.Cara Anda mendapatkan jarak dari waktu ini adalah dengan persamaan berikut:
Anda membaginya dengan dua karena itu keluar dan kembali sehingga waktu akan dua kali lipat dari perjalanan satu arah. 29.1 adalah kecepatan suara (yaitu 343.5 m / s => 1 / 0.03435 = 29.1). Jadi perhatikan hasilnya di CM, bukan inci. Anda mungkin bisa mengetahuinya dengan melihat lembar data sensor atau hanya mendapatkan banyak sampel yang berkaitan dengan durasi jarak (Anda akan mengukur jarak secara manual) dan mendapatkan persamaan yang sangat mirip.
sumber
pulseIn(echoPin, HIGH)
mengukur waktu sampai pin ECHO menjadi RENDAH.Memang itu akan menjadi masalah jika Anda mulai mengukur panjang pulsa 1000 mikrodetik setelah dimulai. Namun, ini bukan cara kerja sensor HC-SR04:
sensor dipicu oleh tepi jatuh dari TRIG, di
digitalWrite(trigPin, LOW);
pulsa ECHO mulai sekitar 0,3 ms setelah pemicu
Itu sebabnya penundaan 1 ms tidak memengaruhi hasil pengukuran.
pulseIn(echoPin, HIGH)
akan benar-benar menunggu pin ECHO menjadi TINGGI, lalu mulai mengukur panjang pulsa hingga RENDAH lagi. Dengan demikian, durasi pulsa TRIG dapat dikurangi menjadi 10 mikrodetik (durasi TRIG minimum untuk HC-SR04), untuk membuat pengukuran lebih cepat.sumber
Penting untuk diketahui bahwa Anda tidak mengukur waktu mulai dari pemicu - dengan mengatur pin Pemicu TINGGI - hingga sinyal Echo.
Sensor HC-SR04 memulai pengukuran dengan menerima TINGGI pada input Pemicu dan kemudian mengirimkan, tidak lama kemudian, waktu dikodekan sebagai panjang tingkat TINGGI pada pin Echo.
Jika Anda menggunakan
pulseIn()
2 ms, yaitu 2000μs, setelah dipicu, itu akan berfungsi dengan baik.sumber
Jangan bingung, karena modul ultrasonik memiliki cara kerja tertentu. Pertama, Anda mengatur pulsa di trigpin. Ketika itu berakhir, modul mengirimkan 8 semburan pulsa 40 kHz (dan itulah sebenarnya yang digunakan untuk mengukur jarak, bukan denyut nadi Anda di trigpin, yang tidak ke mana-mana). Tepat saat ledakan pertama dikirim, pin gema mengatur dirinya sendiri di TINGGI. Ketika ini terjadi, program berada di garis pulseIn, dan karena echopin berada di HIGH, ia memulai pengaturan waktu (karena pulseIN (echopin, HIGH) menunggu echopin menjadi HIGH untuk memulai pengaturan waktu). Ketika pulsa pertama dari 40 kHz memantul di objek dan kembali ke penerima, echopin menempatkan dirinya dalam RENDAH. Kemudian fungsi pulseIn menghentikan waktu dan mengembalikannya. Kemudian program terus berjalan. Modul ini sedikit rumit untuk mempelajari cara kerja pulsa.
sumber