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