mirror of
https://github.com/geekammo/MicroView-Arduino-Library.git
synced 2026-02-20 19:41:22 +01:00
Compare commits
15 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9ee0b95cf8 | ||
|
|
fb8b9c4a43 | ||
|
|
e6045dcfa1 | ||
|
|
93beac25d5 | ||
|
|
7fd29e3c92 | ||
|
|
eaf0862bb5 | ||
|
|
ec1c760c7c | ||
|
|
684a5dc5c8 | ||
|
|
8c12a660e6 | ||
|
|
af4f0bea23 | ||
|
|
7f15062e58 | ||
|
|
1fcf3a0839 | ||
|
|
cf12168cc9 | ||
|
|
c56e0b96ac | ||
|
|
d61474cb61 |
1010
MicroView.cpp
1010
MicroView.cpp
File diff suppressed because it is too large
Load Diff
193
MicroView.h
193
MicroView.h
@@ -1,20 +1,19 @@
|
||||
#ifndef MICROVIEW_H
|
||||
#define MICROVIEW_H
|
||||
|
||||
#if ARDUINO >= 100
|
||||
#include "Arduino.h"
|
||||
#include "Print.h"
|
||||
#else
|
||||
#include "WProgram.h"
|
||||
#endif
|
||||
#include <stdio.h>
|
||||
#include <Arduino.h>
|
||||
#include <avr/pgmspace.h>
|
||||
|
||||
#define swap(a, b) { uint8_t t = a; a = b; b = t; }
|
||||
|
||||
#define DC 8
|
||||
#define SCK 13
|
||||
#define MOSI 11
|
||||
#define RESET 12
|
||||
#define CS 10
|
||||
|
||||
// SS, SCK, MOSI already defined by original pins_arduino.h
|
||||
//#define CS 10
|
||||
//#define SCK 13
|
||||
//#define MOSI 11
|
||||
|
||||
#define BLACK 0
|
||||
#define WHITE 1
|
||||
@@ -29,6 +28,10 @@
|
||||
#define PAGE 0
|
||||
#define ALL 1
|
||||
|
||||
#define WIDGETSTYLE0 0
|
||||
#define WIDGETSTYLE1 1
|
||||
#define WIDGETSTYLE2 2
|
||||
|
||||
#define SETCONTRAST 0x81
|
||||
#define DISPLAYALLONRESUME 0xA4
|
||||
#define DISPLAYALLON 0xA5
|
||||
@@ -62,9 +65,31 @@
|
||||
#define VERTICALRIGHTHORIZONTALSCROLL 0x29
|
||||
#define VERTICALLEFTHORIZONTALSCROLL 0x2A
|
||||
|
||||
class MICROVIEW : public Print{
|
||||
typedef enum CMD {
|
||||
CMD_CLEAR, //0
|
||||
CMD_INVERT, //1
|
||||
CMD_CONTRAST, //2
|
||||
CMD_DISPLAY, //3
|
||||
CMD_SETCURSOR, //4
|
||||
CMD_PIXEL, //5
|
||||
CMD_LINE, //6
|
||||
CMD_LINEH, //7
|
||||
CMD_LINEV, //8
|
||||
CMD_RECT, //9
|
||||
CMD_RECTFILL, //10
|
||||
CMD_CIRCLE, //11
|
||||
CMD_CIRCLEFILL, //12
|
||||
CMD_DRAWCHAR, //13
|
||||
CMD_DRAWBITMAP, //14
|
||||
CMD_GETLCDWIDTH, //15
|
||||
CMD_GETLCDHEIGHT, //16
|
||||
CMD_SETCOLOR, //17
|
||||
CMD_SETDRAWMODE //18
|
||||
} commCommand_t;
|
||||
|
||||
class MicroView : public Print{
|
||||
public:
|
||||
MICROVIEW(void) {};
|
||||
MicroView(void) {};
|
||||
void begin(void);
|
||||
|
||||
#if ARDUINO >= 100
|
||||
@@ -79,24 +104,36 @@ public:
|
||||
void setColumnAddress(uint8_t add);
|
||||
void setPageAddress(uint8_t add);
|
||||
|
||||
// LCD Draw functions
|
||||
// LCD Draw functions
|
||||
void clear(uint8_t mode);
|
||||
void clear(uint8_t mode, uint8_t c);
|
||||
void invert(uint8_t i);
|
||||
void invert(boolean inv);
|
||||
void contrast(uint8_t contrast);
|
||||
void display(void);
|
||||
void setCursor(uint8_t x, uint8_t y);
|
||||
void pixel(uint8_t x, uint8_t y);
|
||||
void pixel(uint8_t x, uint8_t y, uint8_t color, uint8_t mode);
|
||||
void line(uint8_t x0, uint8_t y0, uint8_t x1, uint8_t y1);
|
||||
void line(uint8_t x0, uint8_t y0, uint8_t x1, uint8_t y1, uint8_t color, uint8_t mode);
|
||||
void lineH(uint8_t x, uint8_t y, uint8_t width);
|
||||
void lineH(uint8_t x, uint8_t y, uint8_t width, uint8_t color, uint8_t mode);
|
||||
void lineV(uint8_t x, uint8_t y, uint8_t height);
|
||||
void lineV(uint8_t x, uint8_t y, uint8_t height, uint8_t color, uint8_t mode);
|
||||
void rect(uint8_t x, uint8_t y, uint8_t width, uint8_t height);
|
||||
void rect(uint8_t x, uint8_t y, uint8_t width, uint8_t height, uint8_t color , uint8_t mode);
|
||||
void rectFill(uint8_t x, uint8_t y, uint8_t width, uint8_t height);
|
||||
void rectFill(uint8_t x, uint8_t y, uint8_t width, uint8_t height, uint8_t color , uint8_t mode);
|
||||
void circle(uint8_t x, uint8_t y, uint8_t radius);
|
||||
void circle(uint8_t x, uint8_t y, uint8_t radius, uint8_t color, uint8_t mode);
|
||||
void circleFill(uint8_t x0, uint8_t y0, uint8_t r, uint8_t color, uint8_t mode);
|
||||
void circleFill(uint8_t x0, uint8_t y0, uint8_t radius);
|
||||
void circleFill(uint8_t x0, uint8_t y0, uint8_t radius, uint8_t color, uint8_t mode);
|
||||
void drawChar(uint8_t x, uint8_t y, uint8_t c);
|
||||
void drawChar(uint8_t x, uint8_t y, uint8_t c, uint8_t color, uint8_t mode);
|
||||
void drawBitmap(void);
|
||||
uint8_t getLCDWidth(void);
|
||||
uint8_t getLCDHeight(void);
|
||||
void setColor(uint8_t color);
|
||||
void setDrawMode(uint8_t mode);
|
||||
|
||||
// Font functions
|
||||
uint8_t getFontWidth(void);
|
||||
@@ -106,26 +143,134 @@ public:
|
||||
uint8_t setFontType(uint8_t type);
|
||||
uint8_t getFontStartChar(void);
|
||||
uint8_t getFontTotalChar(void);
|
||||
|
||||
// applicable for PRINT function
|
||||
void setFontColor(uint8_t color);
|
||||
void setFontDrawMode(uint8_t mode);
|
||||
|
||||
|
||||
|
||||
// LCD Rotate Scroll functions
|
||||
void scrollRight(uint8_t start, uint8_t stop);
|
||||
void scrollLeft(uint8_t start, uint8_t stop);
|
||||
void scrollVertRight(uint8_t start, uint8_t stop);
|
||||
void scrollVertLeft(uint8_t start, uint8_t stop);
|
||||
void stopScroll(void);
|
||||
void scrollStop(void);
|
||||
void flipVertical(boolean flip);
|
||||
void flipHorizontal(boolean flip);
|
||||
|
||||
// Communication
|
||||
void checkComm(void);
|
||||
void doCmd(uint8_t index);
|
||||
|
||||
private:
|
||||
//uint8_t cs;
|
||||
volatile uint8_t *mosiport, *sckport, *csport, *dcport; // use volatile because these are fixed location port address
|
||||
uint8_t mosipinmask, sckpinmask, cspinmask, dcpinmask;
|
||||
uint8_t fontColor,fontMode,fontWidth, fontHeight, fontType, fontStartChar, fontTotalChar, cursorX, cursorY;
|
||||
//volatile uint8_t *mosiport, *sckport;
|
||||
volatile uint8_t *ssport, *dcport, *ssreg, *dcreg; // use volatile because these are fixed location port address
|
||||
uint8_t mosipinmask, sckpinmask, sspinmask, dcpinmask;
|
||||
uint8_t foreColor,drawMode,fontWidth, fontHeight, fontType, fontStartChar, fontTotalChar, cursorX, cursorY;
|
||||
uint16_t fontMapWidth;
|
||||
//unsigned char *fontsPointer[TOTALFONTS];
|
||||
static const unsigned char *fontsPointer[];
|
||||
|
||||
int readSerial(void);
|
||||
};
|
||||
|
||||
class MicroViewWidget {
|
||||
public:
|
||||
MicroViewWidget(uint8_t newx, uint8_t newy, int16_t min, int16_t max);
|
||||
uint8_t getX();
|
||||
uint8_t getY();
|
||||
void setX(uint8_t newx);
|
||||
void setY(uint8_t newy);
|
||||
|
||||
int16_t getMinValue();
|
||||
int16_t getMaxValue();
|
||||
int16_t getValue();
|
||||
void setMaxValue(int16_t max);
|
||||
void setMinValue(int16_t max);
|
||||
void setValue(int16_t val);
|
||||
virtual void draw(){};
|
||||
virtual void drawFace(){};
|
||||
|
||||
private:
|
||||
uint8_t x;
|
||||
uint8_t y;
|
||||
int16_t maxValue;
|
||||
int16_t minValue;
|
||||
int16_t value;
|
||||
};
|
||||
|
||||
class MicroViewSlider: public MicroViewWidget{
|
||||
public:
|
||||
MicroViewSlider(uint8_t newx, uint8_t newy, int16_t min, int16_t max);
|
||||
MicroViewSlider(uint8_t newx, uint8_t newy, int16_t min, int16_t max, uint8_t sty);
|
||||
void draw();
|
||||
void drawFace();
|
||||
private:
|
||||
uint8_t totalTicks, style;
|
||||
bool needFirstDraw;
|
||||
int16_t prevValue;
|
||||
};
|
||||
|
||||
class MicroViewGauge: public MicroViewWidget{
|
||||
public:
|
||||
MicroViewGauge(uint8_t newx, uint8_t newy, int16_t min, int16_t max);
|
||||
MicroViewGauge(uint8_t newx, uint8_t newy, int16_t min, int16_t max, uint8_t sty);
|
||||
void draw();
|
||||
void drawFace();
|
||||
private:
|
||||
uint8_t radius, style;
|
||||
bool needFirstDraw;
|
||||
int16_t prevValue;
|
||||
};
|
||||
|
||||
#define SPI_CLOCK_DIV4 0x00
|
||||
#define SPI_CLOCK_DIV16 0x01
|
||||
#define SPI_CLOCK_DIV64 0x02
|
||||
#define SPI_CLOCK_DIV128 0x03
|
||||
#define SPI_CLOCK_DIV2 0x04
|
||||
#define SPI_CLOCK_DIV8 0x05
|
||||
#define SPI_CLOCK_DIV32 0x06
|
||||
//#define SPI_CLOCK_DIV64 0x07
|
||||
|
||||
#define SPI_MODE0 0x00
|
||||
#define SPI_MODE1 0x04
|
||||
#define SPI_MODE2 0x08
|
||||
#define SPI_MODE3 0x0C
|
||||
|
||||
#define SPI_MODE_MASK 0x0C // CPOL = bit 3, CPHA = bit 2 on SPCR
|
||||
#define SPI_CLOCK_MASK 0x03 // SPR1 = bit 1, SPR0 = bit 0 on SPCR
|
||||
#define SPI_2XCLOCK_MASK 0x01 // SPI2X = bit 0 on SPSR
|
||||
|
||||
class MVSPIClass {
|
||||
public:
|
||||
inline static byte transfer(byte _data);
|
||||
|
||||
// SPI Configuration methods
|
||||
|
||||
inline static void attachInterrupt();
|
||||
inline static void detachInterrupt(); // Default
|
||||
|
||||
static void begin(); // Default
|
||||
static void end();
|
||||
|
||||
static void setBitOrder(uint8_t);
|
||||
static void setDataMode(uint8_t);
|
||||
static void setClockDivider(uint8_t);
|
||||
};
|
||||
|
||||
extern MVSPIClass MVSPI;
|
||||
|
||||
byte MVSPIClass::transfer(byte _data) {
|
||||
SPDR = _data;
|
||||
while (!(SPSR & _BV(SPIF)))
|
||||
;
|
||||
return SPDR;
|
||||
}
|
||||
|
||||
void MVSPIClass::attachInterrupt() {
|
||||
SPCR |= _BV(SPIE);
|
||||
}
|
||||
|
||||
void MVSPIClass::detachInterrupt() {
|
||||
SPCR &= ~_BV(SPIE);
|
||||
}
|
||||
|
||||
|
||||
extern MicroView uView;
|
||||
#endif
|
||||
148
README.md
148
README.md
@@ -1,33 +1,141 @@
|
||||
MicroView Arduino Library
|
||||
================================
|
||||
# MicroView Arduino Library
|
||||
|
||||
Developed by [Geek Ammo Pty Ltd](http://www.geekammo.com) based on Arduino and other Open Source libraries.
|
||||
|
||||
Description
|
||||
-----------
|
||||
## Description
|
||||
|
||||
Arduino library for MicroView.
|
||||
|
||||
History
|
||||
-------
|
||||
## Required Libraries
|
||||
|
||||
1. [Time.h](http://www.pjrc.com/teensy/td_libs_Time.html) NOTE: Only required when using clock/time functions. For example the MicroViewDemo in the example folder.
|
||||
|
||||
## Installation
|
||||
|
||||
1. Change directory to Arduino's main directory
|
||||
2. cd libraries
|
||||
3. mkdir MicroView
|
||||
4. cd MicroView
|
||||
5. git clone git@github.com:geekammo/microview.git .
|
||||
6. Start Arduino IDE.
|
||||
7. MicroView example is located at, File--->Example--->MicroView--->MicroViewDemo
|
||||
|
||||
### Example 1 - Hello World!
|
||||
<pre><code>
|
||||
#include <MicroView.h>
|
||||
|
||||
void setup() {
|
||||
uView.begin();
|
||||
}
|
||||
|
||||
void loop() {
|
||||
uView.print("HelloWorld");
|
||||
uView.display(); // display current page buffer
|
||||
}
|
||||
</code></pre>
|
||||
|
||||
### Example 2 - Basic Drawing
|
||||
<pre><code>
|
||||
#include <MicroView.h>
|
||||
|
||||
void setup() {
|
||||
uView.begin();
|
||||
uView.clear(PAGE); // clear the page buffer
|
||||
}
|
||||
|
||||
void loop() {
|
||||
uView.line(0,0,64,48);
|
||||
uView.circle(32,24,10);
|
||||
uView.rect(10,10,20,20);
|
||||
uView.pixel(50,5);
|
||||
uView.setCursor(0,40);
|
||||
uView.print(" MicroView");
|
||||
uView.display(); // display current page buffer
|
||||
}
|
||||
</code></pre>
|
||||
|
||||
### Example 3 - Widgets
|
||||
<pre><code>
|
||||
#include <MicroView.h>
|
||||
|
||||
MicroViewWidget *widget,*widget2;
|
||||
|
||||
void setup() {
|
||||
uView.begin();
|
||||
uView.clear(PAGE);
|
||||
widget= new MicroViewGauge(32,30,0,100); // draw Gauge widget at x=32,y=30,min=0, max=100
|
||||
widget2= new MicroViewSlider(0,0,0,100); // draw Slider widget at x=0,y=0,min=0, max=100
|
||||
}
|
||||
|
||||
void loop() {
|
||||
for(int i=0; i<=100;i++) {
|
||||
widget->setValue(i); // give a value to widget
|
||||
widget2->setValue(i);
|
||||
uView.display(); // display current page buffer
|
||||
}
|
||||
}
|
||||
</code></pre>
|
||||
|
||||
### Example 4 - Communication
|
||||
<pre><code>
|
||||
#include <MicroView.h>
|
||||
|
||||
void setup() {
|
||||
uView.begin();
|
||||
uView.clear(PAGE);
|
||||
}
|
||||
|
||||
void loop() {
|
||||
uView.checkComm();
|
||||
}
|
||||
</code></pre>
|
||||
|
||||
## History
|
||||
**v1.10b: 22th April 2014 by JP Liew**
|
||||
* changed SS, RESET, DC pins to use weak internal pull-up resistors
|
||||
|
||||
**v1.09b: 17th April 2014 by JP Liew**
|
||||
* changed verticalFlip() to flipVertical() and horizontalFlip() to flipHorizontal() for consistency
|
||||
* added debug messages for doCmd()
|
||||
|
||||
**v1.08b: 18th February 2014 by JP Liew**
|
||||
* added verticalFlip(), horizontalFlip()
|
||||
|
||||
**v1.07b: 15th February 2014 by JP Liew**
|
||||
* changed function name stopScroll to scrollStop for consistency
|
||||
* added contrast function
|
||||
* added invert function
|
||||
* added KEYWORD to keywords.txt
|
||||
* added checkComm() function to communicate with host PC
|
||||
|
||||
**v1.06b: 9th February 2014 by JP Liew**
|
||||
* fixed Slider negative value not working
|
||||
* added round Gauge widget
|
||||
* changed Example 3 to show round Gauge
|
||||
|
||||
**v1.05b: 6th February 2014 by JP Liew**
|
||||
* changed MICROVIEW class name to MicroView
|
||||
* created MICROVIEWWIDGET class
|
||||
* added routines to draw widget
|
||||
* added slider widget
|
||||
* merged MicroViewWidget into MicroView
|
||||
* merged SPI.h into MicroView
|
||||
|
||||
**v1.04b: 3rd February 2014 by JP Liew**
|
||||
* declared permanent uView variable.
|
||||
* cleaned code and added some remarks.
|
||||
* added drawing functions that make use of default color and draw mode.
|
||||
* added example in README.md
|
||||
|
||||
**v1.03b: 1st February 2014 by JP Liew**
|
||||
* added 7 segment number only font.
|
||||
|
||||
**v1.02b: 31th January 2014 by JP Liew**
|
||||
* added sprite animation demo.
|
||||
|
||||
|
||||
**v1.01b: 30th January 2014 by JP Liew**
|
||||
* fixed font draw XOR mode bug.
|
||||
* added analog clock demo.
|
||||
|
||||
|
||||
**v1.00b: 30th January 2014 by JP Liew**
|
||||
* Initial commit. Beta with minor bugs.
|
||||
|
||||
Required Libraries
|
||||
------------------
|
||||
1. SPI.h
|
||||
2. [Time.h](http://www.pjrc.com/teensy/td_libs_Time.html) NOTE: Only required when using clock/time functions.
|
||||
|
||||
Installation Instructions
|
||||
-------------------------
|
||||
1. Extract / Check out to Arduino's libraries folder.
|
||||
2. Start Arduino IDE.
|
||||
3. MicroView example is located at, File--->Example--->MicroView--->MicroViewDemo
|
||||
* Initial commit. Beta with minor bugs.
|
||||
@@ -1,48 +1,44 @@
|
||||
#include <MicroView.h>
|
||||
#include <SPI.h>
|
||||
#include <Time.h>
|
||||
|
||||
#define PI 3.141592654
|
||||
#define clocksize 24
|
||||
|
||||
MICROVIEW mv;
|
||||
|
||||
uint8_t onDelay=5; // This is the erase delay in milliseconds, if there is no delay, the draw/erase will be too fast to be seen.
|
||||
uint8_t onDelay=5; // this is the on delay in milliseconds, if there is no on delay, the erase will be too fast to clean up the screen.
|
||||
|
||||
void setup() {
|
||||
mv.begin(); // Begin of MicroView
|
||||
mv.clear(ALL); // Erase hardware memory inside the OLED controller
|
||||
mv.display(); // Display the content in the buffer memory, by default it is the MicroView logo
|
||||
uView.begin(); // begin of MicroView
|
||||
uView.clear(ALL); // erase hardware memory inside the OLED controller
|
||||
uView.display(); // display the content in the buffer memory, by default it is the MicroView logo
|
||||
setTime(10,10,01,17,1,2014);
|
||||
delay(500);
|
||||
mv.clear(PAGE); // Erase the memory buffer, when next mv.display() is called, the OLED will be cleared.
|
||||
uView.clear(PAGE); // erase the memory buffer, when next uView.display() is called, the OLED will be cleared.
|
||||
}
|
||||
|
||||
void loop() {
|
||||
int i;
|
||||
static long counter=99999;
|
||||
static long mSec=millis()+1000;
|
||||
static double counter=99999;
|
||||
static unsigned long mSec=millis()+1000;
|
||||
static uint8_t x0,y0,x1,y1;
|
||||
static float degresshour,degressmin,degresssec,hourx,houry,minx,miny,secx,secy;
|
||||
static boolean drawnFirst=false;
|
||||
|
||||
mv.setFontType(0); // set font type 0, please see declaration in MicroView.cpp
|
||||
mv.setCursor(27,0); // points cursor to x=27 y=0
|
||||
mv.print(12);
|
||||
mv.setCursor(30,mv.getLCDHeight()-mv.getFontHeight());
|
||||
mv.print(6);
|
||||
mv.setCursor(0,mv.getLCDHeight() /2-(mv.getFontHeight()/2));
|
||||
mv.print(9);
|
||||
mv.setCursor(mv.getLCDWidth()-mv.getFontWidth(),mv.getLCDWidth()/2-(mv.getFontHeight()/2));
|
||||
mv.print(3);
|
||||
mv.display(); // display the memory buffer drawn
|
||||
uView.setFontType(0); // set font type 0, please see declaration in MicroView.cpp
|
||||
uView.setCursor(27,0); // points cursor to x=27 y=0
|
||||
uView.print(12);
|
||||
uView.setCursor(30,uView.getLCDHeight()-uView.getFontHeight());
|
||||
uView.print(6);
|
||||
uView.setCursor(0,uView.getLCDHeight() /2-(uView.getFontHeight()/2));
|
||||
uView.print(9);
|
||||
uView.setCursor(uView.getLCDWidth()-uView.getFontWidth(),uView.getLCDWidth()/2-(uView.getFontHeight()/2));
|
||||
uView.print(3);
|
||||
uView.display(); // display the memory buffer drawn
|
||||
|
||||
while ((second() % 10 )!=0) {
|
||||
if (mSec!=second()) {
|
||||
while ((second() % 11 )!=0) {
|
||||
if (mSec!=(unsigned long)second()) {
|
||||
if (drawnFirst) {
|
||||
mv.line(32,24,32+hourx,24+houry,WHITE,XOR);
|
||||
mv.line(32,24,32+minx,24+miny,WHITE,XOR);
|
||||
mv.line(32,24,32+secx,24+secy,WHITE,XOR);
|
||||
uView.line(32,24,32+hourx,24+houry,WHITE,XOR);
|
||||
uView.line(32,24,32+minx,24+miny,WHITE,XOR);
|
||||
uView.line(32,24,32+secx,24+secy,WHITE,XOR);
|
||||
}
|
||||
|
||||
degresshour = (((hour() * 360) / 12) + 270) * (PI / 180);
|
||||
@@ -59,103 +55,103 @@ void loop() {
|
||||
secy = sin(degresssec) * (clocksize / 1.1);
|
||||
|
||||
|
||||
mv.line(32,24,32+hourx,24+houry,WHITE,XOR);
|
||||
mv.line(32,24,32+minx,24+miny,WHITE,XOR);
|
||||
mv.line(32,24,32+secx,24+secy,WHITE,XOR);
|
||||
uView.line(32,24,32+hourx,24+houry,WHITE,XOR);
|
||||
uView.line(32,24,32+minx,24+miny,WHITE,XOR);
|
||||
uView.line(32,24,32+secx,24+secy,WHITE,XOR);
|
||||
drawnFirst=true;
|
||||
mv.display();
|
||||
uView.display();
|
||||
|
||||
mSec=second();
|
||||
}
|
||||
}
|
||||
drawnFirst=false;
|
||||
mv.clear(PAGE);
|
||||
uView.clear(PAGE);
|
||||
|
||||
int maxX=40;
|
||||
onDelay=30;
|
||||
mv.setFontType(0);
|
||||
mv.setCursor(0,40);
|
||||
mv.print(" SPRITE ");
|
||||
uView.setFontType(0);
|
||||
uView.setCursor(0,40);
|
||||
uView.print(" SPRITE ");
|
||||
for (int x=0; x<maxX;x+=2) {
|
||||
mv.setFontType(3);
|
||||
mv.drawChar(x,0,48,WHITE, XOR);
|
||||
mv.setFontType(4);
|
||||
mv.drawChar(maxX-x,10,48,WHITE,XOR);
|
||||
uView.setFontType(4);
|
||||
uView.drawChar(x,0,48,WHITE, XOR);
|
||||
uView.setFontType(5);
|
||||
uView.drawChar(maxX-x,10,48,WHITE,XOR);
|
||||
|
||||
mv.setFontType(5);
|
||||
mv.drawChar(x,32,48,WHITE,XOR);
|
||||
uView.setFontType(6);
|
||||
uView.drawChar(x,32,48,WHITE,XOR);
|
||||
|
||||
mv.display();
|
||||
uView.display();
|
||||
delay(onDelay);
|
||||
mv.setFontType(3);
|
||||
mv.drawChar(x,0,48,WHITE, XOR);
|
||||
mv.setFontType(4);
|
||||
mv.drawChar(maxX-x,10,48,WHITE,XOR);
|
||||
mv.setFontType(5);
|
||||
mv.drawChar(x,32,48,WHITE,XOR);
|
||||
uView.setFontType(4);
|
||||
uView.drawChar(x,0,48,WHITE, XOR);
|
||||
uView.setFontType(5);
|
||||
uView.drawChar(maxX-x,10,48,WHITE,XOR);
|
||||
uView.setFontType(6);
|
||||
uView.drawChar(x,32,48,WHITE,XOR);
|
||||
|
||||
mv.display();
|
||||
mv.setFontType(3);
|
||||
mv.drawChar(x,0,49,WHITE, XOR);
|
||||
mv.setFontType(4);
|
||||
mv.drawChar(maxX-x,10,49,WHITE,XOR);
|
||||
mv.setFontType(5);
|
||||
mv.drawChar(x,32,49,WHITE,XOR);
|
||||
uView.display();
|
||||
uView.setFontType(4);
|
||||
uView.drawChar(x,0,49,WHITE, XOR);
|
||||
uView.setFontType(5);
|
||||
uView.drawChar(maxX-x,10,49,WHITE,XOR);
|
||||
uView.setFontType(6);
|
||||
uView.drawChar(x,32,49,WHITE,XOR);
|
||||
|
||||
mv.display();
|
||||
uView.display();
|
||||
delay(onDelay);
|
||||
mv.setFontType(3);
|
||||
mv.drawChar(x,0,49,WHITE, XOR);
|
||||
mv.setFontType(4);
|
||||
mv.drawChar(maxX-x,10,49,WHITE,XOR);
|
||||
mv.setFontType(5);
|
||||
mv.drawChar(x,32,49,WHITE,XOR);
|
||||
mv.display();
|
||||
uView.setFontType(4);
|
||||
uView.drawChar(x,0,49,WHITE, XOR);
|
||||
uView.setFontType(5);
|
||||
uView.drawChar(maxX-x,10,49,WHITE,XOR);
|
||||
uView.setFontType(6);
|
||||
uView.drawChar(x,32,49,WHITE,XOR);
|
||||
uView.display();
|
||||
}
|
||||
|
||||
for (int x=maxX; x>0;x-=2) {
|
||||
mv.setFontType(3);
|
||||
mv.drawChar(x,10,48,WHITE, XOR);
|
||||
mv.setFontType(4);
|
||||
mv.drawChar(40-x,0,48,WHITE,XOR);
|
||||
mv.setFontType(5);
|
||||
mv.drawChar(x,32,48,WHITE,XOR);
|
||||
uView.setFontType(4);
|
||||
uView.drawChar(x,10,48,WHITE, XOR);
|
||||
uView.setFontType(5);
|
||||
uView.drawChar(40-x,0,48,WHITE,XOR);
|
||||
uView.setFontType(6);
|
||||
uView.drawChar(x,32,48,WHITE,XOR);
|
||||
|
||||
mv.display();
|
||||
uView.display();
|
||||
delay(onDelay);
|
||||
mv.setFontType(3);
|
||||
mv.drawChar(x,10,48,WHITE, XOR);
|
||||
mv.setFontType(4);
|
||||
mv.drawChar(40-x,0,48,WHITE,XOR);
|
||||
mv.setFontType(5);
|
||||
mv.drawChar(x,32,48,WHITE,XOR);
|
||||
uView.setFontType(4);
|
||||
uView.drawChar(x,10,48,WHITE, XOR);
|
||||
uView.setFontType(5);
|
||||
uView.drawChar(40-x,0,48,WHITE,XOR);
|
||||
uView.setFontType(6);
|
||||
uView.drawChar(x,32,48,WHITE,XOR);
|
||||
|
||||
mv.display();
|
||||
mv.setFontType(3);
|
||||
mv.drawChar(x,10,49,WHITE, XOR);
|
||||
mv.setFontType(4);
|
||||
mv.drawChar(40-x,0,49,WHITE,XOR);
|
||||
mv.setFontType(5);
|
||||
mv.drawChar(x,32,49,WHITE,XOR);
|
||||
uView.display();
|
||||
uView.setFontType(4);
|
||||
uView.drawChar(x,10,49,WHITE, XOR);
|
||||
uView.setFontType(5);
|
||||
uView.drawChar(40-x,0,49,WHITE,XOR);
|
||||
uView.setFontType(6);
|
||||
uView.drawChar(x,32,49,WHITE,XOR);
|
||||
|
||||
mv.display();
|
||||
uView.display();
|
||||
delay(onDelay);
|
||||
mv.setFontType(3);
|
||||
mv.drawChar(x,10,49,WHITE, XOR);
|
||||
mv.setFontType(4);
|
||||
mv.drawChar(40-x,0,49,WHITE,XOR);
|
||||
mv.setFontType(5);
|
||||
mv.drawChar(x,32,49,WHITE,XOR);
|
||||
uView.setFontType(4);
|
||||
uView.drawChar(x,10,49,WHITE, XOR);
|
||||
uView.setFontType(5);
|
||||
uView.drawChar(40-x,0,49,WHITE,XOR);
|
||||
uView.setFontType(6);
|
||||
uView.drawChar(x,32,49,WHITE,XOR);
|
||||
|
||||
mv.display();
|
||||
uView.display();
|
||||
}
|
||||
|
||||
|
||||
onDelay=5;
|
||||
mv.setFontType(0);
|
||||
mv.setCursor(0,40);
|
||||
mv.print(" LINE ");
|
||||
mv.display();
|
||||
uView.setFontType(0);
|
||||
uView.setCursor(0,40);
|
||||
uView.print(" LINE ");
|
||||
uView.display();
|
||||
delay(500);
|
||||
|
||||
for (i=0; i<150;i++) {
|
||||
@@ -164,84 +160,106 @@ void loop() {
|
||||
y0=random(48);
|
||||
y1=random(48);
|
||||
|
||||
mv.line(x0,y0,x1,y1, WHITE, XOR); // draw line from x0,y0 to x1,y1 using WHITE color and XOR draw mode
|
||||
mv.display();
|
||||
uView.line(x0,y0,x1,y1, WHITE, XOR); // draw line from x0,y0 to x1,y1 using WHITE color and XOR draw mode
|
||||
uView.display();
|
||||
delay(onDelay);
|
||||
mv.line(x0,y0,x1,y1, WHITE,XOR);
|
||||
mv.display();
|
||||
uView.line(x0,y0,x1,y1, WHITE,XOR);
|
||||
uView.display();
|
||||
}
|
||||
|
||||
mv.setCursor(0,40);
|
||||
mv.print("RECTANGLE ");
|
||||
mv.display();
|
||||
uView.setCursor(0,40);
|
||||
uView.print("RECTANGLE ");
|
||||
uView.display();
|
||||
delay(500);
|
||||
|
||||
x0=0;y0=0;x1=0;y1=0;
|
||||
for (i=1; i<64;i++) {
|
||||
y1=i;
|
||||
if (y1>47) y1=47;
|
||||
mv.rect(x0,y0,i,y1,WHITE,XOR); // draw rectangle from x0,y0 with width of i and height of y1 using WHITE color and XOR draw mode
|
||||
mv.display();
|
||||
uView.rect(x0,y0,i,y1,WHITE,XOR); // draw rectangle from x0,y0 with width of i and height of y1 using WHITE color and XOR draw mode
|
||||
uView.display();
|
||||
delay(onDelay);
|
||||
mv.rect(x0,y0,i,y1,WHITE,XOR);
|
||||
mv.display();
|
||||
uView.rect(x0,y0,i,y1,WHITE,XOR);
|
||||
uView.display();
|
||||
}
|
||||
|
||||
mv.setCursor(0,40);
|
||||
mv.print(" CIRCLE ");
|
||||
mv.display();
|
||||
uView.setCursor(0,40);
|
||||
uView.print(" CIRCLE ");
|
||||
uView.display();
|
||||
delay(500);
|
||||
|
||||
x0=32;y0=24;
|
||||
for (i=0;i<32;i++) {
|
||||
mv.circle(x0,y0,i,WHITE,XOR); // draw circle at x0,y0 with radius of i using WHITE color and XOR draw mode
|
||||
mv.display();
|
||||
uView.circle(x0,y0,i,WHITE,XOR); // draw circle at x0,y0 with radius of i using WHITE color and XOR draw mode
|
||||
uView.display();
|
||||
delay(onDelay);
|
||||
mv.circle(x0,y0,i,WHITE,XOR);
|
||||
mv.display();
|
||||
uView.circle(x0,y0,i,WHITE,XOR);
|
||||
uView.display();
|
||||
delay(onDelay);
|
||||
|
||||
}
|
||||
delay(500);
|
||||
|
||||
mv.clear(PAGE);
|
||||
mv.setCursor(0,40);
|
||||
mv.print(" Font 0 ");
|
||||
mv.display();
|
||||
uView.clear(PAGE);
|
||||
uView.setCursor(0,40);
|
||||
uView.print(" Font 0 ");
|
||||
uView.display();
|
||||
|
||||
mv.setFontType(0);
|
||||
mv.setCursor(0,0);
|
||||
mv.print("01234567890ABCDabcd01234567890ABCDabcd");
|
||||
mv.display();
|
||||
uView.setFontType(0);
|
||||
uView.setCursor(0,0);
|
||||
uView.print("01234567890ABCDabcd01234567890ABCDabcd");
|
||||
uView.display();
|
||||
delay(1500);
|
||||
|
||||
mv.clear(PAGE);
|
||||
mv.setCursor(0,40);
|
||||
mv.print(" Font 1 ");
|
||||
mv.display();
|
||||
uView.clear(PAGE);
|
||||
uView.setCursor(0,40);
|
||||
uView.print(" Font 1 ");
|
||||
uView.display();
|
||||
|
||||
mv.setFontType(1);
|
||||
mv.setCursor(0,0);
|
||||
mv.print("0123ABCDabcd");
|
||||
mv.display();
|
||||
uView.setFontType(1);
|
||||
uView.setCursor(0,0);
|
||||
uView.print("0123ABCDabcd");
|
||||
uView.display();
|
||||
delay(1500);
|
||||
mv.clear(PAGE);
|
||||
uView.clear(PAGE);
|
||||
|
||||
counter=99999;
|
||||
while (counter>99970) {
|
||||
|
||||
if (millis()>=mSec) {
|
||||
|
||||
mv.setFontType(2);
|
||||
mv.setCursor(0,0);
|
||||
mv.print(counter);
|
||||
uView.setFontType(3);
|
||||
uView.setCursor(0,0);
|
||||
uView.print(counter);
|
||||
|
||||
counter--;
|
||||
mv.display();
|
||||
uView.display();
|
||||
mSec=millis()+100;
|
||||
}
|
||||
}
|
||||
mv.clear(PAGE);
|
||||
uView.clear(PAGE);
|
||||
|
||||
counter=19.99;
|
||||
while (counter<20.2) {
|
||||
|
||||
if (millis()>=mSec) {
|
||||
|
||||
uView.setFontType(2);
|
||||
uView.setCursor(0,0);
|
||||
uView.print(counter + ((int)(counter*100)%20));
|
||||
|
||||
uView.setCursor(0,uView.getFontHeight());
|
||||
uView.print(50-counter);
|
||||
|
||||
uView.setCursor(0,(uView.getFontHeight()*2));
|
||||
uView.print(75+counter+0.02);
|
||||
|
||||
counter+=0.01;
|
||||
uView.display();
|
||||
mSec=millis()+100;
|
||||
}
|
||||
}
|
||||
uView.clear(PAGE);
|
||||
}
|
||||
|
||||
|
||||
|
||||
30
examples/MicroViewSlider/MicroViewSlider.ino
Normal file
30
examples/MicroViewSlider/MicroViewSlider.ino
Normal file
@@ -0,0 +1,30 @@
|
||||
#include <MicroView.h>
|
||||
|
||||
MicroViewWidget *widget[4]; // declaring an array of 4 MicroViewWidget
|
||||
|
||||
void setup() {
|
||||
uView.begin(); // init and start MicroView
|
||||
uView.clear(PAGE); // erase the memory buffer, when next uView.display() is called, the OLED will be cleared.
|
||||
widget[0] = new MicroViewSlider(0,0,0,100); // declare widget0 as a Slider at x=0, y=0, min=0, max=100
|
||||
widget[1] = new MicroViewSlider(0,10,0,150); // declare widget0 as a Slider at x=0, y=10, min=0, max=150
|
||||
widget[2] = new MicroViewSlider(0,20,0,50); // declare widget0 as a Slider at x=0, y=20, min=0, max=50
|
||||
widget[3] = new MicroViewSlider(0,30,0,200); // declare widget0 as a Slider at x=0, y=30, min=0, max=200
|
||||
}
|
||||
|
||||
void loop() {
|
||||
for (int i=0;i<=100;i++) {
|
||||
widget[0]->setValue(i); // set value i to widget0
|
||||
widget[1]->setValue(100-i);
|
||||
widget[2]->setValue(i);
|
||||
widget[3]->setValue(100-i);
|
||||
uView.display();
|
||||
}
|
||||
|
||||
for(int i=100; i>=0;i--) {
|
||||
widget[0]->setValue(i);
|
||||
widget[1]->setValue(100-i);
|
||||
widget[2]->setValue(i);
|
||||
widget[3]->setValue(100-i);
|
||||
uView.display();
|
||||
}
|
||||
}
|
||||
59
keywords.txt
59
keywords.txt
@@ -7,18 +7,75 @@
|
||||
#######################################
|
||||
|
||||
MICROVIEW KEYWORD1
|
||||
uView KEYWORD1
|
||||
MicroViewWidget KEYWORD1
|
||||
MicroViewSlider KEYWORD1
|
||||
MicroViewGauge KEYWORD1
|
||||
|
||||
#######################################
|
||||
# Methods and Functions (KEYWORD2)
|
||||
#######################################
|
||||
|
||||
begin KEYWORD2
|
||||
invert KEYWORD2
|
||||
clear KEYWORD2
|
||||
home KEYWORD2
|
||||
invert KEYWORD2
|
||||
contrast KEYWORD2
|
||||
display KEYWORD2
|
||||
setCursor KEYWORD2
|
||||
pixel KEYWORD2
|
||||
line KEYWORD2
|
||||
lineH KEYWORD2
|
||||
lineV KEYWORD2
|
||||
rect KEYWORD2
|
||||
rectFill KEYWORD2
|
||||
circle KEYWORD2
|
||||
circleFill KEYWORD2
|
||||
drawChar KEYWORD2
|
||||
getLCDWidth KEYWORD2
|
||||
getLCDHeight KEYWORD2
|
||||
setColor KEYWORD2
|
||||
setDrawMode KEYWORD2
|
||||
getFontWidth KEYWORD2
|
||||
getFontHeight KEYWORD2
|
||||
getTotalFonts KEYWORD2
|
||||
getFontType KEYWORD2
|
||||
setFontType KEYWORD2
|
||||
getFontStartChar KEYWORD2
|
||||
getFontTotalChar KEYWORD2
|
||||
scrollRight KEYWORD2
|
||||
scrollLeft KEYWORD2
|
||||
scrollVertRight KEYWORD2
|
||||
scrollVertLeft KEYWORD2
|
||||
scrollStop KEYWORD2
|
||||
flipVertical KEYWORD2
|
||||
flipHorizontal KEYWORD2
|
||||
|
||||
getX KEYWORD2
|
||||
getY KEYWORD2
|
||||
setX KEYWORD2
|
||||
setY KEYWORD2
|
||||
getMinValue KEYWORD2
|
||||
getMaxValue KEYWORD2
|
||||
setMaxValue KEYWORD2
|
||||
setMinValue KEYWORD2
|
||||
setValue KEYWORD2
|
||||
draw KEYWORD2
|
||||
drawFace KEYWORD2
|
||||
checkComm KEYWORD2
|
||||
|
||||
#######################################
|
||||
# Constants (LITERAL1)
|
||||
#######################################
|
||||
|
||||
BLACK LITERAL1
|
||||
WHITE LITERAL1
|
||||
NORM LITERAL1
|
||||
XOR LITERAL1
|
||||
PAGE LITERAL1
|
||||
ALL LITERAL1
|
||||
WIDGETSTYLE0 LITERAL1
|
||||
WIDGETSTYLE1 LITERAL1
|
||||
WIDGETSTYLE2 LITERAL1
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user