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.

13 (Dropbox) Lauf der Dinge

2. Dezember 2011

Die letzte Aufgabe bestand darin ein Teilstück einer "Lauf der Dinge"- Abfolge zu gestalten. Wir hatten mit unserer Dropbox die Ehre den Anfang zu gestalten. Unser Projekt mit dem Namen "Dropbox" ist ein Würfel. Dieser wird durch "Lärm" aufgeladen und erwacht so zum leben. Er beginnt sich langsam aufzurichten (mit Hilfe der Servomotoren, welche diagona angeordnet sind) und mit den LED's zu blinken. Immer schneller wird dieses Blinken gefolgt von einem Ton, welcher einen hinunterfallenden Gegenstand imitiert (Comicsound). Am Schluss wird durch 2 Spotlights LED die nächste Aktion angekündigt: Ein kleiner Würfel wird ausgeworfen welcher auf einen Piezo Sensor fällt und unser Signal an den nächsten Punkt gibt. Produktionsdauer: 24h Bestandteile : Arduino Board, Lautsprecher, 10 LED (blau), 2 Lauf-LED, 3 Schift-Register, 1 9V Batterie, 1 Transistor, 2 Servomotoren, 1 Elektromagnet, Plexiglasgehäuse Code:  
#include <Servo.h> // Library für Servo

#define LED1 5 //Spotlights
#define LED2 6 // über Arduino
#define LED3 7 // die anderen

#define SERVO1 9 
#define SERVO2 8

#define AUDIO 10
#define MAGNET 12

#define MIC 0

int clockPin = 4;
int dataPin = 3;
int latchPin = 2;

int oldVal,newVal=0;

Servo myServo1;
Servo myServo2;
 //int maxAus = 60;
 int maxAus = 70;

int i = 0;
 
int data1 = B00000000;
int data2 = B00000000;
int data3 = B00000000;
 
boolean start = false;

void setup()
{
  Serial.begin(9600);
  pinMode(LED1,OUTPUT);
  pinMode(LED2,OUTPUT);
  pinMode(LED3,OUTPUT);
  
  pinMode(latchPin, OUTPUT);
  pinMode(clockPin, OUTPUT);
  pinMode(dataPin, OUTPUT);
  
  pinMode(MAGNET, OUTPUT);
 
  digitalWrite(MAGNET, 1);
  digitalWrite(LED1, 0);
  digitalWrite(LED2, 0);
  digitalWrite(LED3, 0);
  
  myServo1.attach(SERVO1);
  myServo2.attach(SERVO2);
  myServo1.write(165);
  myServo2.write(180);
  noTone(AUDIO);
  
  for(int j = 0; j<=5;j ++)
  {
   digitalWrite(latchPin, 0);
   shiftOut(dataPin,clockPin,MSBFIRST,B11111111);
   shiftOut(dataPin,clockPin,MSBFIRST,B11111111);
   shiftOut(dataPin,clockPin,MSBFIRST,B11111111);
   digitalWrite(latchPin, 1);
   delay(400);
   digitalWrite(latchPin, 0);
   shiftOut(dataPin,clockPin,MSBFIRST,B00000000);
   shiftOut(dataPin,clockPin,MSBFIRST,B00000000);
   shiftOut(dataPin,clockPin,MSBFIRST,B00000000);
   digitalWrite(latchPin, 1);
   delay(400);
  }
  delay(500);
}


void loop()
{
  noTone(AUDIO);
  
  newVal = analogRead(MIC);
  newVal = 0.8 * oldVal + 0.2 * newVal;
  
  Serial.print(newVal);
  Serial.print("\t");
  Serial.println();
  
  if(newVal <=400)
  {
    if (i<=19)
    {
      if( i <= 7)
      {
        bitWrite(data1,i,1);
        digitalWrite(latchPin, 0);
        shiftOut(dataPin,clockPin,MSBFIRST,data3);
        shiftOut(dataPin,clockPin,MSBFIRST,data2);
        shiftOut(dataPin,clockPin,MSBFIRST,data1);
        digitalWrite(latchPin, 1);
      }
      if(( i>=7 ) && (i <= 15))
      {
        bitWrite(data2,i-7,1);
        digitalWrite(latchPin, 0);
        shiftOut(dataPin,clockPin,MSBFIRST,data3);
        shiftOut(dataPin,clockPin,MSBFIRST,data2);
        shiftOut(dataPin,clockPin,MSBFIRST,data1);
        digitalWrite(latchPin, 1);
      }
      if(( i>=15 ) && (i <= 19))
      {
        bitWrite(data3,i-15,1);
        digitalWrite(latchPin, 0);
        shiftOut(dataPin,clockPin,MSBFIRST,data3);
        shiftOut(dataPin,clockPin,MSBFIRST,data2);
        shiftOut(dataPin,clockPin,MSBFIRST,data1);
        digitalWrite(latchPin, 1);
        if(i == 15)
        {
          start = true;
        }
      }
    }
    i++;
    delay(200);
  }
  if(start == true)
  {
   for(int i = 0; i<=2; i++)
  {
    digitalWrite(LED3, 1);
    digitalWrite(LED2, 1);
    delay(100);
    digitalWrite(LED2, 0);
    digitalWrite(LED3, 0);
    delay(100);
  }
  for (int i=180; i>=maxAus; i--)
  {
    myServo1.write(i-15);
    myServo2.write(i);
    delay(15);
    tone(AUDIO,map(i,180,maxAus,100,1000));
  }
  delay (1000);
  for(int i = 0; i<=100; i++)
  {
    digitalWrite(LED3, 0);
    digitalWrite(LED2, 1);
    tone(AUDIO,1000);
    delay(100-i);
    digitalWrite(LED2, 0);
    digitalWrite(LED3, 1);
    tone(AUDIO,800);
    delay(100-i);
  }
  digitalWrite(LED3, 0);
  digitalWrite(LED1, 1);
  for (int i= 0; i<=2000; i++)
  {
    tone(AUDIO,2000-i);
    delay(2); 
  }
  digitalWrite(MAGNET, 0);
  noTone(AUDIO);
  for(int i = 0; i<=100000000;i++)
  {
   digitalWrite(LED1, 0);
   delay(100);
   digitalWrite(LED1, 1);
   delay(100);
  }
  delay(100000000);
  }
  oldVal = newVal;
}