// Japanino POV by Musashinodenpa #define LEDPIN 7 // どのピンからLEDをつなぐか #define SWPIN 6 // スイッチをつなぐピン // ビットマップ(画像)を定義 byte bitmap[] = { 0b00000000, 0b01000001, 0b01111111, 0b01000001, 0b00000000, 0b00000000, 0b00001110, 0b00011111, 0b00111111, 0b01111110, 0b00111111, 0b00011111, 0b00001110, 0b00000000, 0b00000000, 0b00111111, 0b01000000, 0b01000000, 0b00111111, 0b10000000 // 最後の行は0b10000000(つまり目印) }; unsigned char pos = 0; // 現在のビットマップ中の位置 unsigned char i = 0; void setup() { // LEDが接続されたピンを出力に設定します for(char pin = LEDPIN; pin < LEDPIN + 7; pin++) { pinMode(pin, OUTPUT); } pinMode(SWPIN, INPUT); // スイッチのピンを入力に digitalWrite(SWPIN, HIGH); // 内蔵プルアップ有効 } void loop() { if(digitalRead(SWPIN) == LOW) { // スイッチがオンならば1回描画 delay(6); // すぐ始めると詰まって見えるのでちょっと待つ pos = 0; while(bitmap[++pos] != 0b10000000) { // ビットマップの端まで繰り返し for(i = 0; i < 7; i++) { // ビットマップの高さの分だけ繰り返し // ビットマップデータから1ビットを取り出してピンの状態に反映 digitalWrite(LEDPIN + 6 - i, (bitmap[pos] >> i) & 0b00000001); } delay(1); // LEDが光っている時間 } for(i = LEDPIN; i < LEDPIN + 7; i++) { // 全ドット、消灯 digitalWrite(i, LOW); } } }