Bez rozłączania poprzedniego układu (z DS18B20), możemy do płytki podłączyć wyświetlacz LCD. Najprościej podłączyć LCD zgodny z HD44780. Ja akurat miałem pod ręką YM1602C. Łączymy według schematu poniżej.
No dobra. Zapalamy wyświetlacz. Tylko jak? na szczęście ktoś już za nas zrobił bibliotekę do obsługi takich wyświetlaczy: μLiquidCrystal. Aha. Jest jeden problem. Jak już ściągniemy źródła, to trzeba w projekcie μLiquidCrystal zmienić framework na 4.2 (domyślnie jest 4.1 bodajże). No to start. Testujemy LCD krótkim programikiem.
var lcdProvider = new GpioLcdTransferProvider(Stm32F4Discovery.Pins.PD1, Stm32F4Discovery.Pins.PD2, Stm32F4Discovery.Pins.PD9, Stm32F4Discovery.Pins.PD11, Stm32F4Discovery.Pins.PD10, Stm32F4Discovery.Pins.PD8); var lcd = new Lcd(lcdProvider); lcd.Begin(16, 2); //columns, rows //znaki specjalne //http://www.quinapalus.com/hd44780udg.html var customCharacters = new[] { new byte[] {0x00, 0x0a, 0x15, 0x11, 0x11, 0x0a, 0x04, 0x00}, //serce new byte[] {0x04, 0x02, 0x01, 0x1f, 0x01, 0x02, 0x04, 0x00} //strzalka }; //ladowanie znakow specjalnych for (int i = 0; i < customCharacters.Length; i++) lcd.CreateChar(i, customCharacters[i]); lcd.Clear(); lcd.Write("* Hello World! *"); Thread.Sleep(3000); lcd.Clear(); lcd.WriteByte(0); //pierwszy znak specjalny Thread.Sleep(2000); lcd.WriteByte(1); //drugi znak specjalny Thread.Sleep(3000); //nastepna linia lcd.SetCursorPosition(0, 1); lcd.Write("# Bye... #");
Pełny kot: DemoLcd
Na wyświetlaczu powinny pojawić się jakieś napisy. No niestety polskich znaków nie wyświetlimy. Jak wszystko jest OK to robimy kolejny display do termometru z poprzedniego postu. Najważniejsza jest procedura, która wyświetla temperaturę.
Na wyświetlaczu powinny pojawić się jakieś napisy. No niestety polskich znaków nie wyświetlimy. Jak wszystko jest OK to robimy kolejny display do termometru z poprzedniego postu. Najważniejsza jest procedura, która wyświetla temperaturę.
public void ShowTemperature(float temperature) { _lcd.SetCursorPosition(0, 0); string txt = "Temperatura:"; int padsCnt = Columns - txt.Length; _lcd.Write(txt + new string(' ', padsCnt)); _lcd.SetCursorPosition(0, 1); string tempStr = temperature.ToString("F2"); padsCnt = Columns - tempStr.Length; _lcd.Write(tempStr); _lcd.WriteByte(0); if (padsCnt > 0) { var pads = new String(' ', padsCnt); _lcd.Write(pads); } }
Dodajemy jeszcze LCD do listy wyświetlaczy.
public Display() { var debugDisplay = new DebugDisplay(); var ledDisplay = new FourLedDisplay(); var lcd = new LcdDisplay(); _displays = new IDisplay[] {debugDisplay, ledDisplay, lcd}; }
W taki oto sposób mamy termometr z 3 wyświetlaczami: w oknie debug, na diodach z płytki i na LCD.
Pełny kot: DemoDS18B20
I think this is one of the most important information for me.
OdpowiedzUsuńAnd i'm glad reading your article. But should remark on few
general things, The website style is wonderful, the articles is really nice :
D. Good job, cheers
Amazing! Its in fact amazing article, I have got much clear idea concerning from this paragraph.
OdpowiedzUsuń