Binär klocka i 7-segment LED-skärm (2 / 4 steg)
Steg 2: Utveckling och Arduino Programm
1) version med LED Display modul (valfria komponenter används under utveckling)
Jag har använt det valfria material listas före på en församling med Visa modul med FYQ-5642AX LED display för att påskynda utvecklingen.
Jag gillar storleken på denna display eftersom det är lättare att ses.
Med LED-modul jag har skapat är lättare att montera denna version av prototypen.
Utan att det behöver jag sätta på en skärbräda många andra komponenter som SKIFT register 74HC595 och många motstånd och kablar att ansluta allt.
Obs: Med siffrorna för att underlätta läsningen tills du är mer trainned och bekväm att läsa display utan det kan du se Video av den här konfigurationen fungerar med mönster (mask) över displayen.
- Arduino programmering (Display Module Version)
/ * Binär klocka med flera LED-Display modul - V1.0
LED-Display - 4 siffror x 7 segment
av LAGSILVA - 10.June.2016
*/
int clockPin = 8; Stift 8 av Arduino ansluten i stift 11 av 74HC595 (klocka)
int latchPin = 9; PIN 9 av Arduino ansluten i pin 12 i 74HC595 (spärr)
int dataPin = 10; Stift 10 av Arduino ansluten i stift 14 på 74HC595 (Data)
int PWMPin = 11; Stift 11 av Arduino kopplet pin PWM att styra ljusstyrkan på displayen
int hh, mm, ss;
osignerade långa ti;
A
// ------
// | |
// F | | B
// | G |
// ------
// | |
// E | | C
// | D |
// ------
0
// ------
// | |
16 || 1
// | 32 |
// ------
// | |
// 8 | | 2
// | 4 |
// ------
void setup() {
pinMode (latchPin, produktionen); Definiera 3 digitala stiften (spärr-Klocka-Data) som utdata
pinMode (clockPin, produktionen);
pinMode (dataPin, produktionen);
pinMode (PWMPin, OUTPUT);
HH = 16. Installationen av timmar
mm = 17; Installationen av minuter
}
void loop() {
för (ss = 0; ss < = 59; ss ++) {
TI = millis(); Första gången för Timer timme/gång
medan ((millis()-ti) < 1000) {
analogWrite (PWMPin, 10); Ajusta o brilho visar via entrada PWM (0 a 255 = 100% en 0% de brilho)
Rita timmar (hh)
digitalWrite (latchPin, låg);
shiftOut (dataPin, clockPin, LSBFIRST, ~ B10000000); Ange visning 1
shiftOut (dataPin, clockPin, LSBFIRST, 0);
om (hh == 0) {
shiftOut (dataPin, clockPin, MSBFIRST, 1);
}
annat {
shiftOut (dataPin, clockPin, MSBFIRST, hh << 1);
}
digitalWrite (latchPin, hög);
Rita minuter (mm)
digitalWrite (latchPin, låg);
shiftOut (dataPin, clockPin, LSBFIRST, ~ B01000000); Ställa in displayen 2
shiftOut (dataPin, clockPin, LSBFIRST, 0);
om (mm == 0) {
shiftOut (dataPin, clockPin, MSBFIRST, 1);
}
annat {
shiftOut (dataPin, clockPin, MSBFIRST, mm << 1);
}
digitalWrite (latchPin, hög);
Rita sekunder (ss)
digitalWrite (latchPin, låg);
shiftOut (dataPin, clockPin, LSBFIRST, ~ B00100000); Ange visning 3
shiftOut (dataPin, clockPin, LSBFIRST, 0);
om (ss == 0) {
shiftOut (dataPin, clockPin, MSBFIRST, 1);
}
annat {
shiftOut (dataPin, clockPin, MSBFIRST, ss << 1);
}
digitalWrite (latchPin, hög);
}
}
mm = mm + 1.
om (mm > 59) {
mm = 0;
HH = hh + 1.
om (hh > 23) {
HH = 0;
}
}
}
Obs: Den tryckta masken är fäst på detta steg är för FYQ-5642A LED display. Bara skriva ut det, klippa papper och placera den över displayen.
2) version med Catalex LED-skärm (TM1637)
I den här versionen använde jag en seriell display Catalex med ingen mask.
Obs: Scheman finns också i det här steget.
- Arduino programmering (TM1637 - Catalex Display)
/ * Digital klocka
Binär klocka med 7 segment Display - TM1637 (4 siffror x 7 segment)
av LAGSILVA - V1.0 - 10.Jun.2016
*/
#include
Modul-anslutning stift (Digital stift)
#define CLK 8 //Arduino Conection på Pin #8 = CLK av Display modul
#define DIO 9 //Arduino Conection på Pin #9 = DIO för Display Module
//
A
// ----
// F | | B
// - G-
// E | | C
// ----
D
/
/
0
// ----
16 || 1
-32-
// 8 | | 2
// ----
4
//
uint8_t data [] = {
0, / / data [0] i timmar
0, / / data [1] i minuter
0, / / data [2] i sekunder
};
int hh, mm, ss;
osignerade långa ti;
TM1637Display display (CLK, DIO);
void setup() {
display.setBrightness (0x0a);//(0x0f) är max ljusstyrka;
HH = 10; Installationen av timmar
mm = 55. Installationen av minuter
}
void loop() {
för (ss = 0; ss < = 59; ss ++) {
Rita timmar (hh)
för (int k1 = 0; k1 < = 7; k1 ++) {
om (bitRead (hh, k1) == 1) {
bitWrite (data [0], k1 + 1, 1);
}
annat {
bitWrite (data [0], k1 + 1, 0);
}
}
om (hh == 0) {
bitWrite (data [0], 0, 1);
}
annat {
bitWrite (data [0], 0, 0);
}
display.setSegments (data + 0, 1, 0);
Rita minuter (mm)
för (int k1 = 0; k1 < = 7; k1 ++) {
om (bitRead (mm, k1) == 1) {
bitWrite (data [1], k1 + 1, 1);
}
annat {
bitWrite (data [1], k1 + 1, 0);
}
}
om (mm == 0) {
bitWrite (data [1], 0, 1);
}
annat {
bitWrite (data [1], 0, 0);
}
display.setSegments (data + 1, 1, 1);
Rita sekunder (ss)
för (int k1 = 0; k1 < = 7; k1 ++) {
om (bitRead (ss, k1) == 1) {
bitWrite (data [2], k1 + 1, 1);
}
annat {
bitWrite (data [2], k1 + 1, 0);
}
}
om (ss == 0) {
bitWrite (data [2], 0, 1);
}
annat {
bitWrite (data [2], 0, 0);
}
display.setSegments (data + 2, 1, 2);
Delay(980); Inte exakt 1 sekund på grund av compesantion för bearbetningstid
}
mm = mm + 1.
om (mm > 59) {
mm = 0;
HH = hh + 1.
om (hh > 23) {
HH = 0;
}
}
}
3) ställtid
Följande påståenden i programmet används för inställningar av timmar och minuter.
Bara justera dem innan kompilera programmet till Arduino som visas i detta exempel:
HH = 16. Installationen av timmar
mm = 17; Installationen av minuter