Velleman VMA438 User manual

VMA438
0.96 INCH OLED SCREEN WITH I2C FOR ARDUINO®
USER MANUAL

VMA438
V. 01 –12/03/2018 2 ©Velleman nv
USER MANUAL
1. Introduction
To all residents of the European Union
Important environmental information about this product
This symbol on the device or the package indicates that disposal of the device after its lifecycle could
harm the environment. Do not dispose of the unit (or batteries) as unsorted municipal waste; it
should be taken to a specialized company for recycling. This device should be returned to your
distributor or to a local recycling service. Respect the local environmental rules.
If in doubt, contact your local waste disposal authorities.
Thank you for choosing Velleman®! Please read the manual thoroughly before bringing this device into service.
If the device was damaged in transit, do not install or use it and contact your dealer.
2. Safety Instructions
This device can be used by children aged from 8 years and above, and persons with
reduced physical, sensory or mental capabilities or lack of experience and knowledge if
they have been given supervision or instruction concerning the use of the device in a
safe way and understand the hazards involved. Children shall not play with the device.
Cleaning and user maintenance shall not be made by children without supervision.
Indoor use only.
Keep away from rain, moisture, splashing and dripping liquids.
3. General Guidelines
Refer to the Velleman®Service and Quality Warranty on the last pages of this manual.
Familiarise yourself with the functions of the device before actually using it.
All modifications of the device are forbidden for safety reasons. Damage caused by user
modifications to the device is not covered by the warranty.
Only use the device for its intended purpose. Using the device in an unauthorised way
will void the warranty.
Damage caused by disregard of certain guidelines in this manual is not covered by the
warranty and the dealer will not accept responsibility for any ensuing defects or
problems.
Nor Velleman nv nor its dealers can be held responsible for any damage (extraordinary,
incidental or indirect) –of any nature (financial, physical…) arising from the possession,
use or failure of this product.
Due to constant product improvements, the actual product appearance might differ from
the shown images.
Product images are for illustrative purposes only.
Do not switch the device on immediately after it has been exposed to changes in
temperature. Protect the device against damage by leaving it switched off until it has
reached room temperature.
Keep this manual for future reference.
4. What is Arduino®
Arduino®is an open-source prototyping platform based in easy-to-use hardware and software. Arduino®boards
are able to read inputs –light-on sensor, a finger on a button or a Twitter message –and turn it into an output
–activating of a motor, turning on an LED, publishing something online. You can tell your board what to do by
sending a set of instructions to the microcontroller on the board. To do so, you use the Arduino programming
language (based on Wiring) and the Arduino®software IDE (based on Processing).
Surf to www.arduino.cc and www.arduino.org for more information.

VMA438
V. 01 –12/03/2018 3 ©Velleman nv
5. Overview
VMA438
OLED displays are great in many ways. They use very little power, are bright, easy to read with a large
viewing angle and have high resolution considering their small size.
resolution: 128 x 64 dots
viewing angle: > 160°
working voltage: 3 to 5 V
recommended library: U8glib
interface: I2C
driver: SSD1306
working temperature: -30 °C to 70 °C
OLED colour: blue
I/O level: 3.3-5 V
dimensions: 27 x 27 mm
6. Pin Layout
VCC
3.3-5 V power supply
Gnd
ground
SCL
serial clock line
SDA
serial data line
7. Example
Connection.
Vcc======5V
Gnd======Gnd
SCL======A5
SDA======A4
Go to the product page on www.velleman.eu and download the U8glib.zip file.
Start the Arduino®IDE and import this library: Sketch Include Library Add Zip library.
Once finished, go back to Sketch Include Library Manage library’s, and scroll down until you find the
U8glib library. Select this library and tap “Update”. Now you have the latest version with examples.
Go to Files Examples and scroll down to U8glib. Open the example Graphicstest.
In the sketch “Graphicstest”, several types of displays can be selected. Just “un-comment” the one you need.
For the VMA438 you have to un-comment:
U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send AC
Compile and upload the sketch to your VMA100 and enjoy!

VMA438
V. 01 –12/03/2018 4 ©Velleman nv
The “Graphicstest”sketch with only the correct driver line for VMA438 looks like this:
/*
GraphicsTest.pde
>>> Before compiling: Please remove comment from the constructor of the
>>> connected graphics display (see below).
Universal 8bit Graphics Library, https://github.com/olikraus/u8glib/
Copyright (c) 2012, ol[email protected]
All rights reserved.
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this list
of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice, this
list of conditions and the following disclaimer in the documentation and/or other
materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include "U8glib.h"
// setup u8g object, please remove comment from one of the following constructor calls
// IMPORTANT NOTE: The following list is incomplete. The complete list of supported
// devices with all constructor calls is here: https://github.com/olikraus/u8glib/wiki/device
U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send AC VMA438 -
Velleman , UN-comment this line as it is now

VMA438
V. 01 –12/03/2018 5 ©Velleman nv
void u8g_prepare(void) {
u8g.setFont(u8g_font_6x10);
u8g.setFontRefHeightExtendedText();
u8g.setDefaultForegroundColor();
u8g.setFontPosTop();
}
void u8g_box_frame(uint8_t a) {
u8g.drawStr( 0, 0, "drawBox");
u8g.drawBox(5,10,20,10);
u8g.drawBox(10+a,15,30,7);
u8g.drawStr( 0, 30, "drawFrame");
u8g.drawFrame(5,10+30,20,10);
u8g.drawFrame(10+a,15+30,30,7);
}
void u8g_disc_circle(uint8_t a) {
u8g.drawStr( 0, 0, "drawDisc");
u8g.drawDisc(10,18,9);
u8g.drawDisc(24+a,16,7);
u8g.drawStr( 0, 30, "drawCircle");
u8g.drawCircle(10,18+30,9);
u8g.drawCircle(24+a,16+30,7);
}
void u8g_r_frame(uint8_t a) {
u8g.drawStr( 0, 0, "drawRFrame/Box");
u8g.drawRFrame(5, 10,40,30, a+1);
u8g.drawRBox(50, 10,25,40, a+1);
}
void u8g_string(uint8_t a) {
u8g.drawStr(30+a,31, " 0");
u8g.drawStr90(30,31+a, " 90");
u8g.drawStr180(30-a,31, " 180");
u8g.drawStr270(30,31-a, " 270");
}
void u8g_line(uint8_t a) {
u8g.drawStr( 0, 0, "drawLine");
u8g.drawLine(7+a, 10, 40, 55);
u8g.drawLine(7+a*2, 10, 60, 55);
u8g.drawLine(7+a*3, 10, 80, 55);
u8g.drawLine(7+a*4, 10, 100, 55);
}
void u8g_triangle(uint8_t a) {
uint16_t offset = a;
u8g.drawStr( 0, 0, "drawTriangle");
u8g.drawTriangle(14,7, 45,30, 10,40);
u8g.drawTriangle(14+offset,7-offset, 45+offset,30-offset, 57+offset,10-offset);
u8g.drawTriangle(57+offset*2,10, 45+offset*2,30, 86+offset*2,53);
u8g.drawTriangle(10+offset,40+offset, 45+offset,30+offset, 86+offset,53+offset);
}

VMA438
V. 01 –12/03/2018 6 ©Velleman nv
void u8g_ascii_1() {
char s[2] = " ";
uint8_t x, y;
u8g.drawStr( 0, 0, "ASCII page 1");
for( y = 0; y < 6; y++ ) {
for( x = 0; x < 16; x++ ) {
s[0] = y*16 + x + 32;
u8g.drawStr(x*7, y*10+10, s);
}
}
}
void u8g_ascii_2() {
char s[2] = " ";
uint8_t x, y;
u8g.drawStr( 0, 0, "ASCII page 2");
for( y = 0; y < 6; y++ ) {
for( x = 0; x < 16; x++ ) {
s[0] = y*16 + x + 160;
u8g.drawStr(x*7, y*10+10, s);
}
}
}
void u8g_extra_page(uint8_t a)
{
if ( u8g.getMode() == U8G_MODE_HICOLOR || u8g.getMode() == U8G_MODE_R3G3B2) {
/* draw background (area is 128x128) */
u8g_uint_t r, g, b;
b = a << 5;
for( g = 0; g < 64; g++ )
{
for( r = 0; r < 64; r++ )
{
u8g.setRGB(r<<2, g<<2, b );
u8g.drawPixel(g, r);
}
}
u8g.setRGB(255,255,255);
u8g.drawStr( 66, 0, "Color Page");
}
else if ( u8g.getMode() == U8G_MODE_GRAY2BIT )
{
u8g.drawStr( 66, 0, "Gray Level");
u8g.setColorIndex(1);
u8g.drawBox(0, 4, 64, 32);
u8g.drawBox(70, 20, 4, 12);
u8g.setColorIndex(2);
u8g.drawBox(0+1*a, 4+1*a, 64-2*a, 32-2*a);
u8g.drawBox(74, 20, 4, 12);
u8g.setColorIndex(3);
u8g.drawBox(0+2*a, 4+2*a, 64-4*a, 32-4*a);
u8g.drawBox(78, 20, 4, 12);
}

VMA438
V. 01 –12/03/2018 7 ©Velleman nv
else
{
u8g.drawStr( 0, 12, "setScale2x2");
u8g.setScale2x2();
u8g.drawStr( 0, 6+a, "setScale2x2");
u8g.undoScale();
}
}
uint8_t draw_state = 0;
void draw(void) {
u8g_prepare();
switch(draw_state >> 3) {
case 0: u8g_box_frame(draw_state&7); break;
case 1: u8g_disc_circle(draw_state&7); break;
case 2: u8g_r_frame(draw_state&7); break;
case 3: u8g_string(draw_state&7); break;
case 4: u8g_line(draw_state&7); break;
case 5: u8g_triangle(draw_state&7); break;
case 6: u8g_ascii_1(); break;
case 7: u8g_ascii_2(); break;
case 8: u8g_extra_page(draw_state&7); break;
}
}
void setup(void) {
// flip screen, if required
//u8g.setRot180();
#if defined(ARDUINO)
pinMode(13, OUTPUT);
digitalWrite(13, HIGH);
#endif
}
void loop(void) {
// picture loop
u8g.firstPage();
do {
draw();
} while( u8g.nextPage() );
// increase the state
draw_state++;
if ( draw_state >= 9*8 )
draw_state = 0;
// rebuild the picture after some delay
//delay(150);
}

VMA438
V. 01 –12/03/2018 8 ©Velleman nv
8. More Information
Please refer to the VMA438 product page on www.velleman.eu for more information.
Use this device with original accessories only. Velleman nv cannot be held responsible in the event
of damage or injury resulting from (incorrect) use of this device. For more info concerning this
product and the latest version of this manual, please visit our website www.velleman.eu. The
information in this manual is subject to change without prior notice.
© COPYRIGHT NOTICE
The copyright to this manual is owned by Velleman nv. All worldwide rights reserved. No part of this
manual may be copied, reproduced, translated or reduced to any electronic medium or otherwise without the
prior written consent of the copyright holder.

Velleman® Service and Quality Warranty
Since its foundation in 1972, Velleman® acquired extensive experience in the electronics world and currently
distributes its products in over 85 countries.
All our products fulfil strict quality requirements and legal stipulations in the EU. In order to ensure the quality,
our products regularly go through an extra quality check, both by an internal quality department and by
specialized external organisations. If, all precautionary measures notwithstanding, problems should occur,
please make appeal to our warranty (see guarantee conditions).
General Warranty Conditions Concerning Consumer Products
(for EU):
• All consumer products are subject to a 24-month warranty on production flaws and defective material as from
the original date of purchase.
• Velleman® can decide to replace an article with an equivalent article, or to refund the retail value totally or
partially when the complaint is valid and a free repair or replacement of the article is impossible, or if the
expenses are out of proportion.
You will be delivered a replacing article or a refund at the value of 100% of the purchase price in case of a flaw
occurred in the first year after the date of purchase and delivery, or a replacing article at 50% of the purchase
price or a refund at the value of 50% of the retail value in case of a flaw occurred in the second year after the
date of purchase and delivery.
• Not covered by warranty:
- all direct or indirect damage caused after delivery to the article (e.g. by oxidation, shocks, falls, dust, dirt,
humidity...), and by the article, as well as its contents (e.g. data loss), compensation for loss of profits;
- consumable goods, parts or accessories that are subject to an aging process during normal use, such as
batteries (rechargeable, non-rechargeable, built-in or replaceable), lamps, rubber parts, drive belts...
(unlimited list);
- flaws resulting from fire, water damage, lightning, accident, natural disaster, etc.…;
- flaws caused deliberately, negligently or resulting from improper handling, negligent maintenance, abusive
use or use contrary to the manufacturer’s instructions;
- damage caused by a commercial, professional or collective use of the article (the warranty validity will be
reduced to six (6) months when the article is used professionally);
- damage resulting from an inappropriate packing and shipping of the article;
- all damage caused by modification, repair or alteration performed by a third party without written permission
by Velleman®.
• Articles to be repaired must be delivered to your Velleman® dealer, solidly packed (preferably in the original
packaging), and be completed with the original receipt of purchase and a clear flaw description.
• Hint: In order to save on cost and time, please reread the manual and check if the flaw is caused by obvious
causes prior to presenting the article for repair. Note that returning a non-defective article can also involve
handling costs.
• Repairs occurring after warranty expiration are subject to shipping costs.
• The above conditions are without prejudice to all commercial warranties.
The above enumeration is subject to modification according to the article (see article’s manual).
Made in PRC
Imported by Velleman nv
Legen Heirweg 33, 9890 Gavere, Belgium
www.velleman.eu
Table of contents
Other Velleman Projection Screen manuals
Popular Projection Screen manuals by other brands

Da-Lite
Da-Lite Picture King Instruction book

Elite Screens
Elite Screens YardMaster 2 Series user guide

Vutec
Vutec Vision XTC2 installation instructions

Euroscreen
Euroscreen FLATMAX WRAP AROUND installation manual

Elite Screens
Elite Screens Spectrum Series user guide

Elite Screens
Elite Screens StarFrame Series user guide

Elite Screens
Elite Screens Yard Master 2 Series user guide

Dantax
Dantax Scansonic PS-100 Adjustment guide

Screen Innovations
Screen Innovations 7 Series Fixed owner's manual

Da-Lite
Da-Lite UTB Contour Instruction book

Stewart Filmscreen
Stewart Filmscreen Visionary Medio owner's manual

Jason.L
Jason.L Flyby Echo Assembly instructions