Sadržaj:

Zbirka ANSI terminala: 10 koraka
Zbirka ANSI terminala: 10 koraka

Video: Zbirka ANSI terminala: 10 koraka

Video: Zbirka ANSI terminala: 10 koraka
Video: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, Srpanj
Anonim
Zbirka ANSI terminala
Zbirka ANSI terminala

Ovaj je projekt započeo kao način prikaza teksta od 80 stupaca na LCD zaslonu prikladnom za pokretanje staromodnog programa za obradu teksta, poput Wordstara. Dodani su različiti drugi zasloni u veličinama od 0,96 do 6 inča. Zasloni koriste jednu PCB kao i jednu Arduino skicu/program.

Za povezivanje s računalom postoji serijska RS232 veza i PS/2 utičnica za tipkovnicu. Zasloni su odabrani tako da predstavljaju one koji su općenito dostupni po razumnim cijenama. Ovisno o potrebnoj memoriji, zasloni koriste Arduino Nano, Uno ili Mega.

Korak 1: Sažetak prikaza

Sažetak prikaza
Sažetak prikaza

Postoje različiti zasloni rezolucije 480x320. To omogućuje font veličine 9x5 i tekst u stupcu od 80. Postoje razne ploče rezolucije 320x240, s fontovima 9x5 i vrlo malim fontom 7x3 koji dopušta tekst od 80 stupaca. Postoje i manje ploče sa 160x120 i 128x64 piksela. Također 20x4 i 16x2 tekstualni zasloni, i na kraju 12x2 četrnaest segmentna ploča za prikaz zvijezda.

Neki zasloni koriste I2C, neki su SPI, a za veće zaslone 16 -bitna podatkovna sabirnica za veće brzine ažuriranja.

Manji zasloni koriste Arduino Uno. Većim pločama potrebno je više memorije, pa koristite Mega. Zvjezdana ploča za prikaz koristi Nano.

Ovdje bih mogao spomenuti da fotografije ne odgovaraju mnogim prikazima. Sićušni bijeli oled zaslon vrlo je oštar i svijetao što je otežavalo fokusiranje fotoaparata, a zaslon sa zvjezdastim sjajem izgleda mnogo oštrije u stvarnom životu.

Korak 2: Hardver

Hardver
Hardver

PCB je dizajniran za rad sa što je moguće više zaslona. Lako se mijenja između Mega i Uno pomoću četiri kratkospojnika. Postoje otpornici razdjelnika napona za zaslone koji rade na 3V. I2C pinovi izlaze u grupi tako da se zasloni mogu izravno priključiti. Terminal radi na 9600 bauda, pa iako se to može povećati, mnogi veći zasloni neće se iscrtavati mnogo brže od ovoga. PS2 tipkovnica priključuje se na DIN6 utičnicu. USB tipkovnice također će raditi s jeftinim utikačem za adapter. Možete napraviti jednostavan test povratne veze spajanjem iglica 2 i 3 na D9, a zatim će se na zaslonu pojaviti znakovi otkucani na tipkovnici.

U nekim slučajevima PCB nije potreban i moguće je raditi na unaprijed izrađenim modulima dostupnim na ebayu, npr. PS2 adapteri, RS232 adapterske ploče i zasloni koji se priključuju izravno na arduino ploče.

Postoji i zasebna ploča za LED zaslon s prikazom zvijezda - pogledajte kasnije u ovom Uputu.

Korak 3: Softver

Ispod je datoteka pod nazivom Package.txt Ovo je zapravo.zip datoteka pa je preuzmite i preimenujte (Instructables ne dopušta zip datoteke). Uključena je Arduino skica/program i ovo je jedan program koji koriste svi zasloni. Tu su i sve.zip datoteke za svaki zaslon.

Na početku programa nalazi se niz izjava #define. Raskomentirajte onu koja odgovara zaslonu. Pomoću Alati/ploča odaberite Uno, Mega ili Nano. Promjena ploča jednostavna je kao i promjena jednog retka u kodu.

