- Details
- Kategorie: Texte für die Seite
- Zugriffe: 36853
void setup()
{
pinMode( 0 , INPUT);
pinMode( 1 , OUTPUT);
pinMode( 1 , OUTPUT);
pinMode( 2 , OUTPUT);
analogWrite(1 , 150);
delay( 300 );
digitalWrite( 1 , LOW );
delay( 300 );
analogWrite(1 , 150);
delay( 300 );
digitalWrite( 1 , LOW );
delay( 300 );
}
void loop()
{
if (digitalRead(0))
{
analogWrite(1 , 150);
digitalWrite( 2 , HIGH );
delay( 900 );
digitalWrite( 1 , LOW );
digitalWrite( 2 , LOW );
}
delay( 2 );
}
- Details
- Kategorie: Texte für die Seite
- Zugriffe: 38680
int fehler = 0 ; void setup() { pinMode( 7 , INPUT); pinMode( 9 , OUTPUT); pinMode( 10 , OUTPUT); pinMode( 0 , OUTPUT); pinMode( 1 , OUTPUT); pinMode( 2 , OUTPUT); pinMode( 3 , OUTPUT); pinMode( 4 , OUTPUT); pinMode( 5 , OUTPUT); pinMode( 6 , OUTPUT); fehler = 0 ; } void loop() { if ( digitalRead( 7)) { fehler = ( fehler + 1 ) ; delay( 5 ); digitalWrite( 9 , HIGH ); digitalWrite( 10 , HIGH ); delay( 1000 ); digitalWrite( 9 , LOW ); digitalWrite( 10 , LOW ); } if (( ( fehler ) == ( 0 ) )) { digitalWrite( 0 , LOW ); digitalWrite( 1 , LOW ); digitalWrite( 2 , HIGH ); digitalWrite( 3 , LOW ); digitalWrite( 4 , LOW ); digitalWrite( 5 , LOW ); digitalWrite( 6 , LOW ); delay( 10 ); } if (( ( fehler ) == ( 1 ) )) { digitalWrite( 0 , HIGH ); digitalWrite( 1 , LOW ); digitalWrite( 2 , HIGH ); digitalWrite( 3 , LOW ); digitalWrite( 4 , HIGH ); digitalWrite( 5 , HIGH ); digitalWrite( 6 , HIGH ); delay( 5 ); } if (( ( fehler ) == ( 2 ) )) { digitalWrite( 0 , LOW ); digitalWrite( 1 , HIGH ); digitalWrite( 2 , LOW ); digitalWrite( 3 , LOW ); digitalWrite( 4 , LOW ); digitalWrite( 5 , HIGH ); digitalWrite( 6 , LOW ); delay( 5 ); } if (( ( fehler ) == ( 3 ) )) { digitalWrite( 0 , LOW ); digitalWrite( 1 , LOW ); digitalWrite( 2 , LOW ); digitalWrite( 3 , LOW ); digitalWrite( 4 , HIGH ); digitalWrite( 5 , HIGH ); digitalWrite( 6 , LOW ); delay( 10 ); } if (( ( fehler ) == ( 4 ) )) { digitalWrite( 0 , HIGH ); digitalWrite( 1 , LOW ); digitalWrite( 2 , LOW ); digitalWrite( 3 , LOW ); digitalWrite( 4 , HIGH ); digitalWrite( 5 , LOW ); digitalWrite( 6 , HIGH ); delay( 5 ); } if (( ( fehler ) == ( 5 ) )) { digitalWrite( 0 , LOW ); digitalWrite( 1 , LOW ); digitalWrite( 2 , LOW ); digitalWrite( 3 , HIGH ); digitalWrite( 4 , HIGH ); digitalWrite( 5 , LOW ); digitalWrite( 6 , LOW ); delay( 5 ); } if (( ( fehler ) == ( 6 ) )) { digitalWrite( 0 , LOW ); digitalWrite( 1 , LOW ); digitalWrite( 2 , LOW ); digitalWrite( 3 , HIGH ); digitalWrite( 4 , LOW ); digitalWrite( 5 , LOW ); digitalWrite( 6 , LOW ); delay( 10 ); } if (( ( fehler ) == ( 7 ) )) { digitalWrite( 0 , HIGH ); digitalWrite( 1 , LOW ); digitalWrite( 2 , HIGH ); digitalWrite( 3 , LOW ); digitalWrite( 4 , HIGH ); digitalWrite( 5 , HIGH ); digitalWrite( 6 , LOW ); delay( 5 ); } if (( ( fehler ) == ( 8 ) )) { digitalWrite( 0 , LOW ); digitalWrite( 1 , LOW ); digitalWrite( 2 , LOW ); digitalWrite( 3 , LOW ); digitalWrite( 4 , LOW ); digitalWrite( 5 , LOW ); digitalWrite( 6 , LOW ); delay( 5 ); } if (( ( fehler ) == ( 9 ) )) { digitalWrite( 0 , LOW ); digitalWrite( 1 , LOW ); digitalWrite( 2 , LOW ); digitalWrite( 3 , LOW ); digitalWrite( 4 , HIGH ); digitalWrite( 5 , LOW ); digitalWrite( 6 , LOW ); delay( 10 ); } if (( ( fehler ) == ( 10 ) )) { digitalWrite( 0 , LOW ); digitalWrite( 1 , LOW ); digitalWrite( 2 , HIGH ); digitalWrite( 3 , LOW ); digitalWrite( 4 , LOW ); digitalWrite( 5 , LOW ); digitalWrite( 6 , LOW ); delay( 5 ); VAR_1_fehler = 0 ; digitalWrite( 9 , HIGH ); digitalWrite( 10 , HIGH ); delay( 3000 ); digitalWrite( 9 , LOW ); digitalWrite( 10 , LOW ); } }
- Details
- Kategorie: Texte für die Seite
- Zugriffe: 39717
// software for http://www.kreativekiste.de/elektro/dem-heissen-draht-auf-der-spur
// developed by Timo Denk (Nov 2014)
//
// wiring:
// 0: start
// 1: stop
// 2: mistake
// 3: buzzer
// A0: penalty time
// A4: display SDA
// A5: display SCL
// libraries
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3F,20,4);
const byte startPin = 0, stopPin = 1, mistakePin = 2, buzzerPin = 3, penaltyTimePin = A0;
const byte minPenaltyTime = 1, maxPenaltyTime = 17; // [t] = 1 s
const String penaltyTimeString = "Fehler", finalTimeString = "Endzeit", timeString = "Zeit", commercialString = "www.kreativekiste.de", mistakeString = "Berührt!!!", totalTime = "Gesamtzeit";
long millisStart, millisEnd;
int mistakes, penaltyTime, lastPenaltyTime;
void setup() {
lcd.init();
lcd.backlight();
pinMode(startPin, INPUT);
pinMode(stopPin, INPUT);
pinMode(mistakePin, INPUT);
pinMode(buzzerPin, OUTPUT);
digitalWrite(buzzerPin, LOW);
digitalWrite(startPin, HIGH);
digitalWrite(stopPin, HIGH);
digitalWrite(mistakePin, HIGH);
}
void loop() {
clearScreen();
printStringCenter(1, "Heisser Draht");
printStringCenter(2, "Strafzeit einstellen");
lastPenaltyTime = 0, penaltyTime = 0;
// waiting for game to start
while (digitalRead(startPin) == HIGH) {
penaltyTime = (byte)round(map(analogRead(penaltyTimePin), 0, 1023, minPenaltyTime, maxPenaltyTime));
if (penaltyTime != lastPenaltyTime) {
clearRow(3);
printStringCenter(3, String(penaltyTime) + " s");
lastPenaltyTime = penaltyTime;
}
}
// game running
millisStart = millis();
clearScreen();
mistakes = 0;
while (digitalRead(stopPin) == HIGH) {
// check for mistakes
printStatusOnScreen();
if (digitalRead(mistakePin) == LOW) {
mistakes++;
digitalWrite(buzzerPin, HIGH);
printStatusOnScreen();
delay(500);
digitalWrite(buzzerPin, LOW);
}
delay(10);
}
// game finished
millisEnd = millis();
clearScreen();
clearRow(0);
printStringCenter(0, "Spiel beendet!");
printStatusOnScreen();
delay(10000);
}
void printStatusOnScreen() {
int playingTime = round((millis() - millisStart)/1000), penaltyTimeSum = mistakes * penaltyTime;
printStringCenter(1, "Spielzeit: " + sec2MinSecString(playingTime));
printStringCenter(2, "Fehler: " + String(mistakes) + " x " + String(penaltyTime) + "s");
printStringCenter(3, "Gesamt: " + sec2MinSecString(playingTime + penaltyTimeSum));
}
void showCommercial() {
clearRow(0);
printStringCenter(0, commercialString);
}
void clearScreen() {
for (byte i = 0; i < 4; i++)
clearRow(i);
showCommercial();
}
void printStringCenter(byte row, String string) {
lcd.setCursor((int)((20 - string.length()) / 2), row);
lcd.print(string);
}
void clearRow(byte row) {
lcd.setCursor(0, row);
lcd.print(" ");
}
String sec2MinSecString(int input) { // converts seconds to a string like "minutes:seconds"
String minutes = String((int)(input / 60));
String seconds = String(input % 60);
if (seconds.length() == 1)
seconds = "0" + seconds;
//if (minutes.length() == 1)
// minutes = "0" + minutes;
return minutes + ":" + seconds + " ";
}
- Details
- Kategorie: Texte für die Seite
- Zugriffe: 42496
Heißer Draht Code mit Stoppuhr (8-Stellige 7-Segmentanzeige mit serieller Ansteuerung (MAX7219), Arduino komp.) und Summer.
// 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);
}
- Details
- Kategorie: Texte für die Seite
- Zugriffe: 38731
Arduino Code:
------------------------------------------------------------------------------------
const byte startStopPin = 0, mistakePin = 1, buzzerPin = 16;
long startMillis;
void setup()
{
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
pinMode(13, OUTPUT);
pinMode(14, OUTPUT);
pinMode(15, OUTPUT);
pinMode(startStopPin, INPUT);
pinMode(mistakePin, INPUT);
pinMode(buzzerPin, OUTPUT);
displayNumber(0);
while(digitalRead(startStopPin) == LOW) // wait for the start signal
{ ; }
startMillis = millis();
}
void loop()
{
long number = 99 - (millis() - startMillis) / 1000;
if (number <= 0)
{
gameOver();
}
if (digitalRead(startStopPin) == HIGH && (millis() - startMillis) > 2000)
{
while(true)
{ ; }
}
if (digitalRead(mistakePin) == HIGH && (millis() - startMillis) > 2000)
{
gameOver();
}
displayNumber(number);
}
void displayNumber(byte x)
{
x %= 100;
set1(~dec27(x % 10));
set10(~dec27(x / 10));
}
void set1(byte value)
{
digitalWrite(2, bitRead(value, 0)); // segment a
digitalWrite(3, bitRead(value, 1)); // segment b
digitalWrite(4, bitRead(value, 2)); // segment c
digitalWrite(5, bitRead(value, 3)); // segment d
digitalWrite(6, bitRead(value, 4)); // segment e
digitalWrite(7, bitRead(value, 5)); // segment f
digitalWrite(8, bitRead(value, 6)); // segment g
}
void set10(byte value)
{
digitalWrite(9, bitRead(value, 0)); // segment a
digitalWrite(10, bitRead(value, 1)); // segment b
digitalWrite(11, bitRead(value, 2)); // segment c
digitalWrite(12, bitRead(value, 3)); // segment d
digitalWrite(13, bitRead(value, 4)); // segment e
digitalWrite(14, bitRead(value, 5)); // segment f
digitalWrite(15, bitRead(value, 6)); // segment g
}
byte dec27(byte decimal) {
if (decimal == 0)
return B00111111;
if (decimal == 1)
return B00000110;
if (decimal == 2)
return B01011011;
if (decimal == 3)
return B01001111;
if (decimal == 4)
return B01100110;
if (decimal == 5)
return B01101101;
if (decimal == 6)
return B01111101;
if (decimal == 7)
return B0000111;
if (decimal == 8)
return B01111111;
if (decimal == 9)
return B01101111;
return 0;
}
void gameOver()
{
displayNumber(0);
digitalWrite(buzzerPin, HIGH);
delay(3000);
digitalWrite(buzzerPin, LOW);
while (true)
{ ; }
}

- Details
- Kategorie: Texte für die Seite
- Zugriffe: 19799
Einfacher Sketch für ein Blaulicht mit Sirene.
Weiterlesen: Attiny Blaulicht mit Sirene für Feuerwehr & Polizei
- Details
- Kategorie: Texte für die Seite
- Zugriffe: 9557
void setup()
{
pinMode( 0 , OUTPUT);
pinMode( 3 , OUTPUT);
pinMode( 1 , OUTPUT);
pinMode( 2 , OUTPUT);
pinMode( 4 , OUTPUT);
pinMode( 5 , OUTPUT);
digitalWrite( 0 , HIGH );
digitalWrite( 3 , HIGH );
delay( 4000 );
}
void loop()
{
digitalWrite( 1 , LOW );
digitalWrite( 0 , HIGH );
delay( 9500 );
digitalWrite( 1 , HIGH );
delay( 3100 );
digitalWrite( 0 , LOW );
digitalWrite( 1 , LOW );
digitalWrite( 2 , HIGH );
delay( 15000 );
digitalWrite( 2 , LOW );
digitalWrite( 1 , HIGH );
delay( 3300 );
digitalWrite( 1 , LOW );
digitalWrite( 0 , HIGH );
delay( 3100 );
digitalWrite( 4 , LOW );
digitalWrite( 3 , HIGH );
delay( 9500 );
digitalWrite( 4 , HIGH );
delay( 3100 );
digitalWrite( 3 , LOW );
digitalWrite( 4 , LOW );
digitalWrite( 5 , HIGH );
delay( 15000 );
digitalWrite( 5 , LOW );
digitalWrite( 4 , HIGH );
delay( 3300 );
digitalWrite( 3 , HIGH );
digitalWrite( 4 , LOW );
delay( 3100 );
}
- Details
- Kategorie: Texte für die Seite
- Zugriffe: 36195
Im Zusammenhang mit dem Vertrieb von Batterien oder mit der Lieferung von Geräten, die Batterien enthalten, ist der Verkäufer verpflichtet, Sie auf Folgendes hinzuweisen:
Sie sind zur Rückgabe gebrauchter Batterien als Endnutzer gesetzlich verpflichtet. Sie können Batterien nach Gebrauch an den Verkäufer oder in den dafür vorgesehenen Rücknahmestellen (z.B. in Kommunalen Sammelstellen oder im Handel) unentgeltlich zurückgeben. Sie können die Batterien auch per Post an den Verkäufer zurücksenden.
Die auf den Batterien abgebildeten Symbole haben folgende Bedeutung:
Das Symbol der durchgekreuzten Mülltonne bedeutet, dass die Batterie nicht in den Hausmüll gegeben werden darf.
Pb = Batterie enthält mehr als 0,004 Masseprozent Blei
Cd = Batterie enthält mehr als 0,002 Masseprozent Cadmium
Hg = Batterie enthält mehr als 0,0005 Masseprozent Quecksilber."
Auszüge und Erklärung zu den Gesetzestexten:
1. Rücknahmepflicht
Gem. § 9 Abs.1 BattG ist jeder Vertreiber von Batterien verpflichtet, vom Endnutzer Altbatterien an oder in unmittelbarer Nähe der Verkaufsstelle unentgeltlich
zurückzunehmen.
- Die Rücknahmepflicht ist allerdings auf Altbatterien der Art beschränkt, die der Vertreiber als Neubatterien im Sortiment führt oder geführt hat.
- Der Kunde ist also nicht dahingehend beschränkt, ausschließlich die Batterien zurückzugeben, die er beim Vertreiber auch tatsächlich erworben hat - er darf aber auch keine „sortimentsfremden“ Altbatterien zurückgeben.
2. Hinweisplicht
Jeder Vertreiber, der gewerblich Batterien an Endnutzer abgibt, hat den Kunden gem. § 18 Abs.1 BattG durch gut sicht- und lesbare, im unmittelbaren Sichtbereich des Hauptkundenstroms platzierte Schrift- oder Bildtafeln darauf hinzuweisen:
- dass Batterien nach Gebrauch an der Verkaufsstelle unentgeltlich zurückgegeben werden können;
- dass der Endnutzer zur Rückgabe von Altbatterien gesetzlich verpflichtet ist;
- welche Bedeutung das Symbol der durchgestrichene Mülltonne gem. § 17 Abs.1 BattG hat;
- welche Bedeutung die nachfolgenden chemischen Zeichen Hg, Cd, Pb nach § 17 Abs.3 BattG haben
- Details
- Kategorie: Texte für die Seite
- Zugriffe: 41237

- Details
- Kategorie: Texte für die Seite
- Zugriffe: 42834
Programme für den heißen Draht mit Attiny 45.
Programm von der heißen Draht Seite, dass jeden Fehler für eine Sekunde optisch und akustisch darstellt.
void setup()
{
pinMode( 1 , INPUT);
pinMode( 0 , OUTPUT);
digitalWrite(1, HIGH);
pinMode( 4 , OUTPUT);
pinMode( 0 , OUTPUT);
}
void loop()
{
if (!( digitalRead(1) ))
{
analogWrite(0 , 100);
digitalWrite( 4 , HIGH );
delay( 900 );
digitalWrite( 0 , LOW );
digitalWrite( 4 , LOW );
}
delay( 2 );
}
Bei diesem Programm wird der analoge Eingang des Attiny verwendet. Damit lässt sich nicht nur ein HIGH oder LOW Signal auslesen, sondern ein variables Signal. Dies hat zur Folge, dass die Schwierigkeit verändert werden kann. So ist bereits ein zu nahe kommen des Drahtes oder ein richtiger Druck auf den Draht nötig um einen Fehler zu "machen". Möglich wäre auch die Zeit der Berührung wiederzugeben und erst ab einer bestimmten Zeit den Fehler anzeigen zu lassen.
void setup() {
pinMode(1, OUTPUT);
}
void loop() {
if(analogRead(2) < 50)
{
for(int x = 0;x < 100; x++)
{
digitalWrite(1, HIGH);
delay(500);
digitalWrite(1, LOW);
delay(500);
}
}
}
Bei diesem Programm muss der Attiny über reset zurückgesetzt werden, da nach einem Fehler die DELAY Zeit extrem hoch ist. Bei diesem Spiel hat der Spieler also nach einem Fehler verloren. Über eine rote LED an Pin0 und eine grüne LED an PIN1 wird der Spielstand angezeigt. Nach dem reset leuchtet die grüne und nach einem Fehler die rote LED. Der Summer wird an PIN2 anschlossen (bei mehr als 40 ma bitte einen Transistor verwenden). Den Fehler bekommt der Attiny über ein HIGH Signal an PIN 4. Pin 4 bitte mit einem PULL DOWN-Widerstand versehen.
void setup()
{
pinMode( 4 , INPUT);
pinMode( 0 , OUTPUT);
pinMode( 1 , OUTPUT);
pinMode( 2 , OUTPUT);
digitalWrite( 0 , HIGH );
digitalWrite( 1 , LOW );
}
void loop()
{
if (digitalRead(4))
{
digitalWrite( 0 , LOW );
digitalWrite( 1 , HIGH );
digitalWrite( 2 , HIGH );
delay( 900 );
digitalWrite( 2 , LOW );
delay( 9999999 );
}
delay( 1 );
}
Bei diesem Programm werden 3 LED nacheinander angeschaltet und bei jedem Fehler ertönt ein Summer. Somit ist das Spiel nicht nach einem Fehler aus, sondern nach drei Fehlern. Die Pin Belegung bitte aus dem Code entnehmen.
int fehler = 0 ;
int zeit = 0 ;
int a;
void setup()
{
pinMode( 4 , INPUT);
pinMode( 0 , OUTPUT);
pinMode( 1 , OUTPUT);
pinMode( 2 , OUTPUT);
pinMode( 3 , OUTPUT);
fehler = 0 ;
zeit = 100 ;
for (a=1; a<= ( 2 ); ++a )
{
digitalWrite( 0 , LOW );
delay( zeit );
digitalWrite( 1 , LOW );
delay( zeit );
digitalWrite( 2 , LOW );
delay( zeit );
digitalWrite( 0 , HIGH );
delay( zeit );
digitalWrite( 1 , HIGH );
delay( zeit );
digitalWrite( 2 , HIGH );
delay( zeit );
}
digitalWrite( 0 , HIGH );
digitalWrite( 1 , HIGH );
digitalWrite( 2 , HIGH );
}
void loop()
{
if (digitalRead(4))
{
fehler = ( fehler + 1 ) ;
delay( 2 );
if (( ( fehler ) == ( 1 ) ))
{
digitalWrite( 0 , LOW );
digitalWrite( 3 , HIGH );
delay( 700 );
digitalWrite( 3 , LOW );
}
if (( ( fehler ) == ( 2 ) ))
{
digitalWrite( 1 , LOW );
digitalWrite( 3 , HIGH );
delay( 700 );
digitalWrite( 3 , LOW );
}
if (( ( fehler ) == ( 3 ) ))
{
digitalWrite( 2 , LOW );
digitalWrite( 3 , HIGH );
delay( 1100 );
digitalWrite( 3 , LOW );
for (a=1; a<= ( 3 ); ++a )
{
digitalWrite( 0 , LOW );
delay( zeit );
digitalWrite( 1 , LOW );
delay( zeit );
digitalWrite( 2 , LOW );
delay( zeit );
digitalWrite( 0 , HIGH );
delay( zeit );
digitalWrite( 1 , HIGH );
delay( zeit );
digitalWrite( 2 , HIGH );
delay( zeit );
}
digitalWrite( 0 , HIGH );
digitalWrite( 1 , HIGH );
digitalWrite( 2 , HIGH );
fehler = 0 ;
delay( 20 );
}
}
}
Bei diesem Programm werden 99 Sekunden auf einem Sieben-Segment Display herunter gezählt. Wird ein Fehler begangen, ist das Spiel sofort vorbei. Die Pin-Belegung bitte aus dem Code entnehmen.
const byte startStopPin = 0, mistakePin = 1, buzzerPin = 16;
long startMillis;
void setup()
{
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
pinMode(13, OUTPUT);
pinMode(14, OUTPUT);
pinMode(15, OUTPUT);
pinMode(startStopPin, INPUT);
pinMode(mistakePin, INPUT);
pinMode(buzzerPin, OUTPUT);
displayNumber(0);
while(digitalRead(startStopPin) == LOW) // wait for the start signal
{ ; }
startMillis = millis();
}
void loop()
{
long number = 99 - (millis() - startMillis) / 1000;
if (number <= 0)
{
gameOver();
}
if (digitalRead(startStopPin) == HIGH && (millis() - startMillis) > 2000)
{
while(true)
{ ; }
}
if (digitalRead(mistakePin) == HIGH && (millis() - startMillis) > 2000)
{
gameOver();
}
displayNumber(number);
}
void displayNumber(byte x)
{
x %= 100;
set1(~dec27(x % 10));
set10(~dec27(x / 10));
}
void set1(byte value)
{
digitalWrite(2, bitRead(value, 0)); // segment a
digitalWrite(3, bitRead(value, 1)); // segment b
digitalWrite(4, bitRead(value, 2)); // segment c
digitalWrite(5, bitRead(value, 3)); // segment d
digitalWrite(6, bitRead(value, 4)); // segment e
digitalWrite(7, bitRead(value, 5)); // segment f
digitalWrite(8, bitRead(value, 6)); // segment g
}
void set10(byte value)
{
digitalWrite(9, bitRead(value, 0)); // segment a
digitalWrite(10, bitRead(value, 1)); // segment b
digitalWrite(11, bitRead(value, 2)); // segment c
digitalWrite(12, bitRead(value, 3)); // segment d
digitalWrite(13, bitRead(value, 4)); // segment e
digitalWrite(14, bitRead(value, 5)); // segment f
digitalWrite(15, bitRead(value, 6)); // segment g
}
byte dec27(byte decimal) {
if (decimal == 0)
return B00111111;
if (decimal == 1)
return B00000110;
if (decimal == 2)
return B01011011;
if (decimal == 3)
return B01001111;
if (decimal == 4)
return B01100110;
if (decimal == 5)
return B01101101;
if (decimal == 6)
return B01111101;
if (decimal == 7)
return B0000111;
if (decimal == 8)
return B01111111;
if (decimal == 9)
return B01101111;
return 0;
}
void gameOver()
{
displayNumber(0);
digitalWrite(buzzerPin, HIGH);
delay(3000);
digitalWrite(buzzerPin, LOW);
while (true)
{ ; }
}
- Details
- Kategorie: Texte für die Seite
- Zugriffe: 39967
- Details
- Kategorie: Texte für die Seite
- Zugriffe: 44452
developed by Timo Denk (Jan. 2015)
#!/usr/bin/env python
#coding=utf-8
import pygame, sys, time, os, RPi.GPIO as GPIO
from pygame.locals import *
#GPIO
startPin = 32
errorPin = 31
enableErrorTimeAddingPin = 15
shutdownPin = 3
buzzerPin = 12
GPIO.setmode(GPIO.BOARD)
GPIO.setup(startPin, GPIO.IN)
GPIO.setup(errorPin, GPIO.IN)
GPIO.setup(enableErrorTimeAddingPin, GPIO.IN)
GPIO.setup(shutdownPin, GPIO.IN)
GPIO.setup(buzzerPin, GPIO.OUT)
#other constants
timePerError = 5
screenSizeX = 640
screenSizeY = 400
startstop_delay = 3000
error_delay = 1000
game_over_screen_duration = 15
text_margin_top = 0
text_margin_left = 10
line_height = 150
buzzer_high = 2000
last_error_detection = 0
last_error_increment = 0
pygame.init()
#colors
redColor = pygame.Color(255, 255, 255)
blackColor = pygame.Color(0, 0, 0)
whiteColor = pygame.Color(255, 255, 255)
grayColor = pygame.Color(128, 128, 128)
mainFontColor = redColor
#fonts
font = pygame.font.Font('freesansbold.ttf', 100)
def toggle_fullscreen():
screen = pygame.display.get_surface()
tmp = screen.convert()
caption = pygame.display.get_caption()
cursor = pygame.mouse.get_cursor() # Duoas 16-04-2007
w,h = screen.get_width(),screen.get_height()
flags = screen.get_flags()
bits = screen.get_bitsize()
pygame.display.quit()
pygame.display.init()
screen = pygame.display.set_mode((w,h),flags^FULLSCREEN,bits)
screen.blit(tmp,(0,0))
pygame.display.set_caption(*caption)
pygame.key.set_mods(0) #HACK: work-a-round for a SDL bug??
pygame.mouse.set_cursor( *cursor ) # Duoas 16-04-2007
return screen
def clearScreen():
screen.fill(blackColor)
return
def handle_events():
time.sleep(0.04)
if GPIO.input(shutdownPin) == True:
shutdown_raspberry()
for event in pygame.event.get():
if event.type == KEYDOWN and event.key == K_ESCAPE:
shutdown_raspberry()
else:
if event.type == pygame.QUIT or event.type == KEYDOWN:
exit_application()
#buzzer
GPIO.output(buzzerPin, not(last_error_increment < get_millis() - buzzer_high))
#print str(not(last_error_increment < get_millis() - buzzer_high))
return
def exit_application():
pygame.quit()
sys.exit()
return
def shutdown_raspberry():
os.system("sudo shutdown -h now")
return
def getUnixTime():
return int(time.time())
def get_millis():
return int(round(time.time() * 1000))
pygame.mouse.set_visible(False) # hide mouse
screen = pygame.display.set_mode((screenSizeX, screenSizeY), pygame.FULLSCREEN)
#pygame.display.set_caption('Heisser Draht') # not required for fullscreen application
#screen = toggle_fullscreen()
while True: # main loop
#global label storage
time_surface = 0
errors_surface = 0
time_rectangle = 0
errors_rectangle = 0
last_error_detection = 0
last_error_increment = 0
header_surface = font.render('Let\'s play!', True, mainFontColor)
header_rectangle = header_surface.get_rect()
header_rectangle.midleft = (text_margin_left, (int)(screenSizeY / 2))
screen.blit(header_surface, header_rectangle)
pygame.display.flip()
while GPIO.input(startPin) == False: #wait for the user to press start button
handle_events()
start_time = getUnixTime()
errors = 0
errorAdded = False
justStarted = True
header_surface = font.render('', True, mainFontColor)
game_started = get_millis()
while True: # game running
handle_events()
if GPIO.input(errorPin) == True:
if errorAdded == False and last_error_increment < get_millis() - error_delay:
errors += 1
last_error_increment = get_millis()
else:
last_error_detection = get_millis()
errorAdded = True
else:
errorAdded = False
int_time = getUnixTime() - start_time
if GPIO.input(enableErrorTimeAddingPin) == True:
int_time = getUnixTime() - start_time + errors * timePerError
time_surface = font.render('Time: ' + str(int_time) + 's', True, mainFontColor)
time_rectangle = time_surface.get_rect()
time_rectangle.topleft = (text_margin_left, text_margin_top + line_height * 0.5)
errors_surface = font.render('Mistakes: ' + str(errors), True, mainFontColor)
errors_rectangle = errors_surface.get_rect()
errors_rectangle.topleft = (text_margin_left, text_margin_top + line_height * 1.5)
clearScreen()
screen.blit(errors_surface, errors_rectangle) #errors
screen.blit(time_surface, time_rectangle) #time
header_rectangle.midleft = (text_margin_left, text_margin_top)
screen.blit(header_surface, header_rectangle) #header
pygame.display.flip()
if GPIO.input(startPin) == False:
justStarted = False
if GPIO.input(startPin) == True and justStarted == False and game_started < get_millis() - startstop_delay:
break
clearScreen()
header_surface = font.render('Let\'s play!', True, mainFontColor)
#reposition for game over screen
header_rectangle.topleft = (text_margin_left, text_margin_top)
time_rectangle.topleft = (text_margin_left, text_margin_top + line_height * 1)
errors_rectangle.topleft = (text_margin_left, text_margin_top + line_height * 2)
screen.blit(errors_surface, errors_rectangle) #errors
screen.blit(time_surface, time_rectangle) #time
screen.blit(header_surface, header_rectangle) #header
pygame.display.flip()
gos_shown = get_millis()
while gos_shown > get_millis() - 15000:
handle_events()
if GPIO.input(startPin) == True and gos_shown < get_millis() - 1000:
gos_shown = 0
#while GPIO.input(startPin) == False:
# handle_events()
#while GPIO.input(startPin) == True:
# handle_events()
#while GPIO.input(startPin) == False:
# handle_events()*/
clearScreen()
time.sleep(1)
CODE (alt)
#!/usr/bin/env python
#coding=utf-8
import pygame, sys, time, os, RPi.GPIO as GPIO
from pygame.locals import *
#GPIO
startPin = 32
errorPin = 31
enableErrorTimeAddingPin = 15
shutdownPin = 3
GPIO.setmode(GPIO.BOARD)
GPIO.setup(startPin, GPIO.IN)
GPIO.setup(errorPin, GPIO.IN)
GPIO.setup(enableErrorTimeAddingPin, GPIO.IN)
GPIO.setup(shutdownPin, GPIO.IN)
#other constants
timePerError = 5
screenSizeX = 900
screenSizeY = 900
pygame.init()
#colors
redColor = pygame.Color(255, 0, 0)
blackColor = pygame.Color(0, 0, 0)
whiteColor = pygame.Color(255, 255, 255)
grayColor = pygame.Color(128, 128, 128)
mainFontColor = redColor
#fonts
font = pygame.font.Font('freesansbold.ttf', 90)
def toggle_fullscreen():
screen = pygame.display.get_surface()
tmp = screen.convert()
caption = pygame.display.get_caption()
cursor = pygame.mouse.get_cursor() # Duoas 16-04-2007
w,h = screen.get_width(),screen.get_height()
flags = screen.get_flags()
bits = screen.get_bitsize()
pygame.display.quit()
pygame.display.init()
screen = pygame.display.set_mode((w,h),flags^FULLSCREEN,bits)
screen.blit(tmp,(0,0))
pygame.display.set_caption(*caption)
pygame.key.set_mods(0) #HACK: work-a-round for a SDL bug??
pygame.mouse.set_cursor( *cursor ) # Duoas 16-04-2007
return screen
def clearScreen():
screen.fill(blackColor)
return
def handle_events():
if GPIO.input(shutdownPin) == True:
shutdown_raspberry()
for event in pygame.event.get():
if event.type == KEYDOWN and event.key == K_ESCAPE:
shutdown_raspberry()
else:
if event.type == pygame.QUIT or event.type == KEYDOWN:
exit_application()
return
def exit_application():
pygame.quit()
sys.exit()
return
def shutdown_raspberry():
os.system("sudo shutdown -h now")
return
pygame.mouse.set_visible(False) # hide mouse
screen = pygame.display.set_mode((screenSizeX, screenSizeY), pygame.FULLSCREEN)
#pygame.display.set_caption('Heisser Draht') # not required for fullscreen application
#screen = toggle_fullscreen()
while True: # main loop
#global label storage
time_surface = 0
errors_surface = 0
time_rectangle = 0
errors_rectangle = 0
header_surface = font.render('Dr' + u'ü' + 'cken Sie Start!', True, mainFontColor)
header_rectangle = header_surface.get_rect()
header_rectangle.topleft = (0, 100)
screen.blit(header_surface, header_rectangle)
pygame.display.flip()
while GPIO.input(startPin) == False: #wait for the user to press start button
handle_events()
start_time = int(time.time())
errors = 0
errorAdded = False
justStarted = True
header_surface = font.render('Spiel l' + u'ä' + 'uft!', True, mainFontColor)
while True: # game running
handle_events()
if GPIO.input(errorPin) == True:
if errorAdded == False:
errors += 1
errorAdded = True
else:
errorAdded = False
int_time = int(time.time()) - start_time
if GPIO.input(enableErrorTimeAddingPin) == True:
int_time = int(time.time()) - start_time + errors * timePerError
time_surface = font.render('Zeit: ' + str(int_time) + 's', True, mainFontColor)
time_rectangle = time_surface.get_rect()
time_rectangle.topleft = (0, 300)
errors_surface = font.render('Fehler: ' + str(errors), True, mainFontColor)
errors_rectangle = errors_surface.get_rect()
errors_rectangle.topleft = (0, 400)
clearScreen()
screen.blit(errors_surface, errors_rectangle) #errors
screen.blit(time_surface, time_rectangle) #time
screen.blit(header_surface, header_rectangle) #header
pygame.display.flip()
if GPIO.input(startPin) == False:
justStarted = False
if GPIO.input(startPin) == True and justStarted == False:
break
clearScreen()
header_surface = font.render('Game over!', True, mainFontColor)
screen.blit(errors_surface, errors_rectangle) #errors
screen.blit(time_surface, time_rectangle) #time
screen.blit(header_surface, header_rectangle) #header
pygame.display.flip()
while GPIO.input(startPin) == False:
handle_events()
while GPIO.input(startPin) == True:
handle_events()
while GPIO.input(startPin) == False:
handle_events()
clearScreen()
time.sleep(1)