Pages: 1 ... 18 19 [20] 21   Go Down
Author Topic: GLCD library version 3  (Read 80715 times)
0 Members and 2 Guests are viewing this topic.
Dallas, TX USA
Offline Offline
Faraday Member
**
Karma: 70
Posts: 2745
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

I was able to get a 192x64 display working with your code that you do not have listed in the docs.  What is the best way for me to send you the setup info so it can get added into the documentation?
There is a 192x64 configuration file that ships with the library. Did you have to modify that?
If so, it would be useful to get the changes that you made.

There are some specific modules mentioned on the ks0108 playground wiki page including some 192x64 displays.
You can modify the wiki page to include information about your specific display.
http://playground.arduino.cc/Code/GLCDks0108

--- bill
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 5
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

I went to the wiki but it seemed outdated vs. the PDF included in the google code page, but I will update the info there too.

I did have to modify the 192x64 config file.  I will list everything below for future reference.

The Graphic LCD I was working with was a Digitron SG19264A.

The pinout of the LCD is:
Pin NO.  Symbol  LEVEL  Function 
VSS  0V  GND 
VDD  5V  Supply Power for logic 
V0  - LCD voltage adjustment pin 
D/I  H/L  Data or Instruction select. 
R/W  H/L  Read or Write 
H/L  Read /Write enable signal. 
DB0  H/L  DATA BUS 
DB1  H/L  DATA BUS 
DB2  H/L  DATA BUS 
10  DB3  H/L  DATA BUS 
11 DB4  H/L  DATA BUS 
12  DB5  H/L  DATA BUS 
13  DB6  H/L  DATA BUS 
14  DB7  H/L  DATA BUS 
15  /CS1  H/L  Chip selection   ( Left ).    "L" active 
16  /RST  H/L  Reset signal. 
17  /CS2  H/L  Chip selection ( Middle ).    "L" active 
18  /CS3  H/L  Chip selection ( Right ).    "L" active 
19  VEE  - LCD voltage 
20  BLA  5.0V  Supply Power for LED light 

Here is how to connect it up to an Arduino:
Digitron
SG19264A
Arduino pins  Function  Panel D Comments 
5V  +5 volts  2 one side of contrast pot
Gnd  GND  1
n/a  Contrast in  3 Wiper of contrast pot 
8 D0  7
9 D1  8
10 D2  9
11 D3  10
4 D4  11
5 D5  12
6 D6  13
7 D7  14
14 (alog 0)  CSEL1  15 Chip 1 select 
15 (alog 1)  CSEL2  16 Chip 2 select 
Reset  Reset  18 Connect to reset 
16 (alog 2)  R_W  5 Read/write 
17 (alog 3)  D_I  4 Data/Instruction (RS) 
18 (alog 4)  EN  6 Enable 
n/a  Contrast out  19 10k or 20k preset , one side of contrast pot
n/a  Backlight +5  20 See datasheet 
Gnd 
3 CSEL318

The chip select pins on this LCD are inverted so I had to modify the code as follows:
in /config/ks0108-192x64_Panel.h
modify the number of chip select pins
Code:
#define NBR_CHIP_SELECT_PINS   3

Invert the chipselect pin outputs
Code:
/*
 * Defines for Three Chip panels using three select pins
 */
#elif (NBR_CHIP_SELECT_PINS == 3 && glcd_CHIP_COUNT == 3) 
#define glcd_CHIP0  glcdCSEL1,HIGH, glcdCSEL2,HIGH,  glcdCSEL3,LOW
#define glcd_CHIP1  glcdCSEL1,HIGH,  glcdCSEL2,LOW, glcdCSEL3,HIGH
#define glcd_CHIP2  glcdCSEL1,LOW,  glcdCSEL2,HIGH,  glcdCSEL3,HIGH

I actually had to swap CS1 and CS3 wires on my board because it was displaying right to left instead of left to right, but I think it was an error I introduced myself while I was trying to get this LCD to work.  Just FYI.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 2
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hi...

I'm using Graphic LCD 128x64 for my Final Year Project. And Arduino Leonardo as mcu.
Here's the code i use:

Code:
/*
 * GLCDexample
 *
 * Basic test code for the Arduino KS0108 GLCD library.
 * This code exercises a range of graphic functions supported
 * by the library and is an example of its use.
 * It also gives an indication of performance, showing the
 *  number of frames drawn per second. 
 */

#include <ks0108.h>
#include "Arial14.h"         // proportional font
#include "SystemFont5x7.h"   // system font
#include "ArduinoIcon.h"     // bitmap

unsigned long startMillis;
unsigned int loops = 0;
unsigned int iter = 0;

void setup(){
  delay(500);                // allow time for LCD to reset
  GLCD.Init(NON_INVERTED);   // initialise the library, non inverted writes pixels onto a clear screen
  GLCD.ClearScreen(); 
  GLCD.DrawBitmap(ArduinoIcon, 32,0, BLACK); //draw the bitmap at the given x,y position
  GLCD.SelectFont(System5x7); // switch to fixed width system font
  countdown(5);
  GLCD.ClearScreen();
  introScreen();              // show some intro stuff
  GLCD.ClearScreen();
}

void introScreen(){
  GLCD.SelectFont(Arial_14); // you can also make your own fonts, see playground for details   
  GLCD.GotoXY(20, 2);
  GLCD.Puts("GLCD  version  ");
  GLCD.PrintNumber(GLCD_VERSION);
  GLCD.DrawRoundRect(16,0,99,18, 5, BLACK);  // rounded rectangle around text area   
  GLCD.SelectFont(System5x7); // switch to fixed width system font
  showCharacters();
  countdown(5);
}

void showCharacters(){
  byte line = 3; // start on the fourth line
  for(byte c = 32; c <=127; c++){
     if( (c-32) % 20 == 0)
         GLCD.CursorTo(1,line++);  // CursorTo is used for fixed width system font
     GLCD.PutChar(c);   
  }   
}

void drawSpinner(byte pos, byte x, byte y) {   
  // this draws an object that appears to spin
  switch(pos % 8) {
  case 0 : GLCD.DrawLine( x, y-8, x, y+8, BLACK); break;
  case 1 : GLCD.DrawLine( x+3, y-7, x-3, y+7, BLACK);  break;
  case 2 : GLCD.DrawLine( x+6, y-6, x-6, y+6, BLACK);  break;
  case 3 : GLCD.DrawLine( x+7, y-3, x-7, y+3, BLACK);  break;
  case 4 : GLCD.DrawLine( x+8, y, x-8, y, BLACK);  break;
  case 5 : GLCD.DrawLine( x+7, y+3, x-7, y-3, BLACK);  break;
  case 6 : GLCD.DrawLine( x+6, y+6, x-6, y-6, BLACK);  break;
  case 7 : GLCD.DrawLine( x+3, y+7, x-3, y-7, BLACK);  break;
  }
}

void countdown(int count){
    while(count--){  // do countdown 
     GLCD.CursorTo(0,1);   // first column, second row (offset is from 0)
     GLCD.PutChar(count + '0');
     delay(1000); 
  } 
}

void  loop(){   // run over and over again
  iter = 0;
  startMillis = millis();
  while( millis() - startMillis < 1000){ // loop for one second
    GLCD.DrawRect(0, 0, 64, 61, BLACK); // rectangle in left side of screen
    GLCD.DrawRoundRect(68, 0, 58, 61, 5, BLACK);  // rounded rectangle around text area   
    for(int i=0; i < 62; i += 4)
      GLCD.DrawLine(1,1,63,i, BLACK);  // draw lines from upper left down right side of rectangle 
    GLCD.DrawCircle(32,31,30,BLACK);   // draw circle centered in the left side of screen 
    GLCD.FillRect(92,40,16,16, WHITE); // clear previous spinner position 
    drawSpinner(loops++,100,48);       // draw new spinner position
    //GLCD.FillRect(24,txtLINE3,14,14, WHITE);  // clear text area that will be drawn below
    GLCD.CursorTo(5,5);               // locate curser for printing text
    GLCD.PrintNumber(++iter);         // print current iteration at the current cursor position
  }
  // display number of iterations in one second
  GLCD.ClearScreen();               // clear the screen 
  GLCD.CursorTo(14,2);              // positon cursor 
  GLCD.Puts("FPS= ");               // print a text string
  GLCD.PrintNumber(iter);           // print a number
}

whenever I try to compile the above code, it give 'Error Compiling' msg state that:

Quote
C:\Users\AlHaFiZ AbDulLah\Documents\Arduino\libraries\ks0108\ks0108.cpp: In member function 'void ks0108::Init(boolean)':
C:\Users\AlHaFiZ AbDulLah\Documents\Arduino\libraries\ks0108\ks0108.cpp:505: error: 'OUTPUT' was not declared in this scope
C:\Users\AlHaFiZ AbDulLah\Documents\Arduino\libraries\ks0108\ks0108.cpp:505: error: 'pinMode' was not declared in this scope
C:\Users\AlHaFiZ AbDulLah\Documents\Arduino\libraries\ks0108\ks0108.cpp:511: error: 'delay' was not declared in this scope
C:\Users\AlHaFiZ AbDulLah\Documents\Arduino\libraries\ks0108\ks0108.cpp:513: error: 'LOW' was not declared in this scope
C:\Users\AlHaFiZ AbDulLah\Documents\Arduino\libraries\ks0108\ks0108.cpp:513: error: 'digitalWrite' was not declared in this scope
C:\Users\AlHaFiZ AbDulLah\Documents\Arduino\libraries\ks0108\ks0108.cpp: In member function 'void ks0108::SelectChip(uint8_t)':
C:\Users\AlHaFiZ AbDulLah\Documents\Arduino\libraries\ks0108\ks0108.cpp:536: error: 'HIGH' was not declared in this scope
C:\Users\AlHaFiZ AbDulLah\Documents\Arduino\libraries\ks0108\ks0108.cpp:536: error: 'digitalWrite' was not declared in this scope
C:\Users\AlHaFiZ AbDulLah\Documents\Arduino\libraries\ks0108\ks0108.cpp:538: error: 'LOW' was not declared in this scope
C:\Users\AlHaFiZ AbDulLah\Documents\Arduino\libraries\ks0108\ks0108.cpp:538: error: 'digitalWrite' was not declared in this scope
C:\Users\AlHaFiZ AbDulLah\Documents\Arduino\libraries\ks0108\ks0108.cpp:541: error: 'HIGH' was not declared in this scope
C:\Users\AlHaFiZ AbDulLah\Documents\Arduino\libraries\ks0108\ks0108.cpp:541: error: 'digitalWrite' was not declared in this scope
C:\Users\AlHaFiZ AbDulLah\Documents\Arduino\libraries\ks0108\ks0108.cpp:543: error: 'LOW' was not declared in this scope
C:\Users\AlHaFiZ AbDulLah\Documents\Arduino\libraries\ks0108\ks0108.cpp:543: error: 'digitalWrite' was not declared in this scope
C:\Users\AlHaFiZ AbDulLah\Documents\Arduino\libraries\ks0108\ks0108.cpp: In member function 'void ks0108::WaitReady(uint8_t)':
C:\Users\AlHaFiZ AbDulLah\Documents\Arduino\libraries\ks0108\ks0108.cpp:552: error: 'LOW' was not declared in this scope
C:\Users\AlHaFiZ AbDulLah\Documents\Arduino\libraries\ks0108\ks0108.cpp:552: error: 'digitalWrite' was not declared in this scope
C:\Users\AlHaFiZ AbDulLah\Documents\Arduino\libraries\ks0108\ks0108.cpp:553: error: 'HIGH' was not declared in this scope
C:\Users\AlHaFiZ AbDulLah\Documents\Arduino\libraries\ks0108\ks0108.cpp: In member function 'void ks0108::Enable()':
C:\Users\AlHaFiZ AbDulLah\Documents\Arduino\libraries\ks0108\ks0108.cpp:565: error: 'HIGH' was not declared in this scope
C:\Users\AlHaFiZ AbDulLah\Documents\Arduino\libraries\ks0108\ks0108.cpp:565: error: 'digitalWrite' was not declared in this scope
C:\Users\AlHaFiZ AbDulLah\Documents\Arduino\libraries\ks0108\ks0108.cpp:567: error: 'LOW' was not declared in this scope
C:\Users\AlHaFiZ AbDulLah\Documents\Arduino\libraries\ks0108\ks0108.cpp: In member function 'uint8_t ks0108::DoReadData(uint8_t)':
C:\Users\AlHaFiZ AbDulLah\Documents\Arduino\libraries\ks0108\ks0108.cpp:582: error: 'HIGH' was not declared in this scope
C:\Users\AlHaFiZ AbDulLah\Documents\Arduino\libraries\ks0108\ks0108.cpp:582: error: 'digitalWrite' was not declared in this scope
C:\Users\AlHaFiZ AbDulLah\Documents\Arduino\libraries\ks0108\ks0108.cpp:593: error: 'LOW' was not declared in this scope
C:\Users\AlHaFiZ AbDulLah\Documents\Arduino\libraries\ks0108\ks0108.cpp: In member function 'void ks0108::WriteCommand(uint8_t, uint8_t)':
C:\Users\AlHaFiZ AbDulLah\Documents\Arduino\libraries\ks0108\ks0108.cpp:612: error: 'LOW' was not declared in this scope
C:\Users\AlHaFiZ AbDulLah\Documents\Arduino\libraries\ks0108\ks0108.cpp:612: error: 'digitalWrite' was not declared in this scope
C:\Users\AlHaFiZ AbDulLah\Documents\Arduino\libraries\ks0108\ks0108.cpp: In member function 'void ks0108::WriteData(uint8_t)':
C:\Users\AlHaFiZ AbDulLah\Documents\Arduino\libraries\ks0108\ks0108.cpp:648: error: 'HIGH' was not declared in this scope
C:\Users\AlHaFiZ AbDulLah\Documents\Arduino\libraries\ks0108\ks0108.cpp:648: error: 'digitalWrite' was not declared in this scope
C:\Users\AlHaFiZ AbDulLah\Documents\Arduino\libraries\ks0108\ks0108.cpp:649: error: 'LOW' was not declared in this scope

Anyone please help me with this problem..
Logged

Dallas, TX USA
Offline Offline
Faraday Member
**
Karma: 70
Posts: 2745
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

You need to get the updated library and the patch for leonardo:
http://playground.arduino.cc/Code/GLCDks0108

--- bill
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 2
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Already download and install the library to the library directory, but still, can't compile.
Logged

Dallas, TX USA
Offline Offline
Faraday Member
**
Karma: 70
Posts: 2745
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Already download and install the library to the library directory, but still, can't compile.
Did you follow the install instructions?
What are you trying to compile?
You can't compile that demo that you had "as is", it is for the old library.
You will be able to compile the demos that come with the new library.
There is a wealth of documentation that comes with the library
including how to modify older sketches to work with the new library.
See the included html documentation for more details.
The ks0108 playground page has lots of information including
information on where to locate the included html documenation.

--- bill
Logged

West Yorkshire, UK
Offline Offline
Edison Member
*
Karma: 50
Posts: 1451
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Can I generate/update a bitmap in ram programatically and then display it on the glcd? If so, can you point me to documentation on the required format?

Thanks,

Paul
Logged

Atlanta, USA
Offline Offline
Edison Member
*
Karma: 55
Posts: 1815
AKA: Ray Burne
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

@Paul,

I believe this amounts to reading a bitmap from an SD card and then displaying it... In an abstract way, anyway.  You don't state the source for the bitmap, but the concept should be similar.

Ray
Logged

Dallas, TX USA
Offline Offline
Faraday Member
**
Karma: 70
Posts: 2745
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Can I generate/update a bitmap in ram programatically and then display it on the glcd? If so, can you point me to documentation on the required format?

Thanks,

Paul

Currently there is no function to do this.
In the mean time you can easily write one and then use any format you like.
If you do it pixel by pixel it won't be as fast as a native format bitmap but the pixel plotting
routines plot about 14k pixels/second so its not that bad.
Another option is to modify the DrawBitmap() routine (create an alternate)
that does not assume progmem.
The pixel format of the data for DrawBitmap() is the native format of the ks0108.
There is a header of 1 byte of width followed by 1 byte of height then
the pixel data.
pixels are in bytes that represent 8 vertical pixels. the lsb is the upper pixel.
Then the bytes go left to right before dropping down for the next byte of 8 pixels.
It gets very tricky and complicated when the native bitmaps are not multiples
of 8 pixels and not on 8 pixel boundaries.

Here is a  routine for XBM format (from a future library release)


Code:
/**
 * Draw a x11 XBM bitmap image
 *
 * @param width pixel width of the image
 * @param height pixel height of the image
 * @param xbmbits a ponter to the XBM bitmap pixel data
 * @param x the x coordinate of the upper left corner of the bitmap
 * @param y the y coordinate of the upper left corner of the bitmap
 * @param fg_color foreground color
 * @param bg_color background color
 *
 * Draws a x11 XBM bitmap image with the upper left corner at location x,y
 * The xbm bitmap pixel data format is the same as the X11 bitmap pixel data.
 * The bitmap data is assumed to be in program memory.
 *
 * @note All parameters are mandatory
 *
 * @see DrawBitmapXBM()
 * @see DrawBitmap()
 */


void glcd::DrawBitmapXBM_P(uint8_t width, uint8_t height, uint8_t *xbmbits,
uint8_t x, uint8_t y, uint8_t fg_color, uint8_t bg_color)
{
uint8_t xbmx, xbmy;
uint8_t xbmdata;

/*
* Traverse through the XBM data byte by byte and plot pixel by pixel
*/
for(xbmy = 0; xbmy < height; xbmy++)
{
for(xbmx = 0; xbmx < width; xbmx++)
{
if(!(xbmx & 7)) // read the flash data only once per byte
xbmdata = ReadPgmData(xbmbits++);

if(xbmdata & _BV((xbmx & 7)))
this->SetDot(x+xbmx, y+xbmy, fg_color); // XBM 1 bits are fg color
else
this->SetDot(x+xbmx, y+xbmy, bg_color); // XBM 0 bits are bg color
}
}

}

To fetch the data from RAM just modify the function to use the xbmbits address directly
rather than call the the ReadPgmData() function.

--- bill
Logged

Atlanta, USA
Offline Offline
Edison Member
*
Karma: 55
Posts: 1815
AKA: Ray Burne
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

@PaulRB:

Paul, if the need for bitmaps from SD is a project requirement, you may wish to change to this LCD:
http://www.adafruit.com/products/358
OR
http://www.adafruit.com/products/618

both of which are supported in the Arduino_LCD.h supplied for the Arduino Robot.  The bitmaps from SD card are discussed here:
http://arduino.cc/en/Tutorial/RobotPictureBrowser

- Ray
Logged

West Yorkshire, UK
Offline Offline
Edison Member
*
Karma: 50
Posts: 1451
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Currently there is no function to do this.
In the mean time you can easily write one and then use any format you like.
If you do it pixel by pixel it won't be as fast as a native format bitmap but the pixel plotting
routines plot about 14k pixels/second so its not that bad.
--- bill

@Bill: Thanks for the response.

It appears from the code you included (DrawBitmapXBM_P) draws the bitmap one pixel at a time using the SetDot method. Is this faster than the pixel plotting routines?

My application generates 32 pixels at a time (as an unsigned long) which represent a 1 pixel wide by 32 pixels high "bitmap". Would performance be better if I updated the screen as 128 x 2 of these bitmaps, or 128 x 64 individually plotted pixels? My code already has optimisations to prevent it re-drawing areas of the screen that have not changed from one frame to the next, so I can reduce the number of bitmaps or pixels plotted down to the minimum.

At the moment my application is coded to communicate directly with the KS0108 using 12 digital pins, ie. not using a library. Obviously this limits is re-useability on other types of GLCD, but it does enable a very fast screen update. I would like change the application to use the library, but need to keep the performance as high as possible.

@Ray: why are you asking about reading bitmaps from SD cards? You already know the application I'm talking about, you followed its development on that other forum! That colour TFT is very cool, though, and surprisingly affordable in the US. I wonder what price I can get that for in the UK...
« Last Edit: July 04, 2013, 11:45:45 am by PaulRB » Logged

Dallas, TX USA
Offline Offline
Faraday Member
**
Karma: 70
Posts: 2745
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Currently there is no function to do this.
In the mean time you can easily write one and then use any format you like.
If you do it pixel by pixel it won't be as fast as a native format bitmap but the pixel plotting
routines plot about 14k pixels/second so its not that bad.
--- bill

@Bill: Thanks for the response.

It appears from the code you included (DrawBitmapXBM_P) draws the bitmap one pixel at a time using the SetDot method. Is this faster than the pixel plotting routines?

My application generates 32 pixels at a time (as an unsigned long) which represent a 1 pixel wide by 32 pixels high "bitmap". Would performance be better if I updated the screen as 128 x 2 of these bitmaps, or 128 x 64 individually plotted pixels? My code already

At the moment my application is coded to communicate directly with the KS0108 using 12 digital pins, ie. not using a library. Obviously this limits is re-useability on other types of GLCD, but it does enable a very fast screen update. I would like change the application to use the library, but need to k

The routine above that draws XBM images calls the low level pixel plotting routines
so it will not be faster than pixel plotting routines.

The DrawBitmap() routine however, is MUCH faster because it is slamming out
pixels in the native format by doing page writes.
For updating a display, there is no faster way
to update the display than the way that DrawBitmap() does it.

Drawing pixels vertically is definitely not the fastest way to update a ks0108 display.
To draw vertically you will have to reset the page position after each 8 vertical pixels.
The fastest way is to take advantage of the built in auto page increment capability of the ks0108.
So that means for a bitmap, you want to slam each ks0108 page into the display 8 vertical pixels at time
horizontally across the display. (this is what DrawBitmap() does )

The library is very fast at low level operations.
I spent many hours with a logic analyzer to optimize the operations.
The library keeps track of the addresses of the chips and only updates addresses or pages
when necessary.

For maximum speed you want to send as few commands to the display as possible
and do as few memory accesses to the display as possible.
To do that you must update the display page at time.
In your case, for your "bitmap" since it is 32 pixels vertical or 8 pages, there is a big penalty for
plotting the data that way since you have to send a command to the display to reposition
the address pointer after each page update. For speed, you want to write back to back consecutive
pages horizontally.
This is because the command to reposition the col address and set the page takes longer than a write.
If you can write back to back pages horizontally then you will only have to send
8 commands to set the page and col address (16 commands)
vs a command for each page and each col address which  is 128 * 2 commands or 256 commands.

There are several options that I'd suggest, many of which are
quite simple to implement; however,
Since this is a specific implementation discussion, I'd recommend starting a new thread for
a discussion about options/alternatives for your project.


--- bill


Logged

West Yorkshire, UK
Offline Offline
Edison Member
*
Karma: 50
Posts: 1451
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Thanks Bill, I'll do that. In this part of the forum?
Logged

Atlanta, USA
Offline Offline
Edison Member
*
Karma: 55
Posts: 1815
AKA: Ray Burne
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

@PaulRB...
Quote
@Ray: why are you asking about reading bitmaps from SD cards?
Because I misread your bitmap-in-memory question and threw myself off-track when I stated that the routine to do same would be no different than reading from SD to the RAM... Thinking you would continue to drive the display without a library.  Confusion is contagious, one can catch it from oneself.

.... Anyway, re the nice LCD from Adafruit...

Adafruit has 6 distributors in the UK
See http://www.adafruit.com/distributors/

Hopefully one will have the display at UK concurrency equivalent w/o a huge markup/shipping penalty other than VAT.

Edit: Cool Components in London has it for under £18 + VAT


- Ray
« Last Edit: July 05, 2013, 08:47:03 pm by mrburnette » Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 12
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hi everyone !

I am new to the arduino.   
 
and i have an GLCD  type of wdg0151-tmi  and i dont know to wire it and also how to program it with arduino mega .

please please help and thank you and sorry for my bad language 
Logged

Pages: 1 ... 18 19 [20] 21   Go Up
Jump to: