Show Posts
Pages: 1 [2] 3 4 ... 101
16  Using Arduino / Displays / Re: OLED display with 4-wire SPI mode, but without CS on: September 09, 2014, 07:59:18 am
Oh, yes, I did not realized, that you intend to use the Arduino Due. Indeed, I2C is not supported for the Due at the moment (see also the remarks below the table on the device wiki page)

I am sorry for this,
Oliver
17  Using Arduino / Displays / Re: OLED 1.3" I2C IIC 128x64 Serial LCD - Faulty? on: September 09, 2014, 06:22:31 am
Oliver I don't understand what "you don't understand" from my latest post - I have been very explicit?
1. My latest post is totally pertinent to my original OLED I2C Faulty(??) post - that is why I continued on from the original rather than start a new thread. It's all about getting this particular OLED working properly!
Oh, my mistake, i have not seen that you are the OP.

2. I understood from your earlier comments to me that you actually wrote this particular u8glib code yourself - perhaps I am mistaken?
Correct, i am the author of u8glib.

3. If 2., is correct then I would have thought you would have fully understood that the "Menu" and "Colour" programs I referred to were examples that appear within the u8glib Library examples when you include this library in a sketch?
4. What I am trying to do is to see what the "Menu" & "Colour" programs actually do and how you can manipulate them, eg., how you select the different menu items in the case of the "Menu List" examples [Look at my attached JPEG - it clearly shows the Menu list I am talking about].
5. Do you select each list item by entering "something" in the serial monitor when running this program???
ok, this is more clearer now to me. Maybe a better question would have been "How do i modify the cursor in the menu example of u8glib?".
But the answer is easy: Attach one or more buttons to the ports of your Arduino Board. The buttons should connect the port with GND.
The actual port numbers must be provided here:
Code:
uint8_t uiKeyPrev = 7;
uint8_t uiKeyNext = 3;

6. I am interesting in using a similar Menu Selection program in another program I am writing BUT before I can do this I have to know how this "Menu Selection process" works first and how you select the different menu irems - which it seemingly does not presently do in this particular u8glib code example????
The menu selection process is just an example. I would say, it has nothing to do with u8glib itself. U8glib just draws something on the display. U8glib is NOT a user interface library (like m2tklib). In the menu example, the serial object is not used at all, so i was confused about your question. Moreover, the menu example reads and reacts on port levels as you can see by looking at the code.


7. The green tags [stick on labels attached to the OLED display - which is clearly visible in my attached jpegs] come from the suppliers of the various OLEDs when the OLEDs are purchased! I have also seen red tags as well on OLEDs when looking at different sellers web sites? These coloured labels are exceedingly common and have appeared on ALL OLEDs I have look at thus far, so I am totally surprised that you don't understand what I am talking about?
I am a software programmer and electronics freak. Why they display vendor attac hes thes tags? How do i know this? I guess i am the wrong person to answer this. In fact i never cared about these tags. Maybe they include an RFID chip which allows easy identification during the manufactoring process. Or it is for a better and easier handling of the user or the person who assembles this display? I had a similar tag on the display of my smartphone, which i purchased recently. What could have been its purpose???

8. Have you actually looked at my pictures I attached to my last post??? 
I never read posts, i never try to understand them and i never look at any picture.  smiley-wink

Hopefully I have clarified what it is you don't understand in my questions?
If not then I give up as I must be speaking Swahili!
Cheers, Ian
Yes, thanks, this reply was more clearer to me.

Oliver
18  Using Arduino / Displays / Re: OLED 1.3" I2C IIC 128x64 Serial LCD - Faulty? on: September 09, 2014, 12:09:36 am
I might be wrong, but i think your questions are not directly related to this thread. So it might be better to start a new thread for your questions.

I tried to locatz your questions, this seems to be the first:
Quote
So, how do I communicate with these two (or any other of the u8glib libraries for that matter) programs in using the serial monitor?
I do not understand the question and perhaps you should be more specific and describe (in a new thread) what you intend to do. Then helping would be better. The actual answer would be (according to my understanding of your question): You need to write a program.

Second question seemst to be:
Quote
what is the significance of these coloured tags as I have not been able to find any reference to them???
What is a coloured tag?

