How to switch colors using an ATtiny85 with the Bicolor LED

For Adafruit customers who seek help with microcontrollers

Moderators: adafruit_support_bill, adafruit

Please be positive and constructive with your questions and comments.
Locked
User avatar
mfueger
 
Posts: 3
Joined: Thu Nov 15, 2012 1:28 pm

How to switch colors using an ATtiny85 with the Bicolor LED

Post by mfueger »

Hello!

I am using an ATtiny85 to drive the Bicolor LED matrix https://www.adafruit.com/products/902 with the space invader animation from the tutorial in https://learn.adafruit.com/trinket-slas ... ource-code.

Everything works out of the box, with the exception of having to reorder the columns differently:

Code: Select all

static const uint8_t PROGMEM reorder[] = {
    0x00,0x80,0x40,0xc0,0x20,0xa0,0x60,0xe0,0x10,0x90,0x50,0xd0,0x30,0xb0,0x70,0xf0,
    0x08,0x88,0x48,0xc8,0x28,0xa8,0x68,0xe8,0x18,0x98,0x58,0xd8,0x38,0xb8,0x78,0xf8,
    0x04,0x84,0x44,0xc4,0x24,0xa4,0x64,0xe4,0x14,0x94,0x54,0xd4,0x34,0xb4,0x74,0xf4,
    0x0c,0x8c,0x4c,0xcc,0x2c,0xac,0x6c,0xec,0x1c,0x9c,0x5c,0xdc,0x3c,0xbc,0x7c,0xfc,
    0x02,0x82,0x42,0xc2,0x22,0xa2,0x62,0xe2,0x12,0x92,0x52,0xd2,0x32,0xb2,0x72,0xf2,
    0x0a,0x8a,0x4a,0xca,0x2a,0xaa,0x6a,0xea,0x1a,0x9a,0x5a,0xda,0x3a,0xba,0x7a,0xfa,
    0x06,0x86,0x46,0xc6,0x26,0xa6,0x66,0xe6,0x16,0x96,0x56,0xd6,0x36,0xb6,0x76,0xf6,
    0x0e,0x8e,0x4e,0xce,0x2e,0xae,0x6e,0xee,0x1e,0x9e,0x5e,0xde,0x3e,0xbe,0x7e,0xfe,
    0x01,0x81,0x41,0xc1,0x21,0xa1,0x61,0xe1,0x11,0x91,0x51,0xd1,0x31,0xb1,0x71,0xf1,
    0x09,0x89,0x49,0xc9,0x29,0xa9,0x69,0xe9,0x19,0x99,0x59,0xd9,0x39,0xb9,0x79,0xf9,
    0x05,0x85,0x45,0xc5,0x25,0xa5,0x65,0xe5,0x15,0x95,0x55,0xd5,0x35,0xb5,0x75,0xf5,
    0x0d,0x8d,0x4d,0xcd,0x2d,0xad,0x6d,0xed,0x1d,0x9d,0x5d,0xdd,0x3d,0xbd,0x7d,0xfd,
    0x03,0x83,0x43,0xc3,0x23,0xa3,0x63,0xe3,0x13,0x93,0x53,0xd3,0x33,0xb3,0x73,0xf3,
    0x0b,0x8b,0x4b,0xcb,0x2b,0xab,0x6b,0xeb,0x1b,0x9b,0x5b,0xdb,0x3b,0xbb,0x7b,0xfb,
    0x07,0x87,0x47,0xc7,0x27,0xa7,0x67,0xe7,0x17,0x97,0x57,0xd7,0x37,0xb7,0x77,0xf7,
    0x0f,0x8f,0x4f,0xcf,0x2f,0xaf,0x6f,0xef,0x1f,0x9f,0x5f,0xdf,0x3f,0xbf,0x7f,0xff  
};
I have looked through the code in the LEDBackpack library, but was not able to figure out how to change colors for the matrix.

[*] How do I switch to a different color from the default green for the entire display?
[*] How do I switch the color for individual pixels?

Any help would be greatly appreciated!

User avatar
adafruit_support_mike
 
Posts: 67446
Joined: Thu Feb 11, 2010 2:51 pm

Re: How to switch colors using an ATtiny85 with the Bicolor

Post by adafruit_support_mike »

The bicolor matrix has two LEDs per pixel, so you need a different object to control it.

Take a look at the 'bicolor8x8' example sketch for examples of how to work with that matrix:

https://github.com/adafruit/Adafruit-LE ... lor8x8.pde

User avatar
mfueger
 
Posts: 3
Joined: Thu Nov 15, 2012 1:28 pm

Re: How to switch colors using an ATtiny85 with the Bicolor

Post by mfueger »

Thank you for your reply. However, I am not using the LEDBackpack library, and would like to control the colors directly due to using an ATtiny85.

In drawPixel(x, y, color), I see the following:

Code: Select all

if (color == LED_GREEN) {
    // Turn on green LED.
    displaybuffer[y] |= 1 << x;
    // Turn off red LED.
    displaybuffer[y] &= ~(1 << (x+8));
  } else if (color == LED_RED) {
    // Turn on red LED.
    displaybuffer[y] |= 1 << (x+8);
    // Turn off green LED.
    displaybuffer[y] &= ~(1 << x);
  } else if (color == LED_YELLOW) {
    // Turn on green and red LED.
    displaybuffer[y] |= (1 << (x+8)) | (1 << x);
  } else if (color == LED_OFF) {
    // Turn off green and red LED.
    displaybuffer[y] &= ~(1 << x) & ~(1 << (x+8));
  }
So when writing a pixel in the Space Invader example, the following is used:

Code: Select all

TinyWireM.write(pgm_read_byte(&reorder[pgm_read_byte(&anim[i++])]));
How can this line be modified to display pixels in a different color (green seems to be the default)?

Thanks!

User avatar
adafruit_support_mike
 
Posts: 67446
Joined: Thu Feb 11, 2010 2:51 pm

Re: How to switch colors using an ATtiny85 with the Bicolor

Post by adafruit_support_mike »

The ATtiny85 can't control an 8x8 bicolor matrix directly. The matrix has 24 pins. The ATtiny85 has 6.

The only way an ATtiny85 can control the matrix is by talking to the HT16K33 LED driver on the backpack. If you don't want to use the library we've provided for that purpose, you'll have to write your own.

Locked
Please be positive and constructive with your questions and comments.

Return to “Microcontrollers”