Uy jihozlarini ovoz bilan boshqarish tizimini yaratish MaxBotix mb1240 ultratovush masofa sensori Arduino qo'llanma


Download 451.92 Kb.
bet7/7
Sana24.12.2022
Hajmi451.92 Kb.
#1062267
1   2   3   4   5   6   7
Bog'liq
Oqil. KURS ISHI

Kod qanday ishlaydi


Birinchi qadam ulanishlarni aniqlashdir. Masofani o'qish uchun sensorning impuls kengligi chiqishidan foydalanamiz.
#define readPin 2
#define triggerPin 3
#define buttonPin 4
Oldingi misolda ishlatgan davomiylik va masofa o'zgaruvchilaridan tashqari, tugma holatini saqlash uchun bizga yangi o'zgaruvchilar ham kerak. Vaqt va debounce o'zgaruvchilari quyidagilar uchun ishlatiladi debounce kirish.
Agar siz noto'g'ri Triggerlar olsangiz, debounce vaqtini oshirishingiz mumkin.
long distance = 0;
long duration = 0;
int buttonState = HIGH;
int previous = HIGH;
long time = 0;
long debounce = 200;
Sozlashda biz triggerpinni chiqish sifatida, o'qish va tugmani kiritish sifatida o'rnatamiz. Men pinMode funktsiyasi INPUT_PULLUP ishlatiladi unutmang. Dasturiy ta'minot kirish mumkin Atmega jip ichiga qurilgan 20k pullup qarshilik bor. Ushbu Sozlama tugmani tortaditugallanmaganda pin yuqori va tugmani bosganingizda u past bo'ladi.
Sensor ko'lamli boshlash emas, shuning uchun keyingi, biz, triggerPin past belgilangan.
Sensor ma'lumotlarini chop etish uchun biz ketma-ket aloqani 9600 tezlikda boshlaymiz.
void setup() {
pinMode(readPin, INPUT);
pinMode(buttonPin, INPUT_PULLUP);
pinMode(triggerPin, OUTPUT);
digitalWrite(triggerPin, LOW);
Serial.begin(9600);
delay(3000);
Serial.println("Sensor is ready, waiting for button press!");
}
Shundan so'ng men ikkita funktsiyani, read_sensor va print_data funktsiyalarini aniqladim.
Read_sensor funksiyasida biz triggerPin high-ni 20 mikrosaniyaga o'rnatganimizni ko'rishingiz mumkin. Bu sensorga sonar pulsini yuborishni aytadi. Keyinchalik, biz chiqish pulsining uzunligini o'qiymiz va uni masofaga aylantiramiz (bu avvalgi misol bilan bir xil). Men 100 milodiy kechikishni qo'shdim, chunki bu o'qishlar orasidagi minimal vaqt.
Print_data funksiyasi oldingi misollardagi kabi.
void read_sensor() {
digitalWrite(triggerPin, HIGH);
delayMicroseconds(20);
digitalWrite(triggerPin, LOW);
duration = pulseIn(readPin, HIGH);
distance = duration / 58;
delay(100);
}
Loopda biz avval tugmachaning holatini o'qiymiz (bosilgan / bosilmagan) va uni tugma sifatida saqlaymiz.holat. Keyingi satr tugmachani bosganingizni (ya'ni kirish balanddan pastgacha bo'lgan) va oxirgi bosishdan beri har qanday shovqinni e'tiborsiz qoldirish uchun etarlicha uzoq kutganingizni tekshiradi.
Agar bu to'g'ri bo'lsa, u read_sensor va print_data funktsiyasini chaqiradi va taymerni qayta tiklaydi.
void loop() {
buttonState = digitalRead(buttonPin);

if (buttonState == LOW && previous == HIGH && millis() - time > debounce) {


read_sensor();
print_data();
time = millis();
}

previous = buttonState;


}
Nihoyat, oldingi o'zgaruvchi joriy tugmachaga o'rnatiladidastur.

Download 451.92 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling