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;
 }
}

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

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