Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <FlexiTimer2.h>
- //縲LED繝槭ヨ繝ェ繧ッ繧ケ縺ョ繝斐Φ蜑イ蠖薙※�啌OW蛛エ縺後き繧ス繝シ繝峨,OLOMN蛛エ縺後い繝弱�繝峨�8x8繝槭ヨ繝ェ繝�け繧ケLED
- int ANODEPIN[] = {
- 10, 11, 12, 14, 15, 16, 17, 18 };
- int CATHODEPIN[] ={
- 2, 3, 4, 5, 6, 7, 8, 9 };
- int testPatternF[8][8] = {
- 0,1,1,1, 1,1,1,0,
- 0,1,1,1, 1,1,1,0,
- 0,1,1,0, 0,0,0,0,
- 0,1,1,0, 0,0,0,0,
- 0,1,1,1, 1,1,0,0,
- 0,1,1,1, 1,1,0,0,
- 0,1,1,0, 0,0,0,0,
- 0,1,1,0, 0,0,0,0};
- int testPatternM[8][8] = {
- 1,1,0,0, 0,0,1,1,
- 1,1,1,0, 0,1,1,1,
- 1,1,1,1, 1,1,1,1,
- 1,1,1,1, 1,1,1,1,
- 1,1,0,1, 1,0,1,1,
- 1,1,0,0, 0,0,1,1,
- 1,1,0,0, 0,0,1,1,
- 1,1,0,0, 0,0,1,1,};
- int testPatternS[8][8] = {
- 0,1,1,1, 1,1,1,0,
- 1,1,1,1, 1,1,1,1,
- 0,1,1,0, 0,0,1,1,
- 0,0,1,1, 1,0,0,0,
- 0,0,0,1, 1,1,0,0,
- 1,1,0,0, 0,1,1,0,
- 1,1,1,1, 1,1,1,1,
- 0,1,1,1, 1,1,1,0};
- int matrix[8][8]; // LED繝槭ヨ繝ェ繧ッ繧ケ縺ョ蜷�せ縺ョ迥カ諷九r菫晄戟縺吶k驟榊��1:ON縲0:OFF�
- int displayRow; // 迴セ蝨ィ陦ィ遉コ荳ュ縺ョrow
- int pat = 0; // 繝。繧、繝ウ繝励Ο繧ー繝ゥ繝縺ァ謖�ョ壹☆繧九ヱ繧ソ繝シ繝ウ逡ェ蜿キ
- void setup() {
- initMatrix();
- }
- void loop() {
- if(pat == 0) {
- setPattern(testPatternF);
- }
- else if(pat == 1) {
- setPattern(testPatternM);
- }
- else {
- setPattern(testPatternS);
- }
- pat++;
- pat = pat%3;
- delay(1000);
- }
- //---------------------------------------------------------
- // LED繝槭ヨ繝ェ繧ッ繧ケ繧貞宛蠕。縺吶k髢「謨ー
- //---------------------------------------------------------
- //
- // LED繝槭ヨ繝ェ繧ッ繧ケ繧貞�譛溷喧縺吶k
- // (1) Arduino 縺ョ蜃コ蜉帙ヴ繝ウ縺ョ蛻晄悄蛹
- // (2) 蜷ЛED縺ョ迥カ諷九r菫晄戟縺吶k驟榊�縺ョ蛻晄悄蛹
- // (3) LED繧定。ィ遉コ縺吶k繧ソ繧、繝槫牡霎シ縺ソ縺ョ險ュ螳
- //
- void initMatrix() {
- //縲蜃コ蜉帙r蛻晄悄蛹悶√い繝弱�繝羽IGH縲√き繧ス繝シ繝鵜OW縺ァ轤ケ轣ッ縲√◎縺ョ騾�↓險ュ螳壹☆繧
- // 繧「繝弱�繝峨r縲´OW縺ァ蛻晄悄蛹(coulmn譁ケ蜷托シ
- for( int ano = 0; ano < 8; ano++ )
- {
- pinMode( ANODEPIN[ano], OUTPUT );
- digitalWrite( ANODEPIN[ano], LOW );
- }
- // 繧ォ繧ス繝シ繝峨r縲?IGH縺ァ蛻晄悄蛹厄シ�ow縺ォ蟇セ蠢懶シ
- for( int cat = 0; cat < 8; cat++ )
- {
- pinMode( CATHODEPIN[cat], OUTPUT );
- digitalWrite( CATHODEPIN[cat], HIGH );
- }
- clearMatrix(); // 迥カ諷九r菫晄戟縺吶k驟榊�繧丹FF縺ァ蛻晄悄蛹
- startMatrix(); // LED繝槭ヨ繝ェ繧ッ繧ケ縺ョ陦ィ遉コ繧帝幕蟋具シ郁。ィ遉コ陦後r0縺ォ險ュ螳壹@縺ヲ縲√ち繧、繝槫牡霎シ縺ソ繧帝幕蟋具シ
- }
- //
- // LED繝槭ヨ繝ェ繧ッ繧ケ縺ョ陦ィ遉コ繧呈峩譁ー�郁。ィ遉コ陦 �
- // displayRow 縺ァ遉コ縺輔l繧1陦悟�繧定。ィ遉コ
- // startMatrix()縺悟他縺ー繧後◆蠕後√ち繧、繝槫牡霎シ縺ソ縺ォ繧医j1ms豈弱↓蜻シ縺ー繧後k
- // 縺、縺セ繧翫8ms縺ァ蜈ィ縺ヲ縺ョ陦後r陦ィ遉コ縺吶k
- //
- void updateMatrix() {
- if(displayRow >= 0) {
- digitalWrite( CATHODEPIN[displayRow], HIGH ); // �代▽蜑阪�ROW繧辿IGH縺ォ螟画峩(豸医☆�
- }
- displayRow++;
- displayRow = displayRow%8;
- //縲繧ウ繝ゥ繝譁ケ蜷托シ医い繝弱�繝画婿蜷托シ峨�蜃コ蜉帙r鬆�↓繧サ繝�ヨ
- for(int column = 0; column<8; column++) {
- if(matrix[displayRow][column] == 1) {
- digitalWrite( ANODEPIN[column], HIGH ); // HIGH縺ォ螟画峩
- }
- else {
- digitalWrite( ANODEPIN[column], LOW ); // LOW縺ォ謌サ縺
- }
- }
- // LOW縺ォ謌サ縺呻シ育せ轣ッ�帶ャ。縺ョ繧ソ繧、繝槭�蜑イ霎シ縺ソ縺セ縺ァ縲√◎縺ョ迥カ諷九〒陦ィ遉コ�
- digitalWrite( CATHODEPIN[displayRow], LOW );
- }
- //
- // LED繝槭ヨ繝ェ繧ッ繧ケ縺ョ陦ィ遉コ繧帝幕蟋具シ郁。ィ遉コ陦慧isplayRow繧0縺ォ險ュ螳壹@縺ヲ縲√ち繧、繝槫牡霎シ縺ソ繧帝幕蟋具シ
- //
- void startMatrix(){
- displayRow = -1;
- FlexiTimer2::set(1, updateMatrix);// 1ms豈弱↓蜑イ霎シ縺ソ繧堤匱逕溘&縺 updateMatrix 繧貞他縺ウ蜃コ縺
- FlexiTimer2::start();
- }
- //
- // LED繝槭ヨ繝ェ繧ッ繧ケ縺ョ迥カ諷九r菫晄戟縺吶k驟榊�繧貞、画峩縺吶k
- // void clearMatrix(): 蜈ィ縺ヲ0縺ォ險ュ螳
- // void setPoint(int x, int y): (x,y)繧1(ON)縺ォ險ュ螳
- // void resetPoint(int x, int y): (x,y)繧0��FF)縺ォ險ュ螳
- // void setPattern(int _pattern[8][8]): _pattern縺ォ險ュ螳壹&繧後◆繝代ち繝シ繝ウ繧定ィュ螳
- void clearMatrix() {
- for(int row = 0; row<8; row++) {
- for(int column = 0; column<8; column++) {
- matrix[row][column] = 0;
- }
- }
- }
- void setPoint(int _row, int _column) {
- matrix[_row][_column] = 1;
- }
- void resetPoint(int _row, int _column) {
- matrix[_row][_column] = 0;
- }
- void setPattern(int _pattern[8][8]) {
- for(int row = 0; row<8; row++) {
- for(int column = 0; column<8; column++) {
- matrix[row][column] = _pattern[row][column];
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement