Bajardi: Bozorov Temurjon. Mavzu: Tugma orqali led chiroqlar sonini oshirish tartibida yoqish


Download 162.2 Kb.
bet3/5
Sana21.03.2023
Hajmi162.2 Kb.
#1285475
1   2   3   4   5
Bog'liq
led chiroqlar

ishlaydigan chiroqlar


Chiroqlarni tartibda ishlatish uchun yana bir variant. Bu safar sayohat yo'nalishini kuzatib borish uchun o'zgaruvchini qo'shish orqali kodni bitta for tsikliga moslashtiramiz.

const int ARRAY_SIZE = 6;


int ledPin[] = {2, 3, 4, 5, 6, 7};


int ledDelay = 500;
int direction = 1;
int currentLed = 0;
unsigned long changeTime;

void setup() {


for (int i = 0; i < ARRAY_SIZE; i++) {
pinMode(ledPin[i], OUTPUT);
}
changeTime = millis();

}


void loop() {
if ((millis() - changeTime) > ledDelay) {
changeLed();
changeTime = millis();
}
}

void changeLed() {


// выключаем все светодиоды
for (int i = 0; i < ARRAY_SIZE; i++) {
digitalWrite(ledPin[i], LOW);
}
// включаем текущий LED
digitalWrite(ledPin[currentLed], HIGH);
// увеличиваем значение
currentLed += direction;
// меняем направление, если достигли конца
if (currentLed == ARRAY_SIZE - 1) {
direction = -1;
}
if (currentLed == 0) {
direction = 1;
}
}
Loyihani turli yo'llar bilan amalga oshirish mumkinligini uchta misol ko'rsatadi. Universal echimlar yo'q, har kim o'z muammosini o'z tajribasi va amaliyotiga asoslanib, individual ravishda hal qiladi.

07.Displey: barGraph (yorug'lik chizig'i va potansiyometr)


LED paneli va potansiyometr yordamida misolni ko'rib chiqing - Misollar | 07. Displey | barGraph . Agar yorug'lik shkalasi bo'lmasa, 10 ta oddiy LED bilan almashtiring.
Potansiyometr bilan kuchlanishni qo'lda o'zgartirib, biz yorug'lik shkalasida ma'lumotni ko'rsatamiz.
Sxemaga potentsiometr qo'shamiz. O'rta oyoq analog pinga olib keladi A0 , qolgan ikkitasi esa 5 V va GND .

// константы


const int analogPin = A0; // порт для потенциометра
const int ledCount = 10; // число светодиодов на светодиодной шкале

int ledPins[] = {


2, 3, 4, 5, 6, 7, 8, 9, 10, 11 }; // массив портов, к которым привязаны светодиоды

void setup() {


// проходим через все элементы массива и устанавливаем режим для вывода
for (int thisLed = 0; thisLed < ledCount; thisLed++) {
pinMode(ledPins[thisLed], OUTPUT);
}
}

void loop() {


// считываем сигнал с потенциометра
int sensorReading = analogRead(analogPin);
// трансформируем результат в диапазон от 0 до 10 (по числу светодиодов)
int ledLevel = map(sensorReading, 0, 1023, 0, ledCount);

// проходим через массив светодиодов


for (int thisLed = 0; thisLed < ledCount; thisLed++) {
// если индекс элемента массива меньше чем ledLevel,
// включаем порт для данного элемента:
if (thisLed < ledLevel) {
digitalWrite(ledPins[thisLed], HIGH);
}
// Выключаем все порты, которые выше чем ledLevel:
else {
digitalWrite(ledPins[thisLed], LOW);
}
}
}
Ushbu misol bir diapazonning qiymatlarini boshqa diapazonning qiymatlariga mutanosib ravishda xaritalash uchun mo'ljallangan map() funktsiyasi bilan qiziq . Biz bilamizki, potansiyometr 0 dan 1023 gacha natijalarni chiqarishi mumkin va bizda faqat o'nta LED bor. Funktsiya o'zgartirishda bizga yordam beradi.

int ledLevel = map(sensorReading, 0, 1023, 0, ledCount);


Barcha qiymatlar 0 dan 10 gacha teng taqsimlanadi (har bir birlik uchun taxminan 102 potansiyometr birligi). Tasavvur qilaylik, bizda funktsiyani qo'llashdan keyin 1 qiymatiga mos keladigan 110 birlik qiymatini ko'rsatadigan potansiyometr bor. Massivdagi birinchi LED 0 qiymatiga ega, ya'ni. 1 dan kam. Birinchi LED yonadi, qolganlari esa o'chadi (agar ular ilgari yoqilgan bo'lsa). Potansiyometr tugmachasini burish orqali biz qiymatlarni oshiramiz va shunga mos ravishda LEDlar sonini ko'paytiramiz. Potansiyometr tugmachasini teskari yo'nalishda aylantirib, biz LEDlarning sonini kamaytiramiz. Natijalarni kuzatish uchun kodga Serial port monitoringini qo'shing

int ledLevel = map(sensorReading, 0, 1023, 0, ledCount);



Download 162.2 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5




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