Ushbu misolda biz sensorning boshqa chiqishidan foydalanamiz: impuls kengligi chiqishi.
/* Arduino example code for MaxBotix MB1240 XL-MaxSonar-EZ4 ultrasonic distance sensor: pulse width output. More info: www.www.makerguides.com *
/ #define sensorPin 2 long distance = 0; long duration = 0; void setup()
{
pinMode(sensorPin, INPUT); Serial.begin(9600);}
void read_sensor() {
duration = pulseIn(sensorPin, HIGH);
distance = duration / 58; }
void print_data() {
Serial.print("distance = ");
Serial.print(distance); Serial.println(" cm"); }
void loop() {
read_sensor();
print_data();
delay(1000);
}
Ulanish pinini aniqlagandan so'ng, men ikkita o'zgaruvchini yaratdim:
Duration
Va
distance.
Muddati sensor tomonidan yuborilgan puls uzunligini saqlaydi. Masofa o'zgaruvchisi hisoblangan masofani saqlash uchun ishlatiladi.
long distance = 0; long duration = 0;
Sozlashda, ketma-ket aloqani boshlashdan tashqari, biz sensorpinni kirish sifatida o'rnatishimiz kerak. Buning uchun biz funktsiyadan foydalanamiz
pinMode(pin, mode)
void setup() { pinMode(sensorPin, INPUT); Serial.begin(9600); }
Read_sensor funksiyasi oldingi misoldan farq qiladi. Endi biz analog kuchlanish chiqishini emas, balki sensor tomonidan yuborilgan puls uzunligini o'lchaymiz. Buning uchun biz funktsiyadan foydalanamiz
pulseIn(pin, value).
Bu funksiya Pinning pastdan yuqoriga o'tishini kutadi, vaqtni boshlaydi, keyin Pinning past bo'lishini kutadi va vaqtni to'xtatadi. U pulsning uzunligini mikrosaniyalarda qaytaradi.
Shundan so'ng, davomiylik o'lchovini 58 ga bo'lish orqali masofani santimetrda hisoblashimiz mumkin. Boshqa MaxBotix sensorlari uchun ushbu masshtablash koeffitsientini ma'lumotlar sahifasida topishingiz mumkin.
void read_sensor() { duration = pulseIn(sensorPin, HIGH); distance = duration / 58; }
Kodning qolgan qismi oldingi misol bilan bir xil.
Do'stlaringiz bilan baham: |