Orodha ya maudhui:
- Hatua ya 1: Je! Tutaweza Kutumia Moduli zipi za OLED?
- Hatua ya 2: I2C kwa kifupi
- Hatua ya 3: Moduli zinazohitajika na Vipengele
- Hatua ya 4: Wiring OLED Module ya Kuonyesha kwa Arduino
- Hatua ya 5: Kupata Anwani ya Moduli ya Kuonyesha
- Hatua ya 6: Kufunga Maktaba Inahitajika Kuonyesha Takwimu kwenye Moduli ya OLED
- Hatua ya 7: Kuanzisha Moduli ya Kuonyesha
- Hatua ya 8: Onyesha Nakala Rahisi
- Hatua ya 9: Kuchora Maumbo ya Msingi
- Hatua ya 10: Kuchora Picha
- Hatua ya 11: Utatuzi wa matatizo
- Hatua ya 12: Nini cha Kufanya Ijayo?
Video: Furahiya na OLED Onyesho na Arduino: Hatua 12 (na Picha)
2024 Mwandishi: John Day | [email protected]. Mwisho uliobadilishwa: 2024-01-30 12:49
Nina hakika kuwa umesikia juu ya teknolojia ya kuonyesha OLED. Ni mpya na inatoa ubora bora kuliko teknolojia ya zamani ya LCD. Katika mafunzo haya tunataka kukagua hatua zinazohitajika kuonyesha data kwenye mojawapo ya moduli za kawaida za kuonyesha OLED zinazopatikana kwenye soko. Nitajaribu kuelezea kazi zinazotolewa na maktaba inayofanana ya Adafruit kuonyesha data kwenye moduli hii.
Hatua ya 1: Je! Tutaweza Kutumia Moduli zipi za OLED?
Moduli za OLED zinapatikana kwa ukubwa na huduma anuwai. Tutatumia kwenye mafunzo haya ni moduli ya rangi ya monox 128x64 OLED. Aina hii ya moduli inapatikana kwa ukubwa unaofuata (Ili uone kwenye picha):
- 128x64
- 128x32
- 96x16
- 64x48
- 64x32
Kwa kuwa moduli hizi zote zinaunga mkono itifaki ya I2C kama maana ya mawasiliano, nambari na wiring ya hizo zote ni sawa kabisa. Tofauti pekee ni kwamba unapaswa kuzingatia saizi ya onyesho kwenye nambari yako ili yaliyomo ambayo utaonyesha, yatoshe vizuri juu yake.
Hatua ya 2: I2C kwa kifupi
Mzunguko uliounganishwa (IIC) ambao kawaida huitwa I2C (mimi mraba C) uliotengenezwa na Philips mnamo miaka ya 80 kama basi ya kubadilishana data inayotumika kuhamisha data kati ya kitengo cha usindikaji cha kati (CPU) au kitengo cha microcontroller (MCU) cha kifaa na chips za pembeni. Ililengwa kimsingi kwa matumizi ya Runinga. Kwa sababu ya unyenyekevu wake, ikawa maarufu sana hivi kwamba baada ya muda kidogo ikawa moja wapo ya njia kuu za uhamishaji wa data kwa CPU na MCU na vifaa vya pembeni ambavyo sio sehemu muhimu ya bodi hiyo ya PCB na zimeunganishwa nayo kupitia waya (kwa mfano sensorer, moduli za kuonyesha, nk).
I2C ina basi ya mawasiliano iliyotengenezwa na waya mbili ambayo inasaidia uhamishaji wa data ya pande mbili kati ya bwana na vifaa kadhaa vya watumwa. Kawaida node kuu inasimamia kudhibiti basi - ambayo hufanywa kwa kutengeneza ishara ya maingiliano kwenye laini ya saa (SCL). Ni ishara ambayo ingetumwa kila wakati na bwana wakati wa uhamishaji na nodi zingine zote zilizounganishwa na basi zitatumia kusawazisha mawasiliano yao na kugundua kasi ya basi. Takwimu zinahamishwa kati ya bwana na mtumwa kupitia laini ya data ya serial (SDA). Kasi ya usafirishaji inaweza kuwa hadi 3.4 Mbps. Vifaa vyote ambavyo vinataka kuhamisha data kupitia I2C vinapaswa kuwa na anwani ya kipekee na inaweza kufanya kazi kama transmita au mpokeaji kulingana na utendaji wa kifaa. Kwa mfano moduli ya onyesho la OLED ni mpokeaji anayepokea data zingine na kuzionyesha, wakati sensa ya joto ni transceiver inayotuma joto lililokamatwa kupitia basi ya I2C. Kawaida kifaa kikuu ni kifaa ambacho huanzisha uhamishaji wa data kwenye basi na hutoa ishara za saa kuruhusu uhamishaji. Wakati wa uhamisho huo, kifaa chochote kinachoshughulikiwa na bwana huyu kinachukuliwa kama mtumwa na inasoma data hiyo.
Wakati node inataka kutuma data, kaiti ya kwanza ya data inapaswa kuwa anwani ya mpokeaji na kisha data halisi inakuja baadaye. Hii inamaanisha kuwa ili kupeleka data kwenye kifaa cha pato kwa kutumia I2C (kwa mfano moduli ya kuonyesha ya O2C OLED) tunapaswa kwanza kupata anwani yake ya I2C na hii ndio tutafanya kwanza kwa hatua zifuatazo.
Ikiwa una nia ya kujua zaidi juu ya maelezo na nadharia kuhusu basi ya I2C, unaweza kutumia marejeleo yafuatayo:
www.i2c-bus.org
learn.sparkfun.com/tutorials/i2c
Hatua ya 3: Moduli zinazohitajika na Vipengele
Hapa unaweza kupata orodha ya vifaa ambavyo utahitaji kukamilisha mafunzo haya:
Viungo vya eBay:
- 1 x Arduino Uno:
- Moduli 1 x OLED 128x64:
- 4 x Dupont cable:
- 1 x Mini mkate bila mkate:
Viungo vya Amazon.com:
- 1 x Arduino Uno:
- Moduli 1 x OLED 128x64:
- 4 x Dupont cable:
- 1 x Mini mkate bila mkate:
Hatua ya 4: Wiring OLED Module ya Kuonyesha kwa Arduino
Ujumbe muhimu kuhusu vifaa vilivyowezeshwa na I2C ni kwamba njia ambayo unapaswa kuwaunganisha na Arduino ni sawa. Hii ni kwa sababu Arduino anaendesha mawasiliano yake ya I2C tu kwenye pini maalum. Katika mafunzo haya ninatumia Arduino Uno. Arduino Uno hutumia pini A5 kama SCK na A4 kama SDA. Kwa hivyo tunaweza kuunganisha moduli ya onyesho la OLED kwa Arduino Uno kama inavyoonekana katika mwonekano wa skimu. Kama unavyoweza kugundua kwenye picha niliyochukua kutoka kwa moduli yangu ya onyesho la OLED, kontakt ya VCC na GND ni tofauti na mtazamo wa kimazingira. Kumbuka kuangalia lebo za pini kwenye moduli zako ili kuhakikisha kuwa unaiunganisha kwa njia sahihi.
Tunahitaji pini 4 tu ambazo zinapaswa kuunganishwa kama hapa chini:
Arduino VCC -> Moduli ya OLED VCC
Arduino GND -> Moduli ya OLED GND
Arduino 4 -> Moduli ya OLED SDA
Arduino 5 -> OLED Module SCK
Hatua ya 5: Kupata Anwani ya Moduli ya Kuonyesha
Kama hatua ya kwanza ya kuunganisha kwenye kifaa kilichowezeshwa na I2C, unahitaji kuwa na anwani ya moduli. Ili kufanya hivyo, baada ya kuunganisha moduli kwa Arduino yako, unapaswa kupakia nambari iliyoambatishwa, kwenye Arduino yako. Nambari hii inajumuisha maktaba ya waya ambayo ni maktaba iliyojumuishwa na Arduino IDE inayoshughulikia mawasiliano ya I2C. Inajaribu kupeana vifaa vya I2C vilivyounganishwa na kutuma anwani zao kupitia bandari ya serial kwa kompyuta yako. Kwa hivyo unaweza kupata pato lake kupitia zana ya Serial Monitor katika Arduino IDE. Toleo la asili linapatikana katika Uwanja wa michezo wa Arduino). Pia unaweza kuiangalia kwa njia inayosomeka zaidi katika Mhariri wangu wa Arduino mkondoni. Usitarajie chochote kuonyeshwa kwenye skrini wakati nambari hii inafanya kazi.
Kama unavyoona kwenye picha, moduli yangu imefungwa kushughulikia 0x3C. Kawaida vifaa vyote kwenye laini maalum ya bidhaa (kwa mfano moduli zote za OLED 128x64) zina anwani sawa.
Nyongeza ya vifaa vya I2C ni mdogo kutoka 1 hadi 126. Nambari hii inajaribu tu kuungana na kila kifaa ili (bila kusambaza data yoyote) na kisha uangalie ikiwa kulikuwa na hitilafu yoyote iliyoripotiwa na maktaba ya msingi ya kuunganisha kwenye anwani iliyotolewa. Ikiwa hakuna kosa, basi chapa anwani kama moduli inayopatikana ya kuunganisha. Pia ikumbukwe kwamba anwani 15 za kwanza zimehifadhiwa, kwa hivyo inaziruka na kuchapisha tu zilizo juu ya anuwai hii. Kumbuka kuwa anwani ya moduli hizi za I2C zimewekwa ngumu kwenye kifaa na haiwezi kubadilishwa. Kwa hivyo itakuwa wazo nzuri kuiandika mahali fulani au kuweka lebo kwenye moduli wakati utaiweka tena kwenye rafu yako ya maabara ili wakati ujao, kutumia nambari ya skana haitakuwa ya lazima. Walakini sio utaratibu ngumu;)
Hatua ya 6: Kufunga Maktaba Inahitajika Kuonyesha Takwimu kwenye Moduli ya OLED
Maktaba ya waya inaweza kushughulikia mawasiliano ya kiwango cha chini na vifaa vya I2C. Wakati unataka kuungana na kifaa maalum ili kusoma / kuandika data kutoka / kwenda kwake, kawaida utatumia maktaba iliyotolewa na kampuni ambayo hapo awali imeunda moduli hiyo. Maktaba hii inashughulikia maelezo yote ya mawasiliano ya I2C na moduli iliyopewa na wacha tujikite zaidi kwenye biashara yetu ambayo katika kesi hii inaonyesha data kwa njia tunayotaka.
Adafruit, kampuni inayotengeneza toleo la asili la moduli kama hizo za onyesho, hutoa maktaba inayoitwa Adafruit SSD1306 kuonyesha data kwenye maonyesho haya ya monochrome. Kwa hivyo kabla ya kuanza kuweka alama, tumesakinisha maktaba hii kupitia Meneja wa Maktaba (inayopatikana kupitia Mchoro> Jumuisha Maktaba> Dhibiti Maktaba… menyu) katika Arduino IDE. Kuna pia maktaba nyingine inayoitwa Adafruit GFX Library ambayo inashughulikia vitu vya kiwango cha chini zaidi na hutumiwa ndani na Adafruit SSD1306. Unahitaji kuziweka zote mbili kwenye IDE yako ya Arduino kama unaweza kuona kwenye picha.
Hatua ya 7: Kuanzisha Moduli ya Kuonyesha
Kuchora kwenye moduli ya onyesho imefungwa kwa darasa linaloitwa Adafruit_SSD1306. Ufafanuzi wa darasa hili uko kwenye maktaba ya Adafruit, kwa hivyo tunahitaji kwanza kujumuisha maktaba hiyo. Halafu inabidi tuhakikishe mfano wa darasa hili kwanza. Mjenzi wa darasa hili huchukua nambari ya bandari ambayo onyesho linaweza kuweka upya ambayo ni pini 4 (iliyounganishwa na SCK). Sehemu hii ya nambari inapaswa kuwa mwanzoni mwa faili (nje ya usanidi () na kazi za kitanzi ()).
# pamoja
Onyesho la Adafruit_SSD1306 (4);
Sasa ndani ya kazi ya kuanzisha () tunapaswa kuita kazi ya kuanza ya kitu cha kuonyesha kwa kupitisha anwani yetu ya I2C kama ilivyo hapo chini (SSD1306_SWITCHCAPVCC ni thamani ya kila wakati inayoelezea aina ya chanzo cha nguvu kwa maktaba):
usanidi batili () {
onyesha. kuanza (SSD1306_SWITCHCAPVCC, 0x3C); onyesha.display (); } kitanzi batili () {} // kitanzi kinaweza kuwa tupu kwa sasa
Sasa kitu cha kuonyesha kiko tayari na tunaweza kuita kazi zake (k.m onyesho.andika (), onyesha.drawLine, n.k.). Ujumbe muhimu ni kwamba wakati wowote tunapochora kitu kwa kupiga simu kwenye kitu chetu cha kuonyesha, tunahitaji kupiga kazi ya kuonyesha.display () kufanya uchoraji halisi ufanyike kwenye kiwango cha vifaa. Hii ni kwa sababu ya ukweli kwamba kazi za kuchora ambazo tunaziita, sasisha tu uwakilishi wa "kwa kumbukumbu" ya onyesho kwa sababu za utendaji. Kwa kweli huhifadhi mabadiliko kwenye kumbukumbu. Kwa hivyo tunapaswa kukumbuka kila wakati kupiga simu ya onyesho () wakati tulimaliza kuchora kitu kwenye skrini.
onyesha. andika (…); // inaendelea kusasisha kwenye kumbukumbu
onyesha.drawLine (…); // inaendelea kusasisha kwenye kumbukumbu. onyesha.display (); // hupunguza mabadiliko yote kwenye vifaa vya kuonyesha
Ukijaribu kupakia nambari yako kwa hatua hii, utagundua kuwa nembo ya Viwanda vya Adafruit itaonyeshwa. Unaweza kujiuliza ni nani ameiuliza itoe hiyo! Kweli hivi ndivyo maktaba ya Adafruit inavyofanya. Inaleta kumbukumbu ya moduli (uwakilishi wa kumbukumbu ya vifaa vya kuonyesha) na nembo ya kampuni hii. Ikiwa hautaki kuona hiyo wakati wa uanzishaji, unaweza kujaribu kupiga display.clearDisplay () kazi kabla ya kupiga display.display () katika kazi yako ya usanidi. Kazi hii, kama jina lake linavyosema, inafuta maonyesho kabisa.
# pamoja
Onyesho la Adafruit_SSD1306 (4); kuanzisha batili () {display.begin (SSD1306_SWITCHCAPVCC, 0x3C); onyesha wazi Cleplay (); onyesha.display (); } kitanzi batili () {}
Kulingana na nyaraka za maktaba ya Adafruit_SSD1306, unaweza kutumia kazi tofauti zilizotolewa na darasa hili kuteka kwenye onyesho au kuendesha moja kwa moja saizi zilizo juu yake. Katika sehemu zinazofuata tutajaribu kuwasilisha mfano kwa kila mmoja wao ili uweze kuwa na wazo juu ya jinsi inavyofanya kazi. Mengi ya mifano hii itaonyesha yaliyomo rahisi tu, kwa hivyo tunaweza kuiweka tu ndani ya usanidi wetu () kazi (baada ya nambari ya uanzishaji). Kwa kufanya hivyo ingeendeshwa mara moja tu na kubaki pale pale.
Hatua ya 8: Onyesha Nakala Rahisi
Ili kuonyesha maandishi, tunaweza kutumia kazi rahisi ya kuonyesha.println () ya maktaba. Inakubali maandishi kama kamba na inajaribu kuionyesha. Ni muhimu kujua kwamba lazima tuambie maktaba ambapo kwenye onyesho tutatoa maandishi. Kila pikseli kwenye onyesho ina uratibu ambao umebainishwa na X na Y. X huongezeka kutoka kushoto kwenda kulia na Y huongezeka kutoka juu hadi chini. Kona ya juu kushoto ya skrini ni (X = 0, Y = 0) na kona ya chini kulia ni (X = 127, Y = 63). Nilibaini kuratibu za pembe kwenye picha ya kwanza. Tunaweza kutumia kazi ya kuonyesha.setCursor () kutaja ni wapi kwenye onyesho tutaonyesha maandishi.
Mali nyingine ya maandishi ni rangi yake. Tunaweza kutaja rangi kwa kutumia display.setTextColor () kama inavyoonyeshwa kwenye sampuli ifuatayo.
onyesha wazi Cleplay ();
onyesha.setTextColor (NYEUPE); Onyesha Mshale (35, 30); display.println ("Hello World!"); onyesha.display ();
Tunaweza pia kutumia kazi ya kuonyesha.write () kuonyesha tabia moja. Inakubali nambari ya tabia kama aina ya uint8_t na inaonyesha tabia inayolingana na nambari hiyo kwenye kamba. Kama mfano, ikiwa tunataka kuonyesha kamba moja kwa kutumia kazi hii, tunaweza kutumia kijisehemu kifuatacho:
onyesha wazi Cleplay ();
onyesha.setTextColor (NYEUPE); Mshale wa kuonyesha (35, 30); onyesha (72); onyesha (101); onyesha (108); onyesha (108); onyesha (111); onyesha (32); onyesha andika (87); onyesha (111); andika (114); onyesha (108); onyesha (100); onyesha (33); onyesha.display ();
Inawezekana pia kuteka maandishi katika rangi nyeusi na asili nyeupe. Ili kufanya hivyo, lazima upigie kazi ya kuonyesha.setTextColor kama ilivyo hapo chini:
onyesha wazi Cleplay ();
// Inaweka rangi kuwa nyeusi na onyesho la asili nyeupe.setTextColor (NYEUSI, NYEUPE); Kuweka Mshale (25, 30); onyesha.println ("Nakala iliyogeuzwa!"); onyesha.display ();
Pia una chaguo la kuweka saizi ya maandishi kutumia kazi ya kuonyesha.setTextSize (). Inakubali nambari kamili kama saizi. Idadi kubwa, maandishi yatakuwa makubwa. Ukubwa mdogo ni 1 ambayo ni saizi ya maandishi. Kufuata nambari inajaribu kuandika barua "A" kwa saizi 6 tofauti:
onyesha wazi Cleplay ();
onyesha.setTextColor (NYEUPE); onyesha.setCursor (0, 0); onyesha.setTextSize (1); onyesho.print ("A"); onyesha.setTextSize (2); onyesho.print ("A"); onyesha.setTextSize (3); onyesho.print ("A"); onyesha.setTextSize (4); alama ya kuonyesha ("A"); onyesha.setTextSize (5); alama ya kuonyesha ("A"); onyesha.setTextSize (6); onyesho.print ("A"); onyesha.display ();
Hatua ya 9: Kuchora Maumbo ya Msingi
Kuchora maumbo ya kimsingi kama mstatili, duara, pembetatu, laini au alama ni rahisi sana na kuna kazi ya kujitolea kwa kila mmoja.
Kuchora
Ili kuchora laini unaweza kupiga display.drawLine (startX, startY, endX, endY, color). Kwa mfano kufuata nambari kunachora mistari ya diagonal kwenye skrini ili kuunda X kubwa:
onyesha wazi Cleplay ();
kuonyesha.drawLine (0, 0, display.width () - 1, display.height () - 1, WHITE); onyesha.drawLine (onyesha upanaji) (1 - 0, 0, onyesha. urefu () - 1, NYEUPE); onyesha.display ();
Unaweza kufikia upana na urefu wa onyesho ukitumia kazi za kuonyesha.width () na kazi za kuonyesha.height (). Kwa kufanya hivyo nambari yako itakuwa huru kutoka kwa saizi ya skrini.
Kuchora mstatili
Kazi ya kuchora mstatili ni kuonyesha.drawRect (juuLeftX, juuLeftY, upana, urefu, rangi). Hapa kuna nambari ambayo inachora mstatili tatu kwenye sehemu zingine za nasibu:
onyesha wazi Cleplay ();
onyesha.drawRect (100, 10, 20, 20, NYEUPE); onyesha.fillRect (10, 10, 45, 15, NYEUPE); onyesha.drawRoundRect (60, 20, 35, 35, 8, NYEUPE); onyesha.display ();
Kwa kupiga simu display.fillRect (upperLeftX, upperLeftY, upana, urefu, WHITE) unaweza kuteka mstatili uliojazwa na rangi maalum. Pia kazi ya tatu katika mfano huu ni display.drawRoundRect (upperLeftX, upperLeftY, upana, urefu, konaRadius, rangi) ambayo unaweza kuona kwenye picha hutumiwa kuteka mstatili na pembe za pande zote. Inakubali parameter ya ziada kabla ya rangi ambayo ni nambari kamili inayoonyesha eneo la kona. Thamani kubwa kuzunguka kona. Pia ina kazi inayofanana ya kujaza inayoitwa display.drawFillRoundRect ambayo nadhani unaweza kukisia inachofanya.
Kuchora mduara
Kazi ni display.drawCircle (centerX, centerY, radius, rangi). Hapa kuna mfano ambao unachora sura inayofanana na ya kutabasamu:
onyesha Mzunguko (60, 30, 30, NYEUPE);
onyesha Mzunguko (50, 20, 5, NYEUPE); onyesha Mzunguko (70, 20, 5, NYEUPE);
Kama rectangles, unaweza kutumia kazi ya kuonyesha.fillCircle kuteka mduara uliojaa rangi iliyopewa.
Kuchora pembetatu
Ahh, tena kazi inayoitwa display.drawTriangle (poin1X, point1Y, point2X, point2Y, point3X, point3Y, rangi) na onyesho linalolingana.
onyesha. Chora Kamba (24, 1, 3, 55, 45, 55, NYEUPE);
onyesha. Jaza Triangle (104, 62, 125, 9, 83, 9, NYEUPE);
Chora hoja
Unaweza pia kupaka rangi alama maalum (ambayo inaitwa pixel) kwenye skrini kupitia kazi ya kuonyesha.drawPixel (pixelX, pixelY, rangi).
onyesha.drawPixel (20, 35, NYEUPE);
onyesha DrawPixel (45, 12, NYEUPE); onyesha.drawPixel (120, 59, NYEUPE); onyesha DrawPixel (97, 20, NYEUPE); onyesha DrawPixel (35, 36, NYEUPE); onyesha.drawPixel (72, 19, NYEUPE); onyesha.drawPixel (90, 7, NYEUPE); onyesha.drawPixel (11, 29, NYEUPE); onyesha.drawPixel (57, 42, NYEUPE); onyesha.drawPixel (69, 34, NYEUPE); onyesha.drawPixel (108, 12, NYEUPE);
Hatua ya 10: Kuchora Picha
Kuchora picha ni tofauti na ngumu kidogo. Kama moduli ya kuonyesha ni monocolour, tunahitaji kwanza kubadilisha picha yetu kuwa fomati inayoitwa mono color bitmap (pia inaitwa nyeusi na nyeupe). Katika muundo kama huo, kila pikseli ya picha imewasilishwa na ama 0 au 1. 1s inawakilisha uwepo wa rangi na 0s inamaanisha nafasi tupu. Unaweza kuona mfano wa nembo ya Arduino katika fomati hii juu ya sehemu hii. Kazi ya kuchora picha ya bitmap ni display.drawBitmap (topLeftX, topLeftY, imageData, upana, urefu, rangi). Kigezo cha pichaData ni idadi ya nambari katika ka. Kila ka ina bits 8, kwa hivyo kila ka ina data ya saizi 8 za picha. Kwa kubainisha upana na urefu wa picha, kazi ya DrawBitmap itajua ni kutoka kwa safu gani ya saizi inayofuata.
Suluhisho ambalo nilichagua kubadilisha picha yangu kuwa fomati hii ilikuwa kwanza kutumia moja ya "picha kwa waongofu wa ASCII mkondoni" (kwa mfano https://my.asciiart.club) kubadilisha picha yangu kuwa seti ya herufi za ASCII na kisha kuchukua nafasi herufi zinazotumiwa kwa nafasi tupu na 0 na zingine kwa 1. Hiyo ndivyo unaona hapa chini. Unaweza kufikiria kila 0 na 1 kama pikseli kwenye onyesho. Kwa hivyo saizi ya picha haipaswi kuzidi saizi yetu ya kuonyesha ambayo ni 128x64.
Kumbuka: Kutumia mbinu hii ya ASCII sio njia inayopendekezwa kwa sababu kwa sababu ya uwiano wa wahusika picha yako itakuwa imeharibika (wahusika sio mraba). Nilijaribu mbinu hii kwa sababu tu inafanya iwe rahisi kubadilisha picha kuwa fomati inayohitajika. Vinginevyo itawezekana kufikia matokeo bora kupitia programu au kutumia programu tumizi ambazo hazipo kabisa kwenye maandishi haya.
00000000000000000000011111111111111111111110000000000000000000000000000000000000011111111111111111111111111111100000000000000000 0000000000000111111111111111111111111111111111111110000000000000 0000000000011111111111111111111111111111111111111111100000000000 0000000001111111111111111111111111111111111111111111111000000000 0000000111111111111111111111111111111111111111111111111110000000 0000011111111111111111111111111111111111111111111111111111100000 0000111111111111111111111111111111111111111111111111111111110000 0001111111111111111111111111111111111111111111111111111111111000 0011111111111111111111111111111111111111111111111111111111111100 0111111111111111000000011111111111111111100000001111111111111110 0111111111110000000000000001111111111000000000000000111111111110 1111111111000000001111000000001111000000001111000000001111111111 1111111110000011111111111100000110000011111111111100000111111111 1111111100000111111111111111000000001111111001111110000011111111 1111111100001111100000011111100000011111100000011111000011111111 1111111100001111100000011111100000011111100000011111000011111111 1111111100000111111111111111000000001111111001111110000011111111 1111111110000011111111111100000110000011111111111100000111111111 1111111111000000001111000000001111000000001111100000001111111111 0111111111110000000000000000111111110000000000000000111111111110 0111111111111111000000001111111111111111000000001111111111111110 0011111111111111111111111111111111111111111111111111111111111100 0001111111111111111111111111111111111111111111111111111111111000 0000111111111111111111111111111111111111111111111111111111110000 0000011111111111111111111111111111111111111111111111111111100000 0000000111111111111111111111111111111111111111111111111110000000 0000000011111111111111111111111111111111111111111111111100000000 0000000000011111111111111111111111111111111111111111100000000000 0000000000000111111111111111111111111111111111111110000000000000 0000000000000000111111111111111111111111111111110000000000000000 0000000000000000000001111111111111111111111000000000000000000000
Sasa tunapaswa kugawanya kila mstari na 8, inayowakilisha ka na kuihifadhi katika safu kama ilivyo hapo chini:
tuli const unsigned char PROGMEM arduino_logo = {
B00000000, B00000000, B00000111, B11111111, B11111111, B11100000, B00000000, B00000000, B00000000, B00000000, B01111111, B11111111, B11111111, B11111110, B00000000, B00000000;
Kisha tunaweza kuchora kwenye onyesho kwa kupiga kazi ya DrawBitmap.
onyesha.drawBitmap (32, 16, arduino_logo, 64, 32, WHITE);
Hatua ya 11: Utatuzi wa matatizo
Hii ilikuwa mafunzo marefu na kwa hivyo ina uwezekano mkubwa kwamba kitu kinakwenda vibaya. Hapa kuna orodha ya makosa ya kawaida ambayo unaweza kukutana nayo wakati wa kuweka moduli ya onyesho la OLED kwa mradi wako (baadhi yao yalinitokea wakati wa kuandaa mafunzo haya).
Hakuna kinachoonyeshwa kabisa
Hii inaweza kutokea kwa sababu nyingi kwa hivyo ninashauri kuangalia orodha ifuatayo ambayo inaweza kutokea katika mradi wako:
Anwani ya I2C labda sio sawa
Hakikisha umeweka anwani uliyo nayo katika nambari ya skana ya i2c katika onyesho.begin () kazi wakati wa kuweka kitu chako cha kuonyesha.
SCL na SDA zimeunganishwa kwa njia isiyofaa
Hii kweli ilitokea kwangu. Ikiwa unatumia Arduino Uno basi lazima uangalie viunganisho vyako tena ili kuhakikisha kuwa vimeunganishwa sawa na yangu. Ikiwa unatumia toleo jingine la Arduino (kwa mfano Mega, Leonardo, nk), lazima ujue kuwa wanaweza kuwa na I2C yao iliyowekwa kwenye pini zingine. Unaweza kuiangalia kwenye hati ya maktaba ya waya.
Unachora kitu kutoka eneo linaloonekana
Hili ni suala la programu. Ni kawaida sana wakati wa kutumia kazi za kuchora kuhesabu kuratibu zingine na kwa hivyo kuchora kwako kunaweza kuharibika au katika hali mbaya kabisa inaweza kuwa nje ya eneo. Pitia mahesabu yako na ujaribu kufanya hatua kwa hatua kuchora ili uone kinachoendelea.
Maandishi hayaonyeshwi kabisa
Umesahau kuweka rangi ya maandishi au umeiweka kwa thamani isiyofaa
Unahitaji kupiga setTextColor kabla ya kuchora maandishi. Vinginevyo huna makosa, lakini hautaona chochote kwenye onyesho. Pia unaweza kuwa umeweka rangi ya maandishi sawa na rangi ya asili.
Unatumia fonti kubwa sana
Ikiwa utaweka saizi ya maandishi kwa thamani kubwa sana, inaweza kuwa wahusika hutoka kabisa kwenye eneo linaloonekana.
Kuna hitilafu ya kukusanya kuhusu saizi ya onyesho
Hii pia ilitokea kwangu na nadhani itafanyika kwa wengi wenu. Ni kwa sababu ya viwango vya kawaida vya saizi ya kuonyesha ambayo hufafanuliwa ndani ya faili ya kichwa Adafruit_SSD1306.h ambayo tunajumuisha juu ya hati yetu. Faili hii iko katika {yako-mradi-folda} maktaba / Adafruit_SSD1306 / Adafruit_SSD1306.h. Ukifungua faili hii utagundua kuwa kuna sehemu ya maoni kama ilivyo hapo chini ambayo inaelezea kwamba unahitaji kutuliza tu mara kwa mara ambayo inawakilisha ukubwa wako wa moduli ya OLED. Kwa moduli za kuonyesha 128x64, laini #fafanua SSD1306_128_64 haipaswi kutafakari.
/*=====================================================================
Maonyesho ya SSD1306 ---------------------------------- ---------------------- Dereva hutumiwa katika maonyesho anuwai (128x64, 128x32, nk). Chagua onyesho linalofaa hapa chini ili kuunda fremu ya ukubwa unaofaa, n.k. -------------------------------------------- * / #fafanua SSD1306_128_64 / / #fafanua SSD1306_128_32 // #fafanua SSD1306_96_16 / * ===================================== =============================== / /
Hatua ya 12: Nini cha Kufanya Ijayo?
Uonyesho wa OLED kama moduli ya pato inaweza kukupa fursa nzuri ya kutoa kiolesura cha uonekano wa kitaalam kwa miradi yako ya kupendeza. Unaweza kujaribu kufuata maoni kama mahali pa kuanzia kuonyesha data yenye maana juu yake au kumsaidia mtumiaji kujua kinachoendelea au ikiwa alihitaji kufanya kitu. Itakuwa wazi zaidi kwa mtumiaji kusoma ujumbe kwenye onyesho kuliko kutafsiri hali ya mradi / kifaa kupitia LED zingine.
Nini unaweza kufanya kama hatua ya kuanzia inaweza kuwa:
- Soma thamani ya sensa ya joto na uionyeshe kwenye moduli ya OLED. Unaweza kuongeza shinikizo au sensorer ya unyevu na kuunda mradi kamili wa kituo cha hali ya hewa.
- Jaribu kuteka kitu kwenye moduli ya onyesho ukitumia moduli ya fimbo ya kufurahisha kama kifaa cha kuingiza.
- Jaribu kuteka uhuishaji kwenye onyesho kwa mlolongo wa kuchora / kuchelewesha simu za kazi au Arduino usumbue
- Onyesha nembo yako ya kawaida kwenye uanzishaji wa mfumo wako (badala ya Nembo ya Adafruit)
Usisahau kuniambia juu ya maoni, ungefanya nini (au tayari umefanya) kwa kutumia moduli ya onyesho la OLED.
Ilipendekeza:
Furahiya msimu wako wa baridi na Shabiki wa M5StickC ESP32 - Kasi ya Kurekebishwa: Hatua 8
Furahiya msimu wako wa baridi na Shabiki wa M5StickC ESP32 - Kasi inayoweza kurekebishwa: Katika mradi huu tutajifunza jinsi ya kudhibiti kasi ya FAN kwa kutumia bodi ya M5StickC ESP32 na moduli ya shabiki wa L9110
Onyesho la TTGO (rangi) Na Micropython (TTGO T-onyesho): Hatua 6
Onyesho la TTGO (rangi) Na Micropython (TTGO T-onyesho): TTGO T-Display ni bodi kulingana na ESP32 ambayo inajumuisha onyesho la rangi ya inchi 1.14. Bodi inaweza kununuliwa kwa tuzo ya chini ya $ 7 (pamoja na usafirishaji, tuzo inayoonekana kwenye banggood). Hiyo ni tuzo nzuri kwa ESP32 pamoja na onyesho.T
Tengeneza Onyesho kubwa la 4096 la Onyesho la Sanaa ya Pikseli ya Retro: Hatua 5 (na Picha)
Tengeneza Onyesho kubwa la 4096 la Onyesho la Sanaa ya Pikseli ya Retro: Nitaangazia njia zote mbili katika hii inayoweza kufundishwa. Maagizo haya yanashughulikia usakinishaji wa LED wa 64x64 au 4,096
Onyesho la ESP32 na OLED: Saa ya Mtandaoni - DHT22: Hatua 10 (na Picha)
Onyesho la ESP32 na OLED: Saa ya Mtandaoni - DHT22: Agizo hili linashindana o shindano: " Changamoto ya GIF 2017 ", Ukipenda, tafadhali toa kura yako kwa kubonyeza bendera hapo juu. Asante sana! ;-) Mafunzo haya ni mwendelezo wa safari ya kujifunza zaidi juu ya ibada hii nzuri ya IoT
Furahiya na Sauti: Hatua 6 (na Picha)
Furahiya na Sauti: Utangulizi Lengo la mradi huu ni kuunda bidhaa mpya inayotatua shida ya aina fulani kwa kutumia bodi ya arduino kutengeneza mfano wa haraka