GROVE LEDバーのライブラリ
LEDBar.cpp
- Committer:
- jksoft
- Date:
- 2013-11-30
- Revision:
- 0:a2b97475d3af
File content as of revision 0:a2b97475d3af:
#include "mbed.h" #include "LEDBar.h" LED_Bar::LED_Bar(PinName clk_pin, PinName data_pin) :_clk_pin(clk_pin), _data_pin(data_pin) { // _clk=clk; // _dat=dat; //DDR_Data |= BIT_Data; //DDR_Clk |= BIT_Clk; // pinMode(_clk,OUTPUT); //Data pin // pinMode(_dat,OUTPUT); //CLK pin } void LED_Bar::set_LED_Index(unsigned int index) //index: range 0b000000000000~0b001111111111, 1 stands light whlie 0 stands off; { unsigned char i; send16bitData(CmdMode); for (i=0;i<12;i++) { if (index&0x0001) send16bitData(ON); else send16bitData(SHUT); index= index>>1; } latchData(); } void LED_Bar::set_LED_Index(unsigned int index1,unsigned int index2) //index: range 0b000000000000~0b001111111111, 1 stands light whlie 0 stands off; { unsigned char i; for (unsigned char j =0;j<2;j++) { send16bitData(CmdMode); if (j==0) { for (i=0;i<12;i++) { if (index1&0x0001) send16bitData(ON); else send16bitData(SHUT); index1= index1>>1; } } if (j==1) { for (i=0;i<12;i++) { if (index2&0x0001) send16bitData(ON); else send16bitData(SHUT); index2= index2>>1; } } } latchData(); } void LED_Bar::set_LED_Range(unsigned int indexTo) //indexto : range 1~10.for example: 5, the 1~5 would be light { unsigned char i; send16bitData(CmdMode); for(i=0;i<12;i++) { if(i<indexTo) { send16bitData(ON); } else { send16bitData(SHUT); } // indexTo=indexTo>>1; } latchData(); } void LED_Bar::set_LED_Range(unsigned int indexTo1,unsigned int indexTo2) //indexto : range 1~10.for example: 5, the 1~5 would be light { unsigned char i; for (unsigned char j =0;j<2;j++) { send16bitData(CmdMode); if (j==0) { for(i=0;i<12;i++) { if(i<indexTo1) { send16bitData(ON); } else { send16bitData(SHUT); } } } if (j==1) { for(i=0;i<12;i++) { if(i<indexTo2) { send16bitData(ON); } else { send16bitData(SHUT); } } } } latchData(); } void LED_Bar::send16bitData(unsigned int data) { for(unsigned char i=0;i<16;i++) { if(data&0x8000) { _data_pin = 1; //PORT_Data |= BIT_Data; } else { _data_pin = 0; //PORT_Data &=~ BIT_Data; } _clk_pin = !_clk_pin; //PORT_Clk ^= BIT_Clk; data <<= 1; } } void LED_Bar::latchData(void) { _data_pin = 0; //PORT_Data &=~ BIT_Data; wait_us(10); //delayMicroseconds(10); for(unsigned char i=0;i<8;i++) { _data_pin = !_data_pin; //PORT_Data ^= BIT_Data; } }