Orodha ya maudhui:

Saa ya Mbao ya LED - Mtindo wa Analog: Hatua 11 (na Picha)
Saa ya Mbao ya LED - Mtindo wa Analog: Hatua 11 (na Picha)

Video: Saa ya Mbao ya LED - Mtindo wa Analog: Hatua 11 (na Picha)

Video: Saa ya Mbao ya LED - Mtindo wa Analog: Hatua 11 (na Picha)
Video: Cheki jama alivyo paa na ndege ya kichawi utashangaa 2024, Julai
Anonim
Saa ya Mbao ya LED - Mtindo wa Analog
Saa ya Mbao ya LED - Mtindo wa Analog

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:

Picha
Picha
Picha
Picha

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

Ubunifu
Ubunifu
Ubunifu
Ubunifu

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

Kuunganisha
Kuunganisha
Kuunganisha
Kuunganisha
Kuunganisha
Kuunganisha
Kuunganisha
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

Umeme
Umeme
Umeme
Umeme
Umeme
Umeme

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

Mkutano wa Elektroniki
Mkutano wa Elektroniki
Mkutano wa Elektroniki
Mkutano wa Elektroniki
Mkutano wa Elektroniki
Mkutano wa Elektroniki
Mkutano wa Elektroniki
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

Kukimbia kavu
Kukimbia kavu
Kukimbia kavu
Kukimbia kavu
Kukimbia kavu
Kukimbia kavu
Kukimbia kavu
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

Epoxy
Epoxy
Epoxy
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

Kuiweka Pamoja
Kuiweka Pamoja
Kuiweka Pamoja
Kuiweka Pamoja
Kuiweka Pamoja
Kuiweka Pamoja
Kuiweka Pamoja
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

Kanuni
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

Maono ya Kompyuta - Upimaji
Maono ya Kompyuta - Upimaji
Maono ya Kompyuta - Upimaji
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: