Orodha ya maudhui:
- Hatua ya 1:
- Hatua ya 2: Kubuni
- Hatua ya 3: Kuunganisha
- Hatua ya 4: Elektroniki
- Hatua ya 5: Mkutano wa Elektroniki
- Hatua ya 6: Kukimbia kavu
- Hatua ya 7: Epoxy
- Hatua ya 8: Kuiweka Pamoja
- Hatua ya 9: Kanuni
- Hatua ya 10: Maono ya Kompyuta - Upimaji
- Hatua ya 11: Hotuba za Kuachana
Video: Saa ya Mbao ya LED - Mtindo wa Analog: Hatua 11 (na Picha)
2024 Mwandishi: John Day | [email protected]. Mwisho uliobadilishwa: 2024-01-30 12:54
Ni saa ya mtindo wa analog wa saa ya LED. Sijui kwanini sijaona mojawapo ya haya kabla.. hata ingawa aina za dijiti ni kawaida sana. Anyhoo, hapa tunaenda!
Hatua ya 1:
Mradi wa saa ya plywood ulianza kama mradi rahisi wa kuanza kwa router ya CNC. Nilikuwa nikiangalia miradi rahisi mkondoni na nikapata taa hii (picha hapo juu). Nilikuwa pia nimeona saa za dijiti ambazo zinaangaza kupitia veneer ya kuni (picha hapo juu). Kwa hivyo, kuchanganya miradi hiyo miwili ilikuwa wazo dhahiri. Kuangalia kujipa changamoto, niliamua kutotumia veneer lakini kipande cha kuni tu kwa mradi huu.
Hatua ya 2: Kubuni
Nilitengeneza saa katika Inkscape (picha hapo juu). Ubunifu ni rahisi sana kwa chaguo. Niliamua dhidi ya kutafuta njia za waya kwa sababu wakati huu nilikuwa sina hakika ikiwa ninataka kwenda na waya wa mzunguko au wa mzunguko. (Niliamua kwenda na wiring ya mzunguko mwishowe.) Neopixel moja huenda katika kila moja ya mashimo madogo ya duara kwa kuonyesha dakika na saa, kwa usahihi wa dakika tano. Mduara ulio katikati utatolewa nje ili kubeba vifaa vya elektroniki.
Hatua ya 3: Kuunganisha
Nilitengeneza njia za vifaa kwenye MasterCAM, na nikatumia technoRouter kukokota saa kutoka kwa plywood ya inchi 3/4. Ninatumia kipande cha 15 "x15" kwa hili, na upotezaji mdogo. Ujanja ni kupitisha kuni nyingi iwezekanavyo bila kuvunja kuni. Kuacha 0.05 "-0.1" ni chaguo nzuri kwa kuni nyepesi. Ikiwa haujui, ni bora kuacha kuni zaidi, kwa sababu unaweza mchanga mchanga uso mwingine kila wakati. Niliishia kuondoa kuni nyingi kutoka kwa sehemu zingine, lakini kwa bahati nzuri matokeo hayateseki sana kwa sababu ya hii.
Kumbuka kwa watumiaji bila ufikiaji wa CNC:
Mradi huu unaweza kufanywa kwa urahisi na mashine ya kuchimba visima. Unahitaji tu kuweka kituo mahali ambapo utaacha karibu 0.1 ya kuni iliyobaki kwenye msingi. Itabidi iwe sahihi, lakini sio sahihi sana. Baada ya yote, kwa kweli hakuna mtu atakayeona taa zote za LED zikiwaka. wakati huo huo, ili uweze kuondoka na mteremko kidogo.
Hatua ya 4: Elektroniki
Elektroniki ni rahisi sana. Kuna neopixels 24, kumi na mbili kwa kuonyesha masaa na kumi na mbili kwa kuonyesha dakika, na usahihi wa dakika tano. Arduino pro mini inadhibiti neopixels na inapata wakati sahihi kupitia moduli ya saa halisi ya DS3231 (RTC). Moduli ya RTC ina kiini cha sarafu kama chelezo, kwa hivyo haipotezi wakati hata wakati umeme umezimwa.
Nyenzo:
Arduino pro mini (au nyingine yoyote Arduino kwa jambo hilo)
Bodi ya kuzuka ya DS3231
Neopixels katika bodi za kuzuka za kibinafsi
Hatua ya 5: Mkutano wa Elektroniki
Niliunganisha neopixels kwenye kamba, nikitumia waya 2.5 kwa viongo kumi na mbili vya kwanza na waya wa inchi nne kwa kumi na mbili zifuatazo. Ningeweza kutumia urefu mdogo wa waya. Baada ya kutengeneza kamba, niliijaribu, na kuhakikisha kuwa solder viungo vilikuwa vizuri. Niliongeza swichi ya kitambo kuwasha viongo vyote, ili kuonyesha tu.
Hatua ya 6: Kukimbia kavu
Baada ya kujaribu, kuweka LED kwenye mashimo na kuziwasha zote, niliridhika na matokeo. Kwa hivyo nikapiga uso wa mbele kidogo na kupaka kanzu ya PU. Niliishia kupiga mchanga kanzu baadaye, lakini ni wazo nzuri kuiacha ikiwa haionekani kuwa haifurahishi.
Hatua ya 7: Epoxy
Baada ya kujaribu kwa nafasi iliyoongozwa ndani ya mashimo, nilidhani kuwa majadiliano bora yanapatikana wakati taa za LED ziko karibu 0.2 mbali na mwisho wa shimo. Unapojaribu hii mwenyewe, mwangaza wa LED utakuwa tofauti sana katika kila shimo Usijali juu ya hii; tutairekebisha kwa nambari. Hii ni kwa sababu ya aina ya kuchimba visima nilivyotumia. Ikiwa ningefanya tena, ningetumia mpira wa kuchimba visima mwisho wa mashimo Lakini, kwa hali yoyote, kupata umbali nilichanganya epoxy na kuweka kidogo katika kila shimo.
Hatua ya 8: Kuiweka Pamoja
Taa za taa zitawekwa kuanzia saa 12 saa nafasi ya mkono inayotembea kinyume na saa kupitia nafasi zote za mkono wa saa na kisha kwa mkono wa dakika, tena ikihama kutoka alama ya dakika 60 inayotembea kinyume na saa. Hii ni ili wakati tunapotazama kutoka mbele muundo wa LED unaonekana kwenda sawa na saa.
Baada ya epoxy kuponywa kwa saa moja, niliweka epoxy zaidi. Wakati huu, niliweka LED kwenye mashimo, nikihakikisha kufunika waya na viungo vya solder na epoxy. Hii inafanya utawanyiko mzuri wa nuru na inapeana waya.
Hatua ya 9: Kanuni
Nambari iko kwenye GitHub, jisikie huru kuibadilisha kwa matumizi yako. Unapowasha LED zote kwa kiwango sawa, mwangaza wa mwangaza unaong'aa utakuwa tofauti sana katika kila shimo. Hii ni kwa sababu ya unene tofauti wa kuni kwenye mashimo na tofauti katika kivuli cha kuni, Kama unaweza kuona rangi ya kuni inatofautiana kidogo kwenye kipande changu. Ili kurekebisha tofauti hii katika mwangaza, nilitengeneza matrix ya viwango vya mwangaza ulioongozwa. Na kupungua kwa mwangaza wa mwangaza wa LED. Ni mchakato wa kujaribu na makosa na inaweza kuchukua dakika kadhaa, lakini matokeo ni ya thamani yake.
plywoodClock.ino
// Saa ya Plywood |
// Mwandishi: tinkrmind |
// Attribution 4.0 Kimataifa (CC BY 4.0). Uko huru kwa: |
// Shiriki - nakala na usambaze tena nyenzo kwa njia yoyote au muundo |
// Adapt - remix, badilisha, na ujenge juu ya nyenzo hiyo kwa kusudi lolote, hata kibiashara. |
// Hurray! |
# pamoja |
# pamoja na "RTClib.h" |
RTC_DS3231 rtc; |
# pamoja na "Adafruit_NeoPixel.h" |
#ifdef _AVR_ |
# pamoja |
# mwisho |
# fafanuaPIN6 |
Ukanda wa Adafruit_NeoPixel = Adafruit_NeoPixel (60, PIN, NEO_GRB + NEO_KHZ800); |
saa ya saaPikseli = 0; |
dakika yaPikseli = 0; |
unsigned longRtcCheck; |
Kamba ya kuingizaString = ""; // kamba kushikilia data zinazoingia |
kamba ya booleanComplete = uongo; // ikiwa kamba imekamilika |
kiwango cha 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}; |
voidetup () { |
#ifndef ESP8266 |
wakati (! Serial); // kwa Leonardo / Micro / Zero |
# mwisho |
// Hii ni ya Trinket 5V 16MHz, unaweza kuondoa laini hizi tatu ikiwa hutumii Trinket |
# ikiwa imefafanuliwa (_AVR_ATtiny85_) |
ikiwa (F_CPU == 16000000) saa_prescale_set (saa_div_1); |
# mwisho |
// Mwisho wa nambari maalum ya trinket |
Serial. Kuanza (9600); |
strip. kuanza (); |
onyesha (); // Anzisha saizi zote ili "kuzima" |
ikiwa (! rtc. anza ()) { |
Serial.println ("Haikuweza kupata RTC"); |
wakati (1); |
} |
pinMode (2, INPUT_PULLUP); |
// rtc.rekebisha (Tarehe ya Wakati (F (_ DATE_), F (_ TIME_))); |
ikiwa (rtc.lostPower ()) { |
Serial.println ("RTC ilipoteza nguvu, inakuwezesha kuweka wakati!"); |
// mstari unaofuata unaweka RTC kwa tarehe na wakati mchoro huu ulipoundwa |
rtc.rekebisha (Tarehe ya Wakati (F (_ DATE_), F (_ TIME_))); |
// Mstari huu unaweka RTC na tarehe na wakati wazi, kwa mfano kuweka |
// Januari 21, 2014 saa 3 asubuhi ungeita: |
// rtc.rekebisha (TareheTime (2017, 11, 06, 2, 49, 0)); |
} |
// rtc.rekebisha (TareheTime (2017, 11, 06, 2, 49, 0)); |
// mwangaUpEven (); |
// wakati (1); |
mwishoRtcCheck = 0; |
} |
voidloop () { |
ikiwa (millis () - mwishoRtcCheki> 2000) { |
DateTime sasa = rtc.now (); |
Serial.print (sasa. Saa (), DEC); |
Serial.print (':'); |
Serial.print (sasa.minute (), DEC); |
Serial.print (':'); |
Serial.print (sasa. Ya pili (), DEC); |
Serial.println (); |
Wakati wa show (); |
mwishoRtcCheck = millis (); |
} |
ikiwa (! dijitaliSoma (2)) { |
lightUpEven (); |
} |
ikiwa (kambaComplete) { |
Serial.println (pembejeoString); |
ikiwa (IngizaKamba [0] == 'l') { |
Serial.println ("Kiwango"); |
lightUpEven (); |
} |
ikiwa (pembejeoString [0] == 'c') { |
Serial.println ("Kuonyesha wakati"); |
Wakati wa show (); |
onyesha (); |
} |
ikiwa (pembejeoString [0] == '1') { |
Serial.println ("Kubadilisha LED zote"); |
lightUp (ukanda. Rangi (255, 255, 255)); |
onyesha (); |
} |
ikiwa (pembejeoString [0] == '0') { |
Serial.println ("Kusafisha ukanda"); |
wazi (); |
onyesha (); |
} |
// # 3, 255 itaweka nambari 3 iliyoongozwa hadi kiwango cha 255, 255, 255 |
ikiwa (pembejeoString [0] == '#') { |
Kamba ya muda; |
temp = inputString.substring (1); |
int pixNum = temp.toInt (); |
temp = inputString.substring (inputString.indexOf (',') + 1); |
nguvu = temp.toInt (); |
Serial.print ("Kuweka"); |
Serial.print (pixNum); |
Serial.print ("kwa kiwango"); |
Serial.println (nguvu); |
strip.setPixelColor (pixNum, strip. Color (kiwango, nguvu, nguvu)); |
onyesha (); |
} |
// # 3, 255, 0, 125 itaweka nambari 3 iliyoongozwa hadi kiwango cha 255, 0, 125 |
ikiwa (pembejeoString [0] == '$') { |
Kamba ya muda; |
temp = inputString.substring (1); |
int pixNum = temp.toInt (); |
int rIndex = pembejeoString.indexOf (',') + 1; |
temp = inputString.substring (rIndex); |
int rIntension = temp.toInt (); |
intgIndex = pembejeoString.indexOf (',', rIndex + 1) + 1; |
temp = inputString.substring (gIndex); |
intgIntensity = temp.toInt (); |
int bIndex = pembejeoString.indexOf (',', gIndex + 1) + 1; |
temp = inputString.substring (bIndex); |
int bIntension = temp.toInt (); |
Serial.print ("Kuweka"); |
Serial.print (pixNum); |
Serial.print ("R hadi"); |
Serial.print (rIntensity); |
Serial.print ("G hadi"); |
Printa ya serial (gIntensity); |
Serial.print ("B hadi"); |
Serial.println (bIntensity); |
strip.setPixelColor (pixNum, strip. Color (rIntensity, gIntensity, bIntensity)); |
onyesha (); |
} |
ikiwa (inputString [0] == 's') { |
Kamba ya muda; |
saa, dakika; |
temp = inputString.substring (1); |
saa = temp.toInt (); |
int rIndex = pembejeoString.indexOf (',') + 1; |
temp = inputString.substring (rIndex); |
dakika = temp.toInt (); |
Serial.print ("Wakati wa kuonyesha:"); |
Printa ya serial (saa); |
Serial.print (":"); |
Printa ya serial (dakika); |
Wakati wa kuonyesha (saa, dakika); |
kuchelewesha (1000); |
} |
pembejeoString = ""; |
stringComplete = uongo; |
} |
// kuchelewa (1000); |
} |
voidserialEvent () { |
wakati (Serial haipatikani ()) { |
char inChar = (char) Serial.read (); |
pembejeoString + = inChar; |
ikiwa (inChar == '\ n') { |
stringComplete = kweli; |
} |
kuchelewesha (1); |
} |
} |
voidclear () { |
kwa (uint16_t i = 0; i <strip.numPixels (); i ++) { |
strip.setPixelColor (i, strip. Color (0, 0, 0)); |
} |
} |
Wakati wa voidshow () { |
DateTime sasa = rtc.now (); |
saaPixel = sasa. saa ()% 12; |
minutePixel = (sasa.minute () / 5)% 12 + 12; |
wazi (); |
// strip.setPixelColor (hourPixel, strip. Color (40 + 40 * level [hourPixel], 30 + 30 * level [hourPixel], 20 + 20 * level [hourPixel])); |
// strip.setPixelColor (minutePixel, strip. Color (40 + 40 * level [minutePixel], 30 + 30 * level [minutePixel], 20 + 20 * kiwango [minutePixel])); |
strip.setPixelColor (hourPixel, strip. Color (kiwango [hourPixel], kiwango [hourPixel], kiwango [hourPixel])); |
strip.setPixelColor (minutePixel, strip. Color (kiwango [minutePixel], kiwango [minutePixel], kiwango [minutePixel])); |
// lightUp (strip. Rangi (255, 255, 255)); |
onyesha (); |
} |
Muda wa voidshow (saa ya saa, dakika ya dakika) { |
saaPikseli = saa% 12; |
dakikaPikseli = (dakika / 5)% 12 + 12; |
wazi (); |
// strip.setPixelColor (hourPixel, strip. Color (40 + 40 * level [hourPixel], 30 + 30 * level [hourPixel], 20 + 20 * level [hourPixel])); |
// strip.setPixelColor (minutePixel, strip. Color (40 + 40 * level [minutePixel], 30 + 30 * level [minutePixel], 20 + 20 * kiwango [minutePixel])); |
strip.setPixelColor (hourPixel, strip. Color (kiwango [hourPixel], kiwango [hourPixel], kiwango [hourPixel])); |
strip.setPixelColor (minutePixel, strip. Color (level [minutePixel], level [minutePixel], level [minutePixel])); |
// lightUp (strip. Rangi (255, 255, 255)); |
onyesha (); |
} |
voidlightUp (rangi ya uint32_t) { |
kwa (uint16_t i = 0; i <strip.numPixels (); i ++) { |
strip.setPixelColor (i, rangi); |
} |
onyesha (); |
} |
voidlightUpEven () { |
kwa (uint16_t i = 0; i <strip.numPixels (); i ++) { |
strip.setPixelColor (i, strip. Color (level , level , level )); |
} |
onyesha (); |
} |
tazama rawplywoodClock.ino iliyohifadhiwa na ❤ na GitHub
Hatua ya 10: Maono ya Kompyuta - Upimaji
Nilifanya chaguo la kutotumia veneer katika mradi huu. Ikiwa ningekuwa, unene wa kuni ungekuwa sawa mbele ya LED zote. Lakini, kwa sababu nina unene tofauti wa kuni mbele ya kila LED na kwa sababu rangi ya kuni inatofautiana sana pia, mwangaza wa LED ni tofauti kwa kila LED. Ili kufanya LED zote zionekane kuwa za mwangaza sawa, nilibuni hila nzuri.
Niliandika nambari kadhaa ya usindikaji (kwenye GitHub) ambayo inachukua picha ya saa, na inachambua mwangaza wa kila LED kwa zamu. Halafu hutofautisha nguvu kwa kila LED kujaribu kuwafanya wote wawe na mwangaza sawa na LED dhaifu. Sasa, najua hii ni overkill, lakini usindikaji wa picha ni raha sana! Na, ninatarajia kukuza nambari ya upimaji kama maktaba.
Unaweza kuona mwangaza wa LED kabla na baada ya usawa kwenye picha hapo juu.
calibrateDispllay.pde
uingizaji wa bidhaa.video. *; |
uingizaji wa bidhaa.serial. *; |
Serial myPort; |
Kamata video; |
mwisho wa mwisho ulihesabiwa = 24; |
int ledNum = 0; |
// lazima uwe na vidhibiti hivi vya ulimwengu ili kutumia PxPGetPixelDark () |
int rDark, gDark, bDark, aDark; |
int rLed, gLed, bLed, aLed; |
int rOrg, gOrg, bOrg, aOrg; |
int rTemp, gTemp, bTemp, aTemp; |
Piga picha yetu; |
nambari ya kukimbia = 0; |
Kosa kukubalika = 3; |
int imefanywa; |
int numPixelsInLed; |
urefu uliongozwa; |
int ledPower; |
lengo refuUshawishi = 99999999; |
voidetup () { |
imefanywa = newint [numLed]; |
numPixelsInLed = newint [numLed]; |
ledIntensity = mpya [numLed]; |
ledPower = newint [nambari]; |
kwa (int i = 0; i <numLed; i ++) { |
ledPower = 255; |
} |
printArray (Serial.list ()); |
Kamba portName = Serial.list () [31]; |
myPort = newSerial (hii, PortName, 9600); |
saizi (640, 480); |
video = newCapture (hii, upana, urefu); |
mwanzo wa video (); |
Stroke (); |
Nyororo(); |
kuchelewesha (1000); // Subiri bandari ya serial kufungua |
} |
voiddraw () { |
ikiwa (video haipatikani ()) { |
ikiwa (imefanya [ledNum] == 0) { |
waziDisplay (); |
kuchelewesha (1000); |
video. soma (); |
picha (video, 0, 0, upana, urefu); // Chora video ya webcam kwenye skrini |
saveFrame ("data / no_leds.jpg"); |
ikiwa (runNumber! = 0) { |
ikiwa ((ledIntensity [ledNum] - targetIntensity) * 100 / targetIntensity> kosa linalokubalika) { |
ledPower [ledNum] - = poda (0.75, runNumber) * 100 + 1; |
} |
ikiwa ((targetIntensity - ledIntensity [ledNum]) * 100 / targetIntensity> kosa linalokubalika) { |
ledPower [ledNum] + = poda (0.75, runNumber) * 100 + 1; |
} |
ikiwa (abs (targetIntensity - ledIntensity [ledNum]) * 100 / targetIntensity <= AcceptError) { |
imefanywa [ledNum] = 1; |
chapisha ("Led"); |
chapisha (ledNum); |
chapa ("umefanya"); |
} |
ikiwa (ledPower [ledNum]> 255) { |
ledPower [ledNum] = 255; |
} |
ikiwa (ledPower [ledNum] <0) { |
ledPower [ledNum] = 0; |
} |
} |
setLedPower (ledNum, ledPower [ledNum]); |
kuchelewesha (1000); |
video. soma (); |
picha (video, 0, 0, upana, urefu); // Chora video ya wavuti kwenye skrini |
kuchelewesha (10); |
wakati (myPort. inapatikana ()> 0) { |
int inByte = myPort.read (); |
// kuchapisha (char (inByte)); |
} |
Kamba imageName = "data /"; |
imageName + = str (ledNum); |
imageName + = "_ led.jpg"; |
kuokoaFrame (ImageName); |
Kamba ya asiliImageName = "data / org"; |
asiliImageName + = str (ledNum); |
awaliImageName + = ". jpg"; |
ikiwa (runNumber == 0) { |
kuokoaFrame (OriginalImageName); |
} |
PImage noLedImg = mzigoImage ("data / no_leds.jpg"); |
PImage ledImg = mzigoImage (imageName); |
PImage asiliImg = mzigoImage (awaliImageName); |
hakunaLedImg. Pixels (); |
Pikseli zilizoongozwa (); |
OriginalImg.loadPixels (); |
msingi (0); |
mzigoPixels (); |
msongamano [ledNum] = 0; |
numPixelsInLed [ledNum] = 0; |
kwa (int x = 0; x <upana; x ++) { |
kwa (int y = 0; y <urefu; y ++) { |
PxPGetPixelDark (x, y, noLedImg.pixels, upana); |
PxPGetPixelLed (x, y, ledImg.pixels, upana); |
PxPGetPixelOrg (x, y, awaliImg.pixels, upana); |
ikiwa ((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] ++; |
} mwingine { |
rTemp = 0; |
gTemp = 0; |
bTemp = 0; |
} |
PxPSetPixel (x, y, rTemp, gTemp, bTemp, 255, saizi, upana); |
} |
} |
ledIntensity [ledNum] / = numPixelsInLed [ledNum]; |
ikiwa (targetIntensity> ledIntensity [ledNum] && runNumber == 0) { |
lengoIntensity = ledIntensity [ledNum]; |
} |
sasishoPixels (); |
} |
chapisha (ledNum); |
chapa (','); |
chapisha (LedPower [ledNum]); |
chapa (','); |
println (ledIntensity [ledNum]); |
kuongozwaNum ++; |
ikiwa (ledNum == numLed) { |
int donezo = 0; |
kwa (int i = 0; i <numLed; i ++) { |
donezo + = kumaliza ; |
} |
ikiwa (donezo == numLed) { |
println ("IMETIMIWA"); |
kwa (int i = 0; i <numLed; i ++) { |
chapisha (i); |
chapisha ("\ t"); |
println (ledPower ); |
} |
chapisha ("int level ["); |
chapisha (ledNum); |
chapa ("] = {"); |
kwa (int i = 0; i <numLed-1; i ++) { |
chapisha (PowerPower ); |
chapa (','); |
} |
chapisha (PowerPower [numLed -1]); |
println ("};"); |
lightUpEven (); |
wakati (kweli); |
} |
chapisha ("Kiwango cha kulenga:"); |
ikiwa (runNumber == 0) { |
LengoUshawishi - = 1; |
} |
println (lengoIntensity); |
ledNum = 0; |
runNumber ++; |
} |
} |
} |
voidPxPGetPixelOrg (intx, inty, int pixelArray, intpixelsWidth) { |
int thisPixel = pixelArray [x + y * pixelsWidth]; // kupata rangi kama int kutoka kwa saizi |
aOrg = (thisPixel >> 24) & 0xFF; // tunahitaji kuhama na kuficha ili kupata kila sehemu peke yake |
rOrg = (thisPixel >> 16) & 0xFF; // hii ni haraka kuliko kupiga nyekundu (), kijani (), bluu () |
gOrg = (thisPixel >> 8) & 0xFF; |
bOrg = hiiPikseli & 0xFF; |
} |
voidPxPGetPixelDark (intx, inty, int pixelArray, intpixelsWidth) { |
int thisPixel = pixelArray [x + y * pixelsWidth]; // kupata rangi kama int kutoka kwa saizi |
aDark = (thisPixel >> 24) & 0xFF; // tunahitaji kuhama na kuficha ili kupata kila sehemu peke yake |
rDark = (thisPixel >> 16) & 0xFF; // hii ni haraka kuliko kupiga nyekundu (), kijani (), bluu () |
gDark = (thisPixel >> 8) & 0xFF; |
bDark = hiiPixel & 0xFF; |
} |
voidPxPGetPixelLed (intx, inty, int pixelArray, intpixelsWidth) { |
int thisPixel = pixelArray [x + y * pixelsWidth]; // kupata rangi kama int kutoka kwa saizi |
aLed = (thisPixel >> 24) & 0xFF; // tunahitaji kuhama na kuficha ili kupata kila sehemu peke yake |
rLed = (thisPixel >> 16) & 0xFF; // hii ni haraka kuliko kupiga nyekundu (), kijani (), bluu () |
gLed = (thisPixel >> 8) & 0xFF; |
bLed = hiiPikseli & 0xFF; |
} |
voidPxPSetPixel (intx, inty, intr, intg, intb, inta, int pixelArray, intpixelsWidth) { |
a = (<<24); |
r = r << 16; // Tunapakia watunzi wote 4 kwa int moja |
g = g << 8; // kwa hivyo tunahitaji kuwahamishia mahali pao |
rangi argb = a | r | g | b; // binary "au" operesheni inawaongeza wote kuwa int moja |
pixelArray [x + y * pixelsWidth] = mkazo; // finaly tunaweka int na rangi ndani ya saizi |
} |
tazama rawcalibrateDispllay.pde iliyohifadhiwa na ❤ na GitHub
Hatua ya 11: Hotuba za Kuachana
Mitego ya kuepuka:
* Ukiwa na kuni, unapata kile unacholipia. Kwa hivyo, pata kuni bora. Plywood ya Birch ni chaguo nzuri; kuni yoyote ngumu nyepesi itafanya vizuri pia. Nilibadilisha kuni na kujuta uamuzi wangu.
* Ni bora kuchimba chini kuliko zaidi. Mashimo kadhaa yalikwenda sana kwa kipande changu. Na epoxy inaonyesha kupitia kwenye uso wa mbele. Inaonekana sana mara tu unapoiona.
* Tumia kuchimba visima mwisho wa mpira badala ya ncha moja kwa moja. Sijajaribu mwisho wa mpira, lakini nina hakika kuwa matokeo yatakuwa bora zaidi.
Ninachekesha na wazo la kuuza hizi kwenye Etsy au tindie. Ningependa kufurahi sana ikiwa ungeweza kutoa maoni hapa chini ikiwa unafikiria ina mantiki:)
Ilipendekeza:
Onyesho la Uchezaji wa Mbao la Mbao Inaendeshwa na Raspberry Pi Zero: Hatua 11 (na Picha)
Uonyesho wa Michezo ya Uchezaji wa Mbao Unaotumiwa na Raspberry Pi Zero: Mradi huu unatambua pikseli ya Wx2812 ya pikseli ya Wx2812 yenye ukubwa wa 78x35 cm ambayo inaweza kusanikishwa kwa urahisi sebuleni kucheza michezo ya retro. Toleo la kwanza la tumbo hili lilijengwa mnamo 2016 na lilijengwa upya na watu wengine wengi. Muda huu
Utunzaji wa saa - Jinsi ya Kuunda Saa Iliyotengenezwa Kutoka kwa Saa !: Hatua 14 (na Picha)
Utunzaji wa saa - Jinsi ya Kuunda Saa Iliyotengenezwa Kutoka kwa Saa !: Halo wote! Huu ni maoni yangu kwa Mashindano ya Mwandishi wa Mara ya Kwanza ya 2020! Ikiwa unapenda mradi huu, ningethamini sana kura yako :) Asante! Hii inayoweza kufundishwa itakuongoza kupitia mchakato wa kujenga saa iliyotengenezwa na saa! Nimeita kwa ujanja
Saa ya Mbao ya Mbao: Hatua 5 (na Picha)
Saa ya LED ya Mbao: Saa ya LED ya mbao inaonekana kama sanduku la mbao lenye kuchosha isipokuwa kwamba wakati unang'aa mbele yake. Badala ya kipande cha plastiki kijivu kutazama, una kipande cha kuni nzuri. Bado inaendelea na majukumu yake yote, pamoja na
Kutengeneza Saa na M5stick C Kutumia Arduino IDE - RTC Saa Saa Saa Na M5stack M5stick-C: Hatua 4
Kutengeneza Saa na M5stick C Kutumia Arduino IDE | RTC Saa Saa Saa Na M5stack M5stick-C: Halo jamani katika mafundisho haya tutajifunza jinsi ya kutengeneza saa na bodi ya maendeleo ya m5stick-C ya m5stack kutumia Arduino IDE.So m5stick itaonyesha tarehe, saa & wiki ya mwezi kwenye maonyesho
C51 4 Bits Saa ya Elektroniki - Saa ya Mbao: Hatua 15 (na Picha)
C51 4 Bits Saa ya Elektroniki - Saa ya Mbao: Alikuwa na wakati wa ziada mwishoni mwa wiki hii ili kuendelea na kukusanya hii AU $ 2.40 4-Bits DIY Electronic Digital Clock ambayo nilinunua kutoka AliExpress kitambo