Mündəricat:
- Addım 1: Kabel çəkmə
- Addım 2: Hamar səs -küy
- Addım 3: Hamar səs -küydən istifadə edərək təsirlər
- Addım 4: Təsadüfi Gradient Efektləri
- Addım 5: Son nəticə
Video: Arduino TFT Gökkuşağı səs -küy ekranı: 5 addım
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:46
Bu göy qurşağı layihəsini nəzarət edilən təsadüfi effektlər yaradan müxtəlif 'səs -küy' üsullarından istifadə edərək yaratdıq. Bir az rəng əlavə edərək göy qurşağı effekti yarana bilər. Arduino Nano və 128x128 OLED ekrandan istifadə edir. Efektləri TFT kitabxanasından istifadə edərək nümayiş etdirdik. Çörək taxtası və bir neçə tel kimi müxtəlif komponentlərdən də istifadə etdik.
Addım 1: Kabel çəkmə
Ən əsas vəzifə OLED -nin Arduino -ya qoşulması idi. GND və VCC -ni çörək lövhəsindəki müvafiq avtobuslara bağladıq; SCL rəqəmsal pin 13 -ə; SDA rəqəmsal pin 11; Rəqəmsal pin 8 -ə RES; DC -dən rəqəmsal pin 9 -a; CS rəqəmsal pin 10 -a və nəhayət Arduino -da 3.3V -ə qədər BL. Arduinonun 5v və GND pinlərindən istifadə edərək bütün çörək lövhəsinə enerji verə bildik.
Addım 2: Hamar səs -küy
TFT ekranı üçün tələbləri başladıqdan sonra. Hamar səs effekti yaratmaq üçün əvvəlcə əsas səs -küy funksiyasına ehtiyacımız var. Bu, verilən x və y dəyərlərinə əsaslanaraq 0 ilə 1 arasında nisbətən təsadüfi bir dəyər qaytarır. Qeyd etmək vacibdir ki, kompüter heç vaxt həqiqətən təsadüfi bir nəticə verə bilməz və bu təsadüfiyyətə yalnız sayı mümkün qədər dəyişdirməklə nail olunur., buna görə də tənlikdəki çox böyük ədədlər.
float səs (int x, int y) {int n; n = x + y * 57; n += (n << 13) ^ n; qayıt (1.0 - ((n * ((n * n * 15731) + 789221) + 1376312589) & 0x7fffffff) / 1073741824.0); }
Daha sonra səs -küyü başqa bir funksiya ilə 'hamarlaşdırırıq'. Bu, yalnız funksiyaya verilən koordinatın nəticəsinə deyil, həm də ətrafdakı koordinatlara əsaslanan bir dəyər istehsal etməklə əldə edilir. Bunun nəticəsində bir -birinə yaxın olan koordinatlar oxşar bir dəyər yaradır.
float smoothNoise (float x, float y) {float fractX = x - (int) x; float fractY = y - (int) y; int x1 = ((int) (x) + səs genişliyi) % səs genişliyi; int y1 = ((int) (y) + səs -küy hündürlüyü) % səs -küy; int x2 = (x1 + noiseWidth - 1) % noiseWidth; int y2 = (y1 + noiseHeight - 1) % noiseHeight; float dəyəri = 0.0f; dəyər += fractX * fractY * səs -küy (x1, y1); dəyər += (1 - fractX) * fractY * səs -küy (x2, y1); dəyər += fractX * (1 - fractY) * səs -küy (x1, y2); dəyər += (1 - fractX) * (1 - fractY) * səs -küy (x2, y2); qaytarma dəyəri; }
Addım 3: Hamar səs -küydən istifadə edərək təsirlər
Bununla iki effekt yaratdıq. Bunun üçün OLED üzərindəki hər bir pikseldən keçdik və bu piksellərin x və y koordinatlarına əsaslanaraq təsadüfi səs -küy dəyərini götürdük. Bu effektdən birincisi, bir rəng seçmək üçün yaradılan dəyəri istifadə edərək istehsal etdik və bu pikseli yuxarıda göstərilən rənglə rəngləndirdik. İkinci effekt də oxşar şəkildə istehsal edildi, amma biz də rəngi yaranan səs -küy dəyərinə vurduq. Bu nümunəyə daha kölgəli bir təsir verdi. İstifadə olunan kod aşağıda göstərilmişdir:
void Noise2n3 (bool Noisy) {for (int y = 0; y <noiseHeight; y ++) {for (int x = 0; x 8) absNoise = 8; əgər (Səsli) setNoisyColour (rənglər [absNoise], səs -küy); başqa setBlockColour (rənglər [absNoise]); TFTscreen.point (x, y); }}} boş setNoisyColour (Rəng rəngi, üzən səs -küy) {TFTscreen.stroke (rəng.qırmızı * səs -küy, rəng.green * səs -küy, rəng.mavi * səs -küy); } etibarsız setBlockColour (Rəng rəngi) {TFTscreen.stroke (colour.red, colour.green, colour.blue); }
Addım 4: Təsadüfi Gradient Efektləri
Təsadüfi bir gradient yaradan iki təsir var. İlk təsir, pikselləri rgb rənglərinə görə yerləşdirir və yavaş -yavaş ekrana bir gradient nümunəsi verir. İkincisi, birincisi ilə eyni rəngli pikselləri istifadə edir, lakin ekran boyunca diaqonal bir qradiyent yaradaraq onları sabit bir qaydada yerləşdirir.
Budur birincisi (rənglərə görə):
void Noise1 () {for (int z = 0; z <3; z ++) {TFTscreen.background (0, 0, 0); int CurrentColour [3] [3] = {{64, 35, 26}, {24, 64, 34}, {20, 18, 64}}; R = CurrentColour [z] [0]; G = CurrentColour [z] [1]; B = CurrentColour [z] [2]; for (int x = 0; x <128; x ++) {for (int y = 0; y <128; y ++) {int R_Lower = R - ((x+y) / 4); əgər (R_Lower = 255) {R_Higher = 254; } int R_Offset = təsadüfi (R_Lower, R_Higher); int G_Lower = G - ((x + y) / 4); əgər (G_Lower = 255) {G_Higher = 254; } int G_Offset = təsadüfi (G_Lower, G_Higher); int B_Lower = B - ((x + y) / 4); əgər (B_Lower <1) {B_Lower = 0; } int B_Higher = B + ((x + y) / 4); əgər (B_Higher> = 255) {B_Higher = 254; } int B_Offset = təsadüfi (B_Lower, B_Higher); int mult = 2; əgər (z == 1) mult = 1; TFTscreen.stroke (R_Offset * çoxlu, G_Offset * çoxlu, B_Offsetli * çoxlu); TFTscreen.point ((R_Offset * (B_Offset / 32)), (G_Offset * (B_Offset / 32))); TFTscreen.point ((G_Offset * (B_Offset / 32)), (R_Offset * (B_Offset / 32))); TFTscreen.point ((B_Offset * (G_Offset / 32)), (R_Offset * (G_Offset / 32))); }}}}
İkincisi (daha nizamlı təsir):
void Noise4 () {for (int z = 0; z <3; z ++) {TFTscreen.background (0, 0, 0); int CurrentColour [3] [3] = {{64, 35, 26}, {24, 64, 34}, {20, 18, 64}}; R = CurrentColour [z] [0]; G = CurrentColour [z] [1]; B = CurrentColour [z] [2]; for (int x = 0; x <128; x ++) {for (int y = 0; y <128; y ++) {int R_Lower = R - ((x+y) / 4); əgər (R_Lower = 255) {R_Higher = 254; } int R_Offset = təsadüfi (R_Lower, R_Higher); int G_Lower = G - ((x + y) / 4); əgər (G_Lower = 255) {G_Higher = 254; } int G_Offset = təsadüfi (G_Lower, G_Higher); int B_Lower = B - ((x + y) / 4); əgər (B_Lower <1) {B_Lower = 0; } int B_Higher = B + ((x + y) / 4); əgər (B_Higher> = 255) {B_Higher = 254; } int B_Offset = təsadüfi (B_Lower, B_Higher); int mult = 2; əgər (z == 1) mult = 1; TFTscreen.stroke (R_Offset * çoxlu, G_Offset * çoxlu, B_Offsetli * çoxlu); TFTscreen.point (x, y); }}}}
Addım 5: Son nəticə
Sonda bu təsirləri bir növ göy qurşağı 'slayd şousu' na birləşdirdik. Buna nail olmaq üçün hər bir funksiyanı bir müddət sonra bir -birinin ardınca çağırdıq:
while (true) {Noise2n3 (false); Noise2n3 (doğru); TFTscreen.background (0, 0, 0); Səs -küy1 (); Səs -küy4 (); }
Tövsiyə:
Raspberry Pi Ekranı və Toxunma Ekranı: 4 Addım
Raspberry Pi Ekranı və Toxunma Ekranı Döndür: Bu, Buster Raspbian əməliyyat sistemi ilə işləyən hər hansı bir Raspberry Pi üçün ekranı və toxunma girişini necə döndərəcəyinizi göstərmək üçün əsas bir təlimatdır, amma Jessie -dən bəri bu üsuldan istifadə edirəm. Burada istifadə olunan şəkillər bir Raspberry Pi -dən
Səs/Səs Səviyyə Göstəricisi: 10 addım
Səs/Səs Səviyyə Göstəricisi: Bu layihədə, əməliyyat gücləndiricilərindən istifadə edərək sadə bir səs səviyyəsi göstəricisi qurmağı sizə göstərəcəyəm. Qeyd: Sual vermək üçün zəhmət olmasa Ekspertdən soruşun saytına daxil olun.Faydalı Əlavə Videolar: Çörək lövhəsində simulyasiya edilmiş dövrə (Proto
Səs Gücləndiricisində Səs, Bas və Tiz Dövrü: 11 Addım
Səs Gücləndiricisində Həcm, Bass və Tiz Dövrə: Salam dostum, Bu gün Səs, bas və Tizdən ibarət bir dövrə hazırlayacağam. Bu dövrə gücləndiricinin və basın həcmini idarə edəcək, həmçinin gücləndiricinin zirvəsini də idarə edəcək. dövrə yalnız bir kanallı audio ampl üçün olacaq
Arduino və TFT Ekranından istifadə edərək real vaxt saatı necə etmək olar - 3.5 düymlük TFT ekranı olan Arduino Mega RTC: 4 addım
Arduino və TFT Ekranından istifadə edərək real vaxt saatı necə etmək olar | 3.5 düymlük TFT ekranlı Arduino Mega RTC: Youtube kanalımı ziyarət edin. Giriş:- Bu yazıda 3,5 düymlük TFT toxunma LCD, Arduino Mega istifadə edərək "Real vaxt saatı" hazırlayacağam. 2560 və DS3231 RTC modulu… .Başlamadan əvvəl… YouTube kanalımdakı videonu yoxlayın .. Qeyd:- Arduin istifadə edirsinizsə
MOSFET Səs Gücləndiricisi (Aşağı Səs və Yüksək Qazanc): 6 Addım (Şəkillərlə)
MOSFET Səs Gücləndiricisi (Aşağı Səs və Yüksək Qazanc): Salam uşaqlar! Bu layihə MOSFET -lərdən istifadə edərək Aşağı Güclü Səs gücləndiricisinin dizaynı və tətbiqidir. Dizayn mümkün olduğu qədər sadədir və komponentlər asanlıqla əldə edilə bilər. Özüm çox şey yaşadığım üçün bu təlimatı yazıram