Question on Libraries - Is there "Java" Library?

I'm trying to work through a Radar Project I found here:
[url=http://howtomechatronics.com/projects/arduino-radar-project/[/url]

The sketch starts with these lines:
import processing.serial.*; // imports library for serial communication
import java.awt.event.KeyEvent; // imports library for reading the data from the serial port
import java.io.IOException;

But I get the error:
Arduino_Radar2:14: error: 'import' does not name a type
import java.io.IOException;
Arduino_Radar2:16: error: 'Serial' does not name a type
Serial myPort; // defines Object Serial

Am I missing a "Java" Library? I can't locate one to import . .

TIA

Ron

The Arduino code is under the part that says "Here’s the Arduino Source Code with description of each line of the code:"
That's the code you upload to your Arduino.

The Processing code is under the part that says: "Here’s the complete Processing Source Code of the Arduino Radar:"
That code runs on your computer. You will need to install the Processing IDE to run that code.

Thanks. I got the error because I was trying to upload the code through the Arduino Processing IDE. I've removed and installed the IDE twice on a Win10 machine and got the same error when trying to upload the code. I've also tried to upload the code using a machine with Ubuntu 16.04 LTS and got the same error.

Per the comments on the site, only two of us have received this error. I'm wondering if others did not get the error because they had previously installed a library we have not installed because this is our first project.

Hence the question: Am I missing a "Java" Library? I can't locate one to import?

If I'm not missing a "Java" library, at least that's a clue.

TIA

Ron

Follow up. Arduino Playground - Java

RXTX Library Set Up

If you installed the Arduino IDE, you already have the RXTX library installed for the next steps, and you may be able to skip this section and start with the sample Java code.

Toward the bottom of the page there is a reference to:

"If you placed the RXTX jar and library in the /Library/Java/Extensions"

So it appears there is supposed to be a Java library.

Best I can tell, for some reason I do not have the RXTX library. Can anyone tell me why it may not have installed with the IDE?

I tried to follow the steps for installing the library, but found it very hard to follow the tutorial; the sound is awful and sadly my hearing is bad. Is there a better one someplace?

In this document http://cs.iupui.edu/~xiaozhon/course_tutorials/Arduino_and_Java_Serial.pdf they state to unzip the .dlls and:

"Just drop in the compiled .dlls that are specific to the version of Java you run."

Anyone know where to "Drop them in"? Into the library I don't have?

TIA,

Ron

There is no Arduino Processing IDE.

There is Arduino IDE, which is used for programming microcontrollers.

There is the Processing IDE, which is used for programming your computer.

This project requires you to use both IDEs. Use the Arduino code in the Arduino IDE and the Processing code in the Processing IDE.

Here are the instructions for Arduino IDE:


:exclamation: Please be careful to follow these instructions exactly.


  1. Connect the USB cable of your Arduino board to your computer
  2. Start Arduino IDE.
  3. Paste the following code into Arduino IDE:
    / Includes the Servo library
    #include <Servo.h>. 
    
    // Defines Tirg and Echo pins of the Ultrasonic Sensor
    const int trigPin = 10;
    const int echoPin = 11;
    // Variables for the duration and the distance
    long duration;
    int distance;
    
    Servo myServo; // Creates a servo object for controlling the servo motor
    
    void setup() {
      pinMode(trigPin, OUTPUT); // Sets the trigPin as an Output
      pinMode(echoPin, INPUT); // Sets the echoPin as an Input
      Serial.begin(9600);
      myServo.attach(12); // Defines on which pin is the servo motor attached
    }
    void loop() {
      // rotates the servo motor from 15 to 165 degrees
      for(int i=15;i<=165;i++){  
      myServo.write(i);
      delay(30);
      distance = calculateDistance();// Calls a function for calculating the distance measured by the Ultrasonic sensor for each degree
      
      Serial.print(i); // Sends the current degree into the Serial Port
      Serial.print(","); // Sends addition character right next to the previous value needed later in the Processing IDE for indexing
      Serial.print(distance); // Sends the distance value into the Serial Port
      Serial.print("."); // Sends addition character right next to the previous value needed later in the Processing IDE for indexing
      }
      // Repeats the previous lines from 165 to 15 degrees
      for(int i=165;i>15;i--){  
      myServo.write(i);
      delay(30);
      distance = calculateDistance();
      Serial.print(i);
      Serial.print(",");
      Serial.print(distance);
      Serial.print(".");
      }
    }
    // Function for calculating the distance measured by the Ultrasonic sensor
    int calculateDistance(){ 
      digitalWrite(trigPin, LOW); 
      delayMicroseconds(2);
      // Sets the trigPin on HIGH state for 10 micro seconds
      digitalWrite(trigPin, HIGH); 
      delayMicroseconds(10);
      digitalWrite(trigPin, LOW);
      duration = pulseIn(echoPin, HIGH); // Reads the echoPin, returns the sound wave travel time in microseconds
      distance= duration*0.034/2;
      return distance;
    }
    
  4. Select the Arduino board you are using from the Arduino IDE Tools > Board menu.
  5. Select the port of your Arduino board from the Arduino IDE Tools > Port menu.
  6. Select Sketch > Upload from the Arduino IDE menus.
  7. Wait for the upload to complete

These are the instructions for the Processing IDE:


:exclamation: Please be careful to follow these instructions exactly.


  1. Download the Processing IDE from here:
    Download Processing / Processing.org
  2. Install the Processing IDE
  3. Paste the following code into the Processing IDE:
    /*   Arduino Radar Project
     *
     *   Updated version. Fits any screen resolution!
     *   Just change the values in the size() function,
     *   with your screen resolution.
     *      
     *  by Dejan Nedelkovski, 
     *  www.HowToMechatronics.com
     *  
     */
    
    import processing.serial.*; // imports library for serial communication
    import java.awt.event.KeyEvent; // imports library for reading the data from the serial port
    import java.io.IOException;
    
    Serial myPort; // defines Object Serial
    // defubes variables
    String angle="";
    String distance="";
    String data="";
    String noObject;
    float pixsDistance;
    int iAngle, iDistance;
    int index1=0;
    int index2=0;
    PFont orcFont;
    
    void setup() {
      
     size (1920, 1080); // ***CHANGE THIS TO YOUR SCREEN RESOLUTION***
     smooth();
     myPort = new Serial(this,"COM4", 9600); // starts the serial communication
     myPort.bufferUntil('.'); // reads the data from the serial port up to the character '.'. So actually it reads this: angle,distance.
     orcFont = loadFont("OCRAExtended-30.vlw");
    }
    
    void draw() {
      
      fill(98,245,31);
      textFont(orcFont);
      // simulating motion blur and slow fade of the moving line
      noStroke();
      fill(0,4); 
      rect(0, 0, width, height-height*0.065); 
      
      fill(98,245,31); // green color
      // calls the functions for drawing the radar
      drawRadar(); 
      drawLine();
      drawObject();
      drawText();
    }
    
    void serialEvent (Serial myPort) { // starts reading data from the Serial Port
      // reads the data from the Serial Port up to the character '.' and puts it into the String variable "data".
      data = myPort.readStringUntil('.');
      data = data.substring(0,data.length()-1);
      
      index1 = data.indexOf(","); // find the character ',' and puts it into the variable "index1"
      angle= data.substring(0, index1); // read the data from position "0" to position of the variable index1 or thats the value of the angle the Arduino Board sent into the Serial Port
      distance= data.substring(index1+1, data.length()); // read the data from position "index1" to the end of the data pr thats the value of the distance
      
      // converts the String variables into Integer
      iAngle = int(angle);
      iDistance = int(distance);
    }
    
    void drawRadar() {
      pushMatrix();
      translate(width/2,height-height*0.074); // moves the starting coordinats to new location
      noFill();
      strokeWeight(2);
      stroke(98,245,31);
      // draws the arc lines
      arc(0,0,(width-width*0.0625),(width-width*0.0625),PI,TWO_PI);
      arc(0,0,(width-width*0.27),(width-width*0.27),PI,TWO_PI);
      arc(0,0,(width-width*0.479),(width-width*0.479),PI,TWO_PI);
      arc(0,0,(width-width*0.687),(width-width*0.687),PI,TWO_PI);
      // draws the angle lines
      line(-width/2,0,width/2,0);
      line(0,0,(-width/2)*cos(radians(30)),(-width/2)*sin(radians(30)));
      line(0,0,(-width/2)*cos(radians(60)),(-width/2)*sin(radians(60)));
      line(0,0,(-width/2)*cos(radians(90)),(-width/2)*sin(radians(90)));
      line(0,0,(-width/2)*cos(radians(120)),(-width/2)*sin(radians(120)));
      line(0,0,(-width/2)*cos(radians(150)),(-width/2)*sin(radians(150)));
      line((-width/2)*cos(radians(30)),0,width/2,0);
      popMatrix();
    }
    
    void drawObject() {
      pushMatrix();
      translate(width/2,height-height*0.074); // moves the starting coordinats to new location
      strokeWeight(9);
      stroke(255,10,10); // red color
      pixsDistance = iDistance*((height-height*0.1666)*0.025); // covers the distance from the sensor from cm to pixels
      // limiting the range to 40 cms
      if(iDistance<40){
        // draws the object according to the angle and the distance
      line(pixsDistance*cos(radians(iAngle)),-pixsDistance*sin(radians(iAngle)),(width-width*0.505)*cos(radians(iAngle)),-(width-width*0.505)*sin(radians(iAngle)));
      }
      popMatrix();
    }
    
    void drawLine() {
      pushMatrix();
      strokeWeight(9);
      stroke(30,250,60);
      translate(width/2,height-height*0.074); // moves the starting coordinats to new location
      line(0,0,(height-height*0.12)*cos(radians(iAngle)),-(height-height*0.12)*sin(radians(iAngle))); // draws the line according to the angle
      popMatrix();
    }
    
    void drawText() { // draws the texts on the screen
      
      pushMatrix();
      if(iDistance>40) {
      noObject = "Out of Range";
      }
      else {
      noObject = "In Range";
      }
      fill(0,0,0);
      noStroke();
      rect(0, height-height*0.0648, width, height);
      fill(98,245,31);
      textSize(25);
      
      text("10cm",width-width*0.3854,height-height*0.0833);
      text("20cm",width-width*0.281,height-height*0.0833);
      text("30cm",width-width*0.177,height-height*0.0833);
      text("40cm",width-width*0.0729,height-height*0.0833);
      textSize(40);
      text("Object: " + noObject, width-width*0.875, height-height*0.0277);
      text("Angle: " + iAngle +" °", width-width*0.48, height-height*0.0277);
      text("Distance: ", width-width*0.26, height-height*0.0277);
      if(iDistance<40) {
      text("        " + iDistance +" cm", width-width*0.225, height-height*0.0277);
      }
      textSize(25);
      fill(98,245,60);
      translate((width-width*0.4994)+width/2*cos(radians(30)),(height-height*0.0907)-width/2*sin(radians(30)));
      rotate(-radians(-60));
      text("30°",0,0);
      resetMatrix();
      translate((width-width*0.503)+width/2*cos(radians(60)),(height-height*0.0888)-width/2*sin(radians(60)));
      rotate(-radians(-30));
      text("60°",0,0);
      resetMatrix();
      translate((width-width*0.507)+width/2*cos(radians(90)),(height-height*0.0833)-width/2*sin(radians(90)));
      rotate(radians(0));
      text("90°",0,0);
      resetMatrix();
      translate(width-width*0.513+width/2*cos(radians(120)),(height-height*0.07129)-width/2*sin(radians(120)));
      rotate(radians(-30));
      text("120°",0,0);
      resetMatrix();
      translate((width-width*0.5104)+width/2*cos(radians(150)),(height-height*0.0574)-width/2*sin(radians(150)));
      rotate(radians(-60));
      text("150°",0,0);
      popMatrix(); 
    }
    
  4. Change the following line to match your screen resolution:
    size (1920, 1080); // ***CHANGE THIS TO YOUR SCREEN RESOLUTION***
    
  5. Change the following line to match the port of your Arduino (the port you selected in the Tools > Port menu of the Arduino IDE when you uploaded):
    myPort = new Serial(this,"COM4", 9600); // starts the serial communication
    
  6. Click the "Run" button (the triangle button in the Processing IDE Toolbar).

Shiseiji:
If you installed the Arduino IDE, you already have the RXTX library installed for the next steps,

Recent versions of the IDE have been using the JSSC library rather than RXTX which seems to have fallen into disuse.

IMHO JSSC is easier to use.

...R