Tischkicker goes Arduino

Wir haben angefangen, unseren alten Tischkicker zu automatisieren. Das erste Teilprogramm zum Erfassen der Tore, sowie der Versuchsaufbau einer Lichtschranke im Torbereich, haben wir heute erfolgreich fertiggestellt. Realisiert haben wir das mit einem Arduino. 

Die Verkabelung für das nachfolgende Programm haben wir übernommen von hier und hier.

#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
int eingang= A0;
int sensorWert = 0;

//wird in funktion justiere gesetzt
float durchschnitt = 0;


void justiere(int n, float delaytime)
{
  /* Parameter:
   *  int n - anzahl der proben die fuer den durchschnitt genommen werden sollen
   *  float delaytime - pause zwischen den proben, ganz ohne pause wird der durchschnitt
   *    wahrscheinlich verunreinigt falls man ihn zufaellig zu nem schlechten zeitpunkt nimmt
   *    z.B.: wenn die hand ueberm sensor ist oder so, so ist der durchschnitt aussagekraeftiger
   *      man kann aber natuerlich auch hier mit der exakten delayime und ob ueberhaupt 
   *      noetig experimentieren
   */
 
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Justiere..." );
  
  //summiere die werte
  float summe = 0;
  for(int i=0; i < n; i++)
  {
    summe += analogRead(eingang);
    delay(delaytime);
  }
  //teile durch anzahl der werte ===> durchschnitt
  durchschnitt = summe / n;
  lcd.setCursor(0, 0);
  lcd.print("Normalwert:" );
  lcd.setCursor(0, 1);
  lcd.print( durchschnitt );
}

void setup()
{
Serial.begin(9600);
lcd.begin(16, 2);
lcd.clear();
//anfangsjustierung von "durchschnittswert"
justiere(10, 50);
}

void loop()
{
lcd.setCursor(0, 0);
sensorWert=analogRead(eingang);

//betrag der abweichung vom durchschnitt / durchschnitt = prozentuale abweichung 
//wenn die einen wert uebertrifft (mit dem kann man experimetieren, was am besten funktioniert)
//TOR
if(abs(sensorWert - durchschnitt) / durchschnitt > 0.3)
{
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("TOR, Sensorwert:" );
  lcd.setCursor(0, 1);
  lcd.print( sensorWert );
  //abwarten bis wieder normalzustand sein sollte. zeit um das tor zu feiern
  //ausserdem sollte ja zumindestens kurz TOR angezeigt werden
  delay(2000);
  //neu justieren
  justiere(10, 50);
}
delay (0);
}

Im kommenden Coderdojo wollen wir die Lichschranke, die bisher aus einer LED und einem Fotosensor besteht, mit einem Laserpointer perfektionieren. Hier unser vorläufiger Aufbau, der allerdings zu empfindlich bei wechselndem Umgebungslicht ist: