このライブラリは8*8dotmatrixLedの輝度を階調制御します。 8*8dotmatrixLed以外でも8個のLEDを1組にしたものを1組から8組まで制御できます。 LEDの階調制御は、ON,OFFの指示で輝度を0から100%まで1秒かけて変化させることができます。 それ以外にも、輝度を直接指示することもできます。 This library is the brightness of the tone controls 8 * 8dotmatrixLed. You can control up to eight pairs of those in one set of eight pairs in the LED than 8 * 8dotmatrixLed. Tone control of the LED, ON, can be varied over a second from 0 to 100% brightness at the direction of OFF. Besides this, the intensity can be directly ordered.
Dependents: eightDotMatrixLedLibraryExample test10_rev2
EightDotMatrixLed.h
- Committer:
- suupen
- Date:
- 2011-12-03
- Revision:
- 0:3df409a1aa42
File content as of revision 0:3df409a1aa42:
/* mbed Eight Dot Matrix LED Library * Copyright (c) 2011 suupen * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ //================================ // EightDotMatrixLed.h // V1.0 : 2011/12/03 // //================================ #ifndef _EIGHTDOTMATRIXLED_H #define _EIGHTDOTMATRIXLED_H /** Seven segment Numeric LED control class * * Example: * @code * //============================================ * // eightDotMatrixLed Library Example * // * // This program is used to control the LED 32. * // * // * // <schematic> * // --|>|-- * // A K * // seg A(p5) -----R(200[ohm])--- LED ----- com0(p13) * // | * // -- R(200[ohm])--- LED ----- com1(p14) * // | * // -- R(200[ohm])--- LED ----- com2(p28) * // | * // -- R(200[ohm])--- LED ----- com3(p27) * // * // * // same : segB(p6), segC(p7), segD(p8), segE(p9), segF(p10), segG(p11), segH(p12) * // * // <Description of LED control> * // com0 Led off to on ,on to off smooth (lighting = 0 to 100 [%] * // com1 Led off to on smooth, on to off hard * // com2 Led off to on, on to off smooth (lighting = 0 to gray data) * // com3 gray data movement * // * //============================================= * * #include "mbed.h" * * #include "EightDotMatrixLed.h" * * // common type (0:anode common 1:cathode common) * // | * // | segA segB segC segD segE segF segG segh com1 com2 com3 com4 (com5 to com8 = disable) * // | | | | | | | | | | | | | * EightDotMatrixLed segmentled(1, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p28, p27); * * // com0 Led off to on ,on to off smooth (lighting = 0 to 100 [%] * // com1 Led off to on smooth, on to off hard * // com2 Led off to on, on to off smooth (lighting = 0 to gray data) * // com3 gray data movement * * uint8_t D_dotGrayData[4][8] = { * {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}, // com0 disable * {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}, // com1 disable * {0, 14, 29, 43, 57, 71, 86, 100}, // com2 enable (0 to 100 [%]) * {0, 14, 29, 43, 57, 71, 86, 100}, // com3 enable (0 to 100 [%]) * }; * uint8_t D_dotDigitalData[4][8] = { * {0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // com0 0:off, 1:on * {0x01, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}, // com1 0:disalbe 1:on * {0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01}, // com2 0:off, 1:on * {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff} // com3 disable * }; * * Timer timer; // data change timer * * int main() { * uint8_t com, seg; * uint8_t wk0, wk1, wk2, wk3; * * timer.start(); * * while(1) { * // After 500[ms] to start the process * if(timer.read_ms() >= 500){ * timer.reset(); * * // com0 Led off to on ,on to off smooth (lighting = 0 to 100 [%] * wk0 = D_dotDigitalData[0][7]; * for(seg = 7; seg > 0; seg--){ * D_dotDigitalData[0][seg] = D_dotDigitalData[0][seg - 1]; * } * D_dotDigitalData[0][0] = wk0; * * // com1 Led off to on smooth, on to off hard * wk1 = D_dotDigitalData[1][7]; * for(seg = 7; seg > 0; seg--){ * D_dotDigitalData[1][seg] = D_dotDigitalData[1][seg - 1]; * } * D_dotDigitalData[1][0] = wk1; * * // com2 Led off to on, on to off smooth (lighting = 0 to gray data) * wk2 = D_dotDigitalData[2][7]; * for(seg = 7; seg > 0; seg--){ * D_dotDigitalData[2][seg] = D_dotDigitalData[2][seg - 1]; * } * D_dotDigitalData[2][0] = wk2; * * // com3 gray data movement * wk3 = D_dotGrayData[3][7]; * for(seg = 7; seg > 0; seg--){ * D_dotGrayData[3][seg] = D_dotGrayData[3][seg - 1]; * } * D_dotGrayData[3][0] = wk3; * } * * // This function, please repeat the process in less than 1ms. * segmentled.EightDotMatrixLed_main((uint8_t*)D_dotGrayData, (uint8_t*)D_dotDigitalData); * * } *} * @endcode */ #include "types.h" class EightDotMatrixLed { public: /** Create a eight dot matrix led array object connected to the specified DigitalOut pin * @param commonPole The polarity of the seven segment led common 0:Anode common, 1:Cathode common * @param seg_a - seg_h DigitalOut pin to connect to. To provide members with an array of uint8_t digit minutes. * @param com_1 - com_8 DigitalOut pin to connect to. To provide members with an array of uint8_t digit minutes. 8 digits maximum */ EightDotMatrixLed(uint8_t commonPole, PinName seg_a, PinName seg_b, PinName seg_c, PinName seg_d, PinName seg_e, PinName seg_f, PinName seg_g, PinName seg_h, PinName com_1 = NC, PinName com_2 = NC, PinName com_3 = NC, PinName com_4 = NC, PinName com_5 = NC, PinName com_6 = NC, PinName com_7 = NC, PinName com_8 = NC); /** Data set to the seven segment LED display * @param uint8_t* grayData[8][8] address pointer : 0 - 100 (1/1 [%]/count) other:disable example 0:ledOff, 100:led max lighting * @param uint8_t* digitalData[8][8] address pointer : 0 :ledOff 1 : ledOn other:disable (1[s] de henka) */ void EightDotMatrixLed_main(uint8_t* grayData, uint8_t* digitalData); private: void segmentGrayDataKosin(void); void comAllClear(void); void segAllClear(void); void segDataSet(uint8_t keta); void output(void); // pin set_seg, _com; DigitalOut _seg_a, _seg_b, _seg_c, _seg_d, _seg_e, _seg_f, _seg_g, _seg_h; DigitalOut _com_1, _com_2, _com_3, _com_4, _com_5, _com_6, _com_7, _com_8; Ticker timer; #define Z_comSuu (8) // max number of common pin #define Z_segSuu (8) // max number of segment pin #define Z_grayMax (100) // grayData max 100 kaicho #define Z_pwmGrayMax (100) // pwm max (led heno pwm syuturyoku no max) uint8_t* A_dotDigitalData; // D_dotDigitalData[Z_comSuu][Z_segSuu] address pointer //uint8_t D_dotDigitalData[Z_comSuu][Z_segSuu]; // segment dot digital data 0 :ledOff ,1 : ledOn other:disable (1[s] de henka) uint8_t* A_dotGrayData; // D_dotGrayData[Z_comSuu][Z_segSuu] address pointer //uint8_t D_dotGrayData[Z_comSuu][Z_segSuu]; // setment dot gray data 0 - 100 (1/1 [%]/count) other:disable example 0:ledOff, 100:led max lighting uint8_t DT_pwmGray[Z_grayMax + 1]; // gray data kara pwm data heno henkan table uint8_t D_dotPwmData[Z_comSuu][Z_segSuu]; // pwm output data 0 - 100 (1/1 [%]/count) example 0:ledOff, 100:led max lighting uint8_t D_comNull; // comX Null check No set (0:all com is NC 1:com1 connect, 2:com2 connect,...,8:com8 connect(all com connect) uint8_t D_commonOn; // common On level set 0:Anode common 1:Cathode common uint8_t D_commonOff; uint8_t D_segmentOn; // segment On level set 0:Cathode common 1:Anode common uint8_t D_segmentOff; }; #endif // _EIGHTDOTMATRIXLED_H