[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)
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:
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...)
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());
}
Arduino Forum > International > Italiano > Software (Moderator: leo72) > [RISOLTO] Arduino+Tlc5940+Blutooth+Processing
arduino
Comments
Post a Comment