![Arduino TFT кемпірқосақ шу дисплейі: 5 қадам Arduino TFT кемпірқосақ шу дисплейі: 5 қадам](https://i.howwhatproduce.com/images/002/image-5791-17-j.webp)
Мазмұны:
2025 Автор: John Day | [email protected]. Соңғы өзгертілген: 2025-01-23 14:51
![Image Image](https://i.howwhatproduce.com/images/002/image-5791-19-j.webp)
![](https://i.ytimg.com/vi/i3QHqFayM3w/hqdefault.jpg)
![Тегіс шуды қолданатын әсерлер Тегіс шуды қолданатын әсерлер](https://i.howwhatproduce.com/images/002/image-5791-20-j.webp)
Біз бұл кемпірқосақ жобасын бақыланатын кездейсоқ әсерлер туғызатын түрлі «шу» әдістерін қолдана отырып құрдық. Түсті қосу арқылы кемпірқосақ әсерін алуға болады. Ол Arduino Nano мен 128x128 OLED дисплейді қолданады. Біз эффектілерді TFT кітапханасының көмегімен көрсеттік. Біз сонымен қатар нан тақтасы мен бірнеше сым сияқты әртүрлі компоненттерді қолдандық.
1 -қадам: Сымдарды жалғау
Ең негізгі міндет - OLED -ді Arduino -ға қосу. Біз GND мен VCC -ті нан тақтасындағы тиісті автобустарға қостық; SCL цифрлық пинге 13; SDA цифрлық пинге 11; RES цифрлық пинге 8; Тұрақты ток - цифрлық түйреуіш 9; CS 10 цифрлық түйреуішіне және ақырында Arduino -дағы 3.3 В -қа дейін. Arduino 5v және GND түйреуіштерін қолдана отырып, біз нан тақтасын толық қуаттай алдық.
2 -қадам: тегіс шу
TFT дисплейіне қойылатын талаптарды инициализациялағаннан кейін. Тегіс шу әсерін жасау үшін бізге алдымен негізгі шу функциясы қажет болды. Бұл x және y мәндеріне негізделген 0 мен 1 арасындағы салыстырмалы кездейсоқ мәнді қайтарады. Айта кету керек, компьютер ешқашан кездейсоқ нәтиже бере алмайды, және бұл кездейсоқтыққа мүмкін болатын санды өзгерту арқылы қол жеткізіледі., демек, теңдеудегі өте үлкен сандар.
өзгермелі шу (int x, int y) {int n; n = x + y * 57; n += (n << 13) ^ n; қайтару (1.0 - ((n * ((n * n * 15731) + 789221) + 1376312589) & 0x7fffffff) / 1073741824.0); }
Содан кейін біз шуды басқа функциямен «тегістейміз». Бұған функцияға берілген координатаның нәтижесіне ғана емес, сонымен қатар айналадағы координаттарға негізделген мәнді шығару арқылы қол жеткізіледі. Нәтижесінде бір -біріне жақын орналасқан координаттар ұқсас мән береді.
float smoothNoise (float x, float y) {float fractX = x - (int) x; float fractY = y - (int) y; int x1 = ((int) (x) + шуылдың ені) % шу Ені; int y1 = ((int) (y) + шуыл Биіктігі) % шу Биіктігі; int x2 = (x1 + noiseWidth - 1) % noiseWidth; int y2 = (y1 + noiseHeight - 1) % шуHeight; өзгермелі мән = 0.0f; мән += fractX * fractY * шу (x1, y1); мән += (1 - fractX) * fractY * шу (x2, y1); мән += fractX * (1 - fractY) * шу (x1, y2); мән += (1 - fractX) * (1 - fractY) * шу (x2, y2); қайтару құны; }
3 -қадам: тегіс шуды қолданатын әсерлер
![Тегіс шуды қолданатын әсерлер Тегіс шуды қолданатын әсерлер](https://i.howwhatproduce.com/images/002/image-5791-21-j.webp)
Осының арқасында біз екі эффект жасадық. Ол үшін біз OLED -дегі әрбір пиксельді айналдырдық және осы пиксельдердің x және y координаталарына негізделген кездейсоқ шу мәнін алдық. Бұл әсердің біріншісі біз түс таңдау үшін алынған мәнді қолдану арқылы шығардық және осы пиксельді жоғарыда көрсетілген түспен боядық. Екінші эффект дәл осылай шығарылды, бірақ біз түстерді шудың мәніне көбейттік. Бұл үлгінің көлеңкелі әсерін берді. Қолданылатын код төменде көрсетілген:
void Noise2n3 (bool Noisy) {for (int y = 0; y <noiseHeight; y ++) {for (int x = 0; x 8) absNoise = 8; if (Шулы) setNoisyColour (түстер [absNoise], шу); else setBlockColour (түстер [absNoise]); TFTscreen.point (x, y); }}} void setNoisyColour (Түс түсі, өзгермелі шу) {TFTscreen.stroke (colour.red * шу, colour.green * шу, colour.blue * шу); } жарамсыз setBlockColour (Түс түсі) {TFTscreen.stroke (colour.red, colour.green, colour.blue); }
4 -қадам: кездейсоқ градиент әсерлері
![Кездейсоқ градиент әсерлері Кездейсоқ градиент әсерлері](https://i.howwhatproduce.com/images/002/image-5791-22-j.webp)
![Кездейсоқ градиент әсерлері Кездейсоқ градиент әсерлері](https://i.howwhatproduce.com/images/002/image-5791-23-j.webp)
![Кездейсоқ градиент әсерлері Кездейсоқ градиент әсерлері](https://i.howwhatproduce.com/images/002/image-5791-24-j.webp)
Кездейсоқ градиент шығаратын екі әсер бар. Бірінші эффект пикселдерді rgb түсіне қатысты орналастырады, экранға градиент үлгісін баяу көрсетеді. Екіншісі біріншісімен бірдей түсті пиксельдерді пайдаланады, бірақ оларды экран бойынша диагональды градиент жасай отырып, белгіленген тәртіпте орналастырады.
Міне біріншісі (түстерге негізделген):
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); егер (R_Lower = 255) {R_Higher = 254; } int R_Offset = кездейсоқ (R_Lower, R_Higher); int G_Lower = G - ((x + y) / 4); егер (G_Lower = 255) {G_Higher = 254; } int G_Offset = кездейсоқ (G_Lower, G_Higher); int B_Lower = B - ((x + y) / 4); егер (B_Lower <1) {B_Lower = 0; } int B_Higher = B + ((x + y) / 4); егер (B_Higher> = 255) {B_Higher = 254; } int B_Offset = кездейсоқ (B_Lower, B_Higher); int mult = 2; егер (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))); }}}}
Ал екіншісі (неғұрлым реттелген әсер):
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); егер (R_Lower = 255) {R_Higher = 254; } int R_Offset = кездейсоқ (R_Lower, R_Higher); int G_Lower = G - ((x + y) / 4); егер (G_Lower = 255) {G_Higher = 254; } int G_Offset = кездейсоқ (G_Lower, G_Higher); int B_Lower = B - ((x + y) / 4); егер (B_Lower <1) {B_Lower = 0; } int B_Higher = B + ((x + y) / 4); егер (B_Higher> = 255) {B_Higher = 254; } int B_Offset = кездейсоқ (B_Lower, B_Higher); int mult = 2; егер (z == 1) mult = 1; TFTscreen.stroke (R_Offset * mult, G_Offset * mult, B_Offset * mult); TFTscreen.point (x, y); }}}}
5 -қадам: Қорытынды нәтиже
Ақыр соңында, біз бұл әсерлерді кемпірқосақтың «слайд -шоуына» айналдырдық. Бұған жету үшін біз әр функцияны уақытша циклде бірінен кейін бірін шақырдық:
while (true) {Noise2n3 (false); Noise2n3 (шын); TFTscreen.background (0, 0, 0); Шу1 (); Шу4 (); }
Ұсынылған:
TFT LCD дисплейі бар ауа сапасының қарапайым мониторингі- Ameba Arduino: 3 қадам
![TFT LCD дисплейі бар ауа сапасының қарапайым мониторингі- Ameba Arduino: 3 қадам TFT LCD дисплейі бар ауа сапасының қарапайым мониторингі- Ameba Arduino: 3 қадам](https://i.howwhatproduce.com/images/006/image-17293-j.webp)
TFT LCD дисплейі арқылы ауа сапасының қарапайым мониторингі-Амеба Ардуино: Кіріспе Енді адамдардың көпшілігі потенциалды COVID-19 вирус тасымалдаушысымен тығыз байланыста болмау үшін үйде отырғандықтан, ауа сапасы адамдардың әл-ауқатының маңызды факторына айналады, әсіресе тропикалық елдерде кондиционерді пайдалану-бұл қажет уақытта
Arduino Pro Mini мен TFT дисплейі бар сиқырлы жауаптар допы: 7 қадам
![Arduino Pro Mini мен TFT дисплейі бар сиқырлы жауаптар допы: 7 қадам Arduino Pro Mini мен TFT дисплейі бар сиқырлы жауаптар допы: 7 қадам](https://i.howwhatproduce.com/images/009/image-24930-j.webp)
Arduino Pro Mini мен TFT дисплейі бар сиқырлы жауаптар допы: Біраз уақыт бұрын қызым екеуміз Magic 8 допын бөліп алдық, ол жиырма жауапты өз қалауымен алмастырды. Бұл оның досына сыйлық болды. Бұл маған мұны кең ауқымда қалай жасау керектігін ойлады. Бізде көп нәрсе болуы мүмкін бе
TFT дисплейі бар Arduino RFID оқу құралы: 7 қадам
![TFT дисплейі бар Arduino RFID оқу құралы: 7 қадам TFT дисплейі бар Arduino RFID оқу құралы: 7 қадам](https://i.howwhatproduce.com/images/009/image-25844-j.webp)
TFT дисплейі бар Arduino RFID оқу құралы: Мен сізге осы нұсқаулықта TFT дисплейі бар жақсы RFID оқу құралы мен қабырғаға бекітуді қалай жасау керектігін көрсетемін. Сіз таңдаған MKR және біздің Ар
Толық кемпірқосақ әсері бар кемпірқосақ сөз сағаты және басқалары: 13 қадам (суреттермен)
![Толық кемпірқосақ әсері бар кемпірқосақ сөз сағаты және басқалары: 13 қадам (суреттермен) Толық кемпірқосақ әсері бар кемпірқосақ сөз сағаты және басқалары: 13 қадам (суреттермен)](https://i.howwhatproduce.com/images/003/image-8780-22-j.webp)
Толық кемпірқосақ әсері бар кемпірқосақ сөз сағаты және тағы басқалар: Мақсаттар1) Қарапайым2) Қымбат емес3) Мүмкіндігінше энергия үнемдейтін кемпірқосақ әсері бар кемпірқосақ сөз сағаты. Сөз сағатындағы смайлик. Қарапайым инфрақызыл қашықтан басқару пульті 03-nov-18 LDR жаңарту NeopixelsUpdate жарықтығын бақылау 01-қаң
Arduino мен TFT дисплейі арқылы нақты уақытты қалай жасауға болады - 3,5 дюймдік TFT дисплейі бар Arduino Mega RTC: 4 қадам
![Arduino мен TFT дисплейі арқылы нақты уақытты қалай жасауға болады - 3,5 дюймдік TFT дисплейі бар Arduino Mega RTC: 4 қадам Arduino мен TFT дисплейі арқылы нақты уақытты қалай жасауға болады - 3,5 дюймдік TFT дисплейі бар Arduino Mega RTC: 4 қадам](https://i.howwhatproduce.com/images/006/image-16956-9-j.webp)
Arduino мен TFT дисплейі көмегімен нақты уақытты қалай жасауға болады | 3,5 дюймдік TFT дисплейі бар Arduino Mega RTC: Менің Youtube каналыма кіріңіз. Кіріспе:- Бұл жазбада мен 3,5 дюймдік TFT сенсорлы СКД, Arduino Mega көмегімен «Нақты уақыттағы сағат» жасаймын. 2560 және DS3231 RTC модулі… .Бастамас бұрын… бейнесін менің YouTube каналымнан қараңыз .. Ескерту:- Егер сіз Arduin қолдансаңыз