Hauptmenü

Attiny 44 Ampel für zwei Ampelphasen

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 );
}

Hinweise zur Batterieentsorgung

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:

Hinweise zur Batterieentsorgung

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

 

 

Heißer Draht Bestellung

 

Bestellen Sie hier ihre Schaltung oder ihren heißen Draht. Sie haben Fragen zu einem Spiel oder möchten ein individuelles Angebot, dann zögern Sie nicht und holen sich Ihr Angebot noch heute ein.

 

Heißer Draht Bestellung

Pflichtfeld *

---------------------------------------------


---------------------------------------------


---------------------------------------------


---------------------------------------------


---------------------------------------------


Adresse 


---------------------------------------------


Zu ihrer Sicherheit kommt der Kaufvertrag erst zustanden wenn sie eine Rechnung erhalten und überwiesen haben. 

  

 Sie erhalten eine Kopie dieser Nachricht an die angegeben E-Mail Adresse. 

 

 

Teetimer Arduinocode

arduino tee wecker anfaenger projekt

 

Arduino IDE Code


#include <Servo.h>

Servo servo_pin_11;
int zeit = 0 ;
int wiederhole = 0 ;
int fertig = 0 ;
int a;

void setup()
{
servo_pin_11.attach(11);
Serial.begin(9600);
pinMode( 10 , OUTPUT);
pinMode( 6 , OUTPUT);
servo_pin_11.write( 35 );

zeit = 0 ;

wiederhole = 5 ;

fertig = 40 ;

}

void loop()
{
Serial.print("programm start");
Serial.println();
servo_pin_11.attach(11);
digitalWrite( 10 , HIGH );
digitalWrite( 6 , LOW );
delay( 1000 );
servo_pin_11.write( 35 );
delay( 1000 );
servo_pin_11.detach();
Serial.print("poti auslesen");
Serial.println();
zeit = map ( analogRead(4) , 0 , 1023 , 0 , 30000 ) ;
for (a=1; a<= ( wiederhole ); ++a )
{
Serial.print("1 nach");
Serial.print(zeit);
Serial.println();
delay( zeit );
}
servo_pin_11.attach(11);
delay( 100 );
for (a=1; a<= ( 3 ); ++a )
{
Serial.print("ruetteln eins");
Serial.println();
servo_pin_11.write( 40 );
delay( 300 );
servo_pin_11.write( 30 );
delay( 300 );
}
servo_pin_11.detach();
for (a=1; a<= ( wiederhole ); ++a )
{
Serial.print("2 nach");
Serial.print(zeit);
Serial.println();
delay( zeit );
}
servo_pin_11.attach(11);
delay( 100 );
for (a=1; a<= ( 3 ); ++a )
{
Serial.print("rueteln zwei");
Serial.println();
servo_pin_11.write( 40 );
delay( 300 );
servo_pin_11.write( 30 );
delay( 300 );
}
servo_pin_11.detach();
for (a=1; a<= ( wiederhole ); ++a )
{
Serial.print("3 nach");
Serial.print(zeit);
Serial.println();
delay( zeit );
}
servo_pin_11.attach(11);
delay( 100 );
for (a=1; a<= ( 3 ); ++a )
{
Serial.print("rueteln drei");
Serial.println();
servo_pin_11.write( 40 );
delay( 300 );
servo_pin_11.write( 30 );
delay( 300 );
}
servo_pin_11.detach();
for (a=1; a<= ( wiederhole ); ++a )
{
Serial.print("4 nach");
Serial.print(zeit);
Serial.println();
delay( zeit );
}
servo_pin_11.attach(11);
delay( 100 );
Serial.print("Servo Endposition");
Serial.println();
for (a=1; a<= ( 44 ); ++a )
{
fertig = ( fertig + 1 ) ;
servo_pin_11.write( fertig );
delay( 30 );
}
servo_pin_11.write( 85 );
delay( 1000 );
Serial.print("summer start");
Serial.println();
servo_pin_11.detach();
digitalWrite( 6 , HIGH );
delay( 2000 );
digitalWrite( 6 , LOW );
delay( 3000 );
Serial.print("blink start");
Serial.println();
for (a=1; a<= ( 500 ); ++a )
{
Serial.print("blinken 500");
Serial.println();
digitalWrite( 10 , LOW );
delay( 2000 );
digitalWrite( 10 , HIGH );
delay( 300 );
}
}

attiny 45 Dimmerfunktion mit Sleepmodus über rest


 
#include <avr/sleep.h>
#include <avr/interrupt.h>
#define BODS 7                     //BOD Sleep bit in MCUCR
#define BODSE 2                  //BOD Sleep enable bit in MCUCR
uint8_t mcucr1, mcucr2;
int led0= 0;
int led1 = 1;
int lcount = 0;
int dimmer = 255  ;
void goToSleep(void) {
    // GIMSK |= _BV(INT0);                                      //enable INT0
    // MCUCR &= ~(_BV(ISC01) | _BV(ISC00));      //INT0 on low level
    ACSR |= _BV(ACD);                                           //disable the analog comparator
    ADCSRA &= ~_BV(ADEN);                                //disable ADC
    set_sleep_mode(SLEEP_MODE_PWR_DOWN);
    sleep_enable();
    //turn off the brown-out detector.
    //must have an ATtiny45 or ATtiny85 rev C or later for software to be able to disable the BOD.
    //current while sleeping will be <0.5uA if BOD is disabled, <25uA if not.
    cli();
    mcucr1 = MCUCR | _BV(BODS) | _BV(BODSE);  //turn off the brown-out detector
    mcucr2 = mcucr1 & ~_BV(BODSE);
    MCUCR = mcucr1;
    MCUCR = mcucr2;
    sei();                               //ensure interrupts enabled so we can wake up again
    sleep_cpu();                   //go to sleep
    cli();                                //wake up here, disable interrupts
    // GIMSK = 0x00;           //disable INT0
    sleep_disable();               
    sei();                              //enable interrupts again (but INT0 is disabled from above)
}
void setup() {
  pinMode(led0, OUTPUT);
  pinMode(led1, OUTPUT);
}
void loop() {
  lcount += 1;
  
  analogWrite(0 , dimmer);
  analogWrite(1 , dimmer);
  delay( 700 );
  dimmer = ( dimmer - 1 ) ;
  
  if (lcount > 250) { goToSleep(); }
}
 
 

dimmer schaltung 3 volt nachtlicht kinder
 
 
Der Sleepcode ist nicht von mir, sondern nur von mir angepasst. Das Orginal findet ihr hier:  https://gist.github.com/JChristensen/5616922
 

Arduino und Ardublock Programm heisser Draht

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.  

1 ardublock heisser draht game feuer anfaenger

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. 

one chance heisser draht programm c

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)
{ ; }
}

 

 

heisser Draht mit c++ programmieren

Hier das einfache Script in c++ geschrieben. Wird ein Fehler an PIN 0 gemeldet, schaltet der Attiny 13, 23 oder 45 den Pin 1 auf high, wartet 700ms und schaltet ihn dann wieder auf low. Die MHz clock Frequenz bitte für euren Attiny nicht vergessen einzutragen. 
 
 
#include <avr/io.h>
#include <util/delay.h>
 
 
 
int main (void) {
 
 
  PORTB |= (1<<PB0);                              //  PB1 auf 0 -> als Eingang
 
  DDRB |=  (1<<PB1);                              //  PB1 auf 1 -> als Ausgang, LED über 220 Ohm anschließen, Summer über einen Transitor anschließen. 
 
  while(1) {
    if (PINB & (1<<PB0)) {                        //Bedingung für Fehler 
      PORTB |= (1<<PB1);                        //Ausgang PB1 auf 1 setzen
      _delay_ms(700); 
  }
 
    else {
      PORTB &= ~(1<<PB1);                      //Aus, wenn Bedingung nicht erfüllt. 
    }
  }
 
}
 
 
 
 
 

Raspberry-pi-Projekt, heißer Draht

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)

Unterstützung für die Seite

Durch Werbung decke ich die laufenden Kosten dieser Seite ab, wie die Joomla Pflege und den Webspace. Für Werkzeug und Material reicht die Werbung aber nicht. Wenn dir die Seite gefällt und du öfters hier bist, würde ich mich über eine kleine Unterstützung und Anerkennung natürlich sehr freuen.

Weiterlesen: Unterstützung für die Seite

AGB

Allgemeine Geschäftsbedingungen

Angaben gemäß § 5 TMG:
Inhaber: Ronnie Berzins
Rechtsform: Kleingewerbe

www.kreativekiste.de

www.heisser-draht-manufaktur.de

"Kreative Kiste": Handel, Vermarktung und Bereitstellung von Kreativprodukten
Anschrift siehe unten. 

Weiterlesen: AGB