Go Down

Topic: Sure Electronics new 32x16 bi-color display: 3216 RG -Cont. from read only forum (Read 102606 times) previous topic - next topic


lonewolf...PM me your address and I'll send you a second Green 3208 display if you want to work on it.  I was reading the TODO and noticed 3208 support wasn't crossed off yet :)


I've tried hooking up a 3208 display, but it doesn't seem to work yet.  I changed the GEOM to 32x8, used a 5x7 font, but nothing shows on the display when i upload the code.

GEOM_32x8 is defined code is not ready yet: 3208 uses HT1632C but CS isn't managed thru a shift register... _chipselect() routine need to be adapted/rewritten (I think it's enough to )... moreover I need to understand if HT1632C initialization and memory addressing is the same for 32x16 displays (COMS00).

4->6(READ Clock according to 3208 data sheet)
5->3(CS1, I flipped CS1 switch on board)

4->6 no, leave NC

Moreover you could try this scratch code (it might work only for one 3208 since only one CS is managed) instead original _chipselect() defined in ht1632c.h:

Code: [Select]
void _chipselect(register byte cs)
 if (cs == HT1632_CS_ALL) {
 } else if (cs == HT1632_CS_NONE) {
 } else {

...and another major change to be applied on ht1632.cpp:

Code: [Select]

ht1632c::ht1632c(const byte geometry, const byte number)
 if (geometry == GEOM_32x16)
   bicolor = true;
   x_max = (32 * number) - 1;
   y_max = 15;
   cs_max = 4 * number;
   framesize = 32 * cs_max;
 if (geometry == GEOM_32x8)
   bicolor = true;
   x_max = (32 * number) - 1;
   y_max = 7;
   cs_max = 1 * number;
   framesize = 8 * cs_max;
 framebuffer = (byte*) malloc(framesize);
 x_cur = 0;
 y_cur = 0;


Sorry, I haven't displays other then 3216 to try...

That works, partially.   But only 2 of the 4 LED matrix's show text.  It's as if it starts half way through the display and moves left.

I'd be happy to mail you one of my 3208's if you want to play with one to improve the code.


Hello dear friends. Now I have time to work with my arduino.

I made cable with IDC connector, to connect LED display directly to sensor shield.
All works on arduino mega2560 with sensor shield from dfrobot.
power supply MW 5v 4A
I connected to pins (PORTC, 7,6,5,4)

There is a small mistake in Example "circles.pde"
must be dotmatrix.clear();, but there is LedMatrix.clear() - so IDE found this error.
This function clear() bad working on my configuration with 1 display.
If I write
ledMatrix = ht1632c(PORTC, 7, 6, 4, 5, GEOM_32x16, 2);  - it works, but if I write
ledMatrix = ht1632c(PORTC, 7, 6, 4, 5, GEOM_32x16, 1); - something terrible happens. Random red dots on all display or more, etc.

Great work with library!!! Big thanks!


I ran into the same problem using the ht1632c library with one display:  the clear() function didn't clear the display if I told it I had one display.  If I told it I had 2 displays, the clear() worked, but it tried to write to the second non-existing display and didn't scale correctly (since Xmax was too large).

I made this change to ht1632c.cpp at line 193:

Code: [Select]
  // memset(framebuffer, 0, framesize);
  memset(framebuffer, 0, framesize*2);

I don't know if this will break the library for multiple displays, but it seems to work for one display, in my limited testing.



Hello. Does anyone know if it is possible to machine the ends off of the 3216 RG 3mm LED Displays? So that they are flush against one another when stacked vertically.

Thanks  :)


It seems, after a visual check, that you can cut off the top part of the board (I don't see any trace).
The bottom part has a few traces, which may be replaced by wires in case it's cut off.
If you try it, please publish your results.


Yes, I machined off the tops and bottoms of four 3216's. Without fixing any lines the two that had the bottoms cut off are missing 8 led's each and it wont allow for more than 3 boards in series, but everything except that works  I will try to fix the cut leads and will post results here :)


Hello. Do you have any news about library? Do you still work on it? I have 2 displays, and I want to make 32x32 configuration. Does library support 32x32 conf.?



Sorry to be a complete newbee but do I need an external power supply for my 3216RG? I've read in this thread that I don't need one but if I wire pin 11 to GND and pin 12 to +5v on the Arduino then the Arduino's power LED almost goes out and I can't communicate with it, do I need to connect up the seperate 5v and GND connector on the 3216RG? Any help would be great.



EDIT: I am using an Arduino Duemilanove


yes, you need a separate power supply or you'll burn your arduino regulator if you turn on all leds(green and red) and put brightness on maximum level.

note that you need a common ground(plug GND from arduino on your 3216 led matrix gnd pin).


Ah, thank you. I think that I may have it wired up wrong since the Arduino power LED goes really dim as if I were drawing too much current but this happens without turning any of the LEDs on the matrix on. Just to clarify; on the 3216RG there is a ribbon connector within this connector there are 3 GNDs and 3 +5v pins. There is also a separate GND and +5v terminal on the 3216RG. Do I need to power this separate connector too?




There's no need to power both pins. Only the separate GND/+5V is OK. Please, pay attention if you're using a not regulated wall wart as it can give you much more than 5V.


I also have 4 of the P7.62 3216 displays and I want to use them in this configuration


how could I achieve this?
I've tried Tim Gilmores HT1632_8 files in an [1][2][3][4] configuration and I ran in the same problem as he described here:

an alternative config could be [1][2][3][4] where each display in 90° rotated.
the resulting display should be 64x32

any help or pointers in the right direction would be very much appreciated!


what code should I use in order to print a value store in an "int"?

Try this:

char convInt;
int value1 = 0;
value1 ++;
itoa(value1, contInt, 10)

ht1632_putchar(0, 0, convInt, GREEN);

I have problems with printing values:(

I am using library DallasTemperature now. Examples with serial port and DS18B20 works fine, but how can I print value 25.40 on my display?

Upper example doesn't work.


Try something like this:
Code: [Select]

char buffer[20] = {0};
sprintf(buffer, "Temp is %5.2fC ", temp);

Go Up