Junichi Katsu / Mbed 2 deprecated LedPanel_Clock

Dependencies:   EthernetInterface NTPClient mbed-rtos mbed

Committer:
mbed_Cookbook_SE
Date:
Wed Dec 23 16:17:01 2015 +0000
Revision:
0:7d6abca457ee
??

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbed_Cookbook_SE 0:7d6abca457ee 1 /**
mbed_Cookbook_SE 0:7d6abca457ee 2 * Matrix16x16 LEDPanel library
mbed_Cookbook_SE 0:7d6abca457ee 3 *
mbed_Cookbook_SE 0:7d6abca457ee 4 * @author Junichi Katsu
mbed_Cookbook_SE 0:7d6abca457ee 5 * @version 1.0
mbed_Cookbook_SE 0:7d6abca457ee 6 * @date 02-April-2015
mbed_Cookbook_SE 0:7d6abca457ee 7 *
mbed_Cookbook_SE 0:7d6abca457ee 8 */
mbed_Cookbook_SE 0:7d6abca457ee 9
mbed_Cookbook_SE 0:7d6abca457ee 10 #include "mbed.h"
mbed_Cookbook_SE 0:7d6abca457ee 11 #include "LedPanel.h"
mbed_Cookbook_SE 0:7d6abca457ee 12 #include "LedPanel_GFX.h"
mbed_Cookbook_SE 0:7d6abca457ee 13
mbed_Cookbook_SE 0:7d6abca457ee 14 LedPanel::LedPanel(I2C *i2c): _i2c(i2c), LedPanel_GFX(16, 16)
mbed_Cookbook_SE 0:7d6abca457ee 15 {
mbed_Cookbook_SE 0:7d6abca457ee 16
mbed_Cookbook_SE 0:7d6abca457ee 17 }
mbed_Cookbook_SE 0:7d6abca457ee 18
mbed_Cookbook_SE 0:7d6abca457ee 19 void LedPanel::setBrightness(uint8_t b)
mbed_Cookbook_SE 0:7d6abca457ee 20 {
mbed_Cookbook_SE 0:7d6abca457ee 21 if (b > 15) b = 15;
mbed_Cookbook_SE 0:7d6abca457ee 22
mbed_Cookbook_SE 0:7d6abca457ee 23 uint8_t c = 0xE0 | b;
mbed_Cookbook_SE 0:7d6abca457ee 24 char foo[1];
mbed_Cookbook_SE 0:7d6abca457ee 25
mbed_Cookbook_SE 0:7d6abca457ee 26 foo[0] = c;
mbed_Cookbook_SE 0:7d6abca457ee 27
mbed_Cookbook_SE 0:7d6abca457ee 28 _i2c->write(i2c_addr[0], foo, 1);
mbed_Cookbook_SE 0:7d6abca457ee 29 _i2c->write(i2c_addr[1], foo, 1);
mbed_Cookbook_SE 0:7d6abca457ee 30 }
mbed_Cookbook_SE 0:7d6abca457ee 31
mbed_Cookbook_SE 0:7d6abca457ee 32 void LedPanel::blinkRate(uint8_t b)
mbed_Cookbook_SE 0:7d6abca457ee 33 {
mbed_Cookbook_SE 0:7d6abca457ee 34 if (b > 3) b = 0;
mbed_Cookbook_SE 0:7d6abca457ee 35
mbed_Cookbook_SE 0:7d6abca457ee 36 uint8_t c = HT16K33_BLINK_CMD | HT16K33_BLINK_DISPLAYON | (b << 1);
mbed_Cookbook_SE 0:7d6abca457ee 37
mbed_Cookbook_SE 0:7d6abca457ee 38 char foo[1];
mbed_Cookbook_SE 0:7d6abca457ee 39 foo[0] = c;
mbed_Cookbook_SE 0:7d6abca457ee 40
mbed_Cookbook_SE 0:7d6abca457ee 41 _i2c->write(i2c_addr[0], foo, 1);
mbed_Cookbook_SE 0:7d6abca457ee 42 _i2c->write(i2c_addr[1], foo, 1);
mbed_Cookbook_SE 0:7d6abca457ee 43 }
mbed_Cookbook_SE 0:7d6abca457ee 44
mbed_Cookbook_SE 0:7d6abca457ee 45 void LedPanel::begin(uint8_t _addr0,uint8_t _addr1)
mbed_Cookbook_SE 0:7d6abca457ee 46 {
mbed_Cookbook_SE 0:7d6abca457ee 47 i2c_addr[0] = _addr0 << 1;
mbed_Cookbook_SE 0:7d6abca457ee 48 i2c_addr[1] = _addr1 << 1;
mbed_Cookbook_SE 0:7d6abca457ee 49
mbed_Cookbook_SE 0:7d6abca457ee 50 char foo[1];
mbed_Cookbook_SE 0:7d6abca457ee 51 foo[0] = 0x21;
mbed_Cookbook_SE 0:7d6abca457ee 52
mbed_Cookbook_SE 0:7d6abca457ee 53 _i2c->write(i2c_addr[0], foo, 1);
mbed_Cookbook_SE 0:7d6abca457ee 54 _i2c->write(i2c_addr[1], foo, 1);
mbed_Cookbook_SE 0:7d6abca457ee 55
mbed_Cookbook_SE 0:7d6abca457ee 56 blinkRate(HT16K33_BLINK_OFF);
mbed_Cookbook_SE 0:7d6abca457ee 57
mbed_Cookbook_SE 0:7d6abca457ee 58 setBrightness(15);
mbed_Cookbook_SE 0:7d6abca457ee 59 }
mbed_Cookbook_SE 0:7d6abca457ee 60
mbed_Cookbook_SE 0:7d6abca457ee 61 void LedPanel::writeDisplay(void)
mbed_Cookbook_SE 0:7d6abca457ee 62 {
mbed_Cookbook_SE 0:7d6abca457ee 63 char foo[2][17];
mbed_Cookbook_SE 0:7d6abca457ee 64 foo[0][0] = 0x00;
mbed_Cookbook_SE 0:7d6abca457ee 65 foo[1][0] = 0x00;
mbed_Cookbook_SE 0:7d6abca457ee 66
mbed_Cookbook_SE 0:7d6abca457ee 67 int j = 0;
mbed_Cookbook_SE 0:7d6abca457ee 68 for (uint8_t i=1; i<=16; i+=2)
mbed_Cookbook_SE 0:7d6abca457ee 69 {
mbed_Cookbook_SE 0:7d6abca457ee 70 for(uint8_t k=0; k < 2 ; k++)
mbed_Cookbook_SE 0:7d6abca457ee 71 {
mbed_Cookbook_SE 0:7d6abca457ee 72 int x = displaybuffer[j + k*8] & 0xFF;
mbed_Cookbook_SE 0:7d6abca457ee 73 foo[k][i] = x;
mbed_Cookbook_SE 0:7d6abca457ee 74 x = displaybuffer[j + k*8] >> 8;
mbed_Cookbook_SE 0:7d6abca457ee 75 foo[k][i+1] = x;
mbed_Cookbook_SE 0:7d6abca457ee 76 }
mbed_Cookbook_SE 0:7d6abca457ee 77 j++;
mbed_Cookbook_SE 0:7d6abca457ee 78 }
mbed_Cookbook_SE 0:7d6abca457ee 79 _i2c->write(i2c_addr[0], foo[0], 17);
mbed_Cookbook_SE 0:7d6abca457ee 80 _i2c->write(i2c_addr[1], foo[1], 17);
mbed_Cookbook_SE 0:7d6abca457ee 81 }
mbed_Cookbook_SE 0:7d6abca457ee 82
mbed_Cookbook_SE 0:7d6abca457ee 83 void LedPanel::clear(void)
mbed_Cookbook_SE 0:7d6abca457ee 84 {
mbed_Cookbook_SE 0:7d6abca457ee 85 for (uint8_t i=0; i<16; i++)
mbed_Cookbook_SE 0:7d6abca457ee 86 {
mbed_Cookbook_SE 0:7d6abca457ee 87 displaybuffer[i] = 0;
mbed_Cookbook_SE 0:7d6abca457ee 88 }
mbed_Cookbook_SE 0:7d6abca457ee 89 }
mbed_Cookbook_SE 0:7d6abca457ee 90
mbed_Cookbook_SE 0:7d6abca457ee 91 void LedPanel::drawPixel(int16_t x, int16_t y, uint16_t color)
mbed_Cookbook_SE 0:7d6abca457ee 92 {
mbed_Cookbook_SE 0:7d6abca457ee 93 if ((y < 0) || (y >= 16)) return;
mbed_Cookbook_SE 0:7d6abca457ee 94 if ((x < 0) || (x >= 16)) return;
mbed_Cookbook_SE 0:7d6abca457ee 95
mbed_Cookbook_SE 0:7d6abca457ee 96 if (color)
mbed_Cookbook_SE 0:7d6abca457ee 97 {
mbed_Cookbook_SE 0:7d6abca457ee 98 displaybuffer[y] |= 1 << x;
mbed_Cookbook_SE 0:7d6abca457ee 99 }
mbed_Cookbook_SE 0:7d6abca457ee 100 else
mbed_Cookbook_SE 0:7d6abca457ee 101 {
mbed_Cookbook_SE 0:7d6abca457ee 102 displaybuffer[y] &= ~(1 << x);
mbed_Cookbook_SE 0:7d6abca457ee 103 }
mbed_Cookbook_SE 0:7d6abca457ee 104 }
mbed_Cookbook_SE 0:7d6abca457ee 105
mbed_Cookbook_SE 0:7d6abca457ee 106 void LedPanel::Scroll(int16_t x, int16_t y)
mbed_Cookbook_SE 0:7d6abca457ee 107 {
mbed_Cookbook_SE 0:7d6abca457ee 108 bool bit[16];
mbed_Cookbook_SE 0:7d6abca457ee 109 for (uint8_t i=0; i<16; i++)
mbed_Cookbook_SE 0:7d6abca457ee 110 {
mbed_Cookbook_SE 0:7d6abca457ee 111 bit[i] = false;
mbed_Cookbook_SE 0:7d6abca457ee 112
mbed_Cookbook_SE 0:7d6abca457ee 113 if( (displaybuffer[i] & 0x8000) != 0 )
mbed_Cookbook_SE 0:7d6abca457ee 114 {
mbed_Cookbook_SE 0:7d6abca457ee 115 bit[i] = true;
mbed_Cookbook_SE 0:7d6abca457ee 116 }
mbed_Cookbook_SE 0:7d6abca457ee 117 displaybuffer[i] <<= 1;
mbed_Cookbook_SE 0:7d6abca457ee 118
mbed_Cookbook_SE 0:7d6abca457ee 119 if( bit[i] == true )
mbed_Cookbook_SE 0:7d6abca457ee 120 {
mbed_Cookbook_SE 0:7d6abca457ee 121 displaybuffer[i] |= 1;
mbed_Cookbook_SE 0:7d6abca457ee 122 }
mbed_Cookbook_SE 0:7d6abca457ee 123 }
mbed_Cookbook_SE 0:7d6abca457ee 124 }