mirror of
https://github.com/geekammo/MicroView-Arduino-Library.git
synced 2026-02-20 19:41:22 +01:00
Compare commits
22 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
87e118eb44 | ||
|
|
94fc7e6437 | ||
|
|
7c3ec25d70 | ||
|
|
dce58d7069 | ||
|
|
82d55a8201 | ||
|
|
d28428ce35 | ||
|
|
77faa7d583 | ||
|
|
eb9edb19d6 | ||
|
|
21fa22bec2 | ||
|
|
5afff4bff7 | ||
|
|
8d2802f6c1 | ||
|
|
c67593e321 | ||
|
|
f398624f85 | ||
|
|
9c5568418a | ||
|
|
a32fd2c499 | ||
|
|
499594d9de | ||
|
|
fa09bdd7aa | ||
|
|
b109908d28 | ||
|
|
abacd6b7bc | ||
|
|
b5462c5bcb | ||
|
|
7b66741f79 | ||
|
|
c1e8756c4e |
2430
MicroView.cpp
2430
MicroView.cpp
File diff suppressed because it is too large
Load Diff
80
MicroView.h
80
MicroView.h
@@ -24,13 +24,35 @@
|
||||
|
||||
#define swap(a, b) { uint8_t t = a; a = b; b = t; }
|
||||
|
||||
#define DC 8
|
||||
#define RESET 7
|
||||
#define OLEDPWR 4
|
||||
#define OLEDPWR 4 // 3.3V regulator enable
|
||||
|
||||
// SS, SCK, MOSI already defined by original pins_arduino.h
|
||||
//#define CS 10
|
||||
//#define SCK 13
|
||||
// Port and bit mappings for DC, RESET, SS
|
||||
// ** These are CPU dependent **
|
||||
#define DCPORT PORTB
|
||||
#define DCDDR DDRB
|
||||
#define DCBIT 0
|
||||
|
||||
#define RESETPORT PORTD
|
||||
#define RESETDDR DDRD
|
||||
#define RESETBIT 7
|
||||
|
||||
#define SSPORT PORTB
|
||||
#define SSDDR DDRB
|
||||
#define SSBIT 2
|
||||
|
||||
// Macros to quickly set DC, RESET, SS
|
||||
// A HIGH sets the signal to input mode with the internal pullup enabled
|
||||
#define DCHIGH ((DCPORT |= _BV(DCBIT)), (DCDDR &= ~_BV(DCBIT)))
|
||||
#define DCLOW ((DCPORT &= ~_BV(DCBIT)), (DCDDR |= _BV(DCBIT)))
|
||||
|
||||
#define RESETHIGH ((RESETPORT |= _BV(RESETBIT)), (RESETDDR &= ~_BV(RESETBIT)))
|
||||
#define RESETLOW ((RESETPORT &= ~_BV(RESETBIT)), (RESETDDR |= _BV(RESETBIT)))
|
||||
|
||||
#define SSHIGH ((SSPORT |= _BV(SSBIT)), (SSDDR &= ~_BV(SSBIT)))
|
||||
#define SSLOW ((SSPORT &= ~_BV(SSBIT)), (SSDDR |= _BV(SSBIT)))
|
||||
|
||||
// SCK, MOSI already defined by original pins_arduino.h
|
||||
//#define SCK 13
|
||||
//#define MOSI 11
|
||||
|
||||
#define BLACK 0
|
||||
@@ -38,6 +60,13 @@
|
||||
|
||||
#define LCDWIDTH 64
|
||||
#define LCDHEIGHT 48
|
||||
#define LCDPAGES (LCDHEIGHT / 8)
|
||||
#define LCDCOLUMNOFFSET 32 // Visible start column within SSD1306 controller memory
|
||||
|
||||
#define LCDTOTALWIDTH 128 // Full width of SSD1306 controller memory
|
||||
#define LCDTOTALHEIGHT 64 // Full height of SSD1306 controller memory
|
||||
#define LCDTOTALPAGES (LCDTOTALHEIGHT / 8)
|
||||
|
||||
#define FONTHEADERSIZE 6
|
||||
|
||||
#define NORM 0
|
||||
@@ -49,6 +78,8 @@
|
||||
#define WIDGETSTYLE0 0
|
||||
#define WIDGETSTYLE1 1
|
||||
#define WIDGETSTYLE2 2
|
||||
//Added for Vertical slider styles
|
||||
#define WIDGETSTYLE3 3
|
||||
|
||||
#define SETCONTRAST 0x81
|
||||
#define DISPLAYALLONRESUME 0xA4
|
||||
@@ -65,6 +96,10 @@
|
||||
#define SETMULTIPLEX 0xA8
|
||||
#define SETLOWCOLUMN 0x00
|
||||
#define SETHIGHCOLUMN 0x10
|
||||
#define SETPAGE 0xB0
|
||||
#define SETADDRESSMODE 0x20
|
||||
#define SETCOLUMNBOUNDS 0x21
|
||||
#define SETPAGEBOUNDS 0x22
|
||||
#define SETSTARTLINE 0x40
|
||||
#define MEMORYMODE 0x20
|
||||
#define COMSCANINC 0xC0
|
||||
@@ -109,6 +144,7 @@ class MicroView : public Print{
|
||||
public:
|
||||
MicroView(void) {};
|
||||
void begin(void);
|
||||
void end(void);
|
||||
|
||||
//#if ARDUINO >= 100
|
||||
|
||||
@@ -120,6 +156,8 @@ public:
|
||||
|
||||
// RAW LCD functions
|
||||
void command(uint8_t c);
|
||||
void command(uint8_t c1, uint8_t c2);
|
||||
void command(uint8_t c1, uint8_t c2, uint8_t c3);
|
||||
void data(uint8_t c);
|
||||
void setColumnAddress(uint8_t add);
|
||||
void setPageAddress(uint8_t add);
|
||||
@@ -178,10 +216,6 @@ public:
|
||||
void doCmd(uint8_t index);
|
||||
|
||||
private:
|
||||
//uint8_t cs;
|
||||
//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];
|
||||
@@ -192,6 +226,7 @@ private:
|
||||
|
||||
class MicroViewWidget {
|
||||
public:
|
||||
bool needFirstDraw;
|
||||
MicroViewWidget(uint8_t newx, uint8_t newy, int16_t min, int16_t max);
|
||||
uint8_t getX();
|
||||
uint8_t getY();
|
||||
@@ -208,6 +243,7 @@ public:
|
||||
virtual void draw(){};
|
||||
/** \brief Draw widget face overridden by child class. */
|
||||
virtual void drawFace(){};
|
||||
void reDraw();
|
||||
|
||||
private:
|
||||
uint8_t x;
|
||||
@@ -223,9 +259,9 @@ public:
|
||||
MicroViewSlider(uint8_t newx, uint8_t newy, int16_t min, int16_t max, uint8_t sty);
|
||||
void draw();
|
||||
void drawFace();
|
||||
void reDraw();
|
||||
private:
|
||||
uint8_t totalTicks, style;
|
||||
bool needFirstDraw;
|
||||
int16_t prevValue;
|
||||
};
|
||||
|
||||
@@ -235,9 +271,9 @@ public:
|
||||
MicroViewGauge(uint8_t newx, uint8_t newy, int16_t min, int16_t max, uint8_t sty);
|
||||
void draw();
|
||||
void drawFace();
|
||||
void reDraw();
|
||||
private:
|
||||
uint8_t radius, style;
|
||||
bool needFirstDraw;
|
||||
int16_t prevValue;
|
||||
};
|
||||
|
||||
@@ -261,8 +297,17 @@ private:
|
||||
|
||||
class MVSPIClass {
|
||||
public:
|
||||
/** \brief Wait for SPI serial transfer complete. */
|
||||
inline static void wait();
|
||||
|
||||
/** \brief Transfer data byte via SPI port. */
|
||||
inline static byte transfer(byte _data);
|
||||
inline static void transfer(byte _data);
|
||||
|
||||
/** \brief Set up to begin a SPI packet transmit */
|
||||
static void packetBegin();
|
||||
|
||||
/** \brief End a SPI packet transmit */
|
||||
static void packetEnd();
|
||||
|
||||
// SPI Configuration methods
|
||||
|
||||
@@ -279,11 +324,13 @@ public:
|
||||
|
||||
extern MVSPIClass MVSPI;
|
||||
|
||||
byte MVSPIClass::transfer(byte _data) {
|
||||
SPDR = _data;
|
||||
void MVSPIClass::wait() {
|
||||
while (!(SPSR & _BV(SPIF)))
|
||||
;
|
||||
return SPDR;
|
||||
}
|
||||
|
||||
void MVSPIClass::transfer(byte _data) {
|
||||
SPDR = _data;
|
||||
}
|
||||
|
||||
void MVSPIClass::attachInterrupt() {
|
||||
@@ -294,6 +341,5 @@ void MVSPIClass::detachInterrupt() {
|
||||
SPCR &= ~_BV(SPIE);
|
||||
}
|
||||
|
||||
|
||||
extern MicroView uView;
|
||||
#endif
|
||||
|
||||
22
README.md
22
README.md
@@ -83,6 +83,7 @@ void loop() {
|
||||
void setup() {
|
||||
uView.begin();
|
||||
uView.clear(PAGE);
|
||||
Serial.begin(115200); // user decide the baud rate
|
||||
}
|
||||
|
||||
void loop() {
|
||||
@@ -91,6 +92,25 @@ void loop() {
|
||||
</code></pre>
|
||||
|
||||
## History
|
||||
**v1.17b: 4th August 2014 by JP Liew**
|
||||
* added reDraw() for MicroViewWidget class
|
||||
* removed Serial.begin() from uView.begin() so that user can have control
|
||||
* added MicroViewWidgetRedraw example
|
||||
|
||||
**v1.16b: 3rd August 2014 by czetie**
|
||||
* added vertical slider widget
|
||||
|
||||
**v1.15b: 3rd August 2014 by Scott Allen**
|
||||
* improved lots of low level routines, Fast SPI
|
||||
* fixed some compilation warnings
|
||||
* reduced overdriving display inputs
|
||||
* added uVuew.end() to power off the display
|
||||
* improved speed of display() and clear() functions
|
||||
* fixed positionning of "3" on clock face
|
||||
|
||||
**v1.14b: 26th July 2014 by JP Liew**
|
||||
* added Learning Kit Circuit Sketch
|
||||
|
||||
**v1.13b: 13th June 2014 by JP Liew**
|
||||
* added Sine Wave Example
|
||||
* inserted license to example code
|
||||
@@ -129,7 +149,7 @@ void loop() {
|
||||
|
||||
**v1.05b: 6th February 2014 by JP Liew**
|
||||
* changed MICROVIEW class name to MicroView
|
||||
* created MICROVIEWWIDGET class
|
||||
* created MicroViewWidget class
|
||||
* added routines to draw widget
|
||||
* added slider widget
|
||||
* merged MicroViewWidget into MicroView
|
||||
|
||||
24
examples/LearningKit/Blink/Blink.ino
Normal file
24
examples/LearningKit/Blink/Blink.ino
Normal file
@@ -0,0 +1,24 @@
|
||||
#include <MicroView.h>
|
||||
/*
|
||||
MicroView Blink
|
||||
Draw a circle for one second, then off for one second, repeatedly.
|
||||
|
||||
This example code is in the public domain.
|
||||
*/
|
||||
|
||||
// the setup routine runs once when you press reset:
|
||||
void setup() {
|
||||
uView.begin();
|
||||
uView.clear(PAGE);
|
||||
}
|
||||
|
||||
// the loop routine runs over and over again forever:
|
||||
void loop() {
|
||||
uView.circleFill(32,24,10,WHITE,NORM);
|
||||
uView.display();
|
||||
delay(1000); // wait for a second
|
||||
|
||||
uView.circleFill(32,24,10,BLACK,NORM);
|
||||
uView.display();
|
||||
delay(1000); // wait for a second
|
||||
}
|
||||
14
examples/LearningKit/Circuit1/Circuit1.ino
Normal file
14
examples/LearningKit/Circuit1/Circuit1.ino
Normal file
@@ -0,0 +1,14 @@
|
||||
int LED = A3; // declare LED as pin A3 of MicroView
|
||||
|
||||
void setup()
|
||||
{
|
||||
pinMode(LED, OUTPUT); // set LED pin as OUTPUT
|
||||
}
|
||||
|
||||
void loop()
|
||||
{
|
||||
digitalWrite(LED, HIGH); // set LED pin HIGH voltage, LED will be on
|
||||
delay(1000); // delay 1000 ms
|
||||
digitalWrite(LED, LOW); // set LED pin LOW voltage, LED will be off
|
||||
delay(1000); // delay 1000 ms
|
||||
}
|
||||
23
examples/LearningKit/Circuit10/Circuit10.ino
Normal file
23
examples/LearningKit/Circuit10/Circuit10.ino
Normal file
@@ -0,0 +1,23 @@
|
||||
#include <MicroView.h> // include MicroView library
|
||||
|
||||
int relayPin = 2; // set relayPin as pin 2 of Arduino
|
||||
|
||||
void setup() {
|
||||
uView.begin(); // start MicroView
|
||||
uView.clear(PAGE); // clear page
|
||||
pinMode(relayPin, OUTPUT); // initialize the digital pin as an output.
|
||||
}
|
||||
|
||||
void loop() {
|
||||
uView.setCursor(0,0); // set cursor at 0,0
|
||||
uView.print("YELLOW"); // print YELLOW text
|
||||
uView.display(); // display
|
||||
digitalWrite(relayPin, HIGH); // turn the RELAY ON (HIGH is the voltage level)
|
||||
delay(1000); // wait for a second
|
||||
|
||||
uView.setCursor(0,0);
|
||||
uView.print("RED ");
|
||||
uView.display();
|
||||
digitalWrite(relayPin, LOW); // turn the RELAY off by making the voltage LOW
|
||||
delay(1000); // wait for a second
|
||||
}
|
||||
20
examples/LearningKit/Circuit11/Circuit11.ino
Normal file
20
examples/LearningKit/Circuit11/Circuit11.ino
Normal file
@@ -0,0 +1,20 @@
|
||||
#include <MicroView.h> // include MicroView library
|
||||
|
||||
MicroViewWidget *widget; // declare widget pointer
|
||||
|
||||
int sensorValue; // declare variable to store sensor value
|
||||
int sensorPin=A0; // declare sensor pin as A0 of Arduino
|
||||
|
||||
void setup() {
|
||||
uView.begin(); // start MicroView
|
||||
uView.clear(PAGE); // clear page
|
||||
widget = new MicroViewSlider(0,0,0,1024, WIDGETSTYLE1); // declare widget as slider
|
||||
pinMode(sensorPin, INPUT); // set sensor pin as INPUT
|
||||
}
|
||||
|
||||
void loop () {
|
||||
sensorValue=analogRead(sensorPin); // read and store sensor value
|
||||
widget->setValue(sensorValue); // set sensor value to widget
|
||||
uView.display(); // display widget
|
||||
delay(20); // delay 20 ms
|
||||
}
|
||||
26
examples/LearningKit/Circuit2/Circuit2.ino
Normal file
26
examples/LearningKit/Circuit2/Circuit2.ino
Normal file
@@ -0,0 +1,26 @@
|
||||
#include <MicroView.h> // include MicroView library
|
||||
|
||||
MicroViewWidget *widget; // create widget pointer
|
||||
MicroViewWidget *widget2; // create widget pointer
|
||||
|
||||
int sensorPin = A1; // select the input pin for the potentiometer
|
||||
int sensorValue = 0; // variable to store the value coming from the sensor
|
||||
|
||||
void setup()
|
||||
{
|
||||
digitalWrite(sensorPin, HIGH); // Internal Pull-up
|
||||
pinMode(sensorPin, INPUT); // make pin as INPUT
|
||||
uView.begin(); // start MicroView
|
||||
uView.clear(PAGE); // clear page
|
||||
widget = new MicroViewSlider(0, 0, 0, 1024); // make widget as Slider
|
||||
widget2 = new MicroViewSlider(0, 20, 0, 1024, WIDGETSTYLE1); // make widget as Silder STYLE1
|
||||
uView.display(); // display the content in the screen buffer
|
||||
}
|
||||
|
||||
void loop()
|
||||
{
|
||||
sensorValue = analogRead(sensorPin); // read sensorPin
|
||||
widget->setValue(sensorValue); // set value of sensorPin to widget
|
||||
widget2->setValue(sensorValue); // set value of sensorPin to widget
|
||||
uView.display(); // display the content in the screen buffer
|
||||
}
|
||||
71
examples/LearningKit/Circuit3/Circuit3.ino
Normal file
71
examples/LearningKit/Circuit3/Circuit3.ino
Normal file
@@ -0,0 +1,71 @@
|
||||
#include <MicroView.h> // include MicroView library
|
||||
|
||||
MicroViewWidget *redWidget, *greenWidget, *blueWidget; // declare 3 widget pointers
|
||||
|
||||
int RED = 6; // declare RED LED pin 6
|
||||
int GREEN = 5; // declare GREEN LED pin 5
|
||||
int BLUE = 3; // declare BLUE LED pin 3
|
||||
int fadeStep = 10; // declare fading steps
|
||||
int dly=20; // declare delay
|
||||
|
||||
void setup()
|
||||
{
|
||||
uView.begin(); // start MicroView
|
||||
uView.clear(PAGE); // clear page
|
||||
redWidget = new MicroViewSlider(0,0,0,255); // declare RED widget as slider
|
||||
greenWidget = new MicroViewSlider(0,10,0,255); // declare GREEN widget as slider
|
||||
blueWidget = new MicroViewSlider(0,20,0,255); // declare BLUE widget as slider
|
||||
|
||||
pinMode(RED, OUTPUT); // set RED LED pin as OUTPUT
|
||||
pinMode(GREEN, OUTPUT); // set GREEN LED pin as OUTPUT
|
||||
pinMode(BLUE, OUTPUT); // set BLUE LED pin as OUTPUT
|
||||
}
|
||||
|
||||
void loop()
|
||||
{
|
||||
int i; // init i variable for general use
|
||||
// brightening
|
||||
for (i=0;i<=255;i+=fadeStep) { // step i from 0 to 255 by fadeSteps
|
||||
redWidget->setValue(i); // set brightness value for RED LED to widget
|
||||
uView.display(); // display the content of the screen buffer
|
||||
analogWrite(RED,i); // set brightness value for RED LED to the pin
|
||||
delay(dly);
|
||||
}
|
||||
// dimming
|
||||
for (i=255;i>=0;i-=fadeStep) { // step i from 255 to 0 by fadeSteps
|
||||
redWidget->setValue(i);
|
||||
uView.display();
|
||||
analogWrite(RED,i);
|
||||
delay(dly);
|
||||
}
|
||||
|
||||
// brightening
|
||||
for (i=0;i<=255;i+=fadeStep) {
|
||||
greenWidget->setValue(i);
|
||||
uView.display();
|
||||
analogWrite(GREEN,i);
|
||||
delay(dly);
|
||||
}
|
||||
// dimming
|
||||
for (i=255;i>=0;i-=fadeStep) {
|
||||
greenWidget->setValue(i);
|
||||
uView.display();
|
||||
analogWrite(GREEN,i);
|
||||
delay(dly);
|
||||
}
|
||||
|
||||
// brightening
|
||||
for (i=0;i<256;i+=fadeStep) {
|
||||
blueWidget->setValue(i);
|
||||
uView.display();
|
||||
analogWrite(BLUE,i);
|
||||
delay(dly);
|
||||
}
|
||||
// dimming
|
||||
for (i=255;i>=0;i-=fadeStep) {
|
||||
blueWidget->setValue(i);
|
||||
uView.display();
|
||||
analogWrite(BLUE,i);
|
||||
delay(dly);
|
||||
}
|
||||
}
|
||||
29
examples/LearningKit/Circuit4/Circuit4.ino
Normal file
29
examples/LearningKit/Circuit4/Circuit4.ino
Normal file
@@ -0,0 +1,29 @@
|
||||
#include <MicroView.h> // include MicroView library
|
||||
|
||||
int buttonPin = A0; // push button pin
|
||||
int buttonState = 0; // variable to store the pushbutton status
|
||||
|
||||
void setup() {
|
||||
uView.begin(); // start MicroView
|
||||
uView.clear(PAGE); // clear page
|
||||
|
||||
pinMode(buttonPin, INPUT); // initialize the pushbutton pin as an input
|
||||
digitalWrite(buttonPin,HIGH); // set Internal pull-up
|
||||
}
|
||||
|
||||
void loop() {
|
||||
buttonState = digitalRead(buttonPin); // read the state of the pushbutton value
|
||||
|
||||
// check if the pushbutton is pressed.
|
||||
// if it is not pressed, the buttonState is HIGH:
|
||||
if (buttonState == HIGH) {
|
||||
uView.setCursor(0,0); // set cursor at 0,0
|
||||
uView.print("OFF"); // print OFF
|
||||
uView.display();
|
||||
}
|
||||
else {
|
||||
uView.setCursor(0,0);
|
||||
uView.print("ON ");
|
||||
uView.display();
|
||||
}
|
||||
}
|
||||
20
examples/LearningKit/Circuit5/Circuit5.ino
Normal file
20
examples/LearningKit/Circuit5/Circuit5.ino
Normal file
@@ -0,0 +1,20 @@
|
||||
#include <MicroView.h> // include MicroView library
|
||||
|
||||
MicroViewWidget *widget; // declare widget pointer
|
||||
|
||||
int sensorPin = A2; // select the input pin for the photo resistor
|
||||
int sensorValue = 0; // variable to store the value coming from the sensor
|
||||
|
||||
void setup() {
|
||||
pinMode(sensorPin,INPUT); // set sensor pin as INPUT
|
||||
digitalWrite(sensorPin,HIGH); // set Internal pull-up
|
||||
uView.begin(); // start MicrView
|
||||
uView.clear(PAGE); // clear page
|
||||
widget = new MicroViewGauge(32,24,0,1023,WIDGETSTYLE1); // set widget as gauge STYLE1
|
||||
}
|
||||
|
||||
void loop() {
|
||||
sensorValue= analogRead(sensorPin); // read value from sensorPin
|
||||
widget->setValue(sensorValue); // set the sensorValue to the gauge widget
|
||||
uView.display(); // display the widget
|
||||
}
|
||||
23
examples/LearningKit/Circuit6/Circuit6.ino
Normal file
23
examples/LearningKit/Circuit6/Circuit6.ino
Normal file
@@ -0,0 +1,23 @@
|
||||
#include <MicroView.h> // include MicroView library
|
||||
|
||||
MicroViewWidget *widget; // declare widget pointer
|
||||
|
||||
int sensorPin = A0; // select the input pin for the temperature sensor
|
||||
int sensorValue = 0; // variable to store the value coming from the sensor
|
||||
|
||||
void setup() {
|
||||
pinMode(sensorPin,INPUT); // set sensor pin as INPUT
|
||||
uView.begin(); // start MicroView
|
||||
uView.clear(PAGE); // clear page
|
||||
widget = new MicroViewGauge(32,24,0,255,WIDGETSTYLE1); // declare as gauge widget
|
||||
uView.drawChar(47,33,67); // Character C is ASCII code 67
|
||||
}
|
||||
|
||||
void loop() {
|
||||
sensorValue= analogRead(sensorPin); // read sensor pin value
|
||||
float voltage = sensorValue * 5.0; // voltage at pin in volt
|
||||
voltage /= 1024.0; // voltage = sensorValue x (5/1024)
|
||||
float temperatureC = (voltage - 0.5) * 100 ; // C = (voltage - 0.5) x 100
|
||||
widget->setValue(temperatureC); // set temperature value to the gauge
|
||||
uView.display(); // display gauge tick
|
||||
}
|
||||
38
examples/LearningKit/Circuit7/Circuit7.ino
Normal file
38
examples/LearningKit/Circuit7/Circuit7.ino
Normal file
@@ -0,0 +1,38 @@
|
||||
#include <MicroView.h> // include MicroView library
|
||||
#include <Servo.h> // include Servo library
|
||||
|
||||
Servo servo; // declare servo object
|
||||
|
||||
void setup()
|
||||
{
|
||||
uView.begin(); // start MicroView
|
||||
uView.clear(PAGE); // clear page
|
||||
servo.attach(6); // servo control pin at D6
|
||||
}
|
||||
|
||||
void loop()
|
||||
{
|
||||
uView.setCursor(0,0); // set cursor to 0,0
|
||||
uView.print("Mid "); // display Mid
|
||||
uView.display();
|
||||
servo.write(90); // about 90 degree
|
||||
delay(2000); // delay 2 seconds
|
||||
|
||||
uView.setCursor(0,0);
|
||||
uView.print("Left ");
|
||||
uView.display();
|
||||
servo.write(20); // about 20 degree
|
||||
delay(2000);
|
||||
|
||||
uView.setCursor(0,0);
|
||||
uView.print("Mid ");
|
||||
uView.display();
|
||||
servo.write(90); // about 90 degree
|
||||
delay(2000);
|
||||
|
||||
uView.setCursor(0,0);
|
||||
uView.print("Right");
|
||||
uView.display();
|
||||
servo.write(160); // about 160 degree
|
||||
delay(2000);
|
||||
}
|
||||
82
examples/LearningKit/Circuit8/Circuit8.ino
Normal file
82
examples/LearningKit/Circuit8/Circuit8.ino
Normal file
@@ -0,0 +1,82 @@
|
||||
#include <MicroView.h>
|
||||
// adapted from SparkFun Inventor Kit https://www.sparkfun.com/products/12001
|
||||
// Please download the original source code for detail comment of the source code
|
||||
// http://dlnmh9ip6v2uc.cloudfront.net/datasheets/Kits/SIK%20Guide%20Code.zip
|
||||
|
||||
const int buzzerPin = A0;
|
||||
const int songLength = 18;
|
||||
char notes[] = "cdfda ag cdfdg gf "; // a space represents a rest
|
||||
int beats[] = {1,1,1,1,1,1,4,4,2,1,1,1,1,1,1,4,4,2};
|
||||
|
||||
int tempo = 150;
|
||||
|
||||
void setup()
|
||||
{
|
||||
uView.begin();
|
||||
uView.clear(PAGE);
|
||||
pinMode(buzzerPin, OUTPUT);
|
||||
}
|
||||
|
||||
void loop()
|
||||
{
|
||||
int i, duration;
|
||||
|
||||
for (i = 0; i < songLength; i++) // step through the song arrays
|
||||
{
|
||||
duration = beats[i] * tempo; // length of note/rest in ms
|
||||
|
||||
if (notes[i] == ' ') // is this a rest?
|
||||
{
|
||||
uView.print(" ");
|
||||
uView.display();
|
||||
delay(duration); // then pause for a moment
|
||||
}
|
||||
else // otherwise, play the note
|
||||
{
|
||||
uView.print(notes[i]);
|
||||
uView.display();
|
||||
tone(buzzerPin, frequency(notes[i]), duration);
|
||||
delay(duration); // wait for tone to finish
|
||||
}
|
||||
delay(tempo/10); // brief pause between notes
|
||||
}
|
||||
|
||||
// We only want to play the song once, so we'll pause forever:
|
||||
while(true){}
|
||||
// If you'd like your song to play over and over,
|
||||
// remove the above statement
|
||||
}
|
||||
|
||||
|
||||
int frequency(char note)
|
||||
{
|
||||
// This function takes a note character (a-g), and returns the
|
||||
// corresponding frequency in Hz for the tone() function.
|
||||
|
||||
int i;
|
||||
const int numNotes = 8; // number of notes we're storing
|
||||
|
||||
// The following arrays hold the note characters and their
|
||||
// corresponding frequencies. The last "C" note is uppercase
|
||||
// to separate it from the first lowercase "c". If you want to
|
||||
// add more notes, you'll need to use unique characters.
|
||||
|
||||
// For the "char" (character) type, we put single characters
|
||||
// in single quotes.
|
||||
|
||||
char names[] = { 'c', 'd', 'e', 'f', 'g', 'a', 'b', 'C' };
|
||||
int frequencies[] = {262, 294, 330, 349, 392, 440, 494, 523};
|
||||
|
||||
// Now we'll search through the letters in the array, and if
|
||||
// we find it, we'll return the frequency for that note.
|
||||
|
||||
for (i = 0; i < numNotes; i++) // Step through the notes
|
||||
{
|
||||
if (names[i] == note) // Is this the one?
|
||||
{
|
||||
return(frequencies[i]); // Yes! Return the frequency
|
||||
}
|
||||
}
|
||||
return(0); // We looked through everything and didn't find it,
|
||||
// but we still need to return a value, so return 0.
|
||||
}
|
||||
54
examples/LearningKit/Circuit9/Circuit9.ino
Normal file
54
examples/LearningKit/Circuit9/Circuit9.ino
Normal file
@@ -0,0 +1,54 @@
|
||||
#include <MicroView.h> // include MicroView library
|
||||
|
||||
int motorPIN = 3; // set motor control pin
|
||||
MicroViewWidget *widget; // declare widget pointer
|
||||
|
||||
void setup() {
|
||||
uView.begin(); // start MicroView
|
||||
uView.clear(PAGE); // clear page
|
||||
pinMode(motorPIN, OUTPUT); // initialize the digital pin as an output.
|
||||
widget = new MicroViewGauge(32,24,90,255,WIDGETSTYLE1); // set widget as gauge STYLE1
|
||||
setPwmFrequency(motorPIN,1); // set PWM frequency to about 31K
|
||||
}
|
||||
|
||||
void loop() {
|
||||
for (int i=90;i<255;i+=10) { // step i from 90 to 255 by step of 10
|
||||
widget->setValue(i); // set i value to gauge
|
||||
uView.display(); // display gauge
|
||||
analogWrite(motorPIN, i); // set the DUTY cycle of the motorPIN
|
||||
delay(500); // delay 500 ms
|
||||
}
|
||||
}
|
||||
|
||||
// function to set the frequency of the PWM pin
|
||||
// adapted from http://playground.arduino.cc/Code/PwmFrequency
|
||||
void setPwmFrequency(int pin, int divisor) {
|
||||
byte mode;
|
||||
if(pin == 5 || pin == 6 || pin == 9 || pin == 10) {
|
||||
switch(divisor) {
|
||||
case 1: mode = 0x01; break;
|
||||
case 8: mode = 0x02; break;
|
||||
case 64: mode = 0x03; break;
|
||||
case 256: mode = 0x04; break;
|
||||
case 1024: mode = 0x05; break;
|
||||
default: return;
|
||||
}
|
||||
if(pin == 5 || pin == 6) {
|
||||
TCCR0B = TCCR0B & 0b11111000 | mode;
|
||||
} else {
|
||||
TCCR1B = TCCR1B & 0b11111000 | mode;
|
||||
}
|
||||
} else if(pin == 3 || pin == 11) {
|
||||
switch(divisor) {
|
||||
case 1: mode = 0x01; break;
|
||||
case 8: mode = 0x02; break;
|
||||
case 32: mode = 0x03; break;
|
||||
case 64: mode = 0x04; break;
|
||||
case 128: mode = 0x05; break;
|
||||
case 256: mode = 0x06; break;
|
||||
case 1024: mode = 0x7; break;
|
||||
default: return;
|
||||
}
|
||||
TCCR2B = TCCR2B & 0b11111000 | mode;
|
||||
}
|
||||
}
|
||||
10
examples/LearningKit/HelloWorld/HelloWorld.ino
Normal file
10
examples/LearningKit/HelloWorld/HelloWorld.ino
Normal file
@@ -0,0 +1,10 @@
|
||||
#include <MicroView.h>
|
||||
|
||||
void setup() {
|
||||
uView.begin(); // start MicroView
|
||||
uView.clear(PAGE); // clear page
|
||||
uView.print("HelloWorld"); // display HelloWorld
|
||||
uView.display();
|
||||
}
|
||||
|
||||
void loop () {}
|
||||
@@ -373,7 +373,7 @@ void loop() {
|
||||
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.setCursor(uView.getLCDWidth()-uView.getFontWidth(),uView.getLCDHeight()/2-(uView.getFontHeight()/2));
|
||||
uView.print(3);
|
||||
uView.display(); // display the memory buffer drawn
|
||||
|
||||
@@ -618,4 +618,4 @@ void loop() {
|
||||
uView.clear(PAGE);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
43
examples/MicroViewVSlider/MicroViewVSlider.ino
Normal file
43
examples/MicroViewVSlider/MicroViewVSlider.ino
Normal file
@@ -0,0 +1,43 @@
|
||||
/*
|
||||
MicroView Arduino Library
|
||||
Copyright (C) 2014 GeekAmmo
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#include <MicroView.h>
|
||||
|
||||
MicroViewWidget *vWidget1, *vWidget2;
|
||||
|
||||
void setup() {
|
||||
uView.begin();
|
||||
uView.clear(PAGE);
|
||||
|
||||
vWidget1 = new MicroViewSlider(0, 0, 0, 255, WIDGETSTYLE2);
|
||||
vWidget2 = new MicroViewSlider(31, 0, 0, 255, WIDGETSTYLE3);
|
||||
}
|
||||
|
||||
void loop() {
|
||||
for (int i=0;i<=255;i++) {
|
||||
vWidget1->setValue(i);
|
||||
vWidget2->setValue(255-i);
|
||||
uView.display();
|
||||
}
|
||||
|
||||
for(int i=255; i>=0;i--) {
|
||||
vWidget1->setValue(i);
|
||||
vWidget2->setValue(255-i);
|
||||
uView.display();
|
||||
}
|
||||
}
|
||||
|
||||
48
examples/MicroViewWidgetRedraw/MicroViewWidgetRedraw.ino
Normal file
48
examples/MicroViewWidgetRedraw/MicroViewWidgetRedraw.ino
Normal file
@@ -0,0 +1,48 @@
|
||||
/*
|
||||
MicroView Arduino Library
|
||||
Copyright (C) 2014 GeekAmmo
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#include <MicroView.h>
|
||||
|
||||
MicroViewWidget *widget[2]; // declaring an array of 4 MicroViewWidget
|
||||
|
||||
void setup() {
|
||||
uView.begin(); // init and start MicroView
|
||||
widget[0] = new MicroViewSlider(0,0,0,255); // declare widget0 as a Slider at x=0, y=0, min=0, max=100
|
||||
widget[1] = new MicroViewGauge(32,24,0,255,WIDGETSTYLE0); // declare widget0 as a Slider at x=0, y=10, min=0, max=150
|
||||
uView.clear(PAGE); // erase the memory buffer, when next uView.display() is called, the OLED will be cleared.
|
||||
}
|
||||
|
||||
void loop() {
|
||||
|
||||
widget[0]->reDraw();
|
||||
for (int i=0;i<=255;i++) {
|
||||
widget[0]->setValue(i); // set value i to widget0
|
||||
uView.display();
|
||||
}
|
||||
|
||||
delay(500);
|
||||
uView.clear(PAGE);
|
||||
|
||||
widget[1]->reDraw();
|
||||
for (int i=0;i<=255;i++) {
|
||||
widget[1]->setValue(i); // set value i to widget0
|
||||
uView.display();
|
||||
}
|
||||
|
||||
delay(500);
|
||||
uView.clear(PAGE);
|
||||
}
|
||||
@@ -77,5 +77,6 @@ ALL LITERAL1
|
||||
WIDGETSTYLE0 LITERAL1
|
||||
WIDGETSTYLE1 LITERAL1
|
||||
WIDGETSTYLE2 LITERAL1
|
||||
WIDGETSTYLE3 LITERAL1
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user