diff --git a/README.md b/README.md index 9409d74..52cb45b 100644 --- a/README.md +++ b/README.md @@ -91,6 +91,9 @@ void loop() { ## History +**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 diff --git a/examples/LearningKit/Blink/Blink.ino b/examples/LearningKit/Blink/Blink.ino new file mode 100644 index 0000000..b1cf647 --- /dev/null +++ b/examples/LearningKit/Blink/Blink.ino @@ -0,0 +1,24 @@ +#include +/* + 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 +} \ No newline at end of file diff --git a/examples/LearningKit/Circuit1/Circuit1.ino b/examples/LearningKit/Circuit1/Circuit1.ino new file mode 100644 index 0000000..176016e --- /dev/null +++ b/examples/LearningKit/Circuit1/Circuit1.ino @@ -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 +} diff --git a/examples/LearningKit/Circuit10/Circuit10.ino b/examples/LearningKit/Circuit10/Circuit10.ino new file mode 100644 index 0000000..eff2399 --- /dev/null +++ b/examples/LearningKit/Circuit10/Circuit10.ino @@ -0,0 +1,23 @@ +#include // 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 +} \ No newline at end of file diff --git a/examples/LearningKit/Circuit11/Circuit11.ino b/examples/LearningKit/Circuit11/Circuit11.ino new file mode 100644 index 0000000..b76a809 --- /dev/null +++ b/examples/LearningKit/Circuit11/Circuit11.ino @@ -0,0 +1,20 @@ +#include // 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 +} \ No newline at end of file diff --git a/examples/LearningKit/Circuit2/Circuit2.ino b/examples/LearningKit/Circuit2/Circuit2.ino new file mode 100644 index 0000000..a53c094 --- /dev/null +++ b/examples/LearningKit/Circuit2/Circuit2.ino @@ -0,0 +1,26 @@ +#include // 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 +} diff --git a/examples/LearningKit/Circuit3/Circuit3.ino b/examples/LearningKit/Circuit3/Circuit3.ino new file mode 100644 index 0000000..90a7729 --- /dev/null +++ b/examples/LearningKit/Circuit3/Circuit3.ino @@ -0,0 +1,71 @@ +#include // 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); + } +} \ No newline at end of file diff --git a/examples/LearningKit/Circuit4/Circuit4.ino b/examples/LearningKit/Circuit4/Circuit4.ino new file mode 100644 index 0000000..3f3a5c8 --- /dev/null +++ b/examples/LearningKit/Circuit4/Circuit4.ino @@ -0,0 +1,29 @@ +#include // 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(); + } +} \ No newline at end of file diff --git a/examples/LearningKit/Circuit5/Circuit5.ino b/examples/LearningKit/Circuit5/Circuit5.ino new file mode 100644 index 0000000..7e620d2 --- /dev/null +++ b/examples/LearningKit/Circuit5/Circuit5.ino @@ -0,0 +1,20 @@ +#include // 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 +} diff --git a/examples/LearningKit/Circuit6/Circuit6.ino b/examples/LearningKit/Circuit6/Circuit6.ino new file mode 100644 index 0000000..1fdcc4b --- /dev/null +++ b/examples/LearningKit/Circuit6/Circuit6.ino @@ -0,0 +1,23 @@ +#include // 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 +} \ No newline at end of file diff --git a/examples/LearningKit/Circuit7/Circuit7.ino b/examples/LearningKit/Circuit7/Circuit7.ino new file mode 100644 index 0000000..b5b2744 --- /dev/null +++ b/examples/LearningKit/Circuit7/Circuit7.ino @@ -0,0 +1,38 @@ +#include // include MicroView library +#include // 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); +} \ No newline at end of file diff --git a/examples/LearningKit/Circuit8/Circuit8.ino b/examples/LearningKit/Circuit8/Circuit8.ino new file mode 100644 index 0000000..87a9435 --- /dev/null +++ b/examples/LearningKit/Circuit8/Circuit8.ino @@ -0,0 +1,82 @@ +#include +// 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. +} \ No newline at end of file diff --git a/examples/LearningKit/Circuit9/Circuit9.ino b/examples/LearningKit/Circuit9/Circuit9.ino new file mode 100644 index 0000000..4e6862c --- /dev/null +++ b/examples/LearningKit/Circuit9/Circuit9.ino @@ -0,0 +1,54 @@ +#include // 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; + } +} \ No newline at end of file diff --git a/examples/LearningKit/HelloWorld/HelloWorld.ino b/examples/LearningKit/HelloWorld/HelloWorld.ino new file mode 100644 index 0000000..956fd04 --- /dev/null +++ b/examples/LearningKit/HelloWorld/HelloWorld.ino @@ -0,0 +1,10 @@ +#include + +void setup() { + uView.begin(); // start MicroView + uView.clear(PAGE); // clear page + uView.print("HelloWorld"); // display HelloWorld + uView.display(); +} + +void loop () {} \ No newline at end of file