Oliver
19  Using Arduino / Displays / Re: SSD1306 can only write to part of screen (U8Glib works, AdaFruit not) on: September 08, 2014, 03:07:57 pm
Yes, i see you already understood the details of these controllers.
The biggest difference between the SSD1306 and the SH1106 is the width of the display memory. The SH1106 has 132 columns.

Oliver
20  Using Arduino / Displays / Re: SSD1306 can only write to part of screen (U8Glib works, AdaFruit not) on: September 08, 2014, 12:22:01 pm
You are right, the init sequence is the same for the SH1106 and SSD1306 controller. In u8glib the displays specific details are handled in "device" callback functions. Here are those which are relevant for the SSD1306 and SH1106 with 128x64 pixel:

Code:
uint8_t u8g_dev_ssd1306_adafruit_128x64_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg)
{
  switch(msg)
  {
    case U8G_DEV_MSG_INIT:
      u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_300NS);
      u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1306_128x64_init_seq);
      break;
    case U8G_DEV_MSG_STOP:
      break;
    case U8G_DEV_MSG_PAGE_NEXT:
      {
        u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem);
        u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1306_128x64_data_start);   
        u8g_WriteByte(u8g, dev, 0x0b0 | pb->p.page); /* select current page (SSD1306) */
        u8g_SetAddress(u8g, dev, 1);           /* data mode */
        if ( u8g_pb_WriteBuffer(pb, u8g, dev) == 0 )
          return 0;
        u8g_SetChipSelect(u8g, dev, 0);
      }
      break;
    case U8G_DEV_MSG_SLEEP_ON:
      u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd13xx_sleep_on);   
      return 1;
    case U8G_DEV_MSG_SLEEP_OFF:
      u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd13xx_sleep_off);   
      return 1;
  }
  return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg);
}

uint8_t u8g_dev_sh1106_128x64_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg)
{
  switch(msg)
  {
    case U8G_DEV_MSG_INIT:
      u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_300NS);
      u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1306_128x64_init_seq);
      break;
    case U8G_DEV_MSG_STOP:
      break;
    case U8G_DEV_MSG_PAGE_NEXT:
      {
        u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem);
        u8g_WriteEscSeqP(u8g, dev, u8g_dev_sh1106_128x64_data_start);   
        u8g_WriteByte(u8g, dev, 0x0b0 | pb->p.page); /* select current page (SSD1306) */
        u8g_SetAddress(u8g, dev, 1);           /* data mode */
        if ( u8g_pb_WriteBuffer(pb, u8g, dev) == 0 )
          return 0;
        u8g_SetChipSelect(u8g, dev, 0);
      }
      break;
    case U8G_DEV_MSG_SLEEP_ON:
      u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd13xx_sleep_on);   
      return 1;
    case U8G_DEV_MSG_SLEEP_OFF:
      u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd13xx_sleep_off);   
      return 1;
  }
  return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg);
}

This code is taken from file u8g_dev_ssd1306_128x64.c at line 247.

The message U8G_DEV_MSG_INIT forces the init sequence to be sent to the display. This is identical for both devices.
The actual data is written with the U8G_DEV_MSG_PAGE_NEXT command. One page is written only. A page (usually) has a hight of 8 pixel and corresponds to the page of the memory in the display controller.

Here you find the only difference between the two controllers.
Code:
u8g_dev_ssd1306_128x64_data_start
for the SSD1306 and for the SH1106 this is:
Code:
u8g_dev_sh1106_128x64_data_start
Here are the definitions:
Code:
static const uint8_t u8g_dev_ssd1306_128x64_data_start[] PROGMEM = {
  U8G_ESC_ADR(0),           /* instruction mode */
  U8G_ESC_CS(1),             /* enable chip */
  0x010,                /* set upper 4 bit of the col adr to 0 */
  0x000,                /* set lower 4 bit of the col adr to 0  */
  U8G_ESC_END                /* end of sequence */
};

/* the sh1106 is compatible to the ssd1306, but is 132x64. display seems to be centered */
static const uint8_t u8g_dev_sh1106_128x64_data_start[] PROGMEM = {
  U8G_ESC_ADR(0),           /* instruction mode */
  U8G_ESC_CS(1),             /* enable chip */
  0x010,                /* set upper 4 bit of the col adr to 0 */
  0x002,                /* set lower 4 bit of the col adr to 2 (centered display with sh1106)  */
  U8G_ESC_END                /* end of sequence */
};
The only difference is, that the page starts at column 0 for the SSD1306 and at column 2 for the SH1106 controller.

The adafruit does not use this kind of page writing. It uses a complete different approach. So i can not say much about the Adafruit code.

Oliver


21  Using Arduino / Displays / Re: OLED display with 4-wire SPI mode, but without CS on: September 08, 2014, 12:07:59 pm
A good starting point is:
Code:
U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NO_ACK);

Oliver
22  Using Arduino / Displays / Re: SSD1306 can only write to part of screen (U8Glib works, AdaFruit not) on: September 08, 2014, 12:27:53 am
Hi

If u8glib is working, it is difficult for me to provide any other usefull help. However, from what i know from the adafruit lib: Although the init sequence is almost identical to u8glib, the writing of the actual data is very different. Especially if one of your OLED displays contains the SH1106 controller, the Adafruit lib will not work at all. The SH1106 does not differ much from the SSD1306 (in fact displays are often advertised as SSD1306 display, although they contain the SH1106 controller), but still the init sequenze and data writing must be adjusted.

Oliver

23  Using Arduino / Displays / Re: Newhaven OLED displays - different versions on: September 04, 2014, 11:54:28 pm
Cross-Ref-Table: https://code.google.com/p/u8glib/wiki/device

SSD1322 constructor:
Code:
U8GLIB_NHD31OLED_GR(sck, mosi, cs, a0 [, reset])

I do not own this display, but according to other users, this should work.

Oliver
24  Using Arduino / Displays / Re: Display screen I2C - U8g library - strange graphic! on: September 03, 2014, 02:23:48 pm
Maybe, this is a SH1106 controller (instead of the SSD1306):

Code:
U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NO_ACK);

Oliver
25  Using Arduino / Displays / Re: Ucglib: Color OLED and TFT Library... on: August 28, 2014, 08:27:32 am
I have developed most of the procedures with SDL and Ubuntu Linux first. Some instructions are given here: https://code.google.com/p/ucglib/wiki/sdl

Oliver
26  Using Arduino / Displays / Re: SPI_Mode3 causing SPI multiple device errors when using u8glib Library on: August 27, 2014, 05:13:14 pm
U8glib has an option to store and restore the state of the HW SPI registers. Have a look at this:
https://code.google.com/p/u8glib/wiki/userreference#setHardwareBackup
In some cases this may help...

Please also check whether U8glib works with SW SPI together with your RTC (with HW SPI).

Oliver
27  Using Arduino / Displays / Re: How to use Arduino UNO control an LCD which has a NT7506 LCD controller? on: August 27, 2014, 11:31:50 am
Hi

I have seen a lot of displays with a large number of controllers, but this controller is new to me. I do not think there is a ready made library for it.
It looks similar to the ST7565, but still has some differences in the command set. Take a library for the ST7565 (such as u8glib)  try and update the ST7565 specific code. Unfortunately i will have only limited internet access in the next days, otherwise i could offer to extend u8glib with support for the NT7506.

Any datasheet available for the display? Where did you buy the display and what is the actual screen resolution?

Oliver
28  Using Arduino / Programming Questions / Re: Having trouble with SHIELD GLCD V2 programming. on: August 27, 2014, 10:06:39 am

Oh, looks like these people made reference to U8glib, without proper citing the origin (which is, from my perspective, a license violation).

Nevertheless U8glib (which seem to be the prefered library for this shield) has been written by me and it is open source. You can download U8glib here: https://code.google.com/p/u8glib/. This project page also contains a lot of examples and the full reference manual. Please have a look there. If you have any further questions please ask your question either in this thread or post a new question in the "display" subforum of this Arduino forum.

Oliver
29  Using Arduino / Displays / Re: Looking for readable LCD display without backlight on: August 26, 2014, 12:11:37 pm
Hi

To my knowledge, at reichelt.de you can buy without registration.
mouser.com has free shipping above 65€. I never had been below that limit  smiley-roll

Oliver
30  Using Arduino / Displays / Re: Amazingly Inexpensive LCD display screens on: August 26, 2014, 01:06:32 am
At least buy-display is a reliable and good shop for buying displays. A level converter is required for most of the displays with the Uno or Mega board. For the Due (3.3V board) it will work without level shifter.

Here is a display from buy-display.com (ERC24064-1). It also requires some caps for the internal charge pump:



Oliver
Pages: 1 [2] 3 4 ... 101