Heißer Draht Code mit Stoppuhr (8-Stellige 7-Segmentanzeige mit serieller Ansteuerung (MAX7219), Arduino komp.) und Summer.

heisser draht mit stoppuhr bauanleitung

 

 

// code by:   Hugo T. 

 

#include "LedControl.h"
LedControl lc = LedControl(12, 11, 10,1 );

const int buttonPin = 2;    // Start, Stopp, Reset PIN
const int failurePin = 4;    // Fehler PIN
const int beeepPin = 13;  // Summer Pin (je nach Summer über einen Transitor)

void setup() {
lc.shutdown(0, false);
lc.clearDisplay(0);
lc.setIntensity(0, 15);

// initialize the pushbutton pin as an input:
pinMode(buttonPin, INPUT);
pinMode(failurePin, INPUT);
pinMode(beeepPin, OUTPUT);
}

void printDashes() {

lc.setChar(0, 0, '-', false);
lc.setChar(0, 1, '-', false);
lc.setChar(0, 2, '-', false);
lc.setChar(0, 3, '-', false);
lc.setChar(0, 4, '-', false);
lc.setChar(0, 5, '-', false);
lc.setChar(0, 6, '-', false);
lc.setChar(0, 7, '-', false);

}
void blink(int times)
{


for (int i = 0; i < times; i++) {

lc.setScanLimit(0, 7);
lc.clearDisplay(0);

printDashes();

delay(150);
lc.clearDisplay(0);

lc.setScanLimit(0, 0);
delay(150);
}


}

void countdown(int counter)
{

while (counter >= 0)
{

int maxDigit = 0;

int n = counter;
for (int i = 0; i < 8; i++) {
int digit = n % 10;
n = n / 10;

lc.setDigit(0, i, digit, false);
if (digit)
{
maxDigit = i;
}
}

lc.setScanLimit(0, maxDigit);

delay(500);
lc.clearDisplay(0);
delay(100);

counter--;
}

}

void displayNumbers(int counter, int seconds, int minutes)
{
int maxDigit = 0;

showTime(counter, 0);
showTime(seconds, 3);
showTime(minutes, 6);

lc.setChar(0, 2, '-', false);
lc.setChar(0, 5, '-', false);


}

void showTime(int value, int positionStart) {
int maxDigit = 0;
int n = value;
int positionEnd = positionStart+2;
for (int i = positionStart; i < positionEnd; i++) {
int digit = n % 10;
n = n / 10;

lc.setDigit(0, i, digit, false);
if (digit)
{
maxDigit = i;
}
}

}

int counter = 0;
int seconds = 0;
int minutes = 0;
int didStart = 0;
int startButtonState = 0;
int failureButtonState = 0;

void loop() {
if (counter > 100) {
counter = 0;
seconds++;
}

if (seconds > 60) {
seconds = 0;
minutes++;
}

displayNumbers(counter, seconds, minutes);
startButtonState = digitalRead(buttonPin);
failureButtonState = digitalRead(failurePin);

if (didStart == 1 | startButtonState == 1)
{
if (didStart == 0) {
digitalWrite(beeepPin, HIGH);
}

if (seconds > 1) {
digitalWrite(beeepPin, LOW);
}

didStart = 1;

if (seconds > 1 & startButtonState == 1)
{
digitalWrite(beeepPin, HIGH);
delay(1500);
digitalWrite(beeepPin, LOW);
do
{
startButtonState = digitalRead(buttonPin);
} while (startButtonState == 0 );
counter = 0;
seconds = 0;
minutes = 0;
displayNumbers(counter, seconds, minutes);
didStart = 0;
delay(200);
}

if(failureButtonState == 1){
counter = 0;
seconds = 0;
minutes = 0;
displayNumbers(counter, seconds, minutes);
didStart = 0;
digitalWrite(beeepPin, HIGH);
delay(3000);
digitalWrite(beeepPin, LOW);
}

if (didStart != 0) {
delay(10);
lc.clearDisplay(0);
counter++;
}
}

//lc.clearDisplay(0);
}


Wir nutzen Cookies auf unserer Website. Einige von ihnen sind essenziell für den Betrieb der Seite, während andere uns helfen, diese Website und die Nutzererfahrung zu verbessern (Tracking Cookies).

Sie können selbst entscheiden, ob Sie die Cookies zulassen möchten. Bitte beachten Sie, dass bei einer Ablehnung womöglich nicht mehr alle Funktionalitäten der Seite zur Verfügung stehen.