Notice: Any messages purporting to come from this site telling you that your password has expired, or that you need to verify your details, confirm your email, resolve issues, making threats, or asking for money, are
spam. We do not email users with any such messages. If you have lost your password you can obtain a new one by using the
password reset link.
Entire forum
➜ Electronics
➜ Microprocessors
➜ Library for MicroVGA adapter
Library for MicroVGA adapter
|
Postings by administrators only.
Refresh page
Posted by
| Nick Gammon
Australia (23,120 posts) Bio
Forum Administrator |
Date
| Tue 17 Apr 2012 03:39 AM (UTC) Amended on Tue 17 Apr 2012 09:59 PM (UTC) by Nick Gammon
|
Message
| I recently got a MicroVGA output device for the Arduino:
From:
http://www.microvga.com/
Using SPI you can send text to a normal VGA monitor (most of us will have one of them lying around).
Example output ...
To help use it I wrote a small library. First, to connect:
Wiring
uVGA
Pin
1 GND Arduino GND
2 +5V Arduino +5V
3 +3V3 output NOT CONNECTED
4 /SS Arduino Digital 10
5 SCK Arduino Digital 13
6 /RDY Arduino Digital 9
7 MISO Arduino Digital 12
8 MOSI Arduino Digital 11
Switch to SPI mode
Plug in a PS2 keyboard (it only goes into one socket), power up the device, and short the "setup" pad (on the edge near the keyboard socket, see photo) with a screwdriver. It should enter "setup" mode.
- Select "Communication -> SPI Mode"
- Hit Enter
- (Note, if you go back in 1000000 baud is still selected, that is the default, not the current mode)
- Select "Save settings"
- Wait for confirmation
- Power device off (unplug Arduino from power)
Library
Download from:
http://gammon.com.au/Arduino/uVGA.zip
Unzip contents into your "libraries" folder.
Sketch showing output
#include <SPI.h>
#include "uvga.h"
uVGA uvga;
void setup ()
{
uvga.begin ();
uvga.clrscr ();
uvga.println ("uVGA test.");
} // end of setup
void loop ()
{
for (int color = BLACK; color <= WHITE; color++)
{
uvga.textcolor (color);
uvga.print ("Color: ");
uvga.println (color);
uvga.println (micros ());
delay (1000);
}
} // end of loop
The class is based on the Stream class which lets you do the usual things you can with stuff like Serial. That is print, println, test if input is available, and so on.
You can also call these functions to do useful things with the screen like clearing it, changing colours and so on:
- clrscr
- clreol
- cursoron
- cursoroff
- textcolor
- textbackground
- textattr
- gotoxy
Sketch showing input
// Demonstrates text input
#include <SPI.h>
#include "uvga.h"
uVGA uvga;
void setup ()
{
uvga.begin ();
uvga.clrscr ();
uvga.println ("uVGA input test.");
} // end of setup
// callback handler for function keys
boolean fkey (const int key)
{
uvga.print ("Function key: ");
uvga.print (key, HEX);
uvga.println (" pressed.");
if (key == KB_ESC)
return true;
return false;
}
// get user input
void loop ()
{
char buf [20];
uvga.textcolor (WHITE);
uvga.print ("Enter something ... ");
if (uvga.getline (buf, sizeof buf, fkey))
uvga.println ("Cancelled");
uvga.textcolor (RED);
uvga.print ("You entered: ");
uvga.println (buf);
uvga.println ();
} // end of loop
The getline function lets you query for input. This is a blocking call. If you want to do it non-blocking just use uvga.available() and put things into a buffer (which is what getline does).
You can optionally supply a callback function to handle things like F3 being pressed, or the ESC key.
Sketch showing cursor positioning
// gotoxy test
#include <SPI.h>
#include "uvga.h"
uVGA uvga;
void setup ()
{
uvga.begin ();
} // end of setup
void loop ()
{
uvga.clrscr ();
uvga.cursoroff ();
for (int x = 1; x < 80; x += 10)
{
uvga.textcolor (x / 10 + 8);
if (x == 1)
uvga.textcolor (GREEN);
for (int y = 1; y <= 24; y++)
{
uvga.gotoxy (x, y);
uvga.print (x);
uvga.print (",");
uvga.print (y);
}
}
delay (5000);
} // end of loop
The above sketch demonstrates the gotoxy function. With that you can move the cursor around on the screen. |
- Nick Gammon
www.gammon.com.au, www.mushclient.com | Top |
|
The dates and times for posts above are shown in Universal Co-ordinated Time (UTC).
To show them in your local time you can join the forum, and then set the 'time correction' field in your profile to the number of hours difference between your location and UTC time.
10,073 views.
Postings by administrators only.
Refresh page
top