05. Processing & Arduino

Processing och Arduino kan kommunicera med varandra via serial porten. T.ex. kan Arduino-mikrokontrollern avläsa en sensor och skicka värden till Processing som använder dessa värden för att bestämma radien hos en cirkel, eller…

… vinkeln hos en liksidig triangel

… färgen på texten

…hastigheten hos ett videoklipp mm.

 

Tänker vi andra vägen så kan man i Processing använda musen för att ställa positionen hos en servo som är kopplad till Arduino eller använd tangentbordet för att bestämma vilken lysdiod som är på mm.

 

  1. Vrid på en potentiometer för att bestämma cirkelns diameter.

Fritzing layout

 Processing koden

import processing.serial.*;
int a;          // deklarera heltal a
float b;        // deklarera decimaltal b
Serial myPort;  // Skapa serial objektet vid namnet myPort

void setup() {
  size(displayWidth,displayHeight);  // fönsterstorlek
  frameRate(30);                     // frames per second, default = 60
  printArray(Serial.list());         // skriv ut listan på tillgängliga serial portar 
  myPort = new Serial(this, Serial.list()[2], 9600);  // tilldela objektet rätt port
  
}

void draw() 
{
  background(255);                 //
  while (myPort.available() > 0)   // om det finns något i porten
    {
     a = myPort.read();        // läs serialporten och tilldela variabeln a det lästa värdet (byte 0-255)  
     b = map(a,0,255,0,500);   // skala om värdet och tilldela variabeln b det nya värdet (0-500) 
    }
  println(a);                     // för felsökningsändamål
  println(b);                     // för felsökningsändamål  
  fill(0);                        // fyll ellipsen
  ellipse(mouseX, mouseY, b, b);  // ellipsens position och storlek
}

Arduino koden

int x;  // deklarera variabeln x
int y;  // deklarera variabeln y
               
 
void setup() 
{ 
  Serial.begin(9600);            // Starta serial kommunikationen med 9600 bps 
} 
 
void loop() { 
  x = analogRead(A0);           // läs A0 (0-1024)
  y = map(x, 0, 1024, 0, 255);  // skala om värden till intervallet 0-255 
  Serial.write(y);              // Skriv ut en byte (0-255) till serial porten
  delay(5);                     // vänta 5 ms
}
 

 

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s