kramann.info
© Guido Kramann

Login: Passwort:










3.7 Beispiele zur Verwendung verschiedener Sensoren mit einem Arduino-Micro

3.7 Examples of using different sensors with an Arduino Micro (EN google-translate)

3.7 Przykłady użycia różnych czujników z Arduino Micro (PL google-translate)

Simple scheme for an interactive installation.

Bild 3.7-1: Simple scheme for an interactive installation.

Durch die Verwendung von Sensoren kann eine langweilige Sache plötzlich sehr interessant werden. Jetzt ist der Mensch nicht mehr nur passiver Betrachter, sondern kann selber in die Installation eingreifen. Wir betreten das Gebiet der Mensch - Maschine - Schnittstellen. Hier ist ein Beispiel, bei man selber spielerisch komponieren kann:

By using sensors, a boring thing can suddenly become very interesting. Now man is no longer just a passive observer, but can intervene in the installation himself. We enter the area of ​​human - machine interfaces. Here's an example where you can playfully compose yourself:

Używając czujników, nudne rzeczy mogą nagle stać się bardzo interesujące. Teraz człowiek nie jest już tylko biernym obserwatorem, ale może sam zainterweniować w instalacji. Wchodzimy w obszar interfejsów człowiek - maszyna. Oto przykład, w którym możesz żartobliwie komponować siebie:

http://www.kramann.info/___downloads/kiba_komponieren_mit_cpe_bach.ogg

Im folgenden werden kleine Sensor - Aktuator - Varianten auf der Basis des Arduino Micro vorgestellt. Hierbei werden auch die im vorangehenden Kapitel aufgezeigten Ideen für die Klangerzeugung aufgegriffen.

In the following, small sensor - actuator variants based on the Arduino Micro are presented. Here, the ideas for sound production outlined in the previous chapter are also taken up.

Poniżej przedstawiono małe warianty czujnik-siłownik oparte na Arduino Micro. Tutaj również zostały podjęte pomysły na produkcję dźwiękową nakreślone w poprzednim rozdziale.

Sound Installation 1

Sound Installation 1

Instalacja dźwięku 1

Diese Klanginstallation imitiert den Rhythmus vom Händeklatschen Man klatscht während die LED leuchtet. Der Rhythmus wird wiederholt während die LED aus ist.

This sound installation mimics the rhythm of clapping hands You clap while the LED is lit. The rhythm is repeated while the LED is off.

Ta instalacja dźwiękowa naśladuje rytm klaskania w dłonie Klaskacie, gdy świeci się dioda LED. Rytm powtarza się, gdy dioda LED jest wyłączona.

sheme of sound installation 1

Bild 3.7-2: sheme of sound installation 1

foto of sound installation 1

Bild 3.7-3: foto of sound installation 1

#define MEMORY 1000

int mic = 0;
bool REC = false;
unsigned long time=0;
bool arr[MEMORY];
int i=0;
void setup() 
{
    pinMode(12,OUTPUT);
    for(i=0;i<MEMORY;i++)
        arr[i]=false;
}


void loop() 
{
    time = millis()%(2*MEMORY);

    if(time<MEMORY)
    {
        digitalWrite(12,HIGH);
        mic = analogRead(0);
        if(mic<50)
           arr[time]=true;
    }
    else
    {
        digitalWrite(12,LOW);
        if(arr[time-MEMORY]==true)
        {
           arr[time-MEMORY]=false;
           tone(13,440,20);
        }   
    }
    delay(1);          
}

Code 3.7-1: sound_installation_01

sound_installation_01.zip

Sound Installation 2

Sound Installation 2

Instalacja dźwiękowa 2

Eine Rassel wird abhängig von den Werten eines Abstandssensors schneller oder langsamer geschüttelt.

A rattle shakes faster or slower depending on the values ​​of a distance sensor.

Grzechotka porusza się szybciej lub wolniej w zależności od wartości czujnika odległości.

sheme of sound installation 1

Bild 3.7-4: sheme of sound installation 1

foto of sound installation 1

Bild 3.7-5: foto of sound installation 1


//See also: File ... Examples ... Servo
#include <Servo.h>

Servo myservo;  // create servo object to control a servo
int sensor=0;
int inkrement = 1;
int angle = 0;
int direction = 1;
void setup() 
{
  myservo.attach(13);  // attaches the servo on pin 13 to the servo object
  Serial.begin(9600);
}


void loop() 
{
     sensor = analogRead(0);

     inkrement = sensor/5;
     if(inkrement>180)
         inkrement=180;
     if(inkrement<5)
         inkrement=0;

     angle+=direction*inkrement;
     if(angle>=180)    
     {
         direction=-1;         
     }
     if(angle<=0)    
     {
         direction=1;         
     }

     myservo.write(angle);

     delay(60);
}

Code 3.7-2: sound_installation_02

sound_installation_02.zip

Sound Installation 3

Sound Installation 3

Instalacja dźwiękowa 3

Ein Sensor vom Typ MPU6050 wird verwendet, um die zwei orthogonalen Richtungen die Beschleunigung zu messen. Der erste Wert steuert den Grad an Chaos in einer Chaos-Funktion. Der andere Wert kontrolliert die Geschwindigkeit der Tonabfolge, die mit den Chaoswerten gespielt wird.

An MPU6050 sensor is used to measure the two orthogonal directions of acceleration. The first value controls the degree of chaos in a chaos function. The other value controls the speed of the tone sequence played with the chaos values.

Czujnik MPU6050 służy do pomiaru dwóch prostopadłych kierunków przyspieszenia. Pierwsza wartość kontroluje stopień chaosu w funkcji chaosu. Druga wartość kontroluje prędkość sekwencji tonowej odtwarzanej z wartościami chaosu.

sheme of sound installation 1

Bild 3.7-6: sheme of sound installation 1

foto of sound installation 1

Bild 3.7-7: foto of sound installation 1

//Mittelwert omega=0.0348
//0.0485
//-0.0063

#include<math.h>
#include<Wire.h>

#define GYROSCALE 131.0
#define GYROOFFSET 2.71 //korrigierter Gyrooffset

//4.294.967.295  unsigned long
//    1.000.000  == 1s
//4.000.000.000  == 4000s
//1s == 1000ms == 1.000.000us


const int MPU=0x68;  // I2C address of the MPU-6050
int16_t AcX,AcY,AcZ;

double ax,ay,az;

double stellgroesse;
double m=0.0;

bool SERIELL = false;

//CHAOS FUNCTION

double y_old = 0.56;
double y_new = 0.0;
int value=0;
int i;
double r=3.5;

void setup() 
{  
  // put your setup code here, to run once:
  Wire.begin();
  Wire.beginTransmission(MPU);
  Wire.write(0x6B);  // PWR_MGMT_1 register
  Wire.write(0);     // set to zero (wakes up the MPU-6050)
  Wire.endTransmission(true);

  if(SERIAL==true)
      Serial.begin(9600);

}

void loop() 
{
  // put your main code here, to run repeatedly:
  Wire.beginTransmission(MPU);
  Wire.write(0x3B);  // starting with register 0x3B (ACCEL_XOUT_H)
  Wire.endTransmission(false);
  Wire.requestFrom(MPU,6,true);  // request a total of 14 registers
  AcX=Wire.read()<<8|Wire.read();  // 0x3B (ACCEL_XOUT_H) & 0x3C (ACCEL_XOUT_L)     
  AcY=Wire.read()<<8|Wire.read();  // 0x3D (ACCEL_YOUT_H) & 0x3E (ACCEL_YOUT_L)
  AcZ=Wire.read()<<8|Wire.read();  // 0x3F (ACCEL_ZOUT_H) & 0x40 (ACCEL_ZOUT_L)
  
  ax = (double)AcX;
  ay = (double)AcY;
  az = (double)AcZ;

  if(ax>15000.0)   //limitate
      ax=15000.0;
  if(ax<-15000.0)
      ax=-15000.0;

  if(ay>15000.0)  //scale
      ay=15000.0;
  if(ay<-15000.0)
      ay=-15000.0;

  ax+=15000.0;
  ay+=15000.0;

  ax/=30000.0;  //scale to [0,1]
  ay/=30000.0;

  r = 3.0 + ax;

  y_new = r*y_old*(1.0 - y_old);

  value = (int)(100.0*y_new);

  y_old = y_new;


  tone(13, 200 + 2*value);
  
  delay(10 + (int)(100.0*ay));

  if(SERIELL)
  {
      Serial.print(" arx = "); 
      Serial.print(ax,DEC);
      Serial.print(" ary = "); 
      Serial.println(ay,DEC);
      delay(333);
  }
}

Code 3.7-3: sound_installation_03

sound_installation_03.zip

Sound Installation 4

Sound Installation 4

Instalacja dźwiękowa 4

Indem ein digitaler Eingang ohne pull up Widerstand konfiguriert wird, entsteht ein sehr empflindlicher Eingang. Die Anzahl der Einser über ein festes Zeitintervall wird gezählt und als Grundlage für die Tonhöhe verwendet.

By configuring a digital input without pull up resistor, a very sensitive input is created. The number of singers over a fixed time interval is counted and used as the basis for the pitch.

Konfigurując wejście cyfrowe bez rezystora pull-up, tworzone jest bardzo czułe wejście. Liczbę śpiewaków w ustalonym przedziale czasowym zlicza się i stosuje jako podstawę boiska.

sheme of sound installation 4

Bild 3.7-8: sheme of sound installation 4

foto of sound installation 4

Bild 3.7-9: foto of sound installation 4


bool SERIELL = false;
int x=0;
int y=0;

void setup() 
{  
    DDRB &= 0b01111111;
    PORTB &= 0b01111111;

    if(SERIELL==true)
        Serial.begin(9600);
}

void loop() 
{
    if(y<1000)
    {
        if( (PINB & 0b10000000) == 0 )
        {
            x++;
        }
    }
    else
    {
        y=0;

        if(SERIELL==true)
           Serial.println(x);
        x=0;
    }
    y++;

    tone(13,x);

    if(SERIELL==true)
       delay(1);
}

Code 3.7-4: sound_installation_04

sound_installation_04.zip

Verwendung besonderer Mittel für die Datenverarbeitung

Use of special means for data processing

Wykorzystanie specjalnych środków do przetwarzania danych

Aber nicht nur auf Seiten von Sensor und Aktuator kann man über Alternativen nachdenken. Es existieren auch Beispiele dafür, wo zur Datenverarbeitung statt eines Computers etwas anderes verwendet wurde:

But not only on the part of sensor and actuator can one think about alternatives. There are also examples of where, instead of a computer, something else was used for data processing:

Ale nie tylko ze strony czujnika i siłownika można myśleć o alternatywach. Istnieją również przykłady miejsca, w którym zamiast komputera zastosowano coś innego do przetwarzania danych:

Eduardo Miranda, Peninsula Arts Contemporary Music Festival Biocomputer
Guy Plays Piano With His Brain
Physarum Music