Arduino IDE のスケッチで、こちらの記事がお手本です
//
// 2桁の7セグメントLEDでカウントアップするスケッチ
//
int _cnt = 0; //
int _number = 0; //
boolean _flg = false;
void setup(){
Serial.begin(9600);
for (int i=2; i<=8; i++){ //2~8番ピン デジタル出力へセット
pinMode(i,OUTPUT);
}
pinMode(13,OUTPUT); // カソードコモンピン
pinMode(11,OUTPUT); // カソードコモンピン
}
boolean Num_Array[10][7]={ //LEDレイアウトを定義
{1,1,1,1,0,1,1}, //0
{0,0,1,1,0,0,0}, //1
{1,1,0,1,1,0,1}, //2
{0,1,1,1,1,0,1}, //3
{0,0,1,1,1,1,0}, //4
{0,1,1,0,1,1,1}, //5
{1,1,1,0,1,1,1}, //6
{0,0,1,1,0,1,1}, //7
{1,1,1,1,1,1,1}, //8
{0,1,1,1,1,1,1} //9
};
void NumPrint(int Number){ //LED表示関数を定義
for (int w=0; w<=7; w++){
digitalWrite(w+2,-Num_Array[Number][w]);
}
}
int NumParse(int Number,int s){ //2桁をそれぞれの桁で分解する関数
if(s == 1){
return Number % 10; //10で割ったあまり = 一桁目の値
}
else if(s == 2){
return Number / 10; //10で割った値を整数にする = 二桁目の値
}
return 0;
}
void loop(){
if(_number >= 100){
_number = 0;
}
//flg変数をtrue / falseを切り替えることで11番13番ピンの出力を交互に切り替える
if(_flg){
digitalWrite(11,LOW);
digitalWrite(13,HIGH);
_flg = false;
NumPrint(NumParse(_number,1)); //1桁目の表示
}
else{
digitalWrite(11,HIGH);
digitalWrite(13,LOW);
_flg = true;
NumPrint(NumParse(_number,2)); //2桁目の表示
}
//100まで行ったら表示する数値(_number)を1つ足す(実質delayの10×100で1秒に1カウント)
if(_cnt >= 100){
_number++;
_cnt = 0;
Serial.print("NUMBER:");
Serial.println(_number);
}
_cnt++;
delay(10);
} |