Banner Ausblenden
Kleines Logo

Willkommen auf PSI-Online

Sie befinden sich in: Unterrichtsangebote Fächer Fachbereich III Informatik Arduino LED-Projekte LED-Spiel+Joystick

LED-Spiel+Joystick

Planung: Die Gestaltung eines Spieles mit Hilfe eines Joysticks, welches einem Punktestand sowie Benutzername anzeigt.

Umsetzung:
 
nicht geglückt:
 

Material:
 
Aufbau:
 
aufbau

Code:
#include "erste10.h"
#include "zweite30.h"
#include "dritte35.h"
#include "vierte15.h"
const int SW_pin = 2;
const int Y_pin = 0;
const int X_pin = 1;
const int led1 = 4;//blau oben:X = hoch
const int led2 = 6;//rot rechts:Y = hoch
const int led3 = 8;//blau unten:X = tief
const int led4 = 10;//rot links:Y = tief
int punkte = 0;
int highscore = 30;
int neuerhighscore = 0;

void setup() {
    pinMode(SW_pin, INPUT);
    digitalWrite(SW_pin, HIGH);
    Serial.begin(9600);
    pinMode(led1, OUTPUT);
    pinMode(led2, OUTPUT);
    pinMode(led3, OUTPUT);
    pinMode(led4, OUTPUT);
    Serial.println("Die Regeln: Bewegen Sie den Joystick in Richtung der aufleuchtenden LED!");
    Serial.println("Zum Starten auf den Joystick druecken!");
   
}
void loop() {
  if(digitalRead(SW_pin) == 0){
    Serial.print("Viel Spass!");
    Serial.print("\n");
    delay(500);
    erste10();
    zweite30();
    dritte35();
    vierte15();
    digitalWrite(led1, HIGH);
    digitalWrite(led2, HIGH);
    digitalWrite(led3, HIGH);
    digitalWrite(led4, HIGH);
    delay(500);
    digitalWrite(led1, LOW);
    digitalWrite(led2, LOW);
    digitalWrite(led3, LOW);
    digitalWrite(led4, LOW);
    delay(500);
    digitalWrite(led1, HIGH);
    digitalWrite(led2, HIGH);
    digitalWrite(led3, HIGH);
    digitalWrite(led4, HIGH);
    delay(500);
    digitalWrite(led1, LOW);
    digitalWrite(led2, LOW);
    digitalWrite(led3, LOW);
    digitalWrite(led4, LOW);
    punkte = punktea + punkteb + punktec + punkted;
    Serial.println("Herzlichen Glueckwunsch!");
    Serial.print("Sie haben ");
    Serial.print(punkte);
    Serial.print(" Punkte von 100 moeglichen Punkten erspielt.");
    Serial.print("\n");
    neuerhighscore = punkte;
    if(neuerhighscore > highscore){
      Serial.print("Neuer Highscore!");
      Serial.print("\n");
      Serial.print("Bisheriger Highscore: ");
      Serial.print(highscore);
      Serial.print("\n");
      highscore = neuerhighscore;
      neuerhighscore = 0;
    }
    if(neuerhighscore == highscore){
      delay(1);
    }
    else
    {
      Serial.print("Highscore: ");
      Serial.print(highscore);
      neuerhighscore = 0;
    }
    Serial.print("\n");
    Serial.print("\n");
    Serial.println("Zum Starten auf den Joystick druecken");
    digitalWrite(led1, LOW);
    digitalWrite(led2, LOW);
    digitalWrite(led3, LOW);
    digitalWrite(led4, LOW);
  }
}

 


erste10.h:

int leda = 0;
int achsea = 0;
int zahla = 0;
const int Y_pina = 0;
const int X_pina = 1;
const int led1a = 4;//blau oben:X = hoch
const int led2a = 6;//rot rechts:Y = hoch
const int led3a = 8;//blau unten:X = tief
const int led4a = 10;//rot links:Y = tief
int punktea = 0;
int pina = 0;
 
void erste10(){
  punktea = 0;
  for(int i = 0; i < 10; i++){
    digitalWrite(led1a, LOW);
    digitalWrite(led2a, LOW);
    digitalWrite(led3a, LOW);
    digitalWrite(led4a, LOW);
    leda = random(1, 5);
    if(leda == 1){
      achsea = X_pina;
      zahla = 700;
      pina = led1a;
    }
    if(leda == 2){
      achsea = Y_pina;
      zahla = 700;
      pina = led2a;
    }
    if(leda == 3){
      achsea = X_pina;
      zahla = 450;
      pina = led3a;
    }
    if(leda == 4){
      achsea = Y_pina;
      zahla = 450;
      pina = led4a;
    }
    digitalWrite(pina, HIGH);
    for(int b = 0; b < 1000; b++){
      if(zahla == 700){
        if(analogRead(achsea) > zahla ){
          digitalWrite(led1a, LOW);
          digitalWrite(led2a, LOW);
          digitalWrite(led3a, LOW);
          digitalWrite(led4a, LOW);
          delay(500);
          punktea = punktea + 1;
        }
        else
        {
          delay(1);
        }
      }
      else
      {
        if(analogRead(achsea) < zahla ){
          digitalWrite(pina, LOW);
          delay(500);
          punktea = punktea + 1;
        }
        else
        {
          delay(1);
        }
      }
    }
  }
}

zweite30.h:

int ledb = 0;
int achseb = 0;
int zahlb = 0;
const int Y_pinb = 0;
const int X_pinb = 1;
const int led1b = 4;//blau oben:X = hoch
const int led2b = 6;//rot rechts:Y = hoch
const int led3b = 8;//blau unten:X = tief
const int led4b = 10;//rot links:Y = tief
int punkteb = 0;
int pinb = 0;
 
void zweite30(){
  punkteb = 0;
  for(int i = 0; i < 30; i++){
    digitalWrite(led1b, LOW);
    digitalWrite(led2b, LOW);
    digitalWrite(led3b, LOW);
    digitalWrite(led4b, LOW);
    ledb = random(1, 5);
    if(ledb == 1){
      achseb = X_pinb;
      zahlb = 700;
      pinb = led1b;
    }
    if(ledb == 2){
      achseb = Y_pinb;
      zahlb = 700;
      pinb = led2b;
    }
    if(ledb == 3){
      achseb = X_pinb;
      zahlb = 450;
      pinb = led3b;
    }
    if(ledb == 4){
      achseb = Y_pinb;
      zahlb = 450;
      pinb = led4b;
    }
    digitalWrite(pinb, HIGH);
    for(int b = 0; b < 750; b++){
      if(zahlb == 700){
        if(analogRead(achseb) > zahlb ){
          digitalWrite(pinb, LOW);
          delay(500);
          punkteb = punkteb + 1;
        }
        else
        {
          delay(1);
        }
      }
      else
      {
        if(analogRead(achseb) < zahlb ){
          digitalWrite(pinb, LOW);
          delay(500);
          punkteb = punkteb + 1;
        }
        else
        {
          delay(1);
        }
      }
    }
  }
}


dritte35.h:

 

int ledc = 0;
int achsec = 0;
int zahlc = 0;
const int Y_pinc = 0;
const int X_pinc = 1;
const int led1c = 4;//blau oben:X = hoch
const int led2c = 6;//rot rechts:Y = hoch
const int led3c = 8;//blau unten:X = tief
const int led4c = 10;//rot links:Y = tief
int punktec = 0;
int pinc = 0;
 
void dritte35(){
  punktec = 0;
  for(int i = 0; i < 35; i++){
    digitalWrite(led1c, LOW);
    digitalWrite(led2c, LOW);
    digitalWrite(led3c, LOW);
    digitalWrite(led4c, LOW);
    ledc = random(1, 5);
    if(ledc == 1){
      achsec = X_pinc;
      zahlc = 700;
      pinc = led1c;
    }
    if(ledc == 2){
      achsec = Y_pinc;
      zahlc = 700;
      pinc = led2c;
    }
    if(ledc == 3){
      achsec = X_pinc;
      zahlc = 450;
      pinc = led3c;
    }
    if(ledc == 4){
      achsec = Y_pinc;
      zahlc = 450;
      pinc = led4c;
    }
    digitalWrite(pinc, HIGH);
    for(int b = 0; b < 500; b++){
      if(zahlc == 700){
        if(analogRead(achsec) > zahlc ){
          digitalWrite(led1c, LOW);
          digitalWrite(led2c, LOW);
          digitalWrite(led3c, LOW);
          digitalWrite(led3c, LOW);
          delay(500);
          punktec = punktec + 1;
        }
        else
        {
          delay(1);
        }
      }
      else
      {
        if(analogRead(achsec) < zahlc ){
          digitalWrite(pinc, LOW);
          delay(500);
          punktec = punktec + 1;
        }
        else
        {
          delay(1);
        }
      }
    }
  }
}

vierte15.h:

int ledd = 0;
int achsed = 0;
int zahld = 0;
const int Y_pind = 0;
const int X_pind = 1;
const int led1d = 4;//blau oben:X = hoch
const int led2d = 6;//rot rechts:Y = hoch
const int led3d = 8;//blau unten:X = tief
const int led4d = 10;//rot links:Y = tief
int punkted = 0;
int pind = 0;
 
void vierte15(){
  punkted = 0;
  for(int i = 0; i < 15; i++){
    digitalWrite(led1d, LOW);
    digitalWrite(led2d, LOW);
    digitalWrite(led3d, LOW);
    digitalWrite(led4d, LOW);
    ledd = random(1, 5);
    if(ledd == 1){
      achsed = X_pind;
      zahld = 700;
      pind = led1d;
    }
    if(ledd == 2){
      achsed = Y_pina;
      zahld = 700;
      pind = led2d;
    }
    if(ledd == 3){
      achsed = X_pina;
      zahld = 450;
      pind = led3d;
    }
    if(ledd == 4){
      achsed = Y_pina;
      zahld = 450;
      pind = led4d;
    }
    digitalWrite(pind, HIGH);
    for(int b = 0; b < 250; b++){
      if(zahld == 700){
        if(analogRead(achsed) > zahld ){
          digitalWrite(pind, LOW);
          delay(500);
          punkted = punkted + 1;
        }
        else
        {
          delay(1);
        }
      }
      else
      {
        if(analogRead(achsed) < zahld ){
          digitalWrite(pind, LOW);
          delay(500);
          punkted = punkted + 1;
        }
        else
        {
          delay(1);
        }
      }
    }
  }
}

 


Von Adrian Schmidt und Jannis Engemann

Erstellt: Adrian Schmidt (14.02.2017) Letzte Änderung: Adrian Schmidt (14.02.2017)