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