arduino-lcdxpl
Rozdíly
Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
| Obě strany předchozí revizePředchozí verzeNásledující verze | Předchozí verze | ||
| arduino-lcdxpl [2016/02/22 21:48] – [Zapojení LCD] djbuldog | arduino-lcdxpl [2025/08/28 10:09] (aktuální) – upraveno mimo DokuWiki 127.0.0.1 | ||
|---|---|---|---|
| Řádek 4: | Řádek 4: | ||
| * podle [[https:// | * podle [[https:// | ||
| - | * na ebay jsem koupil za kilo LCD Winstar 2004A | + | * na ebay jsem koupil za kilo LCD Winstar 2004A {{ : |
| * 20 znaků, 4 rádky | * 20 znaků, 4 rádky | ||
| * response time: 200ms Rise, 200ms Fall (celkem tedy odezva 400ms - pomalé překreslování!!) | * response time: 200ms Rise, 200ms Fall (celkem tedy odezva 400ms - pomalé překreslování!!) | ||
| * pozorovací úhly V/H 20/60 | * pozorovací úhly V/H 20/60 | ||
| - | * připojuje se přes standardních 16 vývodů: | + | * připojuje se přes standardních 16 vývodů: |
| * VSS - napájení obvodu (GND) | * VSS - napájení obvodu (GND) | ||
| * VD0 - napájení obvodu (+5V) | * VD0 - napájení obvodu (+5V) | ||
| Řádek 15: | Řádek 15: | ||
| * R/W - výběr režimu čtení/ | * R/W - výběr režimu čtení/ | ||
| * E - signalizace zápisu do registru | * E - signalizace zápisu do registru | ||
| - | * D0-D7 - datové linky, primárně pro předávání kódu znaku (pro EN znaky stačí D4-D7) | + | * D0-D7 - datové linky, primárně pro předávání kódu znaku |
| * A,K - ovládání podsvícení (+anoda, -katoda) | * A,K - ovládání podsvícení (+anoda, -katoda) | ||
| * existuje i verze s i2c rozhraním (na vývody napojen další čip) | * existuje i verze s i2c rozhraním (na vývody napojen další čip) | ||
| - | | + | |
| - | * {{:: | + | * rozdíl mezi 4 bit (D4-D7) a 8 bit (D0-D7) režimem by měl být v rychlosti |
| + | * pokud se ale předávají celé znaky (ne custom symboly), tak je to [[http:// | ||
| + | * prováděné instrukce (kurzívou jsou označeny instrukce navíc v 4 bit režimu): | ||
| + | * put the data in a register | ||
| + | * //output the upper four bits of datadata// | ||
| + | * //pulse the enable line// | ||
| + | * // | ||
| + | * //shift or otherwise manipulate the data// | ||
| + | * output the data | ||
| + | * pulse the enable line | ||
| + | * wait until the controller is ready for the next byte of information | ||
| + | ===== kód pro LCD ===== | ||
| + | |||
| + | | ||
| + | * s využitím [[https:// | ||
| + | * konstruktor LiquidCrystal má několik variant | ||
| + | * LiquidCrystal(rs, | ||
| + | * LiquidCrystal(rs, | ||
| + | * LiquidCrystal(rs, | ||
| + | * LiquidCrystal(rs, | ||
| + | * jako číslo pinu se dává označení z destičky plošných spojů. Lze použít i analogové piny A1-A6. | ||
| + | |||
| + | <code cpp> | ||
| + | LiquidCrystal lcd(2, 3, 4, 6, 8, 9); | ||
| + | |||
| + | void setup() | ||
| + | { | ||
| + | lcd.begin(20, | ||
| + | lcd.print(" | ||
| + | lcd.setCursor(0, | ||
| + | lcd.print(" | ||
| + | } | ||
| + | |||
| + | void loop() | ||
| + | </ | ||
| + | |||
| + | ==== problémy ==== | ||
| + | * občas se mi stává, že z LCD zmizí všechny znaky | ||
| + | * udělá to při překreslení obrazovky (po stisku tlačítka nebo otočení enkodéru) | ||
| + | * většinou tomu předchází delší neaktivita | ||
| + | * nepřišel jsem na příčinu, ale opravuji to pomocí zavolání '' | ||
| + | ===== Sériová linka ===== | ||
| + | |||
| + | * arduino se připojuje k PC přes USB, které v sobě obsahuje rovnou sériovou linku | ||
| + | * hardwarové není tedy potřeba nic přepojovat | ||
| + | * práce se [[https:// | ||
| + | |||
| + | <code cpp> | ||
| + | void setup() | ||
| + | { | ||
| + | Serial.begin(9600); | ||
| + | } | ||
| + | |||
| + | void loop() { | ||
| + | |||
| + | if(Serial.available() > 0) { | ||
| + | char c = Serial.read(); | ||
| + | Serial.write(" | ||
| + | Serial.write(c); | ||
| + | Serial.write(' | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | * sériová linka má vyrovnávací paměť cca 70 znaků | ||
| + | * funkce '' | ||
| + | * existují i funkce pro čtení více znaků najednou | ||
| + | * lepší je ale možná číst znaky postupně do nějakého svého bufferu, aby se dlouho nečekalo | ||
| + | * pro zápis existuje i funkce '' | ||
| + | |||
| + | ==== problémy ==== | ||
| + | |||
| + | * pokud se k arduinu připojím přes sériovou linku a zase odpojím, tak se něco změní | ||
| + | * zápis na linku přes arduino | ||
| + | * zjistil jsem, že wirte buffer sériové linky je 64 znaků | ||
| + | * jakmile jej vyčerpám, zápis čeká na nějaký timeout | ||
| + | * situaci lze detekovat pomocí '' | ||
| + | |||
| + | ===== Rotační enkodéry ===== | ||
| + | |||
| + | * zkusil jsem použit knihovnu [[https:// | ||
| + | * je k dispozici ve správci knihoven v Arduino IDE | ||
| + | * použití je velice jednoduché, | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * doporučuje se oba piny připojit na digitální vstup s interrept | ||
| + | * u leonarda (pro micro) [[https:// | ||
| + | * knihovna je velice chytrá a sama pozná, zda zadané piny jsou interrupt ready :) | ||
| + | |||
| + | * čítač počítá všechny přechody, | ||
| + | * tzn. že jedno lupnutí odpovídá vlastně číslu 4 | ||
| + | * abych eliminoval chyby, tak číslo 4 beru jako jednu otáčku | ||
| + | * u AVR ATmega8 jsem používal jen jeden přechod, ten nejlepší | ||
| + | * k interrupt pinu mám připojen jen jeden rotační enkodér, jedním drátem, a chová se to fakt lépe | ||
| + | * na druhém jsem měl připojeny kondenzátory a mám pocit, že to bez nich funguje lépe (u ATmega8 to bylo naopak) | ||
| + | |||
| + | |||
| + | ===== Více tlačítek ===== | ||
| + | |||
| + | * připojit na analog (ADC) | ||
| + | * na analog pin lze připojit reálně až 20 tlačítek | ||
| + | * stačí každé připojit přes jiný odpor (na zem) - stisk generuje jiné napětí | ||
| + | * nelze detekovat stisk více tlačítek - detekuje se to s nejnižším odporem | ||
| + | * je třeba počítat s tím, že napětí kolísá - například podle množství odebíraného proudu, takže se musí stanovit určitý rozsah napětí | ||
| + | * průběh stisku nebývá dokonalý (odpor při nedomáčknutí), | ||
| + | * zdroje | ||
| + | * http:// | ||
| + | * http:// | ||
| + | * http:// | ||
| + | * http:// | ||
| + | * https:// | ||
arduino-lcdxpl.1456174139.txt.gz · Poslední úprava: (upraveno mimo DokuWiki)
