Sisällysluettelo:
- Vaihe 1: Yhteenveto näytöistä
- Vaihe 2: Laitteisto
- Vaihe 3: Ohjelmisto
- Vaihe 4: ANSI -standardi
- Vaihe 5: Näyttää
- Vaihe 6: Kaavio
- Vaihe 7: Starburst -näyttö
- Vaihe 8: Koodin lisääminen muille näytöille
- Vaihe 9: Wordstar -esittely
- Vaihe 10: Lisää ajatuksia
Video: Kokoelma ANSI -päätteitä: 10 vaihetta
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:00
Tämä projekti alkoi tapa näyttää 80 sarakkeen tekstiä nestekidenäytöllä, joka soveltuu vanhanaikaisen tekstinkäsittelyohjelman, kuten Wordstarin, käyttämiseen. Erilaisia muita näyttöjä lisättiin kooltaan 0,96 - 6 tuumaa. Näytöt käyttävät yhtä piirilevyä sekä yhtä Arduino -luonnosta/ohjelmaa.
RS232 -sarjaliitäntä tietokoneeseen liittämistä varten ja näppäimistö PS/2 -liitäntään. Näytöt valittiin edustamaan yleisesti saatavilla olevia kohtuulliseen hintaan. Muistista riippuen näytöt käyttävät Arduino Nano-, Uno- tai Mega -muistia.
Vaihe 1: Yhteenveto näytöistä
On olemassa erilaisia näyttöjä, joiden resoluutio on 480x320. Tämä mahdollistaa 9x5 -fontin ja 80 -sarakkeisen tekstin. On olemassa erilaisia tauluja, joiden resoluutio on 320 x 240, joissa on 9 x 5 fonttia ja myös hyvin pieni 7 x 3 -fontti, joka sallii 80 saraketekstin. On myös pienempiä tauluja, joissa on 160x120 ja 128x64 pikseliä. Myös 20x4- ja 16x2 -tekstinäytöt ja lopuksi 12x2 neljäntoista segmentin starburst -näyttötaulu.
Jotkut näytöt käyttävät I2C: tä, toiset SPI: tä ja suuremmissa näytöissä 16 -bittinen dataväylä nopeamman päivitysnopeuden saavuttamiseksi.
Pienemmät näytöt käyttävät Arduino Unoa. Suuremmat levyt tarvitsevat enemmän muistia, joten käytä Megaa. Starburst -näyttölevy käyttää nanoa.
Tässä vaiheessa voisin mainita, että valokuvat eivät tee oikeutta monille näytöille. Pieni valkoinen OLED -näyttö on erittäin terävä ja kirkas, mikä vaikeutti kameran tarkentamista, ja starburst -led -näyttö näyttää paljon terävämmältä tosielämässä.
Vaihe 2: Laitteisto
Piirilevy on suunniteltu toimimaan mahdollisimman monen näytön kanssa. Megan ja Unon välillä on helppo vaihtaa neljällä puserolla. Näytöille, jotka toimivat 3 V: lla, on jännitteenjakajavastuksia. I2C -nastat tuodaan esiin ryhmässä, jotta näytöt voidaan kytkeä suoraan. Pääte toimii 9600 baudilla, ja vaikka tätä voidaan lisätä, monet suuremmista näytöistä eivät piirrä paljon nopeammin kuin tämä. PS2 -näppäimistö kytketään DIN6 -pistorasiaan. USB -näppäimistöt toimivat myös halvalla sovitinpistokkeella. Voit tehdä yksinkertaisen silmukkatestin liittämällä D9: n nastat 2 ja 3, ja sitten näppäimistöllä kirjoitetut merkit tulevat näyttöön.
Joissakin tapauksissa piirilevyä ei tarvita, ja asiat voidaan saada toimimaan valmiilla moduuleilla, jotka ovat saatavana ebaystä, esim. PS2-sovittimet, RS232-sovitinkortit ja näytöt, jotka kytketään suoraan arduino-levyihin.
Starburst -led -näyttöä varten on myös erillinen levy - katso myöhemmin tässä oppaassa.
Vaihe 3: Ohjelmisto
Alla on tiedosto nimeltä Package.txt Tämä on itse asiassa.zip -tiedosto, joten lataa ja nimeä se uudelleen (Instructables ei salli zip -tiedostoja). Mukana on Arduino -luonnos/ohjelma ja tämä on yksi ohjelma, jota kaikki näytöt käyttävät. Kussakin näytössä on myös kaikki.zip -tiedostot.
Ohjelman alussa on joukko #määrittelyjä. Poista kommentti siitä, joka vastaa näyttöä. Valitse Työkalut/Taulu -valikosta Uno, Mega tai Nano. Taulujen vaihtaminen on yhtä helppoa kuin yhden rivin vaihtaminen koodissa.
Yksi monien näyttöjen kanssa työskentelyn haasteista on, että ne kaikki näyttävät tarvitsevan omia ohjelmisto -ohjaimia. Nämä kaikki sisältyvät pakettiin. Testaukseen kuului paketin ottaminen ja sen asentaminen uudelle koneelle täysin tyhjästä. Voit myös hankkia lähdekoodin Githubista ja Adafruitista sekä LCDWikistä. On olemassa muutamia tapauksia, joissa uudemmat versiot eivät toimi, joten kaikki toimivat versiot sisältyvät zipiin. Joskus oli tapauksia, joissa yksi ohjain pysäytti toisen toimimasta, koska he käyttivät samaa tiedostonimeä, mutta eri versioita. Ohjelman yläosassa olevissa kommenteissa on kuvaus, joka näyttää kunkin ohjaimen asentamisen. Useimmat on asennettu Arduino IDE: stä Sketch/Include Library/Add ZIP -kirjastoon, ja tämä ottaa zip -tiedoston ja asettaa sen c: / users / computername / mydocuments / arduino / libraries.
Jos käytät vain yhtä näyttöä, joitain näistä kirjastoista ei tarvitse asentaa. Tarvitset vähintään kaksi näppäimistötiedostoa ja tietyn näytön. Jotkut näytöt jakavat koodin. Ohjelman yläosassa olevissa kommenteissa on tarkemmat ohjeet, mukaan lukien gfx -kirjaston hankkiminen Adafruitista.
Koska kaikki näytöt käyttävät samaa Arduino -luonnosta, näyttöjen vaihtaminen edellyttää vain yhden alla olevan rivin kommentoimista:
// Eri näytöt, jätä yksi seuraavista kommentoimatta#define DISPLAY_480X320_LCDWIKI_ILI9486 // 3.5 ", 480x320, teksti 80x32, mega, 16 bit, kytketään mega 36 -nastaiseen (ja 2 virtanastaan).https://www.lcdwiki.com /3.5inch_Arduino_Display-Mega2560. Hitaampi kuin jotkut alla olevista vaihtoehdoista, mutta luettavampi fontti ja suurempi näyttö, 5 sekunnin käynnistys //#define DISPLAY_480X320_MCUFRIEND_ILI9486 // 3.5 ", 480x320, teksti 80x32, mega, 5x9 fontti, vain mega, mutta käyttää vain uno-nastat, virta, D0-D14, A0-A5, hienompi fontti kuin ssd1289 40-nastainen moduuli, mutta paljon hitaampi https://www.arduinolibraries.info/libraries/mcufriend_kbv https://github.com/adafruit/Adafruit -GFX-kirjasto //#define DISPLAY_320X240_MCUFRIEND_ILI9341 // 2.4 ", 320x240, teksti 53x24, mega //#define DISPLAY_320X240_SSD1289_40COL // 3.5", 320x240, teksti 40x20, mega, UTFT-kirjasto (ei fontteja, jotka ovat pienempiä kuin 8x12) Nopea //#määritä DISPLAY_320X240_SSD1289_53COL // 3.5 ", 320x240, teksti 53x24, mega, 9x5 fontti, voi muokata fonttia. Nopea //#define DISPLAY_320X240_SSD1289_80COL // 3.5", 320x240, teksti 80x30, mega, pieni 7x3 -fontti, muokata fonttia, nopeampi ohjain kuin kaksi yllä, nopein näistä kaikista 16 -bittinen suora asema näytölle spi/i2c // // define DISPLAY_160X128_ST7735 // 1.8 ", 160x128, teksti 26x12, uno (ILI9341) SPI 128x160 //#define DISPLAY_128X64_OLED_WHITE // 0,96 ", 128x64, teksti 21x6, mega, I2C, olet valkoinen mustalla (tämän levyn tft -kirjasto sekä kaikki koodit ja näppäimistö loppuvat ohjelman tallennustilasta, vaikka ram -tarve on hyvin pieni, joten vain toimii megaa) //#define DISPLAY_20X4 // teksti 20x4, uno, LCD I2C: llä, teksti LCD https://www.arduino.cc/en/Reference/LiquidCrystal //#define DISPLAY_16X2 // teksti 16x2, uno, kytketään unoon, käytetään nastat 4-10 //#define DISPLAY_STARBURST // teksti 12x2, nano, tähtikuvioinen näyttö ja nano -ohjain //#define DISPLAY_320X240_QVGA_SPI_ILI9341 / /2.2 ", 320x240, teksti 11x8, uno, iso fontti, uno, 3v-signaalit, 9-nastainen SPI-näyttö, katso Bodmer's Instructables-uno https://www.instructables.com/id/Arduino-TFT-display-and-font- Kirjasto/ hanki zip alareunaan ja laita gfx ja 9341 manuaalisesti arduino -kirjastoon
Vaihe 4: ANSI -standardi
ANSI mahdollistaa yksinkertaisten komentojen avulla näytön tyhjentämisen, kohdistimen siirtämisen ja värien vaihtamisen. Muutamissa kuvissa on demo, joka näyttää kaikki etualan ja taustan värit. Nämä ovat punainen, keltainen, vihreä, sininen, syaani, magenta, musta, valkoinen, tummanharmaa, vaaleanharmaa ja värit voivat olla kirkkaita tai himmeitä, joten etualalla on 16 ja taustalla 16 väriä.
On täysin mahdollista ajatella lisäämistä "grafiikkatilaan", jossa voit piirtää paljon korkeamman resoluution kuvia pikselitasolla ja joissa on vähintään 256 väriä. Tärkeimmät rajoitukset ovat Arduinon sisäinen muisti ja aika, joka kuluu kuvan lähettämiseen sarjayhteydellä 9600 baudilla.
Koodi tarvitsee yhden tavun merkin tallentamiseen ja yhden tavun värien tallentamiseen (3 bittiä etualalle, 3 taustalle, yksi kirkkaalle/himmeälle ja yksi lihavoidulle). Joten 80x30 -näyttö tarvitsee 2400x2 = 4800 tavua, joka mahtuu megaan, mutta ei Unoon.
Vaihe 5: Näyttää
Yllä on kuvia jokaisesta näytöstä. Kunkin näytön edestä ja takaa on kuvia, ja ne edustavat monia ebaystä tai vastaavista saatavia merkkejä. Jotkut ovat I2C, jotkut ovat rinnakkaisia, jotkut ovat suurempia fontteja, jotkut voivat näyttää täydet 80 saraketta, jotka sopivat Wordstarille ja muille vanhoille tekstinkäsittelyohjelmille. Arduino -koodin tekstissä on enemmän yksityiskohtia.
Vaihe 6: Kaavio
Alla on kaksi tiedostoa. Niiden nimi on.txt, koska Instructables ei käsittele.zip -tiedostoja. Lataa ne ja nimeä ne uudelleen nimellä.zip.
Siellä on kaavamainen ja levyn asettelu pdf -tiedostoina. On myös paketti Seeed PCB: lle. Nämä ovat gerbereitä ja jos siirryt kohtaan Seeed ja lataat tämän, sen pitäisi näyttää gerberit ja voit sitten saada piirilevyjä. 14 -segmenttilevy on suuri ja maksaa hieman enemmän, mutta pienempi sopii Seeedin 10x10 cm: n muotoon, joten se on kohtuullinen 5 tai 10 levylle - itse asiassa toimitus maksaa enemmän kuin levyt.
On täysin mahdollista käyttää monia näyttöjä ilman PCB: tä. Ebaystä tai vastaavasta on saatavana PS2 -pistorasiamoduuleja, RS232 -kilpiä/-moduuleja. Jotkut näytöt, kuten I2C, voivat käyttää vain muutamia kytkentäjohtoja. Jotkut, kuten SSD1289 -näytöt, tulevat sovitinkorttien kanssa ja ne voidaan liittää suoraan Mega -laitteeseen.
Vaihe 7: Starburst -näyttö
Starburst -näyttö on suurempi levy ja käyttää multipleksointia nanon ja 74xx -sirun avulla. Oli paljon kokeita sen määrittämiseksi, kuinka monta näyttöä voit multipleksoida, ennen kuin ne muuttuvat liian himmeiksi tai välkkymisestä tuli liian havaittavaa. Näytöt tuli Futurlecilta https://www.futurlec.com/LEDDisp.shtml 14 segmentin näytöt voivat myös tehdä pieniä kirjaimia, ja niitä voidaan tarvittaessa muuttaa koodissa. Nimeä nämä tiedostot uudelleen.txt -tiedostosta.zip -tiedostoksi
Vaihe 8: Koodin lisääminen muille näytöille
On mahdollista lisätä koodia muille näytöille. Ensimmäinen askel on saada jotain näytettäväksi. Se voi olla pikseli tai kirjain. Tämä sisältää lähinnä ohjainten etsimisen, lataamisen, testaamisen, löytämisen, jota ei käännetä, ja sen poistamisen, jotta se ei aiheuta hämmennystä myöhemmin, ja kokeilla sitten uutta. Seuraava askel on saada kirjain näytettäväksi oikealla värillä, koska jotkut näytöt, jotka näyttävät identtisiltä, kääntävät värit. Onneksi yleensä vain yksi numero käynnistyskoodissa korjaa tämän. Seuraava askel on kirjoittaa muutama rivi määrittämään, käytetäänkö uno vai mega, näytön leveys, korkeus, kirjasinkoko, näppäimistön nastat ja käytettävät ohjaintiedostot. Nämä alkavat koodin riviltä 39 ja voit kopioida olemassa olevien näyttöjen muodon.
Seuraavaksi siirrytään riville 451 ja lisätään käynnistyskoodi. Tässä voit asettaa taustavärin ja kierto ja käynnistää näytön.
Seuraavaksi siirrytään riville 544 ja lisätään koodi näyttämään merkki. Joissakin tapauksissa tämä on vain yksi rivi, esim
my_lcd. Draw_Char (xPixel, yPixel, c, tftForecolor, tftBackcolor, 1, 0); // x, y, merkki, etu, selkä, koko, tila
Seuraavaksi siirrytään riville 664 ja lisätään koodi piirtääkseen pikselin. Joskus tämä on vain yksi rivi, esim.
tft.drawPixel (xPixel, yPixel, tftForecolor);
Siirry lopuksi riville 727 ja lisää koodi esimerkiksi piirtämään pystysuora viiva kohdistimelle
tft.drawFastVLine (xPixel, yPixel, fontHeight, tftForecolor);
Ohjelma lajittelee asioita, kuten kuinka paljon muistia varataan näytön puskurille näytön leveyden ja fonttikoon perusteella.
Vaihe 9: Wordstar -esittely
Tämä tehtiin käyttämällä CP/M -tietokonetta, ja täällä on monia vaihtoehtoja. Tarvitsin jotain nopeaa käyttöönottoa, joten käytin emulointia ESP32: ssa (Google ESP32 CP/M). Saatavilla on monia muita retrotietokoneita, esimerkiksi Grant Searlen FPGA -emulointi ja RC2014 niille, jotka haluavat käyttää todellista Z80: ta. Monet retrotietokoneet käyttävät yleensä näytön pääteohjelmaa, esim. Teraterm. Tämän ANSI -projektin virheenkorjaus sisälsi paljon pääteohjelman ja ANSI -ohjelman käynnistämistä rinnakkain ja sen varmistamista, että näytöt näyttivät identtisiltä.
Vaihe 10: Lisää ajatuksia
Näytön koon kasvaessa ne hidastuvat ja hidastuvat. Hahmon uudelleen piirtäminen merkitsee jokaisen kyseisen merkin pikselin uudelleen piirtämistä, koska myös taustaväri on piirrettävä, joten kaikki riippuu siitä, kuinka nopeasti voit piirtää pikselin. Joitakin parannuksia on, esimerkiksi jos näyttö ei pysy mukana tulevissa tiedoissa, tallenna vain teksti näytön puskuriin ja piirrä koko näyttö uudelleen, kun tekstiä ei enää tule. Monet näytöt myynti näyttää kauniin kuvan näytöllä, mutta mitä he eivät ehkä näytä, on kuinka kauan kuvan näyttäminen kesti, ja joissakin tapauksissa se voi olla 5 sekuntia tai enemmän. I2C ja SPI sopivat erinomaisesti pienempiin näyttöihin, mutta kaikki yli 50 saraketta tarvitsevat 8- tai 16 -bittisen dataväylän.
Wordstar on hieman hankala käyttää 9600 baudilla ja 19200 on paljon käyttökelpoisempi tekstin vierittämiseen, mutta näytöt eivät todellakaan pysy perässä.
Nopein näyttö, jota olen käyttänyt, oli potkurisirussa, jossa oli kaksi 8 -bittistä ulkoista 512 000 ram -sirua 16 bittisen rinnakkaisen dataväylän luomiseksi. Jokainen fontti oli esiladattu ramiin. 74xx -laskurisirun kaskadia käytettiin tietojen kelloon näytölle. Tämä tarkoitti sitä, ettei suorittimessa ollut sisäistä prosessointia tietojen haussa ja tulostamisessa, ja virkistystaajuus oli niin nopea kuin potkurisiru pystyi vaihtamaan nastan. Yllättäen näytöt pystyivät pysymään tämän tasalla jopa 20 MHz: n taajuudella, joten koko näytön päivitys oli mahdollista tehdä vain 30 millisekunnissa. Tällainen nopeus on riittävän nopea, jotta voit vierittää sujuvasti, kuten näet matkapuhelimissa.
Potkurisiru oli huippuluokkaa yli kymmenen vuotta sitten, ja nyt on enemmän vaihtoehtoja, mukaan lukien ESP8266 ja ESP32, joissa on suuria määriä sisäistä ramia. Näillä siruilla ei kuitenkaan vieläkään ole valtava määrä nastoja, joten silti voisi olla syytä käyttää vanhaa skool-tapaa käyttää ulkoista ram-sirua, joka on kellotettu näyttöön.
Suuremmissa näytöissä voi olla halvempaa käyttää LCD -TV- tai VGA -näyttöä ja katsoa joitain koodattuja ANSI -emulaattoreita, esim. ESP32, joka ajaa suoraan VGA -näyttöä.
Toivottavasti pidät tätä projektia hyödyllisenä.
James Moxham
Adelaide, Australia
Suositeltava:
64 -bittinen RT -ytimen kokoelma Raspberry Pi 4B: lle: 5 vaihetta
64 -bittinen RT -ytimen kokoelma Raspberry Pi 4B: lle: Tämä opetusohjelma kattaa 64 -bittisen reaaliaikaisen ytimen rakentamisen ja asentamisen Raspberry Pi: lle. RT -ydin on ratkaiseva ROS2: n ja muiden reaaliaikaisten IOT -ratkaisujen täydelliselle toiminnalle. Ydin asennettiin x64 -pohjaiseen Raspbian -tietokoneeseen, joka voidaan
Akustinen levitaatio Arduino Unon kanssa Askel askeleelta (8 vaihetta): 8 vaihetta
Akustinen levitaatio Arduino Unon kanssa Askel askeleelta (8 vaihetta): ultraäänikaiuttimet L298N DC-naarasadapterin virtalähde urospuolisella dc-nastalla ja analogiset portit koodin muuntamiseksi (C ++)
4G/5G HD -videon suoratoisto DJI Dronesta alhaisella latenssilla [3 vaihetta]: 3 vaihetta
4G/5G HD -videon suoratoisto DJI Dronesta alhaisella latenssilla [3 vaihetta]: Seuraava opas auttaa sinua saamaan live-HD-videovirtoja lähes mistä tahansa DJI-dronesta. FlytOS -mobiilisovelluksen ja FlytNow -verkkosovelluksen avulla voit aloittaa videon suoratoiston droonilta
Pultti - DIY -langaton latauskello (6 vaihetta): 6 vaihetta (kuvilla)
Pultti - DIY -langaton latausyökello (6 vaihetta): Induktiiviset lataukset (tunnetaan myös nimellä langaton lataus tai langaton lataus) on langattoman voimansiirron tyyppi. Se käyttää sähkömagneettista induktiota sähkön tuottamiseen kannettaville laitteille. Yleisin sovellus on langaton Qi -latauslaite
4 vaihetta akun sisäisen vastuksen mittaamiseksi: 4 vaihetta
4 vaihetta akun sisäisen vastuksen mittaamiseksi: Tässä on 4 yksinkertaista vaihetta, joiden avulla voit mitata taikinan sisäisen vastuksen