IOIO-OTG Bluetooth vs ADB Issue

33 views
Skip to first unread message

dakman05

unread,
Jan 13, 2014, 12:18:29 AM1/13/14
to ioio-...@googlegroups.com
Hey Ytai and IOIO Community!
 
Hope all is well. Having a problem with my IOIO-OTG ( Hardware ID: SPRK0020 Bootloader ID: IOIO0400 Firmware ID: IOIO0330) ... 

So I have a WS2801 LED strip and I am using SPI to creating a unique green animation lighting effect...

Essentially I played around with HolidayIOIO and was able to figure out how to control the LED strip ..

It works like a charm via bluetooth but the following functions are flickering when directly connected via ADB... Same set of code is working completely different on BT vs ADB... In bluetooth it works great no flickering.. with ADB its as if the clock / timing is off... I tried adjusting the SPI Rate and still no cigar... 
See below

Any help / suggestions is much appreciated!

-Dave

In setup:


spi_ = ioio_.openSpiMaster(4, 4, 5, 6, SpiMaster.Rate.RATE_50K);


public void greenAnimation() throws ConnectionLostException,
InterruptedException {
new Thread(new Runnable() {
public void run() {
int i = 0;
try {
clear(0, 31);

while (i < 25) {

Thread.sleep(25);

if ( i >= 0 && i < 24) {
green(0, i);
}

Thread.sleep(25);
i++;
}

Thread.sleep(20000);
run();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ConnectionLostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}).start();
}



private void setLed(int num, RGB rgb) {
// Find the right buffer to write to (first or second half).
byte[] buffer;
if (num >= 16) {
buffer = buffer2_;
num -= 16;
} else {
buffer = buffer1_;
}
num *= 3;
if (rgb.r == 0 && rgb.g == 0 && rgb.b == 0) {
fadeOut(buffer, num++);
fadeOut(buffer, num++);
fadeOut(buffer, num++);
} else {
// Poor-man's white balanace :)
buffer[num++] = rgb.r;
buffer[num++] = rgb.g;
buffer[num++] = rgb.b;
}
}
public void green(int start, int end)
throws ConnectionLostException {
try {
for (int i = start; i < end; i++) {
color.clear();
color.r = (byte) 0;
color.g = (byte) 255;
color.b = (byte) 0;
setLed(i, color);
}
spi_.writeReadAsync(0, buffer1_, buffer1_.length,
buffer1_.length, null, 0);
spi_.writeRead(buffer2_, buffer2_.length, buffer2_.length,
null, 0);
Thread.sleep(50);
} catch (InterruptedException e1) {
}
}

Ytai Ben-Tsvi

unread,
Jan 13, 2014, 2:09:57 AM1/13/14
to ioio-...@googlegroups.com
Hi,
A few things to check:
  • How come you can use the same pin for MISO and MOSI? It shouldn't be valid... Use something else for MISO.
  • Try changing the second writeRead to writeReadAsync and wrap both calls between a ioio_.beginBatch() / ioio_.endBatch() block.


--
You received this message because you are subscribed to the Google Groups "ioio-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ioio-users+...@googlegroups.com.
To post to this group, send email to ioio-...@googlegroups.com.
Visit this group at http://groups.google.com/group/ioio-users.
For more options, visit https://groups.google.com/groups/opt_out.

dakman05

unread,
Jan 13, 2014, 8:39:58 AM1/13/14
to ioio-...@googlegroups.com
wow dude you rock !! ... worked like a charm... here are the changes if anyone wants to know!

i implemented both suggestions but it seems like the beginBatch/endBatch actually did the trick! 

thanks again!

spi_ = ioio_.openSpiMaster(39, 4, 5, 6, SpiMaster.Rate.RATE_50K);


public void green(int start, int end) throws ConnectionLostException {

try {
for (int i = start; i < end; i++) {
color.clear();
color.r = (byte) 0;
color.g = (byte) 255;
color.b = (byte) 0;
setLed(i, color);
}
ioio_.beginBatch();
try {
spi_.writeReadAsync(0, buffer1_, buffer1_.length,
buffer1_.length, null, 0);
spi_.writeReadAsync(0, buffer2_, buffer2_.length,
buffer2_.length, null, 0);
Thread.sleep(50);
} finally {
  ioio_.endBatch();
}
} catch (InterruptedException e1) {
}

Ytai Ben-Tsvi

unread,
Jan 13, 2014, 10:43:50 AM1/13/14
to ioio-...@googlegroups.com

Cool. You probably want the sleep outside the batch though.

Reply all
Reply to author
Forward
0 new messages