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」カテゴリの記事
- 大型7セグLEDを4個使った表示装置(2022.01.23)
- Arduinoで作ろう(61) Digisparkで7セグLED温度計(2022.01.16)
- Arduinoで作ろう(60) Digisparkでデジタル時計(2022.01.10)
- Arduinoで作ろう(59) DigisparkのP5を使えるようにした(2022.01.08)
- Arduinoで作ろう(58) DigisparkとLM35で温度計(2022.01.02)
「aitendo」カテゴリの記事
- aitendo 2023お楽しみ福袋(2023.01.02)
- aitendo 2022 お楽しみ福袋(2022.01.06)
- ZK-80で足し算(2020.07.23)
- TK-80互換機 ZK-80のキット(2020.07.21)
- Arduinoで作ろう(47) GPSモジュールで現在地の緯度・経度を取得(2020.04.18)
コメント