🔍

Arduino2Processing with SerialData


import processing.serial.*;

Serial myPort;  // Serial port object
int value1, value2;  // Variables to store the values

void setup() {
  // Adjust the following line to match your serial port
  myPort = new Serial(this, "COM6", 9600);
  
  // Open the serial port
  myPort.bufferUntil('\n');  // Read until newline character
  
  size(400,400);
  
}

void draw() {
  // Empty draw function
  
  background(255);
  
  pushMatrix();
    fill(222,2,2);
    translate( 200,200 );
    rotate( radians(value1) );
    rect(0,0,100,10 );
  popMatrix();
  
  
  pushMatrix();
    fill(222,222,2);
    translate( 200,200 );
    rotate( radians(value2) );
    rect(0,0,100,10 );
  popMatrix();
}

void serialEvent(Serial myPort) {
  // Read the incoming data string
  String dataString = myPort.readStringUntil('\n');
  
  if (dataString != null) {
    // Remove any leading/trailing whitespaces
    dataString = dataString.trim();
    
    // Split the string into an array of values
    String[] values = dataString.split(",");
    
    if (values.length == 2) {
      // Parse and save the values into variables
      value1 = Integer.parseInt(values[0]);
      value2 = Integer.parseInt(values[1]);
      
      // Print the values
      //println("Value 1: " + value1);
      //println("Value 2: " + value2);
    }
  }
}



#include <Arduino.h>

 #define outputA 6
 #define outputB 7

 int counter = 0; 
 int aState;
 int aLastState; 

 int poti1_raw = 0; 

int tick = 0;

 void setup() { 
   pinMode (outputA,INPUT);
   pinMode (outputB,INPUT);
   
   Serial.begin (9600);
   // Reads the initial state of the outputA
   aLastState = digitalRead(outputA);   
 } 

 void loop() { 

   poti1_raw =  analogRead(0);

   aState = digitalRead(outputA); // Reads the "current" state of the outputA
   // If the previous and the current state of the outputA are different, that means a Pulse has occured
   if (aState != aLastState){     
     // If the outputB state is different to the outputA state, that means the encoder is rotating clockwise
     if (digitalRead(outputB) != aState) { 
       counter ++;
     } else {
       counter --;
     }
     
   } 
   aLastState = aState; // Updates the previous state of the outputA with the current state


   // delay(100);

   if(tick>300){

      tick =0;
     // Serial.print("Position: ");
     Serial.print (counter);

    Serial.print(",");
     Serial.println(poti1_raw);
    
      

   }else{
      tick++;
   }

 }