sluggish simplemessagesystem
hi folks,
got deadline , running speed issues.
i'm using matrix library , simplemessagesystem library send array of values turn on , off leds, decimilla hooked max7219 ic.
when try control, say, 10 leds, works charm, can blink away @ pretty fast clip, 30 ms or so. when add more, response gets incrementally slower, can't seem squeeze more update of around 200 ms sending whole 64, despite clearing out buffer after each case statement sending crate return, simplemessagesystem uses reset incoming buffer (i'm assuming).
in max, have bank of leds being packed , sliced in 7 different lists, prepended character designate belong, have set hashtab of sorts in arduino code. i banging through (xval, yval, state) way cumbersome, decided i'd send state in sequence, using messagegetint function. if has idea on how make faster, immensely awesome. i'm pretty new of this, uphill battle.
here arduino sketch:
#include <binary.h>
#include <sprite.h>
#include <matrix.h>
#include <simplemessagesystem.h>
matrix mymatrix = matrix(5, 7, 6);
void setup()
{
// following command initiates serial port @ 9600 baud. please note slow!!!!!!
// suggest use higher speeds in own code. can go 115200 usb version, that's 12x faster
serial.begin(115200); //baud set @ 9600 compatibility, change!
}
void loop()
{
if (messagebuild() > 0) { // checks see if message complete , erases previous messages
writematrix(); // call writematrix function
}
}
void writematrix()
{ // write pin
switch (messagegetchar()) {
case 'a':
mymatrix.write(6, 7, messagegetint());
mymatrix.write(7, 7, messagegetint());
mymatrix.write(0, 7, messagegetint());
mymatrix.write(1, 7, messagegetint());
mymatrix.write(2, 7, messagegetint());
mymatrix.write(3, 7, messagegetint());
mymatrix.write(4, 7, messagegetint());
mymatrix.write(5, 7, messagegetint());
mymatrix.write(2, 6, messagegetint());
mymatrix.write(3, 6, messagegetint());
break;
case 'b':
mymatrix.write(4, 6, messagegetint());
mymatrix.write(5, 6, messagegetint());
mymatrix.write(6, 6, messagegetint());
mymatrix.write(7, 6, messagegetint());
mymatrix.write(0, 6, messagegetint());
mymatrix.write(3, 5, messagegetint());
mymatrix.write(4, 5, messagegetint());
mymatrix.write(5, 5, messagegetint());
mymatrix.write(6, 5, messagegetint());
mymatrix.write(7, 5, messagegetint());
break;
case 'c':
mymatrix.write(0, 5, messagegetint());
mymatrix.write(1, 6, messagegetint());
mymatrix.write(2, 4, messagegetint());
mymatrix.write(3, 4, messagegetint());
mymatrix.write(4, 4, messagegetint());
mymatrix.write(5, 4, messagegetint());
mymatrix.write(6, 4, messagegetint());
mymatrix.write(7, 4, messagegetint());
mymatrix.write(0, 4, messagegetint());
mymatrix.write(1, 5, messagegetint());
break;
case 'd':
mymatrix.write(2, 5, messagegetint());
mymatrix.write(1, 3, messagegetint());
mymatrix.write(2, 3, messagegetint());
mymatrix.write(3, 3, messagegetint());
mymatrix.write(4, 3, messagegetint());
mymatrix.write(5, 3, messagegetint());
mymatrix.write(6, 3, messagegetint());
mymatrix.write(7, 3, messagegetint());
mymatrix.write(0, 3, messagegetint());
mymatrix.write(1, 4, messagegetint());
break;
case 'e':
mymatrix.write(0, 1, messagegetint());
mymatrix.write(1, 2, messagegetint());
mymatrix.write(2, 2, messagegetint());
mymatrix.write(3, 2, messagegetint());
mymatrix.write(4, 2, messagegetint());
mymatrix.write(5, 2, messagegetint());
mymatrix.write(6, 2, messagegetint());
mymatrix.write(7, 2, messagegetint());
mymatrix.write(0, 2, messagegetint());
mymatrix.write(1, 1, messagegetint());
break;
case 'f':
mymatrix.write(2, 1, messagegetint());
mymatrix.write(3, 1, messagegetint());
mymatrix.write(4, 1, messagegetint());
mymatrix.write(5, 1, messagegetint());
mymatrix.write(6, 1, messagegetint());
mymatrix.write(7, 1, messagegetint());
mymatrix.write(4, 0, messagegetint());
mymatrix.write(5, 0, messagegetint());
mymatrix.write(6, 0, messagegetint());
mymatrix.write(7, 0, messagegetint());
break;
case 'g':
mymatrix.write(0, 0, messagegetint());
mymatrix.write(1, 0, messagegetint());
mymatrix.write(2, 0, messagegetint());
mymatrix.write(3, 0, messagegetint());
break;
}
}
got deadline , running speed issues.
i'm using matrix library , simplemessagesystem library send array of values turn on , off leds, decimilla hooked max7219 ic.
when try control, say, 10 leds, works charm, can blink away @ pretty fast clip, 30 ms or so. when add more, response gets incrementally slower, can't seem squeeze more update of around 200 ms sending whole 64, despite clearing out buffer after each case statement sending crate return, simplemessagesystem uses reset incoming buffer (i'm assuming).
in max, have bank of leds being packed , sliced in 7 different lists, prepended character designate belong, have set hashtab of sorts in arduino code. i banging through (xval, yval, state) way cumbersome, decided i'd send state in sequence, using messagegetint function. if has idea on how make faster, immensely awesome. i'm pretty new of this, uphill battle.
here arduino sketch:
#include <binary.h>
#include <sprite.h>
#include <matrix.h>
#include <simplemessagesystem.h>
matrix mymatrix = matrix(5, 7, 6);
void setup()
{
// following command initiates serial port @ 9600 baud. please note slow!!!!!!
// suggest use higher speeds in own code. can go 115200 usb version, that's 12x faster
serial.begin(115200); //baud set @ 9600 compatibility, change!
}
void loop()
{
if (messagebuild() > 0) { // checks see if message complete , erases previous messages
writematrix(); // call writematrix function
}
}
void writematrix()
{ // write pin
switch (messagegetchar()) {
case 'a':
mymatrix.write(6, 7, messagegetint());
mymatrix.write(7, 7, messagegetint());
mymatrix.write(0, 7, messagegetint());
mymatrix.write(1, 7, messagegetint());
mymatrix.write(2, 7, messagegetint());
mymatrix.write(3, 7, messagegetint());
mymatrix.write(4, 7, messagegetint());
mymatrix.write(5, 7, messagegetint());
mymatrix.write(2, 6, messagegetint());
mymatrix.write(3, 6, messagegetint());
break;
case 'b':
mymatrix.write(4, 6, messagegetint());
mymatrix.write(5, 6, messagegetint());
mymatrix.write(6, 6, messagegetint());
mymatrix.write(7, 6, messagegetint());
mymatrix.write(0, 6, messagegetint());
mymatrix.write(3, 5, messagegetint());
mymatrix.write(4, 5, messagegetint());
mymatrix.write(5, 5, messagegetint());
mymatrix.write(6, 5, messagegetint());
mymatrix.write(7, 5, messagegetint());
break;
case 'c':
mymatrix.write(0, 5, messagegetint());
mymatrix.write(1, 6, messagegetint());
mymatrix.write(2, 4, messagegetint());
mymatrix.write(3, 4, messagegetint());
mymatrix.write(4, 4, messagegetint());
mymatrix.write(5, 4, messagegetint());
mymatrix.write(6, 4, messagegetint());
mymatrix.write(7, 4, messagegetint());
mymatrix.write(0, 4, messagegetint());
mymatrix.write(1, 5, messagegetint());
break;
case 'd':
mymatrix.write(2, 5, messagegetint());
mymatrix.write(1, 3, messagegetint());
mymatrix.write(2, 3, messagegetint());
mymatrix.write(3, 3, messagegetint());
mymatrix.write(4, 3, messagegetint());
mymatrix.write(5, 3, messagegetint());
mymatrix.write(6, 3, messagegetint());
mymatrix.write(7, 3, messagegetint());
mymatrix.write(0, 3, messagegetint());
mymatrix.write(1, 4, messagegetint());
break;
case 'e':
mymatrix.write(0, 1, messagegetint());
mymatrix.write(1, 2, messagegetint());
mymatrix.write(2, 2, messagegetint());
mymatrix.write(3, 2, messagegetint());
mymatrix.write(4, 2, messagegetint());
mymatrix.write(5, 2, messagegetint());
mymatrix.write(6, 2, messagegetint());
mymatrix.write(7, 2, messagegetint());
mymatrix.write(0, 2, messagegetint());
mymatrix.write(1, 1, messagegetint());
break;
case 'f':
mymatrix.write(2, 1, messagegetint());
mymatrix.write(3, 1, messagegetint());
mymatrix.write(4, 1, messagegetint());
mymatrix.write(5, 1, messagegetint());
mymatrix.write(6, 1, messagegetint());
mymatrix.write(7, 1, messagegetint());
mymatrix.write(4, 0, messagegetint());
mymatrix.write(5, 0, messagegetint());
mymatrix.write(6, 0, messagegetint());
mymatrix.write(7, 0, messagegetint());
break;
case 'g':
mymatrix.write(0, 0, messagegetint());
mymatrix.write(1, 0, messagegetint());
mymatrix.write(2, 0, messagegetint());
mymatrix.write(3, 0, messagegetint());
break;
}
}
well 1 calling messagegetint() whole lot, changing in each case? if not this
code: [select]
case 'a':
int messageint = messagegetint();
mymatrix.write(6, 7, messageint );
mymatrix.write(7, 7, messageint );
mymatrix.write(0, 7, messageint );
mymatrix.write(1, 7, messageint );
mymatrix.write(2, 7, messageint );
mymatrix.write(3, 7, messageint );
mymatrix.write(4, 7, messageint );
mymatrix.write(5, 7, messageint );
mymatrix.write(2, 6, messageint );
mymatrix.write(3, 6, messageint );
break;
, repeat each case, speed whole lot
Arduino Forum > Forum 2005-2010 (read only) > Software > Interfacing > sluggish simplemessagesystem
arduino
Comments
Post a Comment