//ΑΛΛΑΓΗ ΣΤΟΝ ΚΩΔΙΚΑ ΤΟΥ ESP // Να κάνει Serial.println("L...R..."); και τίποτε άλλο // δεν θα γίνεται ασύρματη επικοινωνία μάλλον... import processing.serial.*; Serial mp; float valR, valL; float leftEyeX, leftEyeY; float leftPupilX, leftPupilY; float rightEyeX, rightEyeY; float rightPupilX, rightPupilY; float targetLx1 = 123; float targetLy1 = 200; float targetLx2 = 536; float targetLy2 = 200; float targetMx1 = 209; float targetMy1 = 200; float targetMx2 = 595; float targetMy2 = 200; float targetRx1 = 251; float targetRy1 = 200; float targetRx2 = 663; float targetRy2 = 200; float targetx1 = targetMx1; float targety1 = targetMy1; float targetx2 = targetMx2; float targety2 = targetMy2; float x1, y1, x2, y2; float duration = 20; float rate = 0; int click = 1; void setup() { size(800, 400); leftEyeX = width * 0.25; leftEyeY = height * 0.5; rightEyeX = width * 0.75; rightEyeY = height * 0.5; x1 = targetMx1; y1 = targetMy1; x2 = targetMx2; y2 = targetMx2; rate = 1.0/duration; rate = constrain(rate, 0, 1); //mp = new Serial (this, Serial.list()[1], 9600); //mp.bufferUntil ('\n'); } void draw() { background(200); // --- LEFT PUPIL --- //float a = leftEyeX - 40; //float b = leftEyeX + 40; //float c = leftEyeY - 40; //float d = leftEyeY + 40; ////leftPupilX = map(mouseX, 0, 800, a, b); //leftPupilY = map(mouseY, 0, 400, c, d); // --- RIGHT PUPIL --- //a = rightEyeX - 40; //b = rightEyeX + 40; //c = rightEyeY - 40; //d = rightEyeY + 40; //rightPupilX = map(mouseX, 0, 800, a, b); //rightPupilY = map(mouseY, 0, 400, c, d); // --- DRAW EYEBALLS --- fill(255); ellipse(leftEyeX, leftEyeY, 200, 200); ellipse(rightEyeX, rightEyeY, 200, 200); // --- DRAW PUPILS --- x1 = lerp(x1, targetx1, rate); y1 = lerp(y1, targety1, rate); x2 = lerp(x2, targetx2, rate); y2 = lerp(y2, targety2, rate); fill(0); //ellipse(leftPupilX, leftPupilY, 80, 80); //ellipse(rightPupilX, rightPupilY, 80, 80); ellipse(x1, y1, 80, 80); ellipse(x2, y2, 80, 80); } void mousePressed() { println(mouseX, " ", mouseY); if (click == 1) { targetx1 = targetLx1; targety1 = targetLy1; targetx2 = targetLx2; targety2 = targetLy2; click++; } else if (click == 2) { targetx1 = targetRx1; targety1 = targetRy1; targetx2 = targetRx2; targety2 = targetRy2; click++; } else if (click == 3) { targetx1 = targetMx1; targety1 = targetMy1; targetx2 = targetMx2; targety2 = targetMy2; click = 1; } } void serialEvent(Serial mp) { if (mp.available() > 0 ) getData(); } // To arduino στέλνει την αριστερή και δεξιά μέτρηση με την εξής μορφή: // LαριθμόςRαριθμός void getData() { String data; // Στο string data θα πάρουμε τα δεδομένα που ήρθαν στη σειριακή θύρα // μέχρι το newline. data = mp.readStringUntil('\n'); if (data != null) // Ελέγχουμε αν όντως πήραμε κάτι. { data = data.trim(); // Κόβουμε κενούς χαρακτήρες από το τέλος της συμβολοσειράς. // Βρίσκουμε σε ποια θέση μέσα στη συμβολοσειρά data είναι το γράμμα L και το R int indexL = data.indexOf("L"); int indexR = data.indexOf("R"); // Ο σκοπός είναι να βρούμε που βρίσκονται μέσα στην συμβολοσειρά data // οι δύο αριθμοί (αριστερή κεραία, δεξιά κεραία). // Ο αριθμός που δείχνει την αριστερή φωτεινότητα ξεκινάει μία θέση μετά το L // και φτάνει μία θέση πριν το R. try { valL = Float.valueOf(data.substring(indexL+1, indexR)); } catch(Exception e) { ; } // Ο αριθμός που δείχνει τη δεξιά φωτεινότητα ξεκινάει μία θέση μετά το R // και φτάνει μέχρι το τέλος της συμβολοσειράς. try { valR = Float.valueOf(data.substring(indexR+1)); } catch(Exception e) { ; } } // Καθαρίζουμε τη θύρα, καλού κακού mp.clear(); print("LEFT: "); print(valL); print("RIGHT: "); println(valR); //if ((valL < 200 && valR < 200) || (valL > 700 && valR > 700)) // A.changeDirection(0); //else if (valL > 350) // A.changeDirection(-1); //else if (valR > 350) // A.changeDirection(1); if (valL == 0 && valR != 0) { println("right"); //targetx = targetRx; //targety = targetRy; } else if (valR == 0 && valL != 0) { println("left"); //targetx = targetLx; //targety = targetLy; } else if (valL == 0 && valR == 0) { println("middle"); //targetx = targetMx; //targety = targetMy; } else if (valL > valR + 12) { println("right"); //targetx = targetRx; //targety = targetRy; } else if (valL + 12 < valR) { println("left"); //targetx = targetLx; //targety = targetLy; } else { println("middle"); //targetx = targetMx; //targety = targetMy; } }