Përmbajtje:
- Hapi 1: Instalimet elektrike
- Hapi 2: Zhurmë e qetë
- Hapi 3: Efektet duke përdorur Zhurmë të Qetë
- Hapi 4: Efektet e Gradientit të Rastit
- Hapi 5: Rezultati Përfundimtar
Video: Arduino TFT Rainbow Noise Display: 5 hapa
2024 Autor: John Day | [email protected]. E modifikuara e fundit: 2024-01-30 12:19
Ne e krijuam këtë projekt ylber duke përdorur teknika të ndryshme 'zhurmë', të cilat krijojnë efekte të kontrolluara të rastit. Duke shtuar pak ngjyrë, mund të prodhohet një efekt ylberi. Përdor një Arduino Nano dhe një ekran OLED 128x128. Ne shfaqëm efektet duke përdorur bibliotekën TFT. Ne gjithashtu përdorëm disa përbërës të ndryshëm si një dërrasë bukë dhe disa tela.
Hapi 1: Instalimet elektrike
Detyra më themelore ishte lidhja e OLED në Arduino. Ne lidhëm GND dhe VCC me autobusët përkatës në tabelën e bukës; SCL në pinin digjital 13; SDA në pinin dixhital 11; BRE në pinin dixhital 8; DC në pinin dixhital 9; CS në pinin dixhital 10 dhe në fund BL në 3.3V në Arduino. Duke përdorur kunjat 5v dhe GND nga Arduino ne ishim në gjendje të fuqizonim të gjithë tabelën e bukës.
Hapi 2: Zhurmë e qetë
Pas fillimit të kërkesave për ekranin TFT. Për të krijuar efektin e qetë të zhurmës, ne së pari kishim nevojë për një funksion bazë të zhurmës. Kjo kthen një vlerë relativisht të rastësishme midis 0 dhe 1 bazuar në vlerat x dhe y të kaluara. Isshtë e rëndësishme të theksohet se një kompjuter nuk mund të prodhojë kurrë një rezultat vërtet të rastit, dhe ky rastësi arrihet thjesht duke ndryshuar numrin sa më shumë që të jetë e mundur, pra numrat shumë të mëdhenj në ekuacion.
zhurma notuese (int x, int y) {int n; n = x + y * 57; n += (n << 13] ^ n; kthimi (1.0 - ((n * ((n * n * 15731) + 789221) + 1376312589) & 0x7fffffff) / 1073741824.0); }
Ne pastaj 'zbutim' zhurmën me një funksion tjetër. Kjo arrihet duke prodhuar një vlerë të bazuar jo vetëm në rezultatin nga koordinata e kaluar në funksion, por edhe koordinatat përreth. Si rezultat i kësaj, koordinatat pranë njëri -tjetrit prodhojnë një vlerë të ngjashme.
noton smoothNoise (noton x, noton y) {noton fractX = x - (int) x; Float fractY = y - (int) y; int x1 = ((int) (x) + zhurmë Gjerësia) % zhurmë Gjerësia; int y1 = ((int) (y) + zhurmëHeight) % zhurmëHeight; int x2 = (x1 + zhurmë Gjerësia - 1) % zhurmë Gjerësia; int y2 = (y1 + zhurmëLartësia - 1) % zhurmëLartësia; vlera notuese = 0.0f; vlera += fractX * fractY * zhurma (x1, y1); vlera += (1 - fractX) * zhurmë fractY * (x2, y1); vlera += fractX * (1 - fractY) * zhurmë (x1, y2); vlera += (1 - fractX) * (1 - fractY) * zhurmë (x2, y2); vlera e kthimit; }
Hapi 3: Efektet duke përdorur Zhurmë të Qetë
Me këtë krijuam dy efekte. Për ta bërë këtë, ne kaluam secilën piksel në OLED dhe morëm një vlerë të rastësishme të zhurmës bazuar në koordinatat x dhe y të këtyre pikselave. I pari nga këto efekte ne prodhuam duke përdorur vlerën e gjeneruar për të zgjedhur një ngjyrë dhe e ngjyrosëm atë piksel me ngjyrën e lartpërmendur. Efekti i dytë u prodhua në një mënyrë të ngjashme, por ne gjithashtu shumëzuam ngjyrën me vlerën e gjeneruar të zhurmës. Kjo i dha modelit një efekt më të errët. Kodi i përdorur është treguar më poshtë:
zbrazët Zhurmë2n3 (bool Zhurmshme) {për (int y = 0; y <zhurmëHeight; y ++) {për (int x = 0; x 8) absNoise = 8; nëse (Zhurmshme) setNoisyColour (ngjyrat [absNoise], zhurma); tjetër setBlockColour (ngjyrat [absNoise]); TFTscreen.point (x, y); }}} void setNoisyColour (Ngjyra e ngjyrave, zhurma e notimit) {TFTscreen.stroke (zhurma e ngjyrës së kuqe *, zhurma e ngjyrës së gjelbër *, ngjyra.blue * zhurma); } void setBlockColour (Color color) {TFTscreen.stroke (colour.red, colour.green, colour.blue); }
Hapi 4: Efektet e Gradientit të Rastit
Ekzistojnë dy efekte që prodhojnë një gradient të rastit. Efekti i parë i vendos pikselët në lidhje me ngjyrën e tyre rgb, duke bërë ngadalë një model gradienti në ekran. E dyta përdor të njëjtat pixel me ngjyra si e para, por i vendos ato në një rend fiks, duke krijuar një gradient diagonal përgjatë ekranit.
Këtu është e para (bazuar në ngjyrat):
void Zhurma1 () {për (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 = Ngjyra aktuale [z] [0]; G = Ngjyra aktuale [z] [1]; B = Ngjyra aktuale [z] [2]; për (int x = 0; x <128; x ++) {për (int y = 0; y <128; y ++) {int R_Lower = R - ((x+y) / 4); nëse (R_Lower = 255) {R_Higher = 254; } int R_Offset = rastësor (R_Lower, R_Higher); int G_Lower = G - ((x + y) / 4); nëse (G_Lower = 255) {G_Higher = 254; } int G_Offset = rastësor (G_Lower, G_Higher); int B_Lower = B - ((x + y) / 4); nëse (B_Lower <1) {B_Lower = 0; } int B_Higher = B + ((x + y) / 4); nëse (B_Higher> = 255) {B_Higher = 254; } int B_Offset = rastësor (B_Lower, B_Higher); int mult = 2; nëse (z == 1) mult = 1; TFTscreen.stroke (R_Offset * mult, G_Offset * mult, B_Offset * mult); 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))); }}}}
Dhe e dyta (efekti më i rregullt):
void Zhurma4 () {për (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 = Ngjyra aktuale [z] [0]; G = Ngjyra aktuale [z] [1]; B = Ngjyra aktuale [z] [2]; për (int x = 0; x <128; x ++) {për (int y = 0; y <128; y ++) {int R_Lower = R - ((x+y) / 4); nëse (R_Lower = 255) {R_Higher = 254; } int R_Offset = rastësor (R_Lower, R_Higher); int G_Lower = G - ((x + y) / 4); nëse (G_Lower = 255) {G_Higher = 254; } int G_Offset = rastësor (G_Lower, G_Higher); int B_Lower = B - ((x + y) / 4); nëse (B_Lower <1) {B_Lower = 0; } int B_Higher = B + ((x + y) / 4); nëse (B_Higher> = 255) {B_Higher = 254; } int B_Offset = rastësor (B_Lower, B_Higher); int mult = 2; nëse (z == 1) mult = 1; TFTscreen.stroke (R_Offset * mult, G_Offset * mult, B_Offset * mult); TFTscreen.point (x, y); }}}}
Hapi 5: Rezultati Përfundimtar
Në fund, ne i kombinuam këto efekte në një lloj 'shfaqjeje rrëshqitëse' të ylberëve. Për ta arritur këtë, ne thjesht e quajtëm secilin funksion pas tjetrit në një lak:
ndërsa (e vërtetë) {Zhurma2n3 (e rreme); Zhurma2n3 (e vërtetë); TFTscreen. sfond (0, 0, 0); Zhurma 1 (); Zhurmë4 (); }
Recommended:
Usare Un Display Grande a 4 Cifre 8886 Display Con Wemos ESP8266 Arduino NodeMCU: 6 hapa
Usare Un Display Grande a 4 Cifre 8886 Display Con Wemos ESP8266 Arduino NodeMCU: Questo progetto è un semplice esempio che mostra vijnë në kolegë dhe nuk shfaqen në tipo 8886 -Display e, sipas komoditetit tuaj, pa Wemos D1 - ma potrebbe essere un Arduino o un N o cilsiasi altro microcontrollore che state usando per un progetto.Esi
Magjia përgjigjet me topin me Arduino Pro Mini dhe TFT Display: 7 hapa
Magjia i përgjigjet topit me Arduino Pro Mini dhe TFT Display: Pak kohë më parë, vajza ime dhe unë hoqëm një top Magic 8 në mënyrë që ajo të mund të zëvendësonte njëzet përgjigjet me zgjedhjen e saj. Kjo ishte një dhuratë për një mik të saj. Kjo më bëri të mendoj se si ta bëj atë në një shkallë më të madhe. A mund të kemi shumë m
Neopixel Ws2812 Rainbow LED shkëlqim me M5stick-C - Running Rainbow në Neopixel Ws2812 Duke përdorur M5stack M5stick C Duke përdorur Arduino IDE: 5 hapa
Neopixel Ws2812 Rainbow LED Shkëlqen Me M5stick-C | Running Rainbow në Neopixel Ws2812 Duke përdorur M5stack M5stick C Duke përdorur Arduino IDE: Përshëndetje djema në këtë udhëzues do të mësojmë se si të përdorim LED neopixel ws2812 ose shirit led ose matricë led ose unazë led me bordin e zhvillimit m5stack m5stick-C me Arduino IDE dhe ne do të bëjmë një model ylberi me të
Oceania Midi Controller (për Make Noise 0-Coast dhe Synths të tjerë): 6 hapa (me fotografi)
Oceania Midi Controller (për Make Noise 0-Coast dhe Synths të tjerë): Në vitet e fundit, një numër prodhues sintetizuesish kanë lëshuar " desktop gjysmë modular &desktop; instrumentet. Ato në përgjithësi marrin të njëjtin faktor të formës si formati modular i sintetizatorit Eurorack dhe shumica ndoshta kanë për qëllim si një
Si të bëni orë në kohë reale duke përdorur ekranin Arduino dhe TFT - Arduino Mega RTC me ekran TFT 3.5 inç: 4 hapa
Si të bëni orë në kohë reale duke përdorur ekranin Arduino dhe TFT | Arduino Mega RTC me ekran TFT 3.5 inç: Vizitoni kanalin tim në Youtube. Hyrje:- Në këtë postim do të bëj "Ora në kohë reale" duke përdorur LCD me prekje 3.5 inç TFT, Arduino Mega Moduli 2560 dhe DS3231 RTC…. Para fillimit… shikoni videon nga kanali im në YouTube..Shënim:- Nëse jeni duke përdorur Arduin