O‘ZBEKISTON RESPUBLIKASI
RAQAMLI TEXNOLOGIYALARI VAZIRLIGI
MUHAMMAD AL-XORAZMIY NOMIDAGI
TOSHKENT AXBOROT TEXNOLOGIYALARI UNIVERSITETI
“O‘rnatilgan tizimlar”
fanidan
LABORATORIYA
TOPSHIRIQ №2
Bajardi: ____811 20____-guruh talabasi
_ _ Rustamov Sherzod _______________________
Qabul qildi: Jurayev D.B.
Toshkent 2023
2-variant
3
|
3 ta tugma orqali RGB modulida boshqa ranglarni hosil qilish. (tugmaning qadamlar uzunligi 10 ga teng)
|
3.Rustamov Sherzodbek Otabek o‘g‘li
|
Komponentlar talab qilinadi
Sizga quyidagi komponentlar kerak bo'ladi -
1 × Arduino Uno R3
1 × RGB(yorug‘lik diodi)
3 × Button(tugma)
1 × 330 Ō qarshilik
8 × simlar
Arduino UNO - bu elektronika va kodlashni boshlash uchun eng yaxshi taxtali. Agar bu sizning platforma bilan ishlashda birinchi tajribangiz bo'lsa, UNO siz o'ynashni boshlashingiz mumkin bo'lgan eng mustahkam taxtadir. UNO butun Arduino oilasining eng ko'p ishlatiladigan va hujjatlashtirilgan kengashidir.
RGB ( inglizcha r ed, green , b lue - qizil , yashil , ko'k so'zlarining qisqartmasi ) yoki KZS qo'shimcha rang modeli bo'lib , odatda asosiy deb ataladigan uchta rang yordamida ranglarni ko'paytirish uchun ranglarni kodlash usulini tavsiflaydi . Asosiy ranglarni tanlash inson ko'zining to'r pardasi tomonidan rangni idrok etish fiziologiyasi bilan bog'liq.
Bosish tugmasi (shuningdek, bosish tugmasi) yoki oddiy tugma - bu mashina yoki jarayonning ba'zi jihatlarini boshqarish uchun oddiy almashtirish mexanizmi. Tugmalar odatda qattiq materialdan, odatda plastik yoki metalldan tayyorlanadi.[1] Sirt odatda tekis yoki odamning barmog'i yoki qo'lini joylashtirish uchun shakllangan bo'lib, osongina bosilishi yoki itarilishi mumkin. Tugmalar ko'pincha bir tomonlama kalitlardir, garchi ko'plab noaniq tugmalar (jismoniy tabiati tufayli) hali ham bosilmagan holatiga qaytish uchun buloqni talab qiladi. Tugmachani "bosish" atamalariga bosish, bosish, maydalash, urish, urish va urish kiradi.
Rezistorlar kabi komponentlar ulash paneli rozetkalarini to'g'ri joylashtirish uchun terminallarini 90 ° burchakka egilgan bo'lishi kerak. Bundan tashqari, qarshilikni qisqartirishingiz mumkin.
My project: https://wokwi.com/projects/306461175146611264
const int rgbPins[] = { 11, 10, 9};
const int buttonPins[] = { 4, 3, 2};
float newStatus = 50.0;
float filteredStatus = 50.0;
float x = -0.5;
unsigned long previousMillis;
const unsigned long interval = 40;
void setup()
{
for( int i=0; i<3; i++)
pinMode( rgbPins[i], OUTPUT);
for( int i=0; i<3; i++)
pinMode( buttonPins[i], INPUT_PULLUP);
}
void loop()
{
unsigned long currentMillis = millis();
if( digitalRead(buttonPins[0]) == LOW)
newStatus = 100.0;
if( digitalRead(buttonPins[1]) == LOW)
newStatus = 50.0;
if( digitalRead(buttonPins[2]) == LOW)
newStatus = 0.0;
if( currentMillis - previousMillis >= interval)
{
previousMillis = currentMillis;
const float pct = 1.8;
filteredStatus = (( 1.0 - (pct / 100.0)) * filteredStatus) + (pct / 100.0 * newStatus);
float r, g, b;
float f;
if( filteredStatus < 50.0)
{
r = 0.0;
g = filteredStatus / 50.0;
b = 1.0 - g;
f = 0.5 + (g / 2);
}
else
{
r = (filteredStatus - 50.0) / 50.0;
g = 1.0 - r;
b = 0.0;
f = 1.0 + (2 * r);
}
float y = expf( -50.0 * squaref( x));
x += f * float( interval) / 1000.0;
if( x >= 0.5)
x -= 1.0;
// didn't look good.
int pwmR = (int) round( 1.0 + (r * y * 254.0));
int pwmG = (int) round( 1.0 + (g * y * 254.0));
int pwmB = (int) round( 1.0 + (b * y * 254.0));
analogWrite( rgbPins[0], pwmR);
analogWrite( rgbPins[1], pwmG);
analogWrite( rgbPins[2], pwmB);
}
}
Do'stlaringiz bilan baham: |