Moderators: adafruit_support_bill, adafruit
jsissom wrote:Has anyone tried driving multiple 16x32 RGB displays using the out connection? I can see from the example code how to refresh one, but I'm interested in driving multiple displays.
Thanks
Jay
#include "MJmatrixPanel.h"
// Constructor for 16x32 panel:
MJmatrixPanel::MJmatrixPanel(
uint8_t a, uint8_t b, uint8_t c,
uint8_t sclk, uint8_t latch, uint8_t oe, boolean dbuf) {
/*
pinMode(R1,OUTPUT);
pinMode(G1,OUTPUT);
pinMode(B1,OUTPUT);
pinMode(R2,OUTPUT);
pinMode(G2,OUTPUT);
pinMode(B2,OUTPUT);
pinMode(CLK,OUTPUT);
pinMode(OE,OUTPUT);
pinMode(A,OUTPUT);
pinMode(B,OUTPUT);
pinMode(C,OUTPUT);
pinMode(LAT,OUTPUT);
digitalWrite(A,LOW);
digitalWrite(B,LOW);
digitalWrite(C,LOW);
digitalWrite(LAT,LOW);
digitalWrite(OE,LOW);
digitalWrite(CLK,HIGH);
*/
}
void MJmatrixPanel::drawPixel(int16_t x, int16_t y, uint16_t c) {
}
uint16_t MJmatrixPanel::getBitmapPixel(int16_t x, int16_t y, const uint8_t *bitmap)
{
int16_t w = 32;
int16_t h = 32;
int16_t i, j, byteWidth = (w + 7) / 8;
if(pgm_read_byte(bitmap + y * byteWidth + x / 8) & (128 >> (x & 7))) {
//drawPixel(x+i, y+j, color);
return 1;
}
else
return 0;
}
void MJmatrixPanel::updateRow(int y)
{
digitalWrite(OE,LOW);
// Set the row address
if ( y & 0x1 ) {
digitalWrite(A,HIGH);
} else {
digitalWrite(A,LOW);
}
if ( y & 0x2 ) {
digitalWrite(B,HIGH);
} else {
digitalWrite(B,LOW);
}
if ( y & 0x4 ) {
digitalWrite(C,HIGH);
} else {
digitalWrite(C,LOW);
}
for ( uint8_t x = 0; x < 64; x++ ) {
digitalWrite(CLK,LOW);
int _x, _y;
if(x > 31)
{
_x = x - 32;
_y = y + 16;
}
else
{
_x = x;
_y = y;
}
if(getBitmapPixel(_x,_y,bitmap))
{
digitalWrite(R1,HIGH);
digitalWrite(G1,HIGH);
digitalWrite(B1,HIGH);
}
else
{
digitalWrite(R1,LOW);
digitalWrite(G1,LOW);
digitalWrite(B1,LOW);
}
_y += 8;
if(getBitmapPixel(_x,_y,bitmap))
{
digitalWrite(R2,HIGH);
digitalWrite(G2,HIGH);
digitalWrite(B2,HIGH);
}
else
{
digitalWrite(R2,LOW);
digitalWrite(G2,LOW);
digitalWrite(B2,LOW);
}
digitalWrite(CLK,HIGH);
}
digitalWrite(LAT,HIGH);
digitalWrite(LAT,LOW);
digitalWrite(OE,HIGH);
}
void MJmatrixPanel::drawDisplay()
{
for ( int i = 0; i < 8; i++ ) {
updateRow(i);
}
}
Return to Glowy things (LCD, LED, TFT, EL) purchased at Adafruit
Users browsing this forum: Google [Bot] and 6 guests