Arduinoで作ろう(32) 7セグLEDでデジタル時計
aitendoで買ったシールドで,このラーニングキットK-CS1ってのを忘れてました。
4桁7セグ表示器+74HC595ディスプレイ回路,温度センサインターフェース,クロックモジュールインターフェース,電圧メーター回路,タクトスイッチx2回路,超音波センサインターフェース,ブザー回路がついていて,学習用に便利なものです。
今回はこれでデジタル時計を作ってみます。RTCはDS3231で,ライブラリはこれを使いました。
Fritzingで描いた回路図はこうなります。
シフトレジスタ74HC595があるので比較的ラクですが,スマートなコードはなかなかうまく書けませんなあ。もう少し勉強が必要ですね。
スケッチはこれ→20190907_7segled_clock.ino
// aitendoシールド K-CS1 + RTC DS3231 + 7セグLED デジタル時計
#include <Wire.h>
#include <RtcDS3231.h>
RtcDS3231<TwoWire>
Rtc(Wire);
const byte segment[] = {4,5,6,7}; //各桁カソードピン
const int clock = 10; //74HC595 → Pin 10
const int latch = 9; //74HC595 → Pin 9
const int data = 8; //74HC595 → Pin 8
const byte digit[] = //7セグLED 点灯パターン
{
B00111111, //0
B00000110, //1
B01011011, //2
B01001111, //3
B01100110, //4
B01101101, //5
B01111101, //6
B00000111, //7
B01111111, //8
B01101111 //9
};void setup ()
{
for (int i = 0; i < 4; i++) {
pinMode(segment[i], OUTPUT);
}
pinMode(latch, OUTPUT);
pinMode(clock, OUTPUT);
pinMode(data, OUTPUT);
Rtc.Begin() ;
// DS3231の日時を「それなりの値」に設定する場合に、以下の2行をコメントアウト
// RtcDateTime compiled = RtcDateTime(__DATE__, __TIME__) ;
// Rtc.SetDateTime(compiled) ;
}void loop () {
RtcDateTime dt = Rtc.GetDateTime() ;
Disp(3,dt.Hour()/10%10);
Disp(2,dt.Hour()%10);
Disp(1,dt.Minute()/10%10);
Disp(0,dt.Minute()%10);
}void Disp(byte keta,byte value){
for (byte j = 0; j < 4; j++) {
digitalWrite(segment[j], HIGH); // 全桁LEDをOFF
}
digitalWrite(segment[keta], LOW);
digitalWrite(latch, LOW);
shiftOut(data, clock, MSBFIRST,digit[value]);
if (keta == 2) {
shiftOut(data, clock, MSBFIRST, digit[value]|B10000000); //hhとmmの間に小数点をつける
}
digitalWrite(latch, HIGH);
delay(4);
}
| 固定リンク | 1
「Arduino」カテゴリの記事
- ATtiny402 + LM35DZ で温度計(2024.09.21)
- aitendo「ESP-32でいいの」っぽい謎ボードでLチカ(2024.04.17)
- ATtiny202 で Hello World!(2024.03.25)
- CH32V003+I2C接続のLCDでHello World !(2023.12.29)
- CH32V003F4P6 開発ボードでLチカ(2023.12.20)
「aitendo」カテゴリの記事
- 今年も aitendo 2025お楽しみ福BOX を買いました(2024.12.29)
- aitendo「ESP-32でいいの」っぽい謎ボードでLチカ(2024.04.17)
- 今年も aitendo 2024お楽しみ福BOX を買いました(2023.12.31)
- aitendo 2023お楽しみ福袋(2023.01.02)
- aitendo 2022 お楽しみ福袋(2022.01.06)
コメント