mirror of
https://github.com/geekammo/MicroView-Arduino-Library.git
synced 2026-02-22 12:31:22 +01:00
54 lines
1.7 KiB
C++
54 lines
1.7 KiB
C++
#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;
|
|
}
|
|
} |