0
\$\begingroup\$

I have a sensor which can give information about X and Y position movement, and I want to create a simple interface in which a circle on the screen will move in the same direction as I move the sensor. I use Arduino to send position data (float) through serial communication.

However, the code doesn't seem to work well. The circle I create, sometimes it disappears from the screen, and after a while, it shows up again. Besides, the circle seems to "blink" (I mean it appears/disappears in high frequency) all the time. I'm doubted that the problem is about the buffer, but I'm not so sure. Here is the code I use:

PROCESSING CODE

 // import libraries
import java.awt.Frame;
import java.awt.BorderLayout;
import processing.serial.*;
// Serial port to connect to
String serialPortName = "COM3";
/* SETTINGS END */
Serial serialPort; // Serial port object
void setup() {
 size(900,900);
 noStroke();
 serialPort = new Serial(this, serialPortName, 9600); 
}
byte[] inBuffer = new byte[50]; // holds serial message
void draw() {
 background(0);
 if (serialPort.available() > 0) {
 float[] x= new float[2];
 String myString = "";
 try {
 serialPort.readBytesUntil('\r', inBuffer);
 }
 catch (Exception e) {
 }
 myString = new String(inBuffer);
 String[] nums = split(myString, ' ');
 try {
 x[0] = float(nums[0]); //X
 x[1] = float(nums[1]); //Y
 }
 catch (Exception e) {
 } 
 ellipse(x[0]+500, x[1]+500, 70, 70); //+500 to make the circle in the middle of interface
 }
 }

Serial communication in Arduino:

Serial.print(xf,DEC); //méthode 1
Serial.print(" ");
Serial.print(yf,DEC); 
Serial.print('\r');

Please help me to find the root cause of this problem. Thank you so much!!

asked Mar 25, 2017 at 11:43
\$\endgroup\$

1 Answer 1

1
\$\begingroup\$

I know nothing about "processing", but just based on looking at your code, it seems that background(0) clears the graphics frame, and ellipse(...) draws the circle. You are doing the former unconditionally on every iteration through draw(), but the latter only when you get a message. So it isn't surprising that you get a lot of flickering.

The fix would be to move the background(0) call to immediately before the ellipse(...) call.

answered Mar 25, 2017 at 12:08
\$\endgroup\$

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.