int row_count = 5; //int col_count = 7; //7ドット int col_count = 5; int analog_count = 6; int row_index = 0; int col_index = 0; int current_data = 0; int data1 = 22; int data2 = 22; int mergin_count = 0; int mergin = 1000; int threashold = 32; //int col_pin[] = {2, 3, 4, 5, 6, 7, 8}; //7ドット int col_pin[] = {3, 4, 5, 6, 7}; int row_pin[] = {9, 10, 11, 12, 13, 17, 8, 2, 0, 1}; int analog_pin[] = {0, 1, 2, 4, 5, 6}; //byte data_mask1[] = {0b1000000,0b0100000,0b0010000,0b0001000,0b0000100,0b0000010,0b0000001}; //7ドット //byte data_mask2[] = {0b0000001,0b0000010,0b0000100,0b0001000,0b0010000,0b0100000,0b1000000}; //7ドット byte data_mask1[] = {0b0100000,0b0010000,0b0001000,0b0000100,0b0000010}; byte data_mask2[] = {0b0000010,0b0000100,0b0001000,0b0010000,0b0100000}; byte pattern[] = {0b0000000, //0 黒 0b0000000, 0b0000000, 0b0000000, 0b0000000, 0b0001000, //1 Λ Λ 0b0010100, 0b0100010, 0b1000001, 0b0000000, 0b0000100, //2 ∋ ∈ 0b0001000, 0b0011110, 0b0001000, 0b0000100, 0b0100010, //3 × × 0b0010100, 0b0001000, 0b0010100, 0b0100010, 0b0000000, //4 - - 0b0000000, 0b1111111, 0b0000000, 0b0000000, 0b0100000, //5 / \ 0b0010000, 0b0001000, 0b0000100, 0b0000010, 0b0010100, //6 ❤ ❤ 0b0111110, 0b0111110, 0b0011100, 0b0001000, 0b1111111, //7 ● ●(中心点) 0b1111111, 0b1111111, 0b1111111, 0b1111111, 0b0011100, //8 ○ ○ 0b0100010, 0b0100010, 0b0100010, 0b0011100, 0b0011100, //9 ● ● 0b0111110, 0b0111110, 0b0111110, 0b0011100, 0b0011100, //10 0 0b0100010, 0b0100010, 0b0100010, 0b0011100, 0b0011000, //11 1 0b0001000, 0b0001000, 0b0001000, 0b0011100, 0b0011100, //12 2 0b0100010, 0b0000100, 0b0001000, 0b0111110, 0b0011100, //13 3 0b0000010, 0b0011100, 0b0000010, 0b0011100, 0b0000100, //14 4 0b0001100, 0b0010100, 0b0111110, 0b0000100, 0b0111100, //15 5 0b0100000, 0b0111100, 0b0000010, 0b0111100, 0b0011100, //16 6 0b0100000, 0b0111100, 0b0100010, 0b0011100, 0b0111110, //17 7 0b0100010, 0b0000100, 0b0001000, 0b0010000, 0b0011100, //18 8 0b0100010, 0b0011100, 0b0100010, 0b0011100, 0b0011100, //19 9 0b0100010, 0b0011110, 0b0000010, 0b0011100, 0b0000000, //20 右目切替え 0b0000000, 0b0000000, 0b0000000, 0b0000000, 0b0000000, //21 左目切替え 0b0000000, 0b0000000, 0b0000000, 0b0000000, 0b0000000, //22 ^ ^ ロビアイドリング(32パターン) 0b0001000, 0b0010100, 0b0100010, 0b0000000, 0b0000000, //23 ・ ・ 0b0001000, 0b0011100, 0b0001000, 0b0000000, 0b0000000, //24 ・・(寄り目) 0b0100000, 0b1110000, 0b0100000, 0b0000000, 0b0000000, //25 ・ ・(離れ目) 0b0000010, 0b0000111, 0b0000010, 0b0000000, 0b0101010, //26 * * 0b0011100, 0b0001000, 0b0011100, 0b0101010, 0b0000000, //27 / \(短い) 0b0010000, 0b0001000, 0b0000100, 0b0000000, 0b0000000, //28 \/(短い) 0b0000100, 0b0001000, 0b0010000, 0b0000000, 0b0000000, //29 涙 0b1110000, 0b0101000, 0b1100100, 0b1100010, 0b0011101, //30 ● ●(ロビマーク) 0b0111110, 0b0111110, 0b0111110, 0b0011100, 0b0000000, //31 未使用 0b0000000, 0b0000000, 0b0000000, 0b0000000, 0b1111111, //32 全点灯 0b1111111, 0b1111111, 0b1111111, 0b1111111, 0b1111111, //33  ̄  ̄ 0b0000000, 0b0000000, 0b0000000, 0b0000000, 0b0000000, //34 _ _ 0b0000000, 0b0000000, 0b0000000, 0b1111111, 0b0000000, //35 △ △ 0b0001000, 0b0010100, 0b0100010, 0b1111111, 0b0000000, //36 ▽ ▽ 0b1111111, 0b0100010, 0b0010100, 0b0001000, 0b0011100, //37 質問 0b0100010, 0b0000010, 0b0001100, 0b0001000, 0b0000110, //38 0b0000010, 0b0000000, 0b0000000, 0b0000000, 0b0000111, //39 0b0000010, 0b0000000, 0b0000000, 0b0000000, 0b0001000, //40 0b0000010, 0b0000000, 0b0000000, 0b0000000, 0b0001001, //41 0b0000010, 0b0000000, 0b0000000, 0b0000000, 0b0001010, //42 0b0000010, 0b0000000, 0b0000000, 0b0000000, 0b0001011, //43 0b0000010, 0b0000000, 0b0000000, 0b0000000, 0b0001100, //44 0b0000010, 0b0000000, 0b0000000, 0b0000000, 0b0001101, //45 0b0000010, 0b0000000, 0b0000000, 0b0000000, 0b0001110, //46 0b0000010, 0b0000000, 0b0000000, 0b0000000, 0b0001111, //47 0b0000010, 0b0000000, 0b0000000, 0b0000000, 0b0000000, //48 0b0000011, 0b0000000, 0b0000000, 0b0000000, 0b0000001, //49 0b0000011, 0b0000000, 0b0000000, 0b0000000, 0b0000010, //50 0b0000011, 0b0000000, 0b0000000, 0b0000000, 0b0000011, //51 0b0000011, 0b0000000, 0b0000000, 0b0000000, 0b0000100, //52 0b0000011, 0b0000000, 0b0000000, 0b0000000, 0b0000101, //53 0b0000011, 0b0000000, 0b0000000, 0b0000000, 0b0000000, //54 ^ ^ ロビアイドリング(64パターン) 0b0001000, 0b0010100, 0b0100010, 0b0000000, 0b0000111, //55 0b0000011, 0b0000000, 0b0000000, 0b0000000, 0b0001000, //56 0b0000011, 0b0000000, 0b0000000, 0b0000000, 0b0001001, //57 0b0000011, 0b0000000, 0b0000000, 0b0000000, 0b0001010, //58 0b0000011, 0b0000000, 0b0000000, 0b0000000, 0b0001011, //59 0b0000011, 0b0000000, 0b0000000, 0b0000000, 0b0011100, //60 0 0 0b0100010, 0b0100010, 0b0100010, 0b0011100, 0b0011100, //61 ? ? 0b0100010, 0b0000010, 0b0001100, 0b0001000, 0b0000000, //62(54) アイドリング補正 0b0001000, 0b0010100, 0b0100010, 0b0000000, 0b1111111, //63 パターン無変更 0b1111111, 0b1111111, 0b1111111, 0b1111111}; void setup() { for (int i = 0; i < col_count; i++) { pinMode(col_pin[i], OUTPUT); } for (int i = 0; i < row_count * 2; i++) { pinMode(row_pin[i], OUTPUT); } } void loop() { if (col_index == 0) { if (mergin_count > mergin) { int data = 0; int val = 1; for (int i = 0; i < analog_count; i++) { if (analogRead(analog_pin[i]) < threashold) data += val; val <<= 1; } if (data == 63) //パターン変更なし { } else if (data == 60) //0 { data1 = 10; data2 = 0; //0抑制 0とする場合は10に変更 } else if (data == 62) //ロビアイドリング補正 { data1 = 14; data2 = 15; } else if ((data == 0) || (data == 54) || (data == 61)) //全消灯、ロビアイドリング、 { data1 = data2 = data; } else { data1 = data % 10 + 10; // vvvvvvvvvvvvvvvvv 0 抑制(抑制しない場合はコメント) if (data < 10) data2 = 0; else // ^^^^^^^^^^^^^^^^^^^^^ data2 = data / 10 + 10; } mergin_count = 0; } mergin_count++; } for (int i = 0; i < col_count; i++) { digitalWrite(col_pin[i], HIGH); } for (int i = 0; i < row_count; i++) { if ((pattern[data1*row_count+i] & data_mask1[col_index])== 0) digitalWrite(row_pin[i], LOW); else digitalWrite(row_pin[i], HIGH); } for (int i = 0; i < row_count; i++) { if ((pattern[data2*row_count+i] & data_mask2[col_index])== 0) digitalWrite(row_pin[i+row_count], LOW); else digitalWrite(row_pin[i+row_count], HIGH); } for (int i = 0; i < col_count; i++) { if (col_index == i) { digitalWrite(col_pin[i], LOW); } } col_index++; if (col_index == col_count) col_index = 0; }