Jedan od izazova u radu s mnogim zaslonima je to što im izgleda da svi trebaju vlastite upravljačke programe za softver. Sve je to uključeno u paket. Testiranje je uključivalo uzimanje paketa i njegovu ponovnu instalaciju na novi stroj potpuno od nule. Izvorni kod možete također pronaći na Githubu i Adafruitu te na LCDWikiju. Postoji nekoliko slučajeva u kojima novije verzije ne rade pa su sve radne verzije uključene u zip. Povremeno je bilo slučajeva u kojima je jedan upravljački program zaustavio rad drugog jer su koristili isti naziv datoteke, ali različite verzije. U komentarima pri vrhu programa nalazi se opis koji pokazuje kako instalirati svaki upravljački program. Većina se instalira iz Arduino IDE -a s bibliotekom Sketch/Include Library/Add ZIP, a to uzima zip datoteku i stavlja je u c: / users / computername / mydocuments / arduino / libraries.

Ako koristite samo jedan zaslon, neke od ovih biblioteka neće biti potrebno instalirati. Najmanje su vam potrebne dvije datoteke tipkovnice i jedna za određeni zaslon. Neki prikazi dijele kôd. Detaljnije upute postoje u komentarima na vrhu programa, uključujući preuzimanje biblioteke gfx od Adafruit -a.

Budući da svi zasloni koriste istu Arduino skicu, mijenjanje zaslona samo je pitanje komentara na jedan od niže navedenih redaka:

// Različiti zasloni, ostavite jedno od sljedećeg bez komentara#define DISPLAY_480X320_LCDWIKI_ILI9486 // 3.5 ", 480x320, tekst 80x32, mega, 16 bit, priključuje se u mega 36 pinova (i 2 priključka za napajanje).https://www.lcdwiki.com /3.5inch_Arduino_Display-Mega2560. Sporije od nekih dolje navedenih opcija, ali čitljiviji font i veći zaslon, podizanje od 5 sekundi //#definirajte DISPLAY_480X320_MCUFRIEND_ILI9486 // 3.5 ", 480x320, tekst 80x32, mega, 5x9 font, samo za mega, ali koristi samo za mega, ali koristi samo mega uno pinovi, snaga, D0-D14, A0-A5, ljepši font od 40-pinskog modula ssd1289, ali puno sporije 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 biblioteka (bez fontova manjih od 8x12). Brzo //#definiraj DISPLAY_320X240_SSD1289_53COL // 3,5 ", 320x240, tekst 53x24, mega, font 9x5, može uređivati font. Brzo //#definiraj DISPLAY_320X240_SSD1289_80COL // 3,5", 320x240, tekst 80x30, mega, sitni font 7x3, može se uređivati font, brži upravljački program od gore navedena dva, najbrži od svih ovih kao 16 -bitni izravni pogon na zaslon, a ne spi/i2c //#define DISPLAY_160X128_ST7735 // 1.8 ", 160x128, tekst 26x12, uno (ILI9341) SPI 128x160 //#definiraj DISPLAY_128X64_OLED_WHITE // 0,96 ", 128x64, tekst 21x6, mega, I2C, oljnato bijelo na crno (u knjižnici tft za ovu ploču plus sav kôd i tipkovnicu ponestaje prostora za pohranu programa, iako su potrebe za ramom vrlo male, pa samo radi na mega) //#definirati DISPLAY_20X4 // tekst 20x4, uno, LCD s I2C, tekstualni LCD https://www.arduino.cc/en/Reference/LiquidCrystal //#definirati DISPLAY_16X2 // tekst 16x2, uno, priključuje se na uno, koristi pinove 4 do 10 //#definiraj DISPLAY_STARBURST // tekst 12x2, nano, prikaz zvjezdanog niza s nano kontrolerom //#definiraj DISPLAY_320X240_QVGA_SPI_ILI9341 / /2.2 ", 320x240, tekst 11x8, uno, veliki font, uno, 3v signali, 9-pinski SPI zaslon, pogledajte Bodmerove upute-uno https://www.instructables.com/id/Arduino-TFT-display-and-font- library/ get zip na dnu i ručno stavite gfx i 9341 u mapu arduino knjižnice

Korak 4: ANSI standard

ANSI standard
ANSI standard

ANSI omogućuje jednostavnim naredbama za brisanje zaslona, pomicanje kursora i promjenu boja. Na nekoliko fotografija nalazi se demo koji prikazuje sve boje prednjeg plana i pozadine. To su crvena, žuta, zelena, plava, cijan, magenta, crna, bijela, tamno siva, svijetlo siva, a boje mogu biti svijetle ili prigušene pa postoji 16 boja prednjeg plana i 16 boja pozadine.

Sasvim je moguće razmišljati o dodavanju u "grafičkom" načinu rada gdje možete crtati slike veće rezolucije na razini piksela i sa 256 ili više boja. Glavna ograničenja su unutarnja memorija Arduina i vrijeme potrebno za slanje slike niz serijsku vezu na 9600 bauda.

Kôd treba jedan bajt za spremanje znaka i jedan bajt za spremanje boja (3 bita za prednji plan, 3 za pozadinu, jedan za svijetlo/zatamnjeno i jedan za podebljano). Dakle, za zaslon veličine 80x30 bit će potrebno 2400x2 = 4800 bajtova, što će stati u Mega, ali ne i u Uno.

5. korak: Zasloni

Zasloni
Zasloni
Zasloni
Zasloni
Zasloni
Zasloni

Gore su fotografije svakog pojedinačnog zaslona. Postoje fotografije s prednje i stražnje strane svakog zaslona i predstavljaju mnoge marke dostupne na ebayu ili slično. Neki su I2C, neki su paralelni, neki imaju veće fontove, neki mogu prikazati punih 80 stupaca prikladnih za Wordstar i druge stare programe za obradu teksta. Više je detalja u tekstu arduino koda.

Korak 6: Shematski prikaz

Ispod su dvije datoteke. Nazivaju se kao.txt jer Instructables ne obrađuje.zip datoteke. Preuzmite ih i preimenujte u.zip.

Shema i izgled ploče su pdf datoteke. Postoji i paket za Seeed PCB. Ovo su gerberi i ako odete na Seeed i učitate ovo, trebao bi prikazati gerbere i tada možete napraviti PCB -e. 14 segmentna ploča velika je i košta nešto više, ali manja se uklapa u preferirani Seeed format 10x10 cm pa je sasvim razumno za 5 ili 10 ploča - zapravo dostava košta više od ploča.

Sasvim je moguće koristiti mnoge zaslone bez potrebe za PCB -om. Postoje moduli utičnica PS2, štitnici/moduli RS232 svi dostupni na ebayu ili slično. Neki zasloni poput I2C mogu koristiti samo nekoliko žica za spajanje. Neki poput ekrana SSD1289 dolaze s adapterskim pločama i mogu se priključiti ravno u Mega.

Korak 7: Zaslon Starburst

Zvjezdani prikaz
Zvjezdani prikaz

Zvjezdani zaslon je veća ploča i koristi Nano i brojne čipove od 74xx za obavljanje multipleksiranja. Bilo je mnogo eksperimenata kako bi se utvrdilo koliko zaslona možete multipleksirati prije nego što postanu previše zatamnjeni ili treperenje postane previše uočljivo. Zasloni su došli iz Futurleca https://www.futurlec.com/LEDDisp.shtml 14 -segmentni zasloni mogu raditi i mala slova, a po potrebi se mogu promijeniti u kodu. Preimenujte ove datoteke iz.txt u.zip

Korak 8: Dodavanje koda za druge zaslone

Moguće je dodati kod za druge zaslone. Prvi korak je dobiti nešto, bilo što, za prikaz. To može biti piksel ili slovo. To uglavnom uključuje traženje upravljačkih programa, preuzimanje jednog, testiranje, utvrđivanje da se neće prevesti, zatim deinstaliranje tog upravljačkog programa kako kasnije ne bi izazvalo zabunu, zatim isprobavanje novog. Sljedeći korak je da se slovo prikaže u ispravnoj boji jer će neki zasloni koji izgledaju identično zapravo preokrenuti boje. Srećom, obično samo jedan broj u početnom kodu to popravi. Sljedeći korak je napisati nekoliko redaka za definiranje hoćete li koristiti uno ili mega, širinu zaslona, visinu, veličinu fonta, pinove tipkovnice i koje datoteke upravljačkog programa koristiti. Oni počinju u retku 39 u kodu i možete kopirati format postojećih zaslona.

