9-laboratoriya ishi
Mavzu: Potensiometrni harakatlantirish orqali yonayotgan yorug‘lik diodining sonini o‘zgartirish (Arduinoda). 10 qismdan iborat bо‘lgan yorug‘lik diodli shkala
Amaliy ishning maqsadi.
Bu amaliy ishda Arduino ning analog kirishlarini ishlashini kо‘rib chiqiladi, analog datchik sifatida о‘zgaruvchi qarshilikni va yorug‘lik diodidagi shkala yordamida analog datchikning kо‘rsatgichlarini namoyish etiladi. Kerakli elementlar:
ArduinoUNO kontrolleri;
sxema yig‘ish uchun plata;
о‘zgaruvchi qarshilik 2kOm;
10 segmentli yorug‘lik diodli shkala;
qarshilik 220Om 10 dona;
ikki uchida razyomlari bо‘lgan simlar.
Oldingi amaliy ishlarda biz Arduino ning raqamli chiqishlarini ishini kо‘rib о‘tgan edik, ular faqat ikkita bо‘lishi mumkin bо‘lgan holatga ega: yoqiq yoki о‘chiq, HIGH yoki LOW, 1 yoki 0. Ammo atrofimizni о‘rab turgan dunyo haqida axborot olish uchun analog (uzluksiz) axborotlar bilan ishlashga tо‘g‘ri keladi, u turdagi axborotlar berilgan oraliqda cheksiz bо‘lishi mumkin bо‘lgan sonlar qiymatiga ega bо‘ladi. Analog axborotlarni olish uchun Arduino da analog kirishlari mavjud, ular analog axborotni raqamli axborotga о‘zgartirish uchun 10-razryadli analog-raqam о‘zgartirirish qurilmalari (ARО‘) bilan jihozlangan. 10-razryadli
ARО‘ bildiradiki, ARО‘ qurilma analog signalni 210 turli qiymatlarga bо‘ladi. Demak, Arduino signalni 210 = 1024 ta turli qiymatga bо‘ladi, 0 dan 1023 gachan. Tayanch kuchlanish maksimal kuchlanishni aniqlab beradi, uning qiymati ARО‘ ni 1023 mos keladi. Tayanch kuchlanishni о‘zgartirish mumkin bо‘lishiga qaramay biz 5 V li tayanch kuchlanishni ishlatamiz.
1-rasm. Topshiriqga mos sxema tuzilishi.
Sxemani tuzib bo’lgandan keyin Arduino UNO ga quyidagi kodni kiritamiz:
import muvium.compatibility.arduino.*;
public class Class0 extends Arduino{
int analogPin = A0; // potentsiometr biriktirilgan pin
int ledCount = 10; // chiziqli grafikdagi LEDlar soni
int ledPins[] = {13, 12, 11, 10, 9, 8, 7, 6, 5, 4}; // LEDlar biriktirilgan pin raqamlari qatori
public void setup(){
// pin massivini aylantiring va ularning barchasini chiqishga o'rnating:
for (int thisLed = 0; thisLed < ledCount; thisLed++) {
pinMode(ledPins[thisLed], OUTPUT);
}
}
public void loop(){
// potensiometrni o'qing:
int sensorReading = analogRead(analogPin);
// natijani 0 dan LEDlar soniga tenglashtiring:
int ledLevel = map(sensorReading, 0, 1023, 0,
ledCount);
// LED massivida aylanish:
for (int thisLed = 0; thisLed < ledCount; thisLed++) {
// agar massiv elementi indeksi ledLevel dan kichik bo'lsa,
// ushbu element uchun pinni yoqing:
if (thisLed < ledLevel) {
digitalWrite(ledPins[thisLed], HIGH);
}
// ledLeveldan yuqori barcha pinlarni o'chirib qo'ying:
else {
digitalWrite(ledPins[thisLed], LOW);
}
}
}
}
2-rasm. Topshiriq natijasi.
Do'stlaringiz bilan baham: |