piano

Mitt project är att skapa ett piano med hjälp av arduino och processing

arduinon läser av en ultaljuds sensor och mäter avståndet och skriver om det till en pianoskala

processing ska göra det mer visuellt

så programmen ska samarbeta

inget ljud i denna kod

processing koden

import processing.serial.*;          // inkludera serial biblioteket 
Serial myPort;                       // Skapa ett serial objekt


int rekt1 = 255;  //A
int rekt2 = 255;  //B
int rekt3 = 255;  //C
int rekt4 = 255;  //D
int rekt5 = 255;  //E
int rekt6 = 255;  //F
int rekt7 = 255;  //G


void setup()
{
 
  size( displayWidth, displayHeight );  // fönstret motsvarar skärmupplösningen
   // Print a list of the serial ports for debugging purposes
  // if using Processing 2.1 or later, use Serial.printArray()
  println(Serial.list());
  String portName = Serial.list()[1];
  myPort = new Serial(this, portName, 9600);
}
void draw()
{
  background(255);        // bakgrundsfärg i svartskala 255 = vit
  strokeWeight(10);       // linjens tjocklek angett i pixlar
 
   
 

  rectMode(CORNERS);
  
  // rektangel 1
  fill (rekt1);
  rect(150,300,320,700);       // 1:a rektangelns storlek, 250, 250
  // rektangel 2
  fill (rekt2);
  rect(400,300,570,700);       // 2:a rektangelns storlek
   // rektangel 3
  fill (rekt3);
  rect(650,300,820,700);       // 3:a rektangelns storlek
   // rektangel 4
  fill (rekt4);
  rect(900,300,1070,700);       // 4:a rektangelns storlek
   // rektangel 5
  fill (rekt5);
  rect(1150,300,1320,700);       // 5:a rektangelns storlek
   // rektangel 6
  fill (rekt6);
  rect(1400,300,1570,700);       // 6:a rektangelns storlek
  // rektangel 7
  fill (rekt7);
  rect(1650,300,1820,700);       // 7:a rektangelns storlek
}

void serialEvent(Serial myPort) {  // funktionen för serialhändelser

  int a = myPort.read();           // läs porten och spara byten i variabeln inByte
  println(a);
  if (a == 1)                      //läser av komunikationen från arduino och lägger det till rätt tangent
    {
    rekt1 = #377798;
    rekt2 = 255;
    rekt3 = 255;
    rekt4 = 255;    // Vit
    rekt5 = 255;
    rekt6 = 255;
    rekt7 = 255;
    }
  else if(a==2)
    {
    
    rekt1 = 255;
    rekt2 = #377798;
    rekt3 = 255;
    rekt4 = 255;    // Vit
    rekt5 = 255;
    rekt6 = 255;
    rekt7 = 255;
    }
  else if(a==3)
    {
    
    rekt1 = 255;
    rekt2 = 255;
    rekt3 = #377798;
    rekt4 = 255;    // Vit
    rekt5 = 255;
    rekt6 = 255;
    rekt7 = 255;
    
    }
  else if(a==4)
    {
      
    rekt1 = 255;
    rekt2 = 255;
    rekt3 = 255;
    rekt4 = #377798;   // Vit
    rekt5 = 255;
    rekt6 = 255;
    rekt7 = 255;
      
    }
  else if(a==5)
    {
    rekt1 = 255;
    rekt2 = 255;
    rekt3 = 255;
    rekt4 = 255;   // Vit
    rekt5 = #377798;
    rekt6 = 255;
    rekt7 = 255; 
      
    }
  else if(a==6)
    {
    rekt1 = 255;
    rekt2 = 255;
    rekt3 = 255;
    rekt4 = 255;   // Vit
    rekt5 = 255;
    rekt6 = #377798;
    rekt7 = 255; 
      
    }
    else if(a==7)
    {
    rekt1 = 255;
    rekt2 = 255;
    rekt3 = 255;
    rekt4 = 255;   // Vit
    rekt5 = 255;
    rekt6 = 255;
    rekt7 = #377798; 
    }
   
  
}

arduinokoden

int sensorPin = A0;     
int sensorValue = 0;     


void setup() 
 {
  Serial.begin(9600);                         
  delay(1000);
 }
 
void loop()
{
  distance();
} 

 
void distance()       
{
                        
    //Serial.print("distance = ");
    sensorValue = analogRead(sensorPin); 
    
    if(sensorValue<=10)  
                     
    {
     // Serial.print("invalid");
    }
    else 
    {
    sensorValue = sensorValue*0.718;     
   // Serial.print(sensorValue);
   //Serial.println("cm");

    if(sensorValue > 10 && sensorValue <15)
    {
      Serial.write(1);
     // Serial.println("tonen A");
     
      }
    else if(sensorValue > 15 && sensorValue <20)

    {
      Serial.write(2);
      //Serial.println("tonen B");
      
      }
      
       else if(sensorValue > 20 && sensorValue <25) 
       {
        Serial.write(3);
      //Serial.println("tonen C");
      
      }

      else if (sensorValue > 25 && sensorValue <30)
    {
      Serial.write(4);
     // Serial.println("tonen D");
      }

     else if(sensorValue > 30 && sensorValue <35)
    {
      Serial.write(5);
     // Serial.println("tonen E");
     
      }

     else if(sensorValue > 35 && sensorValue <40)
    {
      Serial.write(6);
      // Serial.println("tonen F");
     
      }

     else if(sensorValue > 40 && sensorValue <45)
    {
      Serial.write(7);
      // Serial.println("tonen G");
    
      }
      else 
    {
     // Serial.println("inga toner");
     } 
     delay(10);
    }
}

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s