ዝርዝር ሁኔታ:

አርዱዲኖ TFT ቀስተ ደመና ጫጫታ ማሳያ 5 ደረጃዎች
አርዱዲኖ TFT ቀስተ ደመና ጫጫታ ማሳያ 5 ደረጃዎች

ቪዲዮ: አርዱዲኖ TFT ቀስተ ደመና ጫጫታ ማሳያ 5 ደረጃዎች

ቪዲዮ: አርዱዲኖ TFT ቀስተ ደመና ጫጫታ ማሳያ 5 ደረጃዎች
ቪዲዮ: SKR 1.4 - Connecting any BTT Touch Screen Display to SKR 1.3/1.4 2024, ህዳር
Anonim
Image
Image
ለስላሳ ጫጫታ በመጠቀም ተፅእኖዎች
ለስላሳ ጫጫታ በመጠቀም ተፅእኖዎች

ቁጥጥር የተደረገ የዘፈቀደ ውጤቶችን የሚፈጥሩ የተለያዩ ‹ጫጫታ› ቴክኒኮችን በመጠቀም ይህንን ቀስተ ደመና ፕሮጀክት ፈጥረናል። የተወሰነ ቀለም በማከል የቀስተ ደመና ውጤት ሊፈጠር ይችላል። አርዱዲኖ ናኖ እና 128x128 OLED ማሳያ ይጠቀማል። የ TFT ቤተመጽሐፍት በመጠቀም ውጤቶቹን አሳይተናል። እንዲሁም እንደ ዳቦ ሰሌዳ እና ጥቂት ሽቦዎች ያሉ አንዳንድ ልዩ ልዩ ክፍሎችን ተጠቀምን።

ደረጃ 1 - ሽቦ

በጣም መሠረታዊው ሥራ የኦዴድ ሽቦ ወደ አርዱዲኖ ማስተላለፍ ነበር። እኛ GND እና VCC ን በዳቦ ሰሌዳ ላይ ከሚመለከታቸው አውቶቡሶች ጋር አገናኘን ፤ SCL ወደ ዲጂታል ፒን 13; ኤስዲኤ ወደ ዲጂታል ፒን 11; RES ወደ ዲጂታል ፒን 8; ዲሲ ወደ ዲጂታል ፒን 9; ሲኤስ ወደ ዲጂታል ፒን 10 እና በመጨረሻም በአርዱዲኖ ላይ ከ BL እስከ 3.3V ድረስ። ከአርዱዲኖ 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)); }

እኛ በሌላ ተግባር ጫጫታውን “ለስላሳ” እናደርጋለን። ይህ የተገኘው ወደ ተግባሩ ከተላለፈው አስተባባሪ በተገኘው ውጤት ላይ ብቻ ሳይሆን በዙሪያው ያሉ መጋጠሚያዎች ላይ የተመሠረተ እሴት በማምረት ነው። በዚህ ምክንያት እርስ በእርስ በአቅራቢያ ያሉ መጋጠሚያዎች ተመሳሳይ እሴት ያመርታሉ።

ተንሳፋፊ ለስላሳ ኖኢዝ (ተንሳፋፊ x ፣ ተንሳፋፊ y) {float fractX = x - (int) x; ተንሳፋፊ fractY = y - (int) y; int x1 = ((int) (x) + ጫጫታ ስፋት) % ጫጫታ ስፋት; int y1 = ((int) (y) + noiseHeight) % ጫጫታ ከፍታ; int x2 = (x1 + noiseWidth - 1) % ጫጫታ ስፋት; int y2 = (y1 + noiseHeight - 1) % ጫጫታ ከፍታ; ተንሳፋፊ እሴት = 0.0f; እሴት += fractX * fractY * ጫጫታ (x1 ፣ y1); እሴት += (1 - fractX) * fractY * ጫጫታ (x2 ፣ y1); እሴት += fractX * (1 - fractY) * ጫጫታ (x1 ፣ y2); እሴት += (1 - fractX) * (1 - fractY) * ጫጫታ (x2 ፣ y2); የመመለሻ ዋጋ; }

ደረጃ 3: ለስላሳ ጫጫታ በመጠቀም ተፅእኖዎች

ለስላሳ ጫጫታ በመጠቀም ውጤቶች
ለስላሳ ጫጫታ በመጠቀም ውጤቶች

በዚህ ሁለት ተፅእኖዎችን ፈጥረናል። ይህንን ለማድረግ እያንዳንዱን ፒክሴል በ OLED ላይ አዙረን በእነዚህ ፒክስሎች x እና y መጋጠሚያዎች ላይ በመመስረት የዘፈቀደ የድምፅ እሴት ወስደናል። ከነዚህ ውጤቶች የመጀመሪያው እኛ የመነጨውን እሴት በመጠቀም አንድ ቀለም ለመምረጥ እና ያንን ፒክሴል ከተጠቀሰው ቀለም ጋር ቀባነው። ሁለተኛው ውጤት በተመሳሳይ መንገድ ተመርቷል ፣ ግን እኛ በተፈጠረው የድምፅ እሴትም ቀለሙን አበዛን። ይህ ስርዓተ -ጥለቱን የበለጠ ጥላ እንዲኖረው አድርጓል። ጥቅም ላይ የዋለው ኮድ ከዚህ በታች ይታያል

ባዶ ጫጫታ 2n3 (bool Noisy) {ለ (int y = 0; y <noiseHeight; y ++) {ለ (int x = 0; x 8) absNoise = 8; ከሆነ (ጫጫታ) setNoisyColour (ቀለሞች [absNoise] ፣ ጫጫታ); ሌላ setBlockColour (ቀለሞች [absNoise]); TFTscreen.point (x, y); }}} ባዶ setNoisyColour (የቀለም ቀለም ፣ ተንሳፋፊ ጫጫታ) {TFTscreen.stroke (colour.red * ጫጫታ ፣ ባለቀለም። አረንጓዴ * ጫጫታ ፣ ባለቀለም። ሰማያዊ * ጫጫታ) ፤ } ባዶ setBlockColour (የቀለም ቀለም) {TFTscreen.stroke (colour.red, colour.green, colour.blue); }

ደረጃ 4 የዘፈቀደ የግራዲየንት ውጤቶች

የዘፈቀደ የግራዲየንት ውጤቶች
የዘፈቀደ የግራዲየንት ውጤቶች
የዘፈቀደ የግራዲየንት ውጤቶች
የዘፈቀደ የግራዲየንት ውጤቶች
የዘፈቀደ የግራዲየንት ውጤቶች
የዘፈቀደ የግራዲየንት ውጤቶች

የዘፈቀደ ቅልጥፍና የሚያመጡ ሁለት ውጤቶች አሉ። የመጀመሪያው ውጤት ፒክሴሎቹን ከ rgb ቀለማቸው ጋር በማያያዝ ቀስ በቀስ የግራዲንግ ንድፍ ወደ ማያ ገጹ ያቅርቡ። ሁለተኛው እንደ መጀመሪያው አንድ ዓይነት ቀለም ያላቸው ፒክሰሎችን ይጠቀማል ፣ ግን በማያ ገጹ ላይ ሰያፍ ቀስት በመፍጠር በቋሚ ቅደም ተከተል ያስቀምጧቸዋል።

የመጀመሪያው (በቀለሞቹ ላይ በመመስረት) እዚህ አለ

ባዶ ጫጫታ 1 () {ለ (int z = 0; z <3; z ++) {TFTscreen.background (0, 0, 0); int CurrentColour [3] [3] = {{64, 35, 26} ፣ {24, 64, 34} ፣ {20, 18, 64}}; አር = የአሁኑ ቀለም [z] [0]; G = የአሁኑ ቀለም [z] [1]; ለ = የአሁኑ ቀለም [z] [2]; ለ (int x = 0; x <128; x ++) {ለ (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) ብዙ = 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))); }}}}

እና ሁለተኛው (የበለጠ ሥርዓታዊ ውጤት)

ባዶ ድምጽ 4 () {ለ (int z = 0; z <3; z ++) {TFTscreen.background (0, 0, 0); int CurrentColour [3] [3] = {{64, 35, 26} ፣ {24, 64, 34} ፣ {20, 18, 64}}; አር = የአሁኑ ቀለም [z] [0]; G = የአሁኑ ቀለም [z] [1]; ለ = የአሁኑ ቀለም [z] [2]; ለ (int x = 0; x <128; x ++) {ለ (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) ብዙ = 1; TFTscreen.stroke (R_Offset * mult ፣ G_Offset * mult ፣ B_Offset * mult); TFTscreen.point (x, y); }}}}

ደረጃ 5: የመጨረሻው ውጤት

በመጨረሻም ፣ እነዚህን ተፅእኖዎች ወደ ቀስተ ደመና ቀስተ ደመናዎች ‹ተንሸራታች ትዕይንት› ዓይነት አጣመርናቸው። ይህንን ለማሳካት እያንዳንዱን ተግባር ከሌላው በኋላ በአጭር ጊዜ ውስጥ ጠራነው-

ሳለ (እውነት) {Noise2n3 (ሐሰት); ጫጫታ 2n3 (እውነት); TFTscreen.background (0, 0, 0); ጫጫታ 1 (); ጫጫታ 4 (); }

የሚመከር: