Sliderbar Arduino + Processing

Toon hier Uw afgeronde projecten aan anderen.
Berichten: 36
Geregistreerd: 17 Dec 2012, 23:26
Woonplaats: Den haag

Sliderbar Arduino + Processing

Berichtdoor marco01 » 12 Mei 2013, 16:43

Mensen,

Het volgend ik weer wat zitten knutselen met software.
Ik wou het volgende hebben.
Hoe kan ik twee RBG strips aansturen via mijn pc ( real time ).

Simpel we nemen een Arduino machtig speelgoed.
prutsen er een beetje code in

Code: Alles selecteren

void setup()
{
  // declare the serial comm at 9600 baud rate
  Serial.begin(9600);

  // output pins
  pinMode(9, OUTPUT); // red
  pinMode(10, OUTPUT); // green
  pinMode(11, OUTPUT); // blue
  pinMode(3, OUTPUT); // red
  pinMode(5, OUTPUT); // green
  pinMode(6, OUTPUT); // blue

  // another output pin o be used as GROUND
  pinMode(8, OUTPUT); // ground
  digitalWrite(8, LOW);
}

void loop()
{
  // call the returned value from GetFromSerial() function
  switch(GetFromSerial())
  {
  case 'R':
    analogWrite(9, GetFromSerial());
    break;
  case 'G':
    analogWrite(11, GetFromSerial());
    break;
  case 'B':
    analogWrite(10, GetFromSerial());
    break;

case '1':
    analogWrite(3, GetFromSerial());
    break;
  case '2':
    analogWrite(5, GetFromSerial());
    break;
  case '3':
    analogWrite(6, GetFromSerial());
    break;
  }
}

// read the serial port
int GetFromSerial()
{
  while (Serial.available()<=0) {
  }
  return Serial.read();
}


Helemaal geweldig .. ik kan nu 6 PWM's aanspreken via serial ( comport)

maar hoe krijg ik dat voor elkaar daar hebben Processing voor ( gratis te downloaden)
hier onder de code

Code: Alles selecteren
import processing.serial.*;
Serial port;

sliderV sV1, sV2, sV3,sV4,sV5,sV6;

color cor;

void setup() {
  size(800, 800);

  println("Available serial ports:");
  println(Serial.list());

  // check on the output monitor wich port is available on your machine
  port = new Serial(this,"COM3", 9600);

  // create 3 instances of the sliderV class
  sV1 = new sliderV(100, 100, 90, 255, #FF0000);
  sV2 = new sliderV(200, 100, 90, 255, #03FF00);
  sV3 = new sliderV(300, 100, 90, 255, #009BFF);
  sV4 = new sliderV(400, 100, 90, 255, #FF0000);
  sV5 = new sliderV(500, 100, 90, 255, #03FF00);
  sV6 = new sliderV(600, 100, 90, 255, #009BFF);
}

void draw() {
  background(0);

  sV1.render();
  sV2.render();
  sV3.render();
  sV4.render();
  sV5.render();
  sV6.render();

  // send sync character
  // send the desired value
  port.write('R');
  port.write(sV1.p);
  port.write('G');
  port.write(sV2.p);
  port.write('B');
  port.write(sV3.p);
  port.write('1');
  port.write(sV4.p);
  port.write('2');
  port.write(sV5.p);
  port.write('3');
  port.write(sV6.p);
}

/*
Slider Class - www.guilhermemartins.net
based on www.anthonymattox.com slider class
*/
class sliderV {
  int x, y, w, h, p;
  color cor;
  boolean slide;

  sliderV (int _x, int _y, int _w, int _h, color _cor) {
    x = _x;
    y = _y;
    w = _w;
    h = _h;
    p = 90;
    cor = _cor;
    slide = true;
  }

  void render() {
    fill(cor);
    rect(x-1, y-4, w, h+10);
    noStroke();
    fill(0);
    rect(x, h-p+y-5, w-2, 13);
    fill(255);
    text(p, x+2, h-p+y+6);

    if (slide==true && mousePressed==true && mouseX<x+w && mouseX>x){
     if ((mouseY<=y+h+150) && (mouseY>=y-150)) {
        p = h-(mouseY-y);
        if (p<0) {
          p=0;
        }
        else if (p>h) {
          p=h;
        }
      }
    }
  }
}


Zo dat was het weer en veel plezier mee.

Advertisement

Terug naar Afgeronde projecten

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 10 gasten