|
Arduino Nano |
x 1 | |
![]() |
NHD-0216XZ-FSW-GBWNewhaven Display Intl
|
x 1 | |
![]() |
3362M-1-103Bourns Inc.
|
x 1 | |
![]() |
PR02000202200JA100Vishay Beyschlag/Draloric/BC Components
|
x 1 |
![]() |
Soldering iron |
|
![]() |
Soldering Iron Wire Welding Lead Roll |
|
![]() |
arduino IDEArduino
|
Arduino LCD Info panel for PC (LCD Smartie)
Тhis time I will present you a simple way to control 16x2 LCD Display via Windows PC software. For this purpose, we use an Arduino microcontroller, which in this case has the function of an interface between the Display and the USB port of the Computer. Also the LCD display can be controlled directly through the LPT port, but nowadays that port is no longer used and has been replaced by USB.
I use Open Source software for Windows LCD Smartie that you can use to show lots of different types of information on your LCD or VFD. The program has built in support for many systems statistics (i.e. cpu load, network utilization, free disk space...), downloading RSS feeds, Winamp integration and support for several other popular applications. Supported devices include displays based on the Hitachi HD44780 LCD controller like in our case, the Matrix Orbital Serial/USB LCD, and Palm OS devices.
As I mentioned before, the device is extremely simple to build and contains only two components:
- Arduino microcontroller, and LCD display which are connected according to the given schematic diagram, and it is powered directly from the USB port.
I mounted the device in a box from a previous project, and is a stand-alone device that can be placed on top of the computer case or somewhere else. Оtherwise the original idea was to mount the LCD screen to the plastic of 5.25-Inch drive bay and be an integral part of the PC.
If you want to make a PCB for this project, or for any other electronic project, PCBway is a great choice for you. PCBway is one of the most experienced PCB manufacturing company in China in field of PCB prototype and fabrication. They have a large online community where you can find a Open Source projects, and you can also share your project there. From my personal experience I can tell you that on this community you can find many useful projects with alredy designed PCBs, from where you can place an order directly.
And now let's briefly explain the basic settings of the LCD Smartie application.
https://lcdsmartie.sourceforge.net/
First, we unpack the .zip archive into a specific folder. Then the LCDT.dll matrix orbital driver should be placed in the "displays" folder. This is actually a driver for the 16x2 LCD display. You can download these archives at the link below. Next, we start the program and select the LCD display plugin, then we set the startup parameters according to the port occupied by the Arduino microcontroller. Now the simplest option is to enter some text in these fields which actually represent the two rows of the LCD display. If we have connected everything exactly according to the instructions, when we press the apply button, the written text should appear on the LCD display. Lcd Smartier has built in support for many systems statistics (i.e. cpu load, network utilization, free disk space, Winamp integration, BBC World News, Email details, game stats, and many more. It is also possible to integrate several different plugins that can be downloaded from the official site and forums. As for the Arduino, the given code should be uploaded, but I should mention that the code is compiled with the LiquidCrystal-1.0.0 Library which you can also download from the link below. LCD Smartie also has support for the popular Winamp player software.
These are only a small part of the possibilities, and there are also a large number of plugins on the official site and other forums.
// include the library code: #include <LiquidCrystal.h> // these constants won't change. But you can change the size of // your LCD using them: const int numRows = 2; const int numCols = 16; // initialize the library with the numbers of the interface pins LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // RS, RW, Enable, 4,5,6,7 (Refer to the back of your LCD for details) void setup() { Serial.begin(9600); // set up the LCD's number of rows and columns: lcd.begin(numRows, numCols); lcd.clear(); lcd.setCursor(0,0); lcd.print("**LCD SMARTIE**"); lcd.setCursor(0,1); lcd.print("on Arduino"); } byte serial_getch(){ int incoming; while (Serial.available()==0){} // read the incoming byte: incoming = Serial.read(); return (byte) (incoming &0xff); } void loop(){ byte rxbyte; byte temp; rxbyte = serial_getch(); if (rxbyte == 254) //Matrix Orbital uses 254 prefix for commands { switch (serial_getch()) { case 66: //backlight on (at previously set brightness) // not implemented break; case 70: //backlight off // not implemented break; case 71: //set cursor position temp = (serial_getch() - 1); //get column byte switch (serial_getch()) //get row byte { //line 1 is already set up case 2: temp += 0x40; break; case 3: temp += 0x14; break; case 4: temp += 0x54; break; default: break; } lcd.command(0b10000000 + temp); break; case 72: //cursor home (reset display position) lcd.command(2); break; case 74: //show underline cursor lcd.command(0b00001110); break; case 75: //underline cursor off case 84: //block cursor off lcd.command(0b00001100); break; case 76: //move cursor left lcd.command(16); break; case 77: //move cursor right lcd.command(20); break; case 78: //define custom char lcd.command(64 + (serial_getch() * 8)); //get+set char address for (temp = 7; temp != 0; temp--) { lcd.print(serial_getch()); //get each pattern byte } break; case 83: //show blinking block cursor lcd.command(0b00001111); break; case 86: //GPO OFF //implement later break; case 87: //GPO ON /*temp = serial_getch(); if (temp == 1) { GPO1 = GPO_ON; }*/ break; case 88: //clear display, cursor home lcd.command(1); break; case 152: //set and remember (doesn't save value, though) case 153: //set backlight brightness //not implemented break; //these commands ignored (no parameters) case 35: //read serial number case 36: //read version number case 55: //read module type case 59: //exit flow-control mode case 65: //auto transmit keypresses case 96: //auto-repeat mode off (keypad) case 67: //auto line-wrap on case 68: //auto line-wrap off case 81: //auto scroll on case 82: //auto scroll off case 104: //init horiz bar graph case 109: //init med size digits case 115: //init narrow vert bar graph case 118: //init wide vert bar graph break; default: //all other commands ignored and parameter byte discarded temp = serial_getch(); //dump the command code break; } return; } //END OF COMMAND HANDLER //change accented char to plain, detect and change descenders //NB descenders only work on 5x10 displays. This lookup table works // with my DEM-20845 (Display Elektronik GmbH) LCD using KS0066 chip. switch (rxbyte) { //chars that have direct equivalent in LCD charmap /* case 0x67: //g rxbyte = 0xE7; break; case 0x6A: //j rxbyte = 0xEA; break; case 0x70: //p rxbyte = 0xF0; break; case 0x71: //q rxbyte = 0xF1; break; case 0x79: //y rxbyte = 0xF9; break; */ case 0xE4: //ASCII "a" umlaut rxbyte = 0xE1; break; case 0xF1: //ASCII "n" tilde rxbyte = 0xEE; break; case 0xF6: //ASCII "o" umlaut rxbyte = 0xEF; //was wrong in v0.86 break; case 0xFC: //ASCII "u" umlaut rxbyte = 0xF5; break; //accented -> plain equivalent //and misc symbol translation case 0xA3: //sterling (pounds) rxbyte = 0xED; break; /* case 0xB0: //degrees symbol rxbyte = 0xDF; break; */ case 0xB5: //mu rxbyte = 0xE4; break; case 0xC0: //"A" variants case 0xC1: case 0xC2: case 0xC3: case 0xC4: case 0xC5: rxbyte = 0x41; break; case 0xC8: //"E" variants case 0xC9: case 0xCA: case 0xCB: rxbyte = 0x45; break; case 0xCC: //"I" variants case 0xCD: case 0xCE: case 0xCF: rxbyte = 0x49; break; case 0xD1: //"N" tilde -> plain "N" rxbyte = 0x43; break; case 0xD2: //"O" variants case 0xD3: case 0xD4: case 0xD5: case 0xD6: case 0xD8: rxbyte = 0x4F; break; case 0xD9: //"U" variants case 0xDA: case 0xDB: case 0xDC: rxbyte = 0x55; break; case 0xDD: //"Y" acute -> "Y" rxbyte = 0x59; break; /* case 0xDF: //beta //mucks up LCDSmartie's degree symbol?? rxbyte = 0xE2; break; */ case 0xE0: //"a" variants except umlaut case 0xE1: case 0xE2: case 0xE3: case 0xE5: rxbyte = 0x61; break; case 0xE7: //"c" cedilla -> "c" rxbyte = 0x63; break; case 0xE8: //"e" variants case 0xE9: case 0xEA: case 0xEB: rxbyte = 0x65; break; case 0xEC: //"i" variants case 0xED: case 0xEE: case 0xEF: rxbyte = 0x69; break; case 0xF2: //"o" variants except umlaut case 0xF3: case 0xF4: case 0xF5: case 0xF8: rxbyte = 0x6F; break; case 0xF7: //division symbol rxbyte = 0xFD; break; case 0xF9: //"u" variants except umlaut case 0xFA: case 0xFB: rxbyte = 0x75; break; default: break; } lcd.print(rxbyte); //otherwise a plain char so we print it to lcd return; }

Arduino LCD Info panel for PC (LCD Smartie)

Raspberry Pi 5 7 Inch Touch Screen IPS 1024x600 HD LCD HDMI-compatible Display for RPI 4B 3B+ OPI 5 AIDA64 PC Secondary Screen(Without Speaker)
BUY NOW
ESP32-S3 4.3inch Capacitive Touch Display Development Board, 800×480, 5-point Touch, 32-bit LX7 Dual-core Processor
BUY NOW
Raspberry Pi 5 7 Inch Touch Screen IPS 1024x600 HD LCD HDMI-compatible Display for RPI 4B 3B+ OPI 5 AIDA64 PC Secondary Screen(Without Speaker)
BUY NOW- Comments(0)
- Likes(0)

- 0 USER VOTES
- YOUR VOTE 0.00 0.00
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
More by Mirko Pavleski
-
Review and Comparison of Three Inexpensive Metal Detector Kits A metal detector is a device used to detect the presence of metal objects in the ground or other ma...
-
How to make simple Arduino RGB Led strip VU Meter VU meter or volume unit meter is a device intended for visual presentation of the audio signal. It ...
-
DIY Simple Antistress and Relaxation PEMF Device based on Schumannn resonance frequency 7.83 Hz Schumann resonances are global electromagnetic resonances, generated by lightning discharges in the...
-
DIY Si4825 A10 multiband Radio (MW,SW,FM) Thanks to the production of specialized radio chips, nowadays it is possible to make a quality mult...
-
DIY simple HUNTER Led Game with Arduino Some time ago I presented you a simple to make, but interesting game, a 1D version simulation of "P...
-
XHDATA D-109WB Radio Short Review with complete disassembly Recently I received a shipment of a radio from the brand XHDATA model: D-109WB, so I immediately de...
-
Arduino 3D Printed self Balancing Cube Self-balancing devices are electronic devices that use sensors and motors to keep themselves balanc...
-
ESP32 Analog style VU meter with GC9A01 Round Dispalys + Peak Meters A typical VU meter measures audio signals and displays them with a visual indicator. In the classic...
-
Arduino two weel self Balancing Robot Self Balancing Robot is device that can balance itself from falling to the ground. Its function is ...
-
ELECROW CrowPanel ESP32 4.2” E-paper Wi-Fi Info-Dispaly Project An e-paper display (also known as an electronic paper display or E Ink display) is a type of screen...
-
ESP32 Fluid simulation on 16x16 Led Matrix Fluid simulation is a way of replicating the movement and behavior of liquids and gases in differen...
-
Simple GU50 VTTC Tesla Coil with MOT (25+cm Spark) Vacuum Tube Tesla Coils are a common choice for homebuilders for several practical reasons. At Soli...
-
Hourglass ESP8266 Code A hourglass, also known as an sand clock, is a device used to measure the passage of time. It consi...
-
Tug of War Arduino Game on WS2812 Led strip A Tug of War is a classic team-based game where two opposing teams compete to pull a rope in opposi...
-
DIY ESP32 Bioresonance Rife Machine with ZAPPER function Rife machine therapy is an alternative treatment developed by Dr. Royal Raymond Rife in the 1930s. H...
-
Arduino VFO Project with a Large LCD Display A Variable Frequency Oscillator (VFO) is an electronic oscillator whose output frequency can be adj...
-
Exploring the Tesla Coil Driver Board, Full Review & Test Results Some time ago I presented you a video in which I analyzed a super cheap Tesla Coil driver that cost...
-
Arduino Eatrthquake alarm and protection system with D7S seismic Sensor Earthquakes are extremely common events around the world. On average, there are fifty earthquakes a...
-
Review and Comparison of Three Inexpensive Metal Detector Kits A metal detector is a device used to detect the presence of metal objects in the ground or other ma...
-
How to make simple Arduino RGB Led strip VU Meter VU meter or volume unit meter is a device intended for visual presentation of the audio signal. It ...
-
DIY Simple Antistress and Relaxation PEMF Device based on Schumannn resonance frequency 7.83 Hz Schumann resonances are global electromagnetic resonances, generated by lightning discharges in the...
-
DIY Si4825 A10 multiband Radio (MW,SW,FM) Thanks to the production of specialized radio chips, nowadays it is possible to make a quality mult...
-
DIY simple HUNTER Led Game with Arduino Some time ago I presented you a simple to make, but interesting game, a 1D version simulation of "P...
-
XHDATA D-109WB Radio Short Review with complete disassembly Recently I received a shipment of a radio from the brand XHDATA model: D-109WB, so I immediately de...
-
Arduino 3D Printed self Balancing Cube Self-balancing devices are electronic devices that use sensors and motors to keep themselves balanc...
-
ESP32 Analog style VU meter with GC9A01 Round Dispalys + Peak Meters A typical VU meter measures audio signals and displays them with a visual indicator. In the classic...
-
Arduino two weel self Balancing Robot Self Balancing Robot is device that can balance itself from falling to the ground. Its function is ...
-
ELECROW CrowPanel ESP32 4.2” E-paper Wi-Fi Info-Dispaly Project An e-paper display (also known as an electronic paper display or E Ink display) is a type of screen...
-
ESP32 Fluid simulation on 16x16 Led Matrix Fluid simulation is a way of replicating the movement and behavior of liquids and gases in differen...
-
Simple GU50 VTTC Tesla Coil with MOT (25+cm Spark) Vacuum Tube Tesla Coils are a common choice for homebuilders for several practical reasons. At Soli...
-
Modifying a Hotplate to a Reflow Solder Station
217 0 3 -
MPL3115A2 Barometric Pressure, Altitude, and Temperature Sensor
173 0 1 -
-
Nintendo 64DD Replacement Shell
199 0 1 -
V2 Commodore AMIGA USB-C Power Sink Delivery High Efficiency Supply Triple Output 5V ±12V OLED display ATARI compatible shark 100W
428 4 1 -
How to measure weight with Load Cell and HX711
441 0 3 -
-
Instrumentation Input, high impedance with 16 bit 1MSPS ADC for SPI
544 0 0