Slijedi prelazak na redak 451 i dodavanje koda za pokretanje. Ovdje postavljate boju pozadine i rotaciju te pokrećete prikaz.

Slijedi prelazak na redak 544 i dodavanje koda za prikaz znaka. U nekim slučajevima ovo je samo jedan redak, npr

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

Slijedi prelazak na redak 664 i dodavanje koda za crtanje piksela. Opet, ponekad je ovo samo jedan redak, npr.

tft.drawPixel (xPixel, yPixel, tftForecolor);

Na kraju idite na redak 727 i dodajte kod za crtanje okomite crte za kursor, na primjer

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

Program razvrstava stvari poput količine memorije koju treba dodijeliti za međuspremnik zaslona ovisno o širini zaslona i veličini fonta.

Korak 9: Wordstar demonstracija

To je učinjeno pomoću računala CP/M, a ovdje su dostupne mnoge opcije. Trebalo mi je nešto brzo za postavljanje, pa sam koristio emulaciju na ESP32 (Google ESP32 CP/M). Dostupna su i mnoga druga retro računala, na primjer, FPGA emulacija Granta Searla i RC2014 za one koji više vole koristiti pravi Z80. Mnoga retroračunala koriste terminalni program na računalu kao zaslon, npr. Teraterm. Mnogo otklanjanja pogrešaka u ovom ANSI projektu uključivalo je paralelno pokretanje terminalnog programa i ANSI programa i provjeru izgleda li ekrani identično.

Korak 10: Daljnje misli

Kako se zasloni povećavaju, sve su sporiji. Ponovno iscrtavanje znaka uključuje precrtavanje svakog piksela u tom znaku jer se mora izvući i boja pozadine, pa se sve svodi na to koliko brzo možete nacrtati piksel. Postoje neke izmjene, na primjer, ako zaslon ne može pratiti dolazne podatke, samo pohranite tekst u međuspremnik zaslona, a zatim izvršite ponovno iscrtavanje cijelog zaslona kada više ne dolazi tekst. Mnogi prikazi koje vidite sale pokazuju lijepu sliku na ekranu, ali ono što možda ne pokazuju je koliko je vremena trebalo za prikaz te slike, a u nekim slučajevima to može biti i 5 sekundi ili više. I2C i SPI izvrsni su za manje zaslone, ali sve preko 50 stupaca treba sabirnicu podataka od 8 ili 16 bita.

Wordstar je pomalo nezgrapan za korištenje pri 9600 bauda, a 19200 je mnogo upotrebljiviji za pomicanje teksta, ali zasloni doista ne mogu pratiti.

Najbrži zaslon koji sam koristio bio je na Propeller čipu s dva 8 -bitna vanjska 512k ram čipa, za stvaranje 16 -bitne paralelne sabirnice podataka. Svaki font je unaprijed umetnut u RAM. Kaskada od 74xx brojačkih čipova upotrijebljena je za taktiranje podataka na zaslonu. To je značilo da nije bilo interne obrade unutar CPU -a za dohvaćanje i izlaz podataka, a brzina osvježavanja bila je onoliko brza koliko je čip Propelera mogao prebaciti pin. Iznenađujuće, zasloni su to uspjeli pratiti, čak i pri 20Mhz, pa je bilo moguće ažurirati cijeli zaslon u samo 30 milisekundi. Takva je brzina dovoljno brza za glatko pomicanje, kao što vidite na mobilnim telefonima.

Propelerski čip bio je najnoviji prije više od deset godina, a sada postoji više opcija uključujući ESP8266 i ESP32 koje imaju velike količine unutarnjeg ovna. Međutim, ti čipovi još uvijek nemaju veliki broj pinova, pa bi ipak moglo postojati prednost korištenja old-skool načina vanjskog ram čipa koji radi na zaslonu.

Za veće zaslone moglo bi biti jeftinije koristiti LCD TV ili VGA zaslon i pogledati neke od kodiranih ANSI emulatora, npr. ESP32, koji izravno pokreću VGA.

Nadam se da će vam ovaj projekt biti od koristi.

James Moxham

Adelaide, Australija

Preporučeni: