
Агуулгын хүснэгт:
2025 Зохиолч: John Day | [email protected]. Хамгийн сүүлд өөрчлөгдсөн: 2025-01-23 15:00

Энэ бол аналог загварын модон LED цаг юм. Яагаад эдгээрийн нэгийг нь өмнө нь харж байгаагүй юм бол бүү мэд.. дижитал төрлүүд маш түгээмэл байдаг. Ямар ч байсан, бид явцгаая!
1-р алхам:


Фанер цагны төсөл нь CNC чиглүүлэгчийн энгийн гарааны төслөөр эхэлсэн. Би онлайнаар энгийн төслүүдийг үзэж байгаад энэ чийдэнг олсон (дээрх зураг). Би бас модон өнгөлгөөөөр гэрэлтдэг дижитал цагийг харсан (дээрх зураг). Тиймээс хоёр төслийг нэгтгэх нь ойлгомжтой санаа байв. Өөрийгөө сорихыг хүсч байгаа тул би энэ төсөлд өнгөлгөө хийхгүй, зөвхөн мод ашиглахаар шийдсэн.
Алхам 2: Дизайн


Би Inkscape дээр цаг зохион бүтээсэн (дээрх зураг). Дизайн нь сонголтоороо маш энгийн. Утасны ул мөрийг чиглүүлэхгүй байхаар шийдсэн, учир нь энэ үед би радиаль эсвэл периметрийн утсаар явахыг хүсч байгаагаа мэдэхгүй байсан. (Би эцэст нь периметрийн утастай холбохоор шийдсэн.) Нэг дугуйны нүх тус бүрт нэг минутанд, нэг цагт таван минутын нарийвчлалтайгаар харуулах нэг непиксел ордог. Цахилгаан хэрэгслийг байрлуулахын тулд дунд хэсэгт байгаа тойргийг гадагшлуулах болно.
Алхам 3: CNCing




Би MasterCAM дээр багажны замыг зохион бүтээсэн бөгөөд 3/4 инчийн фанераас цаг гаргаж авахын тулд technoRouter ашигласан. Үүний тулд би 15 "x15" ширхэгийг хамгийн бага үрэлттэй ашигладаг. Заль мэх нь модыг хагалахгүйгээр аль болох их хэмжээгээр гадагш гаргах явдал юм. 0.05 "-0.1" үлдээх нь хөнгөн модны хувьд сайн сонголт юм. Хэрэв та итгэлгүй байгаа бол илүү их мод үлдээх нь дээр, учир нь та үргэлж нөгөө нүүрээ зүлгэж болно. Би зарим хэсгээс хэт их мод авч хаясан боловч аз болоход үр дүн нь тийм ч их зовдоггүй.
CNC нэвтрэх эрхгүй хэрэглэгчдэд зориулсан тэмдэглэл:
Энэ төслийг өрмийн машин ашиглан хялбархан хийж болно. Суурь дээр 0.1 орчим мод үлдэх цэг дээр та зогсоолоо тавих хэрэгтэй. Та нарийвчлалтай байх ёстой, гэхдээ тийм ч нарийн биш. Эцсийн эцэст, бүх LED гэрэл асахыг хэн ч харахгүй. Үүний зэрэгцээ та бага зэрэг налуугаар зугтаж чадна.
Алхам 4: Электроник



Цахилгаан хэрэгсэл нь маш энгийн. 24 неопиксел байдаг бөгөөд цагийг харуулах арван хоёр, минутыг харуулах арван хоёр, таван минутын нарийвчлалтай. Arduino pro mini нь неопикселийг хянадаг бөгөөд DS3231 бодит цагийн цаг (RTC) модулийг ашиглан цагийг зөв авдаг. RTC модуль нь зоосны үүртэй тул нөөцөө унтраасан ч цаг алдахгүй.
Материал:
Arduino pro mini (эсвэл өөр бусад Arduino)
DS3231 таслах самбар
Хуванцар хавтангууд дахь неопикселүүд
Алхам 5: Электроникийн угсралт




