Jump to content

Using a Character LCD to display Graphs / Animations


Smithy
 Share

Recommended Posts

Just came across this video on youtube:

And was thinking it would be a cool feature to add to current midiboxes,

for instance having a fancier parameter meter display, (like the one in mb-6582)

I'm guessing that it would be more suited to MIDIbox SID v3, because of memory restrictions however.

How would this be done on midibox?

I'd imagine you must modify for the LCD driver, to be able to control pixels individually?

Or maybe you need to create new characters to do this, and it involves scrolling through each character?

Edited by Smithy
Link to comment
Share on other sites

Hi.

The MIDIbox_SEQ_V4 uses a similar feature for an animated logo display on startup.

Character LCD's have 8 user definable characters which is why you will notice that no more than 8 different special characters are displayed on screen at the same time. In fact all of the standard MIDIbox fonts already have the 'bargraph' characters defined so a simple "spectrum analyzer" display (like in the second half of the video) can be quite easily achieved.

With a bit of creativity you can do some quite impressive effects but for full 'pixel' level control you really need a graphical LCD!

Cheers

Phil

Link to comment
Share on other sites

Hi.

The MIDIbox_SEQ_V4 uses a similar feature for an animated logo display on startup.

I just spotted this in the mb-seq video! D'oh!

Character LCD's have 8 user definable characters which is why you will notice that no more than 8 different special characters are displayed on screen at the same time. In fact all of the standard MIDIbox fonts already have the 'bargraph' characters defined so a simple "spectrum analyzer" display (like in the second half of the video) can be quite easily achieved.

With a bit of creativity you can do some quite impressive effects but for full 'pixel' level control you really need a graphical LCD!

Cheers

Phil

Thanks a lot for the explanation phil!

Link to comment
Share on other sites

  • 1 month later...

Sure.

const unsigned char custom_chars_logo[8*8] = {
0x10, 0x10, 0x10, 0x1F, 0x1F, 0x1F, 0x1F, 0x0F, // bottom left
0x0B, 0x0B, 0x0B, 0x1B, 0x1E, 0x18, 0x18, 0x10, // bottom right
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x0E, // top right
0x01, 0x02, 0x08, 0x04, 0x08, 0x00, 0x1F, 0x10, // top left 1/3
0x08, 0x10, 0x08, 0x02, 0x04, 0x02, 0x1F, 0x10, // top left 2/3
0x08, 0x02, 0x01, 0x02, 0x08, 0x10, 0x1F, 0x10, // top left 3/3
0x08, 0x02, 0x01, 0x02, 0x08, 0x10, 0x1F, 0x10,
0x08, 0x02, 0x01, 0x02, 0x08, 0x10, 0x1F, 0x10
};

#define bl 0
#define br 1
#define tr 2
#define tl1 3
#define tl2 4
#define tl3 5

// define the LCD cursor positions (important if you use displays other than
// 2x8)
#define LCD_LINE1_ADDR 0
#define LCD_LINE2_ADDR 40

#define LCD_Line1 MIOS_LCD_CursorSet(LCD_LINE1_ADDR);
#define LCD_Line2 MIOS_LCD_CursorSet(LCD_LINE2_ADDR);

// pointless but oh well :-)
void UI_animatedLogo() {
char* line1 = APP_NAME;
char* line2 = APP_VERSION;

s8 n;
s8 m;

#ifdef QUICK_BOOT
#define DELAY1 0
#define DELAY2 0
#else
#define DELAY1 64
#define DELAY2 255
#endif

MIOS_LCD_Clear();

LCD_Line1;
MIOS_LCD_PrintChar(tl1);
MIOS_LCD_PrintChar(tr);
MIOS_LCD_PrintCString(" kaffe");
LCD_Line2;
MIOS_LCD_PrintChar(bl);
MIOS_LCD_PrintChar(br);
MIOS_LCD_PrintCString(" SEQ");

for (n=0; n<8; n++) {
for (m=0; m<3; m++) {
LCD_Line1;
MIOS_Delay(DELAY2);
MIOS_LCD_PrintChar(tl1+m);
}
}
}
[/code]

Link to comment
Share on other sites

Sure.

const unsigned char custom_chars_logo[8*8] = {

	0x10, 0x10, 0x10, 0x1F, 0x1F, 0x1F, 0x1F, 0x0F, 	// bottom left

	0x0B, 0x0B, 0x0B, 0x1B, 0x1E, 0x18, 0x18, 0x10, 	// bottom right

	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x0E, 	// top right

	0x01, 0x02, 0x08, 0x04, 0x08, 0x00, 0x1F, 0x10, 	// top left 1/3

	0x08, 0x10, 0x08, 0x02, 0x04, 0x02, 0x1F, 0x10, 	// top left 2/3

	0x08, 0x02, 0x01, 0x02, 0x08, 0x10, 0x1F, 0x10, 	// top left 3/3

	0x08, 0x02, 0x01, 0x02, 0x08, 0x10, 0x1F, 0x10, 

	0x08, 0x02, 0x01, 0x02, 0x08, 0x10, 0x1F, 0x10	

};


#define bl 0

#define br 1

#define tr 2

#define tl1 3

#define tl2 4

#define tl3 5


// define the LCD cursor positions (important if you use displays other than

// 2x8)

#define LCD_LINE1_ADDR 0

#define LCD_LINE2_ADDR 40


#define LCD_Line1	MIOS_LCD_CursorSet(LCD_LINE1_ADDR);

#define LCD_Line2	MIOS_LCD_CursorSet(LCD_LINE2_ADDR);


// pointless but oh well :-)

void UI_animatedLogo() {

	char* line1 = APP_NAME;

	char* line2 = APP_VERSION;


	s8 n;

	s8 m;


	#ifdef QUICK_BOOT

		#define DELAY1 0

		#define DELAY2 0

	#else

		#define DELAY1 64

		#define DELAY2 255

	#endif


	MIOS_LCD_Clear();


	LCD_Line1;

	MIOS_LCD_PrintChar(tl1);

	MIOS_LCD_PrintChar(tr);

	MIOS_LCD_PrintCString(" kaffe");

	LCD_Line2;

	MIOS_LCD_PrintChar(bl);

	MIOS_LCD_PrintChar(br);

	MIOS_LCD_PrintCString(" SEQ");


	for (n=0; n<8; n++) {

		for (m=0; m<3; m++) {

			LCD_Line1;

			MIOS_Delay(DELAY2);

			MIOS_LCD_PrintChar(tl1+m);

		}

	}	

}

is it for core32?

Link to comment
Share on other sites

Didnt spot the Kaffe logo reply the last time round.

And on a seq-related note,

you can haz finish this project plz? :wink:

http://midibox.org/forums/index.php?showtopic=8364

An MB Midi Looper, would be sweet, if anyone wants to make one!

I cant really find any dedicated midi loopers/loop pedals out there.

Edited by Smithy
Link to comment
Share on other sites

Many of the "Noritake Itron" VFD displays (like the one in the video above) include characters that can be arranged to make a horizontal bar-graph display, without the need for "custom characters".

I have a Left & Right growing from center type of level meter in the MBMixer software, even though it's not supported by all display types.

It's written in PIC ASM.. available on request.

LyleHaze

Link to comment
Share on other sites

  • 2 weeks later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

×
×
  • Create New...