scriptaccess" value="always">






Processing ve arduino ikilisi ile bilgisayarımız üzerinden bir röleyi kontrol edeceğiz. Processing arayüzünde oluşturduğumuz bir butonla ledi yakıp söndürüyoruz. Konu ile ilgili dosyalar konu ekinde mevcuttur.

Devre şeması:


Processing programı:
description">Kod:
import processing.serial.*;

// Köşe koordinatları
float x = 50; 
float y = 25;
float w = 75;
float h = 40;

Serial seriPort;
boolean button = false;

void setup(){
 size(175,100);
 background(#ffffff);
 stroke(0);
 noFill();
 seriPort = new Serial(this,"COM8",9600); // Seri haberleşmeyi açıyoruz (9600 baud) 
}
void draw() {
  if (button) {
    fill(#FF0000);
    stroke(0);
    
  } else {
    fill(#00FF00);
    stroke(#000000);

  }
  /* sol üst köşesi (x,y) noktasında olan ve uzun kenarı w, 
    kısa kendarı h genişliğinde bir dikdörtgen çizdiriyoruz */
  rect(x,y,w,h); 
  fill(0x123456);  
}

/*
Fare butonuna basıldığında bu fonksiyon çağırılıyor.
Eğer butona basılan koordinat butonun köşe koordinatları
içerisinde ise buton durumunu değiştiriyoruz.

MouseX butona basılan koordinatın X bileşeni
MouseY butona basılan koordinatın Y bileşeni
*/
  
void mousePressed() {
  if (mouseX > x && mouseX < x+w && mouseY > y && mouseY < y+h) {
    if(button)
    {
      seriPort.write('H');
    }
    else
    {
      seriPort.write('L');
    }    
    button = !button; // buton değişkenini tersine çevir    
  }  
}

Arduino programı:

Kod:
import processing.serial.*;

// Köşe koordinatları
float x = 50; 
float y = 25;
float w = 75;
float h = 40;

Serial seriPort;
boolean button = false;

void setup(){
 size(175,100);
 background(#ffffff);
 stroke(0);
 noFill();
 seriPort = new Serial(this,"COM8",9600); // Seri haberleşmeyi açıyoruz (9600 baud) 
}
void draw() {
  if (button) {
    fill(#FF0000);
    stroke(0);
    
  } else {
    fill(#00FF00);
    stroke(#000000);

  }
  /* sol üst köşesi (x,y) noktasında olan ve uzun kenarı w, 
    kısa kendarı h genişliğinde bir dikdörtgen çizdiriyoruz */
  rect(x,y,w,h); 
  fill(0x123456);  
}

/*
Fare butonuna basıldığında bu fonksiyon çağırılıyor.
Eğer butona basılan koordinat butonun köşe koordinatları
içerisinde ise buton durumunu değiştiriyoruz.

MouseX butona basılan koordinatın X bileşeni
MouseY butona basılan koordinatın Y bileşeni
*/
  
void mousePressed() {
  if (mouseX > x && mouseX < x+w && mouseY > y && mouseY < y+h) {
    if(button)
    {
      seriPort.write('H');
    }
    else
    {
      seriPort.write('L');
    }    
    button = !button; // buton değişkenini tersine çevir    
  }  
}
Orjinal konu: https://temrinlerim.org/index.php?topic=175.0