Std firmata + Processing + Multiplexer 4051 = MELT
hi guys
i'm developing simple controller arduino , processing.
i wanto lot of potentiometer , buttons in processing.
i thought best way standard firmata , arduino object inside processing.
with 1 multiplexer 4051.. no problems.
with more mults.. data shitting random.
can problem of velocity processing-firmata ?
my configuration simple:
i have - - 1 4051 master in arduino pin 8 7 6
and 1 4051 slave in pin 4 3 2
common out in slave connected @ y0 in master
and in slave y0 connected directly @ 5v (it should in analog read 1023 right?)
i 0.
if try put y0 master in 5v directly , not in common output in slave.
(i shoud 8 times 1023 , 0, right?)
i random value. 0 , number 151 or 152,
but in random positions.
here code:
i'm developing simple controller arduino , processing.
i wanto lot of potentiometer , buttons in processing.
i thought best way standard firmata , arduino object inside processing.
with 1 multiplexer 4051.. no problems.
with more mults.. data shitting random.
can problem of velocity processing-firmata ?
my configuration simple:
i have - - 1 4051 master in arduino pin 8 7 6
and 1 4051 slave in pin 4 3 2
common out in slave connected @ y0 in master
and in slave y0 connected directly @ 5v (it should in analog read 1023 right?)
i 0.
if try put y0 master in 5v directly , not in common output in slave.
(i shoud 8 times 1023 , 0, right?)
i random value. 0 , number 151 or 152,
but in random positions.
here code:
code: [select]
import processing.serial.*;
import cc.arduino.*;
int led = 13; //just led
int r0 = 0; //value select pin @ 4051 (s0)
int r1 = 0; //value select pin @ 4051 (s1)
int r2 = 0; //value select pin @ 4051 (s2)
int row = 0; // storeing bin code
int count = 0; // count
int bin [] = {
000, 1, 10, 11, 100, 101, 110, 111};//bin = binär, times easy
arduino arduino;
void setup() {
initarduino();
}
void initarduino() {
arduino = new arduino(this, arduino.list()[0]);
//setup multiplexer
arduino.pinmode(8, arduino.output); // s0
arduino.pinmode(7, arduino.output); // s1
arduino.pinmode(6, arduino.output); // s2
arduino.pinmode(4, arduino.output); // s0
arduino.pinmode(3, arduino.output); // s1
arduino.pinmode(2, arduino.output); // s2
}
void draw() {
//in master..
for (count=0; count<=7; count++) {
row = bin[count];
r0 = row & 0x01;
r1 = (row>>1) & 0x01;
r2 = (row>>2) & 0x01;
arduino.digitalwrite(8, r0);
arduino.digitalwrite(7, r1);
arduino.digitalwrite(6, r2);
// each slave..
for(int j=0; j<8; j++) {
row = bin[j];
r0 = row & 0x01;
r1 = (row>>1) & 0x01;
r2 = (row>>2) & 0x01;
arduino.digitalwrite(4, r0);
arduino.digitalwrite(3, r1);
arduino.digitalwrite(2, r2);
//read sensor
println(integer.parseint( new integer(bin[count]).tostring(), 2 )+ " - "+
integer.parseint( new integer(bin[j]).tostring(), 2 )+
": "+ arduino.analogread(0) );
}
delay(100);
}
}
the same code in arduino runs perfectly:
code: [select]
int v=0;
void setup() {
serial.begin(9600);
serial.print("hello");
pinmode(2,output);
pinmode(3,output);
pinmode(4,output);
pinmode(6,output);
pinmode(7,output);
pinmode(8,output);
}
byte bin[] = {
0,1,10,11,100,101,110,111};
float readkeyboard() {
int i,j,row,col, code;
float v;
byte r0,r1,r2;
code=0;
for(i=0;i<8;i++) {
code++;
// address x
row = bin[i];
r0 = row & 0x01;
r1 = (row>>1) & 0x01;
r2 = (row>>2) & 0x01;
digitalwrite(8, r0);
digitalwrite(7, r1);
digitalwrite(6, r2);
// address y
for(j=0;j<8;j++) {
col = bin[j];
r0 = col & 0x01;
r1 = (col>>1) & 0x01;
r2 = (col>>2) & 0x01;
digitalwrite(4, r0);
digitalwrite(3, r1);
digitalwrite(2, r2);
// read actual value
v = analogread(0);
serial.print("(");
serial.print(j);
serial.print(":");
serial.print(i);
serial.print(")-");
serial.println(v);
}
}
return 0;
}
void loop() {
v = readkeyboard();
if(v>0) {
//serial.println(v);
}
delay(100);
}
Arduino Forum > Forum 2005-2010 (read only) > Software > Interfacing > Std firmata + Processing + Multiplexer 4051 = MELT
arduino
Comments
Post a Comment