[RISOLTO] Arduino+Tlc5940+Blutooth+Processing


salve tutti,
sto tentando di passare dei valori di luminosita provenienti da una app scritta in processing ad un arduino con un tlc5940 e 5 led rgb.
da premettere che dati che ricevo sono corretti (ho controllato tramite monitor seriale e questo sketh)
code: [select]
#include <softwareserial.h>
softwareserial myserial(10, 11); // rx, tx
void setup() {
  serial.begin(38400);
  myserial.begin(38400);
}
void loop()
{
  if (myserial.available())
    serial.println(int(myserial.read()));
  if (serial.available())
    myserial.println(serial.read());
}

il problema vero e proprio è attribuire l'inizio dell'array in primis, in tal modo sono sicuro della corrispondenza tra posizione dell'array e canale del tlc.
questo è lo sketh di arduino:
code: [select]
#include <tlc5940.h>
int arr[15];
//int val;
int channel;
void setup(){
  tlc.init();
  serial.begin(38400);
  for (channel=0;channel<15;channel++){
    tlc.set(channel,0);
  }
  delay(2000);
}
void loop(){
  if (serial.available()){
    tlc.clear();
    for(int channel=0; channel<15;channel++){
      int val=serial.read();
      val=map(val,0,255,0,4095);
      tlc.set(channel,val);
    }
    tlc.update();
  }
}

altro problema è la perdita di dati durante il trasporto oltre la corrispondenza.
praticamente anche se imposto tutti valori di processing 0 tranne uno comunque visualizzo l'accensione di tutti canali dallo 0 al 14.
e' come se perdessi un elemento dell'array per cui mi si sposta tutta la corrispondenza.
allego anche lo sketh di processing (non si sa mai...)
code: [select]
import processing.serial.*;
import controlp5.*;
controlp5 cp5;
serial myport;

int [] rgb1 = new int[15];

slider r1, r2, r3, r4, r5, g1, g2, g3, g4, g5, b1, b2, b3, b4, b5;

void setup() {
  size(800, 800);
  cp5= new controlp5(this);
  string portname = "com5";
  myport = new serial(this, portname, 9600);

  r1 = cp5.addslider("r1", 0, 255, 40, 10, 10, 255, 10);
  cp5.controller("r1").setcolorforeground(#fc0000);
  cp5.controller("r1").setcoloractive(#000000);
  g1 = cp5.addslider("g1", 0, 255, 60, 10, 30, 255, 10);
  cp5.controller("g1").setcolorforeground(#0bfc00);
  b1 = cp5.addslider("b1", 0, 255, 80, 10, 50, 255, 10);
  cp5.controller("b1").setcolorforeground(#002cfc);

  r2 = cp5.addslider("r2", 0, 255, 40, 10, 70, 255, 10);
  cp5.controller("r2").setcolorforeground(#fc0000);
  cp5.controller("r2").setcoloractive(#000000);
  g2 = cp5.addslider("g2", 0, 255, 60, 10, 90, 255, 10);
  cp5.controller("g1").setcolorforeground(#0bfc00);
  b2 = cp5.addslider("b2", 0, 255, 80, 10, 110, 255, 10);
  cp5.controller("b2").setcolorforeground(#002cfc);

  r3 = cp5.addslider("r3", 0, 255, 40, 10, 130, 255, 10);
  cp5.controller("r3").setcolorforeground(#fc0000);
  cp5.controller("r3").setcoloractive(#000000);
  g3 = cp5.addslider("g3", 0, 255, 60, 10, 150, 255, 10);
  cp5.controller("g3").setcolorforeground(#0bfc00);
  b3 = cp5.addslider("b3", 0, 255, 80, 10, 170, 255, 10);
  cp5.controller("b3").setcolorforeground(#002cfc);

  r4 = cp5.addslider("r4", 0, 255, 40, 10, 190, 255, 10);
  cp5.controller("r4").setcolorforeground(#fc0000);
  cp5.controller("r4").setcoloractive(#000000);
  g4= cp5.addslider("g4", 0, 255, 60, 10, 210, 255, 10);
  cp5.controller("g4").setcolorforeground(#0bfc00);
  b4 = cp5.addslider("b4", 0, 255, 80, 10, 230, 255, 10);
  cp5.controller("b4").setcolorforeground(#002cfc);

  r5 = cp5.addslider("r5", 0, 255, 40, 10, 250, 255, 10);
  cp5.controller("r5").setcolorforeground(#fc0000);
  cp5.controller("r5").setcoloractive(#000000);
  g5 = cp5.addslider("g5", 0, 255, 60, 10, 270, 255, 10);
  cp5.controller("g5").setcolorforeground(#0bfc00);
  b5 = cp5.addslider("b5", 0, 255, 80, 10, 290, 255, 10);
  cp5.controller("b5").setcolorforeground(#002cfc);
}

void draw() {
  rgb1[0]= int(r1.getvalue());
  rgb1[1]=int(g1.getvalue());
  rgb1[2]=int(b1.getvalue());
  rgb1[3]=int(r2.getvalue());
  rgb1[4]=int(g2.getvalue());
  rgb1[5]=int(b2.getvalue());
  rgb1[6]=int(r3.getvalue());
  rgb1[7]=int(g3.getvalue());
  rgb1[8]=int(b3.getvalue());
  rgb1[9]=int(r4.getvalue());
  rgb1[10]=int(g4.getvalue());
  rgb1[11]=int(b4.getvalue());
  rgb1[12]=int(r5.getvalue());
  rgb1[13]=int(g5.getvalue());
  rgb1[14]=int(b5.getvalue());
  printarray(rgb1);
  //myport.write("255");
  for (int i=0; i<15; i++) {
    myport.write(rgb1[i]);
  }
  background(100, 100, 100);
  println(serial.list());

  println(second());
}

code: [select]
myserial.begin(38400);
la softwareserial non funziona velocitá alte.
ciao uwe


Arduino Forum > International > Italiano > Software (Moderator: leo72) > [RISOLTO] Arduino+Tlc5940+Blutooth+Processing


arduino

Comments

Popular posts from this blog

invalid use of void expresion in FlexiTimer2 library

error: a function-definition is not allowed here before '{' token

LED Strip Code