Willkommen auf unserem Seminar-Blog

Immer auf dem aktuellen Stand bleiben

Dieser Seminar-Blog befindet sich noch im Aufbau und wird in den kommenden Tagen entsprechend verfeinert.

Member Login

Lost your password?

Registration is closed

Sorry, you are not allowed to register by yourself on this site!

You must either be invited by one of our team member or request an invitation by email at viad.info {at} zhdk {dot} ch.

10 Soundbox

17. November 2011

soundbox Yves Gugger & Fabian Troxler Wir hatten die Aufgabe innerhalb von einem Tag einen Servo in ein Gehäuse einzubauen und ihn mit Hilfe von Arduino anzusteuern. Zusätzliche Sensoren,Motoren usw waren erlaubt. Unser Projekt ist die "Soundbox" und besteht aus einem Lautsprecher, einem Infrarot-Bewegungssensor,  einem Servomotor und dem Arduino Board. Wir verbauten das Ganze in ein Plexiglas - Gehäuse. Die Soundbox reagiert mit Hilfe des Sensors auf die Bewegung des Menschen. Wenn ich mich der "Soundbox" nähere und mich der Sensor erfasst hat, erzeugt die Soundbox einen unheimlichen Sound. Da die "Soundbox" geschlossen ist, hört man den Sound zunächst nur leise. Nähert man sich der "Soundbox" weiter, öffnet sich die Soundbox und der Ton wird lauter. Entfernt man sich von der "Soundbox", schliesst sich diese wieder und der Ton wird leiser. Arduino-code:
#include <Servo.h> // Library für Servo
#define SERVO_PIN 9
#define IN_PIN 0
#define SOUND 7

Servo myServo;
int oldVal = 0; //variabel für smoothing
int newVal = 0; //variabel für smoothing
int maxHigh = 180; // maximaler Wert für das öffnen

int rTone = 300;

void setup()
{
  Serial.begin(9600);
  myServo.attach(SERVO_PIN);
  myServo.write(0);
  delay(500);
}

void loop()
{
  newVal = analogRead(IN_PIN);
  newVal = (0.98*oldVal)+(0.02*newVal); //smoothing

   if (newVal >= maxHigh) // zum sicher gehen das newVal nicht grösser als maxHigh wird
   {
    newVal = maxHigh;
   }
  myServo.write(map(newVal,50,maxHigh,0,125));

  if (newVal <25)
  {
    rTone = random(50,1000);
  }

  if (newVal >=25) //soundzeugs
  {
     tone(SOUND,rTone);
     delay(2);
     tone(SOUND,2*rTone);
  }
  else
  {
    noTone(SOUND); //soundabstellen
  }

  Serial.print(newVal);
  Serial.print(",");
  Serial.println(myServo.read());
  oldVal = newVal;

}