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:
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

Popular posts from this blog

CAN'T INSTALL MAMBELFISH 1.5 FROM DIRECTORY - Joomla! Forum - community, help and support

error: expected initializer before 'void'

CPU load monitoring using GPIO and leds - Raspberry Pi Forums