Stoppuhr mit Arduino-Micro
(EN google-translate)
(PL google-translate)
Eine Uhr mit Hilfe eines FPGA-Bausteins herstellen ist eigentlich wie mit Kanonen auf Spatzen zu schießen.
Versuchen Sie doch einmal eine Stoppuhr mit Hilfe eines Arduino-Micro zu realisieren.
Verwenden Sie auch hier die Vierfach Sieben Segment-Anzeige LTC-2723WC.
Siehe dazu:

Um genügend digitale Ausgänge zu erhalten sollte der komplette PORTB mit einbezogen werden. Siehe dazu:

|
Teillösungen zu der vorangegangenen Übung:

//MICRO //7-Segment-Anzeige //Testprogramm // // A // F B // G // E C // D // #define Z0 0b01111110 #define Z1 0b00001100 #define Z2 0b10110110 #define Z3 0b10011110 // GFEDCBA #define Z4 0b11001100 #define Z5 0b11011010 #define Z6 0b11111010 #define Z7 0b00001110 #define Z8 0b11111110 #define Z9 0b11011110 int z = 0; int zaehler = 0; unsigned char digit[] = {Z0,Z1,Z2,Z3,Z4,Z5,Z6,Z7,Z8,Z9}; void setup() { //A-G OUT //........GFEDCBA DDRB |= 0b11111110; //D1-D4 OUT //..........D43:21 DDRD |= 0b00011111; //D1-D5 auf 5V //...........D43:21 PORTD |= 0b00011111; } void loop() { PORTD |= 0b00011111; PORTD &= 0b00011110; PORTB = digit[zaehler]; delay(1); PORTD |= 0b00011111; PORTD &= 0b00011101; PORTB = digit[zaehler]; delay(1); PORTD |= 0b00011111; PORTD &= 0b00010111; PORTB = digit[zaehler]; delay(1); PORTD |= 0b00011111; PORTD &= 0b00001111; PORTB = digit[zaehler]; delay(1); z++; z%=1000; zaehler = z/100; }
Code 0-1: SegAnsteuern.ino

#include "Arduino.h" //MICRO //7-Segment-Anzeige //Testprogramm // // A // F B // G // E C // D // class Digits { private: const unsigned char digits[10] = {0b01111110,0b00001100,0b10110110,0b10011110,0b11001100, 0b11011010,0b11111010,0b00001110,0b11111110,0b11011110}; int inx = 0; public: void start() { //A-G OUT //........GFEDCBA DDRB |= 0b11111110; //D1-D4 OUT //..........D43:21 DDRD |= 0b00011111; //D1-D5 auf 5V //...........D43:21 PORTD |= 0b00011111; } void show(int nummer) // 0...9999 { PORTD |= 0b00011111; switch(inx) { case 0: PORTB = digits[nummer/1000]; break; case 1: PORTB = digits[(nummer/100)%10]; break; case 2: PORTB = 0; break; case 3: PORTB = digits[(nummer/10)%10]; break; default: PORTB = digits[nummer%10]; break; } PORTD &= ~(1<<inx); inx++; inx%=5; } };
Code 0-2: Digits.h
#include "Digits.h" long z = 0; int zaehler = 0; int zahl = 0; Digits digits; void setup() { digits.start(); } void loop() { digits.show(z/10); z++; z%=100000; delay(5); }
Code 0-3: SegAnsteuernOOP.ino