Би неопикселүүдийг утсаар холбосон бөгөөд эхний арван хоёр гэрэлд 2.5 инчийн утас, дараагийн арван хоёрт дөрвөн инчийн утас ашиглав. Би арай бага утасны уртыг ашиглаж болох байсан. Мөрийг хийсний дараа би үүнийг туршиж үзээд гагнуур байгаа эсэхийг шалгасан. үе сайн байсан. Би бүх ледийг асаахын тулд түр зуурын унтраалга нэмсэн.
Алхам 6: Хуурай гүйлт




Туршилт хийж, LED -ийг нүхэнд хийж, бүгдийг нь асаасны дараа би үр дүнд сэтгэл хангалуун байсан. Тиймээс би урд талын нүүрээ бага зэрэг зүлгэж, PU пальто түрхэв. Хожим нь би пальтог өнгөлж дуусгасан боловч гоо сайхны хувьд тааламжгүй санагдвал үлдээсэн нь дээр.
Алхам 7: Эпокси


Цооног доторх удирдсан байрлалыг туршиж үзсэний дараа LED нь нүхний үзүүрээс 0.2 инч орчим зайтай байх үед хамгийн сайн хэлэлцүүлгийг хийх болно гэж би ойлгосон. Та өөрөө үүнийг туршиж үзэхэд LED -ийн гэрэл нь өөр байх болно. нүх тус бүр. Энэ талаар санаа зовох хэрэггүй, бид үүнийг кодоор засах болно. Энэ нь миний ашиглаж байсан өрмийн хэлбэртэй холбоотой юм. Хэрэв би үүнийг дахин хийх юм бол би цооногуудад бөмбөгний өрөмдлөг ашиглах болно. Гэхдээ ямар ч тохиолдолд зайг олж авахын тулд би эпокси хольж, нүх тус бүрт бага зэрэг хийнэ.
Алхам 8: Бүгдийг нэгтгэх




LED-ийг 12 цагийн зүүний байрлалаас эхлэн цагийн зүүний эсрэг бүх цагийн зүүний дагуу, дараа нь минутын гарт шилжүүлж, 60 минутын тэмдгээс цагийн зүүний эсрэг хөдөлнө. Ингэснээр бид урд талаас нь харахад LED загвар нь цагийн зүүний дагуу явж байна.
Эпокси нэг цагийн турш хатуурсны дараа би эпокси түрхэв. Энэ удаад би LED -ийг нүхэнд хийж, утас, гагнуурын үеийг эпокси ашиглан битүүмжилсэн. Энэ нь гэрлийн сайн тархалтыг бий болгож, утсыг найдвартай хамгаална.
Алхам 9: Код

Код нь GitHub дээр байгаа тул үүнийг ашиглахын тулд өөрчилж болно. Хэрэв та бүх LED -ийг ижил түвшинд асаахад нүх тус бүрт гэрэлтэх гэрлийн гэрэл маш өөр байх болно. Энэ нь нүхэнд байгаа модны зузаан, модны сүүдэрт ялгаатай байдлаас үүдэлтэй юм. Таны харж байгаагаар модны өнгө миний хэсэгт нэлээд өөр байдаг. Гэрэлт байдлын ялгааг арилгахын тулд би гэрэлтүүлгийн түвшний матриц хийсэн. Мөн илүү тод LED -ийн гэрлийг бууруулсан. Энэ бол туршилт, алдааны процесс бөгөөд хэдэн минут шаардагдах боловч үр дүн нь үнэ цэнэтэй юм.
plywoodClock.ino
// фанер цаг |
// Зохиогч: tinkrmind |
// Олон улсын Attribution 4.0 (CC BY 4.0). Та чөлөөтэй: |
// Хуваалцах - материалыг ямар ч орчин, хэлбэрээр хуулж, дахин тараах |
// Дасан зохицох - материалыг ямар ч зориулалтаар, тэр байтугай арилжааны зориулалтаар remix хийх, өөрчлөх, бүтээх. |
// Ура! |
#оруулах |
#"RTClib.h" -ийг оруулна уу |
RTC_DS3231 rtc; |
#"Adafruit_NeoPixel.h" -ийг оруулаарай |
#ifdef _АВР_ |
#оруулах |
#endif |
#тодорхойлохPIN6 |
Adafruit_NeoPixel зурвас = Adafruit_NeoPixel (60, PIN, NEO_GRB + NEO_KHZ800); |
int hourPixel = 0; |
int минутPixel = 0; |
unsignedlong lastRtcCheck; |
String inputString = ""; // ирж буй өгөгдлийг хадгалах тэмдэгт мөр |
boolean stringComplete = худал; // мөр дууссан эсэх |
int түвшин [24] = {31, 51, 37, 64, 50, 224, 64, 102, 95, 255, 49, 44, 65, 230, 80, 77, 102, 87, 149, 192, 67, 109, 68, 77}; |
voidsetup () { |
#ifndef ESP8266 |
байхад (! Цуваа); // Леонардо/Микро/Тэгийн хувьд |
#endif |
// Энэ нь Trinket 5V 16MHz -д зориулагдсан бөгөөд хэрэв та Trinket ашиглаагүй бол эдгээр гурван мөрийг арилгах боломжтой. |
#тодорхойлсон бол (_AVR_ATtiny85_) |
хэрэв (F_CPU == 16000000) clock_prescale_set (clock_div_1); |
#endif |
// trinket тусгай кодын төгсгөл |
Цуваа эхлэх (9600); |
strip.begin (); |
strip.show (); // Бүх пикселийг "унтраах" болгож эхлүүлэх |
хэрэв (! rtc.begin ()) { |
Serial.println ("RTC олж чадсангүй"); |
байхад (1); |
} |
pinMode (2, INPUT_PULLUP); |
// rtc.adjust (DateTime (F (_ DATE_), F (_ TIME_))))); |
if (rtc.lostPower ()) { |
Serial.println ("RTC хүчээ алдсан, цагийг тохируулцгаая!"); |
// Дараах мөр нь RTC -ийг энэхүү ноорог эмхэтгэсэн огноо, цагт тохируулна |
rtc.adjust (DateTime (F (_ DATE_), F (_ TIME_))))); |
// Энэ мөр нь RTC -ийг тодорхой огноо, цаг, жишээлбэл тохируулахаар тохируулдаг |
// 2014 оны 1 -р сарын 21 -ний 3 цагт та дараахь утсаар ярих болно. |
// rtc.adjust (DateTime (2017, 11, 06, 2, 49, 0)); |
} |
// rtc.adjust (DateTime (2017, 11, 06, 2, 49, 0)); |
// lightUpEven (); |
// байхад (1); |
lastRtcCheck = 0; |
} |
voidloop () { |
if (millis () - lastRtcCheck> 2000) { |
DateTime now = rtc.now (); |
Цуваа.хэвлэх (одоо.цаг (), DEC); |
Serial.print (':'); |
Serial.print (now.minute (), DEC); |
Serial.print (':'); |
Serial.print (одоо.second (), DEC); |
Serial.println (); |
showTime (); |
lastRtcCheck = millis (); |
} |
if (! digitalRead (2)) { |
lightUpEven (); |
} |
if (stringComplete) { |
Serial.println (inputString); |
if (inputString [0] == 'l') { |
Serial.println ("Түвшин"); |
lightUpEven (); |
} |
if (inputString [0] == 'c') { |
Serial.println ("Цагийг харуулах"); |
showTime (); |
strip.show (); |
} |
if (inputString [0] == '1') { |
Serial.println ("Бүх LED -ийг асаах"); |
lightUp (зурвас Өнгө (255, 255, 255)); |
strip.show (); |
} |
if (inputString [0] == '0') { |
Serial.println ("Цэвэрлэх зурвас"); |
тодорхой (); |
strip.show (); |
} |
// #3, 255 нь 3 -р дугаарыг 255, 255, 255 -р түвшинд тохируулна |
if (inputString [0] == '#') { |
Утасны температур; |
temp = inputString.substring (1); |
int pixNum = temp.toInt (); |
temp = inputString.substring (inputString.indexOf (',') + 1); |
int эрчим = temp.toInt (); |
Serial.print ("Тохиргоо"); |
Цуваа.хэвлэх (pixNum); |
Serial.print ("түвшинд"); |
Serial.println (эрч хүч); |
strip.setPixelColor (pixNum, зурвас Өнгө (эрч хүч, эрч хүч, эрч хүч)); |
strip.show (); |
} |
// #3, 255, 0, 125 нь 3 -р дугаарыг 255, 0, 125 -р түвшинд тохируулна |
if (inputString [0] == '$') { |
Утасны температур; |
temp = inputString.substring (1); |
int pixNum = temp.toInt (); |
int rIndex = inputString.indexOf (',') + 1; |
temp = inputString.substring (rIndex); |
int rIntensity = temp.toInt (); |
intgIndex = inputString.indexOf (',', rIndex + 1) + 1; |
temp = inputString.substring (gIndex); |
intgIntensity = temp.toInt (); |
int bIndex = inputString.indexOf (',', gIndex + 1) + 1; |
temp = inputString.substring (bIndex); |
int bIntensity = temp.toInt (); |
Serial.print ("Тохиргоо"); |
Цуваа.хэвлэх (pixNum); |
Serial.print ("R to"); |
Цуваа.хэвлэх (rIntensity); |
Serial.print ("G to"); |
Цуваа.хэвлэх (gIntensity); |
Serial.print ("B to"); |
Serial.println (bIntensity); |
strip.setPixelColor (pixNum, strip. Color (rIntensity, gIntensity, bIntensity)); |
strip.show (); |
} |
if (inputString [0] == 's)) { |
Утасны температур; |
int цаг, минут; |
temp = inputString.substring (1); |
цаг = temp.toInt (); |
int rIndex = inputString.indexOf (',') + 1; |
temp = inputString.substring (rIndex); |
минут = temp.toInt (); |
Serial.print ("Цагийг харуулах:"); |
Цуврал хэвлэх (цаг); |
Serial.print (":"); |
Цуваа.хэвлэх (минут); |
showTime (цаг, минут); |
саатал (1000); |
} |
inputString = ""; |
stringComplete = худал; |
} |
// саатал (1000); |
} |
voidserialEvent () { |
while (Serial.available ()) { |
char inChar = (char) Serial.read (); |
inputString += inChar; |
хэрэв (inChar == '\ n') { |
stringComplete = үнэн; |
} |
саатал (1); |
} |
} |
voidclear () { |
for (uint16_t i = 0; i <strip.numPixels (); i ++) { |
strip.setPixelColor (i, strip. Color (0, 0, 0)); |
} |
} |
voidshowTime () { |
DateTime now = rtc.now (); |
hourPixel = now.hour () % 12; |
minutesPixel = (now.minute () / 5) % 12 + 12; |
тодорхой (); |
// strip.setPixelColor (hourPixel, strip. Color (40 + 40 * түвшин [hourPixel], 30 + 30 * түвшин [hourPixel], 20 + 20 * түвшин [hourPixel])); |
// strip.setPixelColor (минутPixel, strip. Color (40 + 40 * түвшин [минутПиксел], 30 + 30 * түвшин [минутПиксел], 20 + 20 * түвшин [минутПиксел])); |
strip.setPixelColor (hourPixel, strip. Color (түвшин [hourPixel], түвшин [hourPixel], түвшин [hourPixel])))); |
strip.setPixelColor (минутPixel, зураас Өнгө (түвшин [минутPixel], түвшин [минутPixel], түвшин [минутPixel]))); |
// lightUp (зурвас. Өнгө (255, 255, 255)); |
strip.show (); |
} |
voidshowTime (int цаг, int минут) { |
hourPixel = цаг % 12; |
минутPixel = (минут / 5) % 12 + 12; |
тодорхой (); |
// strip.setPixelColor (hourPixel, strip. Color (40 + 40 * түвшин [hourPixel], 30 + 30 * түвшин [hourPixel], 20 + 20 * түвшин [hourPixel])); |
// strip.setPixelColor (минутPixel, strip. Color (40 + 40 * түвшин [минутПиксел], 30 + 30 * түвшин [минутПиксел], 20 + 20 * түвшин [минутПиксел])); |
strip.setPixelColor (hourPixel, strip. Color (түвшин [hourPixel], түвшин [hourPixel], түвшин [hourPixel]))); |
strip.setPixelColor (минутPixel, зураас Өнгө (түвшин [минутPixel], түвшин [минутPixel], түвшин [минутPixel]))); |
// lightUp (зурвас. Өнгө (255, 255, 255)); |
strip.show (); |
} |
voidlightUp (uint32_t өнгө) { |
for (uint16_t i = 0; i <strip.numPixels (); i ++) { |
strip.setPixelColor (i, өнгө); |
} |
strip.show (); |
} |
voidlightUpEven () { |
for (uint16_t i = 0; i <strip.numPixels (); i ++) { |
strip.setPixelColor (i, strip. Color (түвшин , түвшин , түвшин ))); |
} |
strip.show (); |
} |
GitHub -аас ❤ зохион байгуулсан rawplywoodClock.ino -г үзэх
Алхам 10: Компьютерийн хараа - шалгалт тохируулга


Би энэ төсөлд өнгөлгөө хийхгүй байх талаар ухамсартай сонголт хийсэн. Хэрэв би байсан бол бүх LED -ийн өмнө модны зузаан ижил байх байсан. Гэхдээ би LED бүрийн урд модны зузаан өөр өөр байдаг тул модны өнгө маш их ялгаатай байдаг тул LED гэрэл тус бүрийн хувьд өөр өөр байдаг. Бүх LED нь ижил гэрэлтүүлэгтэй байхын тулд би нэг заль мэх зохион бүтээсэн.
Би цагны зургийг авдаг зарим боловсруулалтын кодыг (GitHub дээр) бичээд LED тус бүрийн гэрлийг тус тусад нь шинжилдэг. Дараа нь LED тус бүрийн хүчийг өөрчилж, бүгдийг нь хамгийн бүдэг LED шиг гэрэлтүүлэхийг хичээдэг. Энэ бол хэт их ажил гэдгийг би одоо мэдэж байна, гэхдээ зураг боловсруулах нь маш хөгжилтэй юм! Мөн шалгалт тохируулгын кодыг номын сан болгон хөгжүүлнэ гэж найдаж байна.
Та дээрх гэрэл зургуудаас калибровк хийхээс өмнө болон дараа нь LED гэрлийг харж болно.
CalibrateDispllay.pde
importprocessing.video.*; |
importprocessing.serial.*; |
Цуваа myPort; |
Видео бичлэг хийх; |
finalint numLed = 24; |
int ledNum = 0; |
// та PxPGetPixelDark () -ийг ашиглахын тулд эдгээр глобал хувьсагчтай байх ёстой. |
int rDark, gDark, bDark, aDark; |
int rLed, gLed, bLed, aLed; |
int rOrg, gOrg, bOrg, aOrg; |
int rTemp, gTemp, bTemp, aTemp; |
PI манай дүрсийг дүрслэх; |
int runNumber = 0; |
int acceptableError = 3; |
int хийсэн; |
int numPixelsInLed; |
урт ledIntensity; |
int ledPower; |
урт targetIntensity = 99999999; |
voidsetup () { |
хийсэн = newint [numLed]; |
numPixelsInLed = newint [numLed]; |
ledIntensity = шинэ урт [numLed]; |
ledPower = newint [numLed]; |
for (int i = 0; i <numLed; i ++) { |
ledPower = 255; |
} |
printArray (Serial.list ()); |
String portName = Serial.list () [31]; |
myPort = newSerial (энэ, portName, 9600); |
хэмжээ (640, 480); |
видео = newCapture (энэ, өргөн, өндөр); |
video.start (); |
цус харвалтгүй (); |
гөлгөр (); |
саатал (1000); // Цуваа порт нээгдэхийг хүлээнэ үү |
} |
voiddraw () { |
if (video.available ()) { |
хэрэв (хийсэн [ledNum] == 0) { |
clearDisplay (); |
саатал (1000); |
video.read (); |
зураг (видео, 0, 0, өргөн, өндөр); // Вэбкамерын видеог дэлгэцэн дээр зур |
saveFrame ("өгөгдөл/no_leds.jpg"); |
if (runNumber! = 0) { |
if ((ledIntensity [ledNum] - targetIntensity)*100/targetIntensity> acceptableError) { |
ledPower [ledNum] -= pow (0.75, runNumber)*100+1; |
} |
if ((targetIntensity - ledIntensity [ledNum])*100/targetIntensity> acceptableError) { |
ledPower [ledNum] += pow (0.75, runNumber)*100 +1; |
} |
if (abs (targetIntensity - ledIntensity [ledNum])*100/targetIntensity <= хүлээн зөвшөөрөгдөх Алдаа) { |
хийсэн [ledNum] = 1; |
хэвлэх ("Led"); |
хэвлэх (ledNum); |
хэвлэх ("хийсэн"); |
} |
хэрэв (ledPower [ledNum]> 255) { |
ledPower [ledNum] = 255; |
} |
if (ledPower [ledNum] <0) { |
ledPower [ledNum] = 0; |
} |
} |
setLedPower (ledNum, ledPower [ledNum]); |
саатал (1000); |
video.read (); |
зураг (видео, 0, 0, өргөн, өндөр); // Вэбкамерын видеог дэлгэцэн дээр зур |
саатал (10); |
байхад (myPort.available ()> 0) { |
int inByte = myPort.read (); |
// хэвлэх (char (inByte)); |
} |
String imageName = "өгөгдөл/"; |
imageName+= str (ledNum); |
imageName += "_ led.jpg"; |
saveFrame (imageName); |
String originalImageName = "data/org"; |
originalImageName+= str (ledNum); |
originalImageName += ". jpg"; |
хэрэв (runNumber == 0) { |
saveFrame (originalImageName); |
} |
PImage noLedImg = loadImage ("data/no_leds.jpg"); |
PImage ledImg = loadImage (imageName); |
PImage originalImg = loadImage (originalImageName); |
noLedImg.loadPixels (); |
ledImg.loadPixels (); |
originalImg.loadPixels (); |
дэвсгэр (0); |
loadPixels (); |
ledIntensity [ledNum] = 0; |
numPixelsInLed [ledNum] = 0; |
for (int x = 0; x <width; x ++) { |
for (int y = 0; y <өндөр; y ++) { |
PxPGetPixelDark (x, y, noLedImg.pixels, width); |
PxPGetPixelLed (x, y, ledImg.pixels, width); |
PxPGetPixelOrg (x, y, originalImg.pixels, width); |
хэрэв ((rOrg+gOrg/2+bOrg/3)-(rDark+gDark/2+bDark/3)> 75) { |
ledIntensity [ledNum] = ledIntensity [ledNum]+(rLed+gLed/2+bLed/3) -(rDark+gDark/2+bDark/3); |
rTemp = 255; |
gTemp = 255; |
bTemp = 255; |
numPixelsInLed [ledNum] ++; |
} өөр { |
rTemp = 0; |
gTemp = 0; |
bTemp = 0; |
} |
PxPSetPixel (x, y, rTemp, gTemp, bTemp, 255, пиксел, өргөн); |
} |
} |
ledIntensity [ledNum] /= numPixelsInLed [ledNum]; |
if (targetIntensity> ledIntensity [ledNum] && runNumber == 0) { |
targetIntensity = ledIntensity [ledNum]; |
} |
updatePixels (); |
} |
хэвлэх (ledNum); |
хэвлэх (','); |
хэвлэх (ledPower [ledNum]); |
хэвлэх (','); |
println (ledIntensity [ledNum]); |
ledNum ++; |
хэрэв (ledNum == numLed) { |
int dozo = 0; |
for (int i = 0; i <numLed; i ++) { |
donezo += хийсэн ; |
} |
хэрэв (dozo == numLed) { |
println ("БҮТЭЭГДЭХ"); |
for (int i = 0; i <numLed; i ++) { |
хэвлэх (i); |
хэвлэх ("\ t"); |
println (ledPower ); |
} |
хэвлэх ("int level ["); |
хэвлэх (ledNum); |
хэвлэх ("] = {"); |
for (int i = 0; i <numLed-1; i ++) { |
хэвлэх (ledPower ); |
хэвлэх (','); |
} |
хэвлэх (ledPower [numLed -1]); |
println ("};"); |
lightUpEven (); |
байхад (үнэн); |
} |
хэвлэх ("Зорилтот эрч хүч:"); |
хэрэв (runNumber == 0) { |
targetIntensity -= 1; |
} |
println (targetIntensity); |
ledNum = 0; |
runNumber ++; |
} |
} |
} |
voidPxPGetPixelOrg (intx, inty, int pixelArray, intpixelsWidth) { |
int thisPixel = pixelArray [x+y*pikselWidth]; // пикселээс өнгийг int болгон авах |
aOrg = (thisPixel >> 24) & 0xFF; // бүрэлдэхүүн хэсэг бүрийг дангаар нь авахын тулд бид шилжиж, маск хийх хэрэгтэй |
rOrg = (thisPixel >> 16) & 0xFF; // энэ нь улаан (), ногоон (), цэнхэр () гэж дуудахаас хурдан юм |
gOrg = (thisPixel >> 8) & 0xFF; |
bOrg = thisPixel & 0xFF; |
} |
voidPxPGetPixelDark (intx, inty, int pixelArray, intpixelsWidth) { |
int thisPixel = pixelArray [x+y*pikselWidth]; // пикселээс өнгийг int болгон авах |
aDark = (thisPixel >> 24) & 0xFF; // бүрэлдэхүүн хэсэг бүрийг дангаар нь авахын тулд бид шилжиж, маск хийх хэрэгтэй |
rDark = (thisPixel >> 16) & 0xFF; // энэ нь улаан (), ногоон (), цэнхэр () гэж дуудахаас хурдан юм |
gDark = (thisPixel >> 8) & 0xFF; |
bDark = thisPixel & 0xFF; |
} |
voidPxPGetPixelLed (intx, inty, int pixelArray, intpixelsWidth) { |
int thisPixel = pixelArray [x+y*pikselWidth]; // пикселээс өнгийг int болгон авах |
aLed = (thisPixel >> 24) & 0xFF; // бүрэлдэхүүн хэсэг бүрийг дангаар нь авахын тулд бид шилжиж, маск хийх хэрэгтэй |
rLed = (thisPixel >> 16) & 0xFF; // энэ нь улаан (), ногоон (), цэнхэр () гэж дуудахаас хурдан юм |
gLed = (thisPixel >> 8) & 0xFF; |
bLed = thisPixel & 0xFF; |
} |
voidPxPSetPixel (intx, inty, intr, intg, intb, inta, int pixelArray, intpixelsWidth) { |
a = (a << 24); |
r = r << 16; // Бид бүх 4 хөгжмийн зохиолчдыг нэг int болгон багтааж байна |
g = g << 8; // тиймээс бид тэднийг байрандаа шилжүүлэх хэрэгтэй |
өнгө argb = a | r | g | б; // хоёртын "эсвэл" үйлдэл нь бүгдийг нэг int болгон нэмдэг |
pixelArray [x+y*pikselWidth] = argb; // Эцэст нь бид int -ийг te өнгөөр пиксел болгон тохируулав |
} |
GitHub -аас ❤ дээр зохион байгуулагдсан rawcalibrateDispllay.pde -г үзэх
Алхам 11: Салах тухай тайлбар
Урьдчилан сэргийлэх ёстой бэрхшээлүүд:
* Модоор та төлсөн мөнгөө авна. Тиймээс сайн чанарын мод аваарай. Хусан фанер бол сайн сонголт юм; ямар ч хөнгөн хатуу мод бас сайн хийх болно. Би модон дээр хямд үнээр зарагдаж, гаргасан шийдвэртээ харамсав.
* Илүү их өрөмдлөг хийх нь дээр. Хэд хэдэн нүх миний бүтээлд хэтэрхий гүн орсон. Мөн эпокси нь нүүрэн дээр харагдаж байна. Үүнийг анзаарсны дараа маш их мэдэгдэх болно.
* Шулуун төгсгөлийн оронд бөмбөгний төгсгөлийн өрөмдлөг ашиглана уу. Би бөмбөгний төгсгөлийг туршиж үзээгүй боловч үр дүн нь хамаагүй дээр байх болно гэдэгт итгэлтэй байна.
Би үүнийг Etsy эсвэл tindie дээр зарах санаатай сээтэгнэж байна. Хэрэв та үүнийг утга учиртай гэж бодож байвал доор сэтгэгдэл бичих боломжтой бол би үнэхээр талархах болно:)
Зөвлөмж болгож буй:
Эхлэгчдэд зориулсан DJ -ийн тохиргоог хэрхэн яаж хийх вэ - Винил хэв маяг! 7 алхам

Эхлэгчдэд зориулсан DJ -ийн тохиргоог хэрхэн яаж хийх вэ - Винил хэв маяг! Энэхүү зааварчилгаанд би винил ашиглан сонгодог эргэдэг ширээний хэв маягаар DJ -ийн тохиргоог хэрхэн хийхийг танд үзүүлэх болно. Та хобби сонирхогч эсвэл мэргэжлийн хүн болж, орлого олохын тулд дэлхийн өнцөг булан бүрт аялахыг хүсч байгаа эсэхээс үл хамааран эдгээр алхамуудыг хийх болно
Memory Stick модон гуулин хөнгөн цагаан хэв маяг: 6 алхам

Санах ойн зөөгч Модон гуулин Хөнгөн цагаан хэв маяг: Би үүнийг яаж хийснийг хүлээн зөвшөөрдөггүй. Би зөв хэмжээтэй, нарийн утсаар үхсэн байсан тул би үүнийг ашигласан. Би тэдгээрийг бага зэрэг шулуун байдлаар хайчилж авсан тул үүнийг шийдэхийн тулд бага зэрэг ажиллах шаардлагатай болсон. Хэрэв та үүнийг өөр аргаар хийвэл үүнийг хийх хэрэгтэй … би үүнийг хүсч байсан
Цэгийн гэрэл хэв маяг: 6 алхам

Цэгийн гэрлийн хэв маяг: Би " Би гэрлийг өөрийн гараар удирдаж, өөрийн хүсэл зоригоо илэрхийлж чадах уу? &Quot; гэсэн санаагаар эхэлсэн. эдгээр өнгөний хэв маяг, олон янзын туршлагыг
Термохромын хэв маяг: 7 алхам (зурагтай)

Thermochromic Patterns: Хэрэв та дизайн хийх шинэ материал хайж байгаа бол термохромын будаг нь таны хүссэн зүйл байж магадгүй юм. Энэхүү гарын авлагыг дагаж интерактив термохромын загварыг хэрхэн бүтээх талаар олж мэдээрэй
Нүдэнд тусах дэлгэцийг хэрхэн яаж үүсгэх вэ (LED хэв маяг): 9 алхам (зурагтай)

Нүдэнд тусах дэлгэцийг хэрхэн яаж бүтээх вэ (LED Style): Энэ бол миний сургуулийн төсөл хэрхэн хийсэн тухай бичлэг шиг сургамжтай зүйл биш юм. Яг миний хийсэн зүйлийг давтах нь танд тус болохгүй байж магадгүй ч энэ төслийг бараг бүх дэлгэцийг илүү анхаарал татахуйц болгож өөрчлөх боломжтой