Përmbajtje:

Një koleksion i terminaleve ANSI: 10 hapa
Një koleksion i terminaleve ANSI: 10 hapa

Video: Një koleksion i terminaleve ANSI: 10 hapa

Video: Një koleksion i terminaleve ANSI: 10 hapa
Video: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, Korrik
Anonim
Një koleksion i terminaleve ANSI
Një koleksion i terminaleve ANSI

Ky projekt filloi si një mënyrë për të shfaqur tekstin 80 kolona në një ekran LCD të përshtatshëm për drejtimin e një përpunuesi teksti të modës së vjetër, siç është Wordstar. Ekrane të ndryshme të tjera u shtuan duke filluar në madhësi nga 0.96 deri në 6 inç. Ekranet përdorin një PCB të vetme, si dhe një skicë/program Arduino.

Ekziston një lidhje serike RS232 për lidhje me një kompjuter dhe një prizë PS/2 për një tastierë. Ekranet u zgjodhën për të përfaqësuar ato zakonisht të disponueshme me çmime të arsyeshme. Në varësi të kujtesës së nevojshme, ekranet përdorin një Arduino Nano, Uno ose Mega.

Hapi 1: Përmbledhje e ekraneve

Përmbledhje e Shfaqjeve
Përmbledhje e Shfaqjeve

Ka ekrane të ndryshme me rezolucion 480x320. Kjo lejon një font 9x5 dhe tekst 80 kolona. Ka tabela të ndryshme me rezolucion 320x240, me shkronja 9x5 dhe gjithashtu një font shumë të vogël 7x3 për të lejuar tekst 80 kolona. Ka edhe dërrasa më të vogla me 160x120 dhe 128x64 pixel. Gjithashtu ekranet e tekstit 20x4 dhe 16x2, dhe në fund një tabelë shfaqjeje 12x2 me katërmbëdhjetë segmente me yje.

Disa ekrane përdorin I2C, disa janë SPI dhe për ekranet më të mëdhenj, një autobus të dhënash 16 bit për shpejtësi më të shpejtë të azhurnimit.

Ekranet më të vegjël përdorin Arduino Uno. Pllakat më të mëdha kanë nevojë për më shumë memorie dhe kështu përdorni një Mega. Tabela e shfaqjes së yjeve përdor një Nano.

Në këtë pikë mund të përmend që fotot nuk u japin drejtësi shumë prej ekraneve. Ekrani i vogël me ngjyrë të bardhë të bardhë është shumë i qartë dhe i ndritshëm, gjë që e bëri më të vështirë fokusimin e kamerës, dhe ekrani i udhëhequr nga shpërthimi i yjeve duket shumë më i mprehtë në jetën reale.

Hapi 2: Pajisje kompjuterike

Hardware
Hardware

PCB është krijuar për të punuar me sa më shumë ekrane të jetë e mundur. Easyshtë e lehtë të ndryshosh midis një Mega dhe Uno duke përdorur katër kërcyes. Ekzistojnë rezistorë të ndarjes së tensionit për ekranet që funksionojnë në 3V. Kunjat I2C nxirren në grup në mënyrë që ekranet të lidhen drejtpërdrejt. Terminali funksionon në 9600 baud, dhe ndërsa kjo mund të rritet, shumë nga ekranet më të mëdhenj nuk do të rishikohen shumë më shpejt se kjo. Tastiera PS2 lidhet me një prizë DIN6. Tastierat USB gjithashtu do të punojnë me një prizë të përshtatësit të lirë. Ju mund të bëni një test të thjeshtë loopback duke bashkuar pin 2 dhe 3 në D9 dhe pastaj karakteret e shtypura në tastierë do të shfaqen në ekran.

Në disa raste një PCB nuk është e nevojshme dhe është e mundur që gjërat të funksionojnë me module të paracaktuara në dispozicion në ebay, p.sh. përshtatës PS2, borde përshtatës RS232 dhe ekrane që lidhen drejtpërdrejt me bordet arduino.

Ekziston edhe një tabelë e veçantë për ekranin e udhëhequr nga ylli - shiko më vonë në këtë Udhëzues.

Hapi 3: Softuer

Më poshtë është një skedar i quajtur Package.txt Ky është në të vërtetë një skedar.zip kështu që shkarkojeni dhe riemërtojeni atë (Instructables nuk lejon skedarë zip). Përfshirë është skica/programi Arduino dhe ky është një program i vetëm i përdorur nga të gjitha ekranet. Ekzistojnë gjithashtu të gjithë skedarët.zip për secilën nga ekranet.

Në fillim të programit janë një seri deklaratash #përcakto. Mos komentoni atë që korrespondon me ekranin. Përdorni Tools/Board për të zgjedhur Uno, Mega ose Nano. Ndryshimi i tabelave është aq i thjeshtë sa ndryshimi i një rreshti në kod.

Një nga sfidat e punës me shumë ekrane është se të gjithë duket se kanë nevojë për drejtuesit e tyre të softuerit. Të gjitha këto përfshihen në paketë. Testimi përfshinte marrjen e paketës dhe riinstalimin e saj në një makinë të re plotësisht nga e para. Ju gjithashtu mund të buroni kodin nga Github dhe Adafruit dhe LCDWiki. Ka disa raste kur versionet më të reja nuk funksionojnë, kështu që të gjitha versionet e punës përfshihen në zip. Herë pas here kishte raste kur një drejtues ndalonte një tjetër duke punuar pasi ata përdornin të njëjtin emër skedari, por versione të ndryshme. Ekziston një përshkrim në komentet në krye të programit që tregon se si të instaloni secilin drejtues. Shumica janë instaluar nga Arduino IDE me Sketch/Include Library/Add ZIP Library dhe kjo merr skedarin zip dhe e vendos atë në bibliotekat c: / users / computername / mydocuments / arduino \.

Nëse jeni duke përdorur vetëm një ekran atëherë disa nga këto libra nuk do të kenë nevojë të instalohen. Së paku ju duhen dy skedarë të tastierës dhe një për ekranin e veçantë. Disa shfaqin kodin e ndarjes. Ka udhëzime më të hollësishme në komentet në krye të programit, duke përfshirë marrjen e bibliotekës gfx nga Adafruit.

Meqenëse të gjitha ekranet përdorin të njëjtën skicë Arduino, ndryshimi i ekraneve është vetëm një çështje e mos komentimit të njërës prej rreshtave më poshtë:

// Ekranet e ndryshme, lini një nga të mëposhtmet pa koment#definoni DISPLAY_480X320_LCDWIKI_ILI9486 // 3.5 ", 480x320, tekst 80x32, mega, 16 bit, futet në mega 36 pin (dhe 2 kunja të energjisë). Http://www.lcdwiki.com /3.5inch_Arduino_Display-Mega2560. Më ngadalë se disa nga opsionet më poshtë, por një font më i lexueshëm dhe një ekran më i madh, 5 sekonda boot //#define DISPLAY_480X320_MCUFRIEND_ILI9486 // 3.5 ", 480x320, tekst 80x32, mega, vetëm 5x9 font, vetëm për font kunjat uno, power, D0-D14, A0-A5, font më i bukur se moduli ssd1289 40 pin por shumë më i ngadalshëm https://www.arduinolibraries.info/libraries/mcufriend_kbv https://github.com/adafruit/Adafruit -GFX-Library //#define DISPLAY_320X240_MCUFRIEND_ILI9341 // 2.4 ", 320x240, tekst 53x24, mega //#define DISPLAY_320X240_SSD1289_40COL // 3.5", 320x240, tekst 40x20, mega, UTFT bibliotekë (jo 12) Shpejt //#define DISPLAY_320X240_SSD1289_53COL // 3.5 ", 320x240, tekst 53x24, mega, font 9x5, mund të redaktojë fontin. Shpejt //#përcakto DISPLAY_320X240_SSD1289_80COL // 3.5", 320x240, tekst 80x30, mega, font të vogël 7x3, ngasës më i shpejtë se dy më sipër, më i shpejti nga të gjithë këta si 16 bit direkt në ekran sesa spi/i2c //#define DISPLAY_160X128_ST7735 // 1.8 ", 160x128, tekst 26x12, uno (ILI9341) SPI 128x160 //#përcakto DISPLAY_128X64_OLED_WHITE // 0.96 ", 128x64, tekst 21x6, mega, I2C, e bardhë e bardhë në të zezë (biblioteka tft për këtë tabelë plus të gjithë kodin plus tastierës i mbaron hapësira e ruajtjes së programit, edhe pse nevojat e dashit janë shumë të vogla, kështu që vetëm shkon në një mega) //#përcakto DISPLAY_20X4 // tekst 20x4, uno, LCD me I2C, tekst LCD https://www.arduino.cc/en/Reference/LiquidCrystal //#define DISPLAY_16X2 // tekst 16x2, uno, futet në uno, përdor kunjat 4 deri në 10 //#përcakto DISPLAY_STARBURST // tekst 12x2, nano, ekran me yje me kontrollues nano //#përcakto DISPLAY_320X240_QVGA_SPI_ILI9341 / /2.2 ", 320x240, tekst 11x8, uno, font i madh, uno, sinjale 3v, ekran me 9 pin SPI shihni Udhëzimet e Bodmer-uno https://www.instructables.com/id/Arduino-TFT-display-and-font- bibliotekë/ merrni zipin në fund dhe vendosni manualisht gfx dhe 9341 në dosjen e bibliotekës arduino

Hapi 4: Standardi ANSI

Standardi ANSI
Standardi ANSI

ANSI lejon komanda të thjeshta për të pastruar ekranin, për të lëvizur kursorin përreth dhe për të ndryshuar ngjyrat. Në disa prej fotografive ka një demonstrim që tregon të gjitha ngjyrat e planit të parë dhe të sfondit. Këto janë të kuqe, të verdha, jeshile, blu, cian, magenta, të zeza, të bardha, gri të errët, gri të lehta, dhe ngjyrat mund të jenë të ndritshme ose të zbehta, kështu që ka 16 ngjyra të përparme dhe 16 ngjyra të sfondit.

Quiteshtë mjaft e mundur të mendoni për shtimin në një mënyrë 'grafike' ku mund të vizatoni fotografi me rezolucion më të lartë në nivelin e pikselit dhe me 256 ose më shumë ngjyra. Kufizimet kryesore janë kujtesa e brendshme e Arduino dhe koha që duhet për të dërguar një fotografi në një lidhje serike në 9600 baud.

Kodi ka nevojë për një bajt për të ruajtur karakterin dhe një bajt për të ruajtur ngjyrat (3 bit për plan të parë, 3 për sfond, një për të ndritshme/të zbehtë dhe një për të theksuar). Pra, një ekran 80x30 do të ketë nevojë për 2400x2 = 4800 bajt, i cili do të përshtatet në një Mega por jo në një Uno.

Hapi 5: Shfaqet

Shfaqet
Shfaqet
Shfaqet
Shfaqet
Shfaqet
Shfaqet

Më sipër janë fotografitë e secilës ekran individual. Ka fotografi nga pjesa e përparme dhe e pasme e çdo ekrani dhe ato përfaqësojnë shumë prej markave të disponueshme në ebay ose të ngjashme. Disa janë I2C, disa janë paralele, disa kanë shkronja më të mëdha, disa mund të shfaqin plot 80 kolona të përshtatshme për Wordstar dhe programe të tjera të vjetra të përpunimit të tekstit. Ka më shumë detaje në tekstin e kodit arduino.

Hapi 6: Skematike

Më poshtë janë dy skedarë. Ata janë emëruar si.txt pasi Instructables nuk trajton skedarët.zip. Shkarkoni ato dhe riemëroni ato si.zip.

Ekziston skema dhe paraqitja e bordit si skedarë pdf. Ekziston edhe një paketë për PCB të shikuara. Këta janë gerberët dhe nëse shkoni te Seeed dhe e ngarkoni këtë duhet të shfaqë gerberët dhe më pas mund të bëni PCB. Bordi i segmentit 14 është i madh dhe kushton pak më shumë, por ai më i vogli përshtatet në formatin e preferuar 10x10cm të Seeed kështu që është mjaft i arsyeshëm për 5 ose 10 dërrasa - në fakt transporti kushton më shumë se dërrasat.

Quiteshtë mjaft e mundur të përdoren shumë nga ekranet pa pasur nevojë për një PCB. Ka module fole PS2, mburoja/module RS232 të gjitha të disponueshme në ebay ose të ngjashme. Disa ekrane si ato I2C thjesht mund të përdorin disa tela lidhës. Disa si ekranet SSD1289 vijnë me borde përshtatësish dhe mund të futen direkt në një Mega.

Hapi 7: Shfaqja e Starburst

Shfaqja e yjeve
Shfaqja e yjeve

Ekrani yll është një tabelë më e madhe dhe përdor një Nano dhe një numër të çipave 74xx për të bërë multipleximin. Kishte shumë eksperimente për të përcaktuar se sa ekrane mund të shumëfishoni para se ato të errësoheshin ose dridhja të bëhej shumë e dukshme. Ekranet erdhën nga Futurlec https://www.futurlec.com/LEDDisp.shtml Shfaqjet e 14 segmenteve gjithashtu mund të bëjnë shkronja të vogla dhe këto mund të modifikohen në kod nëse është e nevojshme. Riemërtoni këto skedarë nga.txt në.zip

Hapi 8: Shtimi i kodit për shfaqje të tjera

Isshtë e mundur të shtoni kodin për ekranet e tjera. Hapi i parë është të marrësh diçka, çdo gjë, të shfaqësh. Mund të jetë një piksel ose një shkronjë. Kjo përfshin kryesisht kërkimin e drejtuesve, shkarkimin e një, testimin e tij, gjetjen e tij nuk do të përpilohet, pastaj çinstalimin e atij drejtuesi në mënyrë që të mos shkaktojë konfuzion më vonë, pastaj provimin e një të ri. Hapi tjetër është marrja e një shkronje për t'u shfaqur me ngjyrën e duhur, pasi disa ekrane që duken identike në të vërtetë do të përmbysin ngjyrat. Për fat të mirë zakonisht vetëm një numër në kodin e fillimit do ta rregullojë këtë. Hapi tjetër është të shkruani disa rreshta për të përcaktuar nëse do të përdorni një uno ose mega, gjerësinë e ekranit, lartësinë, madhësinë e shkronjave, kunjat e tastierës dhe cilat skedarë të shoferit të përdorni. Këto fillojnë në rreshtin 39 në kod dhe ju mund të kopjoni formatin e ekraneve ekzistues.

Tjetra është të zbresësh në rreshtin 451 dhe të shtosh kodin e fillimit. Këtu vendosni ngjyrën e sfondit dhe rrotullimin dhe filloni shfaqjen.

Tjetra është të shkoni në rreshtin 544 dhe të shtoni kodin për të shfaqur një karakter. Në disa raste kjo është vetëm një rresht, p.sh

my_lcd. Draw_Char (xPixel, yPixel, c, tftForecolor, tftBackcolor, 1, 0); // x, y, char, fore, back, size, mode

Tjetra është të shkoni në rreshtin 664 dhe të shtoni kodin për të vizatuar një piksel. Përsëri, ndonjëherë kjo është vetëm një rresht p.sh.:

tft.drawPixel (xPixel, yPixel, tftForecolor);

Së fundi, shkoni në rreshtin 727 dhe shtoni kodin për të nxjerrë një vijë vertikale për kursorin, për shembull

tft.drawFastVLine (xPixel, yPixel, fontHeight, tftForecolor);

Programi rendit gjëra të tilla si sa memorie të ndahet për tamponin e ekranit bazuar në gjerësinë e ekranit dhe madhësinë e fontit.

Hapi 9: Demonstrimi i Wordstar

Kjo është bërë duke përdorur një kompjuter CP/M, dhe ka shumë opsione në dispozicion këtu. Më duhej diçka e shpejtë për tu vendosur, kështu që përdor një emulim në një ESP32 (Google ESP32 CP/M). Ka shumë kompjuterë të tjerë retro në dispozicion, për shembull, emulimi i Grant Searle FPGA dhe RC2014 për ata që preferojnë të përdorin një Z80 të vërtetë. Shumë kompjuterë retrokompjuter kanë tendencë të përdorin një program terminal në një PC si ekran, p.sh. Teraterm. Shumë korrigjime të këtij projekti ANSI përfshinin drejtimin e një programi terminal dhe programin ANSI paralelisht dhe sigurimin se ekranet dukeshin identikë.

Hapi 10: Mendime të mëtejshme

Ndërsa ekranet rriten në madhësi ato bëhen më të ngadalta dhe më të ngadalta. Rishikimi i një karakteri përfshin rishikimin e çdo pikseli në atë karakter pasi ngjyra e sfondit gjithashtu duhet të vizatohet, kështu që gjithçka zbret në atë se sa shpejt mund të vizatoni një piksel. Ka disa rregullime, për shembull nëse një ekran nuk mund të vazhdojë me të dhënat që vijnë, thjesht ruani tekstin në tamponin e ekranit dhe më pas bëni një rishikim të ekranit të plotë kur nuk vjen më tekst. Shumë ekrane që shihni Shitja tregon një pamje të bukur në ekran, por ajo që ata mund të mos tregojnë është se sa kohë u desh për të shfaqur atë fotografi, dhe në disa raste mund të jetë 5 sekonda ose më shumë. I2C dhe SPI janë të shkëlqyera për ekranet më të vegjël, por çdo gjë mbi 50 kolona ka nevojë për një autobus të dhënash 8 ose 16 bit.

Wordstar është pak i mundimshëm për t'u përdorur në 9600 baud dhe 19200 është shumë më i përdorshëm për të lëvizur tekstin, por ekranet me të vërtetë nuk mund të vazhdojnë.

Ekrani më i shpejtë që kam përdorur ishte në çipin Propeller me dy çipa 8 bit të jashtëm 512k RAM, për të krijuar një autobus të dhënash paralel 16 bit. Çdo font ishte para-ngarkuar në dash. Një kaskadë e patate të skuqura 74xx u përdor për të nxjerrë të dhënat në ekran. Kjo do të thoshte se nuk kishte asnjë përpunim të brendshëm brenda marrjes dhe nxjerrjes së të dhënave në CPU, dhe shkalla e rifreskimit ishte aq e shpejtë sa çipi Propeller mund të kalonte një kunj. Çuditërisht, ekranet ishin në gjendje të vazhdonin me këtë, edhe në 20Mhz, dhe kështu ishte e mundur të bëhej një azhurnim i ekranit të plotë në vetëm 30 milisekonda. Ky lloj norme është mjaft i shpejtë për të bërë lëvizjen pa probleme, siç shihni në telefonat celularë.

Çipi Propeller ishte i avancuar mbi dhjetë vjet më parë, dhe tani ka më shumë mundësi duke përfshirë ESP8266 dhe ESP32 të cilat kanë sasi të mëdha të dashit të brendshëm. Sidoqoftë, ato patate të skuqura ende nuk kanë një numër të madh të kunjave, kështu që prapëseprapë mund të ketë merita në përdorimin e mënyrës së vjetër të një çipi të jashtëm të ramit që është vendosur në ekran.

Për ekranet më të mëdha mund të jetë më e lirë të përdorni një ekran LCD TV ose ekran VGA dhe të shikoni disa nga emulatorët ANSI të koduar, p.sh. ESP32, të cilët drejtojnë VGA drejtpërdrejt.

Shpresoj se do ta gjeni të dobishëm këtë projekt.

James Moxham

Adelaide, Australi

Recommended: