Banner Ausblenden
Kleines Logo

Willkommen auf PSI-Online

Digital Pet (Tamagotchi)

Als Vorübung zu den komplexeren Schaltungen, haben wir mit Arduino Bauteilen eine Art Tamagotchi Figur nachgebaut, wobei allerdings nicht viel Wert auf das Design gelegt wurde ;-)

Diesen Aufbau möchte ich hier kurz erklären.

Als Basis dient eine Breadbord und ein Arduino UNO. Die Augen des Tamagotchis stellen zwei gelbe LEDs dar. Als Mund haben wir einen aktiven Buzzer verwendet, der analog über eine angelegt Spannung einen Ton erzeugt.

Der Tamagotchi funktioniert folgendermaßen:

Die beiden Augen blinzeln in zufällig generierten Zeitabständen. Nach einer gewissen Zeit, fängt der Tamagotchi an, Töne von sich zu geben. Deren Intensität wird immer größer. Um ihn zu beruhigen, muss man den Tamagotchi "streicheln".
Diese Aufgabe übernimmt ein Fotowiderstand, der als Helligkeitssensor fungiert. Sobald der Tamagotchi wieder vernachlässigt wird, fängt er erneut an zu meckern.

Sketch:

//Digital Pet 2019; Tamagotchi

int buzzer=9;
int LED1=10;
int LED2=11;
int speakerPin=9;
int sensorPin=1;
int sensorSchwelle=20;
int lichtnormal;
int stresslevel=2000;


void setup() {
  // put your setup code here, to run once:
pinMode(buzzer, OUTPUT);
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
lichtnormal=analogRead(sensorPin);//Über den Fotowiderstand wird die als normal registrierte Umgebungshelligkeit abgelesen
}

void loop() {
//Beschwerde
  if(random(stresslevel)==1){   

/*Der Arduino lässt einen Zufallsgenerator mit den Zahlen 0 bis 2000 laufen; wenn dieser eine 1 ausgibt, gibt der Tamagotchi...*/

    tone(buzzer, 300);
    delay(800);
    noTone(buzzer); //...für 800 Millisekunden einen Ton aus
    delay(500);
    stresslevel = stresslevel /2; //Danach wird der Stresslevel halbiert, sodass sich die Intensität der Töne mit jeder Tonausgabe erhöht
  }
  if (stresslevel<50){ 

/*Sobald das Stresslevel kleiner als 50 wird, wird es auf 100 urückgesetzt, weil sonst die Zeiten zu klein werden. Damit ist praktisch der höchste [niedrigste] Stresslevel erreicht*/

    stresslevel=100;
  }
 
  // put your main code here, to run repeatedly:
//LEDs für Augen einschalten
  digitalWrite(LED1, HIGH);
  digitalWrite(LED2, HIGH);

//Augenzwinkern
  if (random(500)==1){   

/*Der Arduino lässt einen Zufallsgenerator mit den Zahlen 0 bis 500 laufen;
wenn dieser eine 1 ausgibt, blinzelt der Tamagotchi...*/

  digitalWrite(LED1, LOW);
  digitalWrite(LED2, LOW);
  delay(50);    //...unf zwar für 50 Millisekunden
  }

//Schnurren
if (analogRead(sensorPin)>lichtnormal+sensorSchwelle){  //Wenn der Sensor eine Verdunklung (eine Hand) registriert...
  tone(buzzer,0.001); //gibt der Buzzer einen Ton aus, der einem Schnurren ähnlich klingt
  delay(700);
  stresslevel=2000;
}
else{
  noTone(buzzer);
}
delay(10);
}

 

 

erstellt: Schuljahr 2019/20
Florian Porth, 10b

Erstellt: Florian Porth (17.12.2019) Letzte Änderung: Florian Porth (28.03.2020)