0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

RP2040マイコンでドットマトリックスを制御しようボードのサンプルプログラム③

Posted at
  • 商品概要

RP2040マイコンを使って、8x8LED ドットマトリックスを制御して楽しもうというコンセプトです。
RTCも簡単につながるので、時間表示なども楽しんで知的好奇心を満たせれば嬉しいです。

image.png

  • サンプルサンプルプログラム内容

作成したデータをスクロールして楽しむプログラムです。

  • プログラム環境

ArduinoIDE バージョン:2.3.2
RTCライブラリ version to 2.1.4

  • ハードウェアの主な仕様

 ①マイコン:PR2040-ZERO(RaspberryPiPico系)
 ②I2C接続ピン 
  SDA:GPIO8(GPIO4)
  SDL:GPI09(GPIO5)
 ③RTC DS1307RTCモジュール
 ④Lチカ用LED :GPIO10
 ⑤マトリクスLEDドライバ HT16K33-28Wまたは互換
 ⑥プッシュスイッチ1:GPI011
  プッシュスイッチ2:GPI012

  • サンプルプログラム

ちょっと無駄が多そうなプログラムなので、もう少しうまく整理して処理すれば
簡素化できると思います。
動き始めたら、そこから改造で効率よくプログラミングを楽しんでください。
動かないと絶望で進まなくなりますものね。

//  8x8 dot matrix board program

//  8x8 dot matrix board program

//########## I2C Serial communication settings ############
#include <Wire.h>

//データ格納ファイル設定
#include "led_data.h"

//########## LED 8x8 Matrix Control IC ############
#define Addrs1 (0x70)  //LED制御IC HT16K33 アドレス
#define Addrs2 (0x71)  //LED制御IC HT16K33 アドレス
#define Addrs3 (0x73)  //LED制御IC HT16K33 アドレス

//########## RTC (Real Time Clock) module ##########
#define MEM (0x50)  //EEPROM AT24C02 アドレス データを保管するIC
#define RTC (0x68)  //DS3231 アドレス 時間を制御するIC

// ####### 左回りに90°回転したデータを入れる ######
byte led_d1_rotate[8];
byte led_d2_rotate[8];
byte led_d3_rotate[8];
byte led_d4_rotate[8];
byte led_d5_rotate[8];
byte led_d6_rotate[8];
byte led_d7_rotate[8];
byte led_d8_rotate[8];
byte led_d9_rotate[8];
byte led_d0_rotate[8];
byte led_da_rotate[8];
byte led_dq_rotate[8];

// ####### シフトしたデータを合算したデータ ######
byte DA1P[8];
byte DA2P[8];
byte DA3P[8];
byte DA4P[8];
byte DA5P[8];
byte DA6P[8];
byte DA7P[8];
byte DA8P[8];
byte DA9P[8];
byte DA10P[8];
byte DA11P[8];
byte DA12P[8];

// ####### シフトしたデータを合算したデータ ######
byte dat1p[8];
byte dat2p[8];
byte dat3p[8];
byte dat4p[8];
byte dat5p[8];
byte dat6p[8];
byte dat7p[8];
byte dat8p[8];

// ####### シフト合算して回転させたデータ ######
byte DA1SR[8];
byte DA2SR[8];
byte DA3SR[8];
byte DA4SR[8];
byte DA5SR[8];
byte DA6SR[8];
byte DA7SR[8];
byte DA8SR[8];

// ####### シフトして回転したデータ ######
byte dat1pSR[8];
byte dat2pSR[8];
byte dat3pSR[8];
byte dat4pSR[8];
byte dat5pSR[8];
byte dat6pSR[8];
byte dat7pSR[8];
byte dat8pSR[8];

//**********************HT16K33 Initial setting*******************
void LED_Driver_Setup(byte LD_addrs, byte on_off)
{
  Wire.beginTransmission(LD_addrs);  //
  Wire.write(0x20 | on_off);  //システムオシレータをONにする
  Wire.endTransmission();
}
//**********************LEDドライバ HT16K33 点滅周期設定*******************
void LED_Driver_Blink(byte LD_addrs, byte on_off, byte blink_Hz)
{
  //blink_Hz=0 点滅off, 1は2Hz, 2は1Hz, 3は0.5Hz, on_off=0は消灯、1は点灯 
  Wire.beginTransmission(LD_addrs);
  Wire.write(0x80 | (blink_Hz<<1) | on_off); 
  Wire.endTransmission();
}
//**********************LEDドライバ HT16K33 明るさ設定*********************
void LED_Driver_Brightness(byte LD_addrs, byte brightness)
{
  Wire.beginTransmission(LD_addrs);
  Wire.write(0xE0 | brightness); // brightness= 0~15
  Wire.endTransmission();
}
//********************** HT16K33 画面初期化*********************
void LED_Driver_DisplayInt(byte LD_addrs)
{
  Wire.beginTransmission(LD_addrs);
  Wire.write(0x00);
  for(int i=0;i<8;i++){  
        Wire.write(0x00);                   //1つ目の8x8LED初期化
        Wire.write(0x00);                   //2つ目の8x8LED初期化
  }
  Wire.endTransmission();
}

//**********************Data send*******************

void  data_send(byte addrs, byte* led_hi, byte* led_lo)
{

int i;
       Wire.beginTransmission(addrs);
        Wire.write(0x00); // 
  for ( i=0; i<8; i++){
        Wire.write(led_hi[i]); // 1
        Wire.write(led_lo[i]); // 2
  }
        Wire.endTransmission();
  
}

//**********************Rotate the Data ******************************
// data_raw は、作成した生のデータを代入する
// data_procは、左回転したデータを格納する
// 例 rotate_cnv(AA, BB) とプログラムを書くと、AAのデータを読み取って、
// 左回転したデータをBBに書き込む処理です。
// ちなみにrawは、英語で「生の」から命名
// procは、processから取った英語で「処理」から命名
void rotate_cnv(byte* data_raw, byte* data_proc)
{
  for(byte i=0; i<8; i++){
    for(byte j=0; j<8; j++){
     bitWrite(data_proc[7-j],i,bitRead(data_raw[i],j));
    }
  }
}


//**********************Shift Data ******************************
//disp_shift 8x8で分割されている表示データを左にずらして8x8のデータに合算している
//データを合算しているのでplusという意味で末尾にpを命名

void disp_shift(byte* dat1, byte* dat2, byte* dat3, byte* dat4, byte* dat5, byte* dat6, byte* dat7, byte* dat8){

int i,j;

for(byte j=0; j<8; j++){
    for(byte i=0; i<8; i++){
      dat1p[i] = (dat1[i] >> j) + (dat3[i] << 8-j);
      dat2p[i] = (dat2[i] >> j) + (dat4[i] << 8-j);
      dat3p[i] = (dat3[i] >> j) + (dat5[i] << 8-j);
      dat4p[i] = (dat4[i] >> j) + (dat6[i] << 8-j);
      dat5p[i] = (dat5[i] >> j) + (dat7[i] << 8-j);
      dat6p[i] = (dat6[i] >> j) + (dat8[i] << 8-j);
    }

  rotate_cnv(dat1p, dat1pSR);  //Shift + Rotate
  rotate_cnv(dat2p, dat2pSR);  //Shift + Rotate
  rotate_cnv(dat3p, dat3pSR);  //Shift + Rotate
  rotate_cnv(dat4p, dat4pSR);  //Shift + Rotate
  rotate_cnv(dat5p, dat5pSR);  //Shift + Rotate
  rotate_cnv(dat6p, dat6pSR);  //Shift + Rotate
  rotate_cnv(dat7p, dat7pSR);  //Shift + Rotate
  rotate_cnv(dat8p, dat8pSR);  //Shift + Rotate

//########## data send command ##########
//########## chip_addres, ch1 data, ch2 data ##########

data_send(Addrs1, dat1pSR, dat2pSR);
data_send(Addrs2, dat3pSR, dat4pSR);
data_send(Addrs3, dat5pSR, dat6pSR);

    delay (90);

}
}

//###############  セットアップ  ####################
void setup() 
{
  Wire.begin(); // initialise the connection
  Wire.setClock(400000L); //I2Cクロック を400kHzにする
  LED_Driver_Setup( Addrs1, 1); //HT16K33システムオシレータ ON
  LED_Driver_Blink( Addrs1, 1, 0); //blink_Hz=0 点滅off, 1は2Hz, 2は1Hz, 3は0.5Hz, on_off=0は消灯、1は点灯
  LED_Driver_Brightness( Addrs1, 2 ); // brightness= 0~15
  LED_Driver_DisplayInt( Addrs1 ); //Display Black OUT

  LED_Driver_Setup( Addrs2, 1); //HT16K33システムオシレータ ON
  LED_Driver_Blink( Addrs2, 1, 0); //blink_Hz=0 点滅off, 1は2Hz, 2は1Hz, 3は0.5Hz, on_off=0は消灯、1は点灯
  LED_Driver_Brightness( Addrs2, 2 ); // brightness= 0~15
  LED_Driver_DisplayInt( Addrs2 ); //Display Black OUT

  LED_Driver_Setup( Addrs3, 1); //HT16K33システムオシレータ ON
  LED_Driver_Blink( Addrs3, 1, 0); //blink_Hz=0 点滅off, 1は2Hz, 2は1Hz, 3は0.5Hz, on_off=0は消灯、1は点灯
  LED_Driver_Brightness( Addrs3, 2 ); // brightness= 0~15
  LED_Driver_DisplayInt( Addrs3 ); //Display Black OUT

// RP2040-ZERO の動作チェック用LED制御用
  pinMode(10, OUTPUT);
  digitalWrite(10,HIGH);
  delay (200);

}

//######################################################
//####################  メインループ  ####################
//######################################################

void loop() {

//----------  変数の宣言 Intはinteger 整数  ----------
int i,j;


//----------  データを左にシフトして表示させる  ----------
//----------  DA0はからデータでスタート時は全消灯から始まる  ----------
disp_shift(PAC0, PAC0, PAC0, PAC0, PAC0, PAC0, PAC1, PAC2  );
  digitalWrite(16,HIGH);
disp_shift(PAC0, PAC0, PAC0, PAC0, PAC1, PAC2, PAC3, PAC4  );
  digitalWrite(16,LOW);
disp_shift(PAC0, PAC0, PAC1, PAC2, PAC3, PAC4, PAC5, PAC6  );
  digitalWrite(16,HIGH);
disp_shift(PAC1, PAC2, PAC3, PAC4, PAC5, PAC6, PAC7, PAC8 );
  digitalWrite(16,LOW);
disp_shift(PAC3, PAC4, PAC5, PAC6, PAC7, PAC8, PAC9, PAC10 );
  digitalWrite(16,HIGH);
disp_shift(PAC5, PAC6, PAC7, PAC8, PAC9, PAC10, PAC11, PAC12 );
  digitalWrite(16,LOW);

disp_shift(PAC7, PAC8, PAC9, PAC10, PAC11, PAC12, MON1, MON2 );
  digitalWrite(16,HIGH);
disp_shift(PAC9, PAC10, PAC11, PAC12, MON1, MON2, MON3, MON4 );
  digitalWrite(16,LOW);
disp_shift(PAC11, PAC12, MON1, MON2, MON3, MON4, MON5, MON6 );
  digitalWrite(16,HIGH);
disp_shift(MON1, MON2, MON3, MON4, MON5, MON6, MON7, MON8 );
  digitalWrite(16,LOW);
disp_shift(MON3, MON4, MON5, MON6, MON7, MON8, MON1, MON2 );
  digitalWrite(16,HIGH);
disp_shift(MON5, MON6, MON7, MON8, MON1, MON2, MON3, MON4 );
  digitalWrite(16,LOW);
disp_shift(MON7, MON8, MON1, MON2, MON3, MON4, MON5, MON6 );
  digitalWrite(16,HIGH);

    delay (100);

}
  • 動作イメージ

メインループで「disp_shift」関数を使って8個のデータを処理します。
8個のデータのイメージは下記になります。
赤枠がドットマトリクスの8x8LEDになります。

image.png

1ドット左にシフトするので、不足分を7、8から補うようにするため8個のデータを処理させています。
8ドットシフトしたら続きを設定します。

「disp_shift」関数は、作成したデータを
①回転させる(向きを合わせています。)
②8回シフトする
処理をしています。

「rotate_cnv」関数は、データを回転させて向きを調整しています。

void rotate_cnv(byte* data_raw, byte* data_proc)
{
  for(byte i=0; i<8; i++){
    for(byte j=0; j<8; j++){
     bitWrite(data_proc[7-j],i,bitRead(data_raw[i],j));
    }
  }
}

データシフトは、これで処理しています。

int i,j;

for(byte j=0; j<8; j++){
    for(byte i=0; i<8; i++){
      dat1p[i] = (dat1[i] >> j) + (dat3[i] << 8-j);
      dat2p[i] = (dat2[i] >> j) + (dat4[i] << 8-j);
      dat3p[i] = (dat3[i] >> j) + (dat5[i] << 8-j);
      dat4p[i] = (dat4[i] >> j) + (dat6[i] << 8-j);
      dat5p[i] = (dat5[i] >> j) + (dat7[i] << 8-j);
      dat6p[i] = (dat6[i] >> j) + (dat8[i] << 8-j);
    }

処理したデータをLEDドライバに送信する関数はこちらです。
データを回転させて、シフトしたデータがdat1pSR、dat2pSRですね。

//########## data send command ##########
//########## chip_addres, ch1 data, ch2 data ##########

data_send(Addrs1, dat1pSR, dat2pSR);
data_send(Addrs2, dat3pSR, dat4pSR);
data_send(Addrs3, dat5pSR, dat6pSR);

image.png

  • データ led_data.h

データはプログラムから分けています。
データを分けておけば流用も可能ですし、メインプログラムがすっきりすると思うのでお勧めです。


// led_data.h
#ifndef LED_DATA_H
#define LED_DATA_H

// 自作数字のデータ
// 数字1を表すデータ
byte led_d1[8] = { 0x60, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40 };
// 数字2を表すデータ
byte led_d2[8] = { 0x7E, 0x40, 0x40, 0x7E, 0x02, 0x02, 0x02, 0x7E };
// 数字3を表すデータ
byte led_d3[8] = { 0x7E, 0x40, 0x40, 0x7E, 0x40, 0x40, 0x40, 0x7E };
// 数字4を表すデータ
byte led_d4[8] = { 0x42, 0x42, 0x42, 0x42, 0x7E, 0x40, 0x40, 0x40 };
// 数字5を表すデータ
byte led_d5[8] = { 0x7E, 0x02, 0x02, 0x7E, 0x40, 0x40, 0x40, 0x7E };
// 数字6を表すデータ
byte led_d6[8] = { 0x7E, 0x02, 0x02, 0x7E, 0x42, 0x42, 0x42, 0x7E };
// 数字7を表すデータ
byte led_d7[8] = { 0x7E, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40 };
// 数字8を表すデータ
byte led_d8[8] = { 0x7E, 0x42, 0x42, 0x7E, 0x42, 0x42, 0x42, 0x7E };
// 数字9を表すデータ
byte led_d9[8] = { 0x7E, 0x42, 0x42, 0x7E, 0x40, 0x40, 0x40, 0x7E };
// 数字0を表すデータ
byte led_d0[8] = { 0x7E, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x7E };
// 特殊文字Aを表すデータ
byte led_da[8] = { 0x20, 0xF0, 0x27, 0xFD, 0x47, 0xFD, 0x57, 0x60 };
// 特殊文字Qを表すデータ
byte led_dq[8] = { 0x18, 0x24, 0x42, 0xBD, 0x48, 0x48, 0x44, 0x24 };

// ####### 電脳好奇心のデータ ######

byte DA0[8] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
//電
byte DA1[8] = { 0xFE, 0x80, 0xFE, 0x82, 0xBA, 0x82, 0xBA, 0x00 };
byte DA2[8] = { 0xFC, 0x84, 0xFC, 0x84, 0xFC, 0x80, 0x80, 0x80 };
byte DA3[8] = { 0x3F, 0x00, 0x3F, 0x20, 0x2E, 0x20, 0x2E, 0x00 };
byte DA4[8] = { 0x1F, 0x10, 0x1F, 0x10, 0x1F, 0x00, 0x20, 0x1F };
//脳
byte DA5[8] = { 0x00, 0x9E, 0x92, 0x12, 0x12, 0x1E, 0x52, 0x52 };
byte DA6[8] = { 0x52, 0x5E, 0x52, 0x52, 0x52, 0x51, 0xD1, 0x4D };
byte DA7[8] = { 0x02, 0x44, 0x44, 0x25, 0x21, 0x10, 0x80, 0x91 };
byte DA8[8] = { 0x92, 0x8C, 0x8C, 0x92, 0xA1, 0x80, 0xFF, 0x80 };
//好
byte DA9[8] = { 0x04, 0x04, 0x44, 0xFF, 0x44, 0x44, 0x42, 0xA2 };
byte DA10[8] = { 0x22, 0x14, 0x08, 0x14, 0x22, 0x21, 0x00, 0x00 };
byte DA11[8] = { 0x00, 0x7F, 0x40, 0x20, 0x20, 0x10, 0x10, 0x7F };
byte DA12[8] = { 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x12, 0x0C };
//奇
byte DA13[8] = { 0x80, 0x80, 0xFC, 0x40, 0x20, 0x18, 0xFE, 0x00 };
byte DA14[8] = { 0xF8, 0x88, 0x88, 0xF8, 0x08, 0x00, 0x00, 0x00 };
byte DA15[8] = { 0x00, 0x00, 0x3F, 0x01, 0x02, 0x0C, 0x7F, 0x10 };
byte DA16[8] = { 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x0F };
//心
byte DA17[8] = { 0x00, 0x80, 0x00, 0x00, 0x10, 0x10, 0x12, 0x12 };
byte DA18[8] = { 0x11, 0x11, 0x11, 0x10, 0x10, 0x10, 0x10, 0xE0 };
byte DA19[8] = { 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00 };
byte DA20[8] = { 0x20, 0x20, 0x40, 0x40, 0x00, 0x10, 0x10, 0x0F };
//電
byte DA21[8] = { 0xFE, 0x80, 0xFE, 0x82, 0xBA, 0x82, 0xBA, 0x00 };
byte DA22[8] = { 0xFC, 0x84, 0xFC, 0x84, 0xFC, 0x80, 0x80, 0x80 };
byte DA23[8] = { 0x3F, 0x00, 0x3F, 0x20, 0x2E, 0x20, 0x2E, 0x00 };
byte DA24[8] = { 0x1F, 0x10, 0x1F, 0x10, 0x1F, 0x00, 0x20, 0x1F };
//子
byte DA25[8] = { 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00 };
byte DA26[8] = { 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x80 };
byte DA27[8] = { 0x00, 0x00, 0x1F, 0x08, 0x04, 0x03, 0x01, 0x01 };
byte DA28[8] = { 0x7F, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 };
//工
byte DA29[8] = { 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00 };
byte DA30[8] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE };
byte DA31[8] = { 0x00, 0x00, 0x00, 0x3F, 0x01, 0x01, 0x01, 0x01 };
byte DA32[8] = { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xFF };
//作
byte DA33[8] = { 0x10, 0x90, 0x48, 0xE4, 0x2C, 0x2A, 0x1A, 0x09 };
byte DA34[8] = { 0x09, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08 };
byte DA35[8] = { 0x01, 0x00, 0x00, 0x7F, 0x02, 0x02, 0x02, 0x3E };
byte DA36[8] = { 0x02, 0x02, 0x02, 0x3E, 0x02, 0x02, 0x02, 0x02 };
//工
byte DA37[8] = { 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00 };
byte DA38[8] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE };
byte DA39[8] = { 0x00, 0x00, 0x00, 0x3F, 0x01, 0x01, 0x01, 0x01 };
byte DA40[8] = { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xFF };
//房      
byte DA41[8] = { 0xF8, 0x00, 0xF8, 0x08, 0xF8, 0x28, 0x48, 0xF8 };
byte DA42[8] = { 0x04, 0x84, 0x84, 0x42, 0x42, 0x22, 0x32, 0x00 };
byte DA43[8] = { 0x3F, 0x00, 0x3F, 0x20, 0x3F, 0x00, 0x00, 0x7F };
byte DA44[8] = { 0x01, 0x1E, 0x20, 0x20, 0x20, 0x20, 0x28, 0x10 };
//インベーダー1
byte DA45[8] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
byte DA46[8] = { 0x10, 0x24, 0xF4, 0xDC, 0xFC, 0xF8, 0x10, 0x08 };
byte DA47[8] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
byte DA48[8] = { 0x08, 0x24, 0x2F, 0x3B, 0x3F, 0x0F, 0x08, 0x10 };
//インベーダー2
byte DA49[8] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
byte DA50[8] = { 0xC0, 0xF8, 0xFC, 0x9C, 0xFC, 0x60, 0xB0, 0x0C };
byte DA51[8] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
byte DA52[8] = { 0x03, 0x1F, 0x3F, 0x39, 0x3F, 0x06, 0x0D, 0x30 };

// ####### PACMAN character data ######
byte PAC1[8] = { 0x00, 0x00, 0xC0, 0xF0, 0xF8, 0xF8, 0xFC, 0xFC };
byte PAC2[8] = { 0xFC, 0xFC, 0xFC, 0xF8, 0xF8, 0xF0, 0xC0, 0x00 };
byte PAC3[8] = { 0x00, 0x00, 0x03, 0x0F, 0x1F, 0x1F, 0x3F, 0x3F };
byte PAC4[8] = { 0x3F, 0x3F, 0x3F, 0x1F, 0x1F, 0x0F, 0x03, 0x00 };
byte PAC5[8] = { 0x00, 0x00, 0xC0, 0xF0, 0xF8, 0xF8, 0xE0, 0x00 };
byte PAC6[8] = { 0x00, 0x00, 0xE0, 0xF8, 0xF8, 0xF0, 0xC0, 0x00 };
byte PAC7[8] = { 0x00, 0x00, 0x03, 0x0F, 0x1F, 0x1F, 0x3F, 0x3F };
byte PAC8[8] = { 0x3C, 0x3F, 0x3F, 0x1F, 0x1F, 0x0F, 0x03, 0x00 };
byte PAC9[8] = { 0x00, 0x00, 0xC0, 0xE0, 0xC0, 0x80, 0x00, 0x00 };
byte PAC10[8] = { 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xC0, 0x00 };
byte PAC11[8] = { 0x00, 0x00, 0x03, 0x0F, 0x1F, 0x1F, 0x3F, 0x3E };
byte PAC12[8] = { 0x3C, 0x3E, 0x3F, 0x1F, 0x1F, 0x0F, 0x03, 0x00 };

//##### Monster character data #####
byte MON1[8] = { 0x00, 0xC0, 0xF0, 0xF8, 0xE4, 0xC0, 0xCC, 0xCE };
byte MON2[8] = { 0xE6, 0xFE, 0xFE, 0xFE, 0xFE, 0x76, 0x62, 0x00 };
byte MON3[8] = { 0x00, 0x03, 0x0F, 0x1F, 0x39, 0x30, 0x33, 0x73 };
byte MON4[8] = { 0x79, 0x7F, 0x7F, 0x7F, 0x7F, 0x6E, 0x46, 0x00 };
byte MON5[8] = { 0x00, 0xC0, 0xF0, 0xF8, 0xE4, 0xC0, 0xCC, 0xCE };
byte MON6[8] = { 0xE6, 0xFE, 0xFE, 0xFE, 0xFE, 0xDE, 0x8C, 0x00 };
byte MON7[8] = { 0x00, 0x03, 0x0F, 0x1F, 0x39, 0x30, 0x33, 0x73 };
byte MON8[8] = { 0x79, 0x7F, 0x7F, 0x7F, 0x7F, 0x7B, 0x31, 0x00 };

#endif // LED_DATA_H

ヘッダファイルは、スケッチと同じ個所に置くと読み込んでくれます。

image.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?