Last active
December 27, 2015 03:29
-
-
Save buzztiaan/7260296 to your computer and use it in GitHub Desktop.
as1107 outputting font browser with rotary encoder interrupt based code
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
Playing around for midi_touch_v2. part 1 (redo 20) | |
* AS1107 on SPI0 connected to 8x8 matrix | |
* Rotary Encoder on ; | |
- PD0 | |
- PD1 (both sides of the rotary) | |
- PD2 to one of the switch pins | |
- rest of the rotary pins to ground | |
This is a energia sketch ment for a stellaris | |
Niceness about this; | |
- interrupt based decoding of the rotaryencoder | |
- hmm dno, font works? | |
buZz/NURDspace 10/2013 | |
*/ | |
#include <Energia.h> | |
#include <SPI.h> | |
#include "EnergiaMax7219.h" | |
#include "font2.h" | |
EnergiaMax7219 ledmatrix; | |
uint32_t numberOfCharacters = sizeof(font) / 8, startingIndex; | |
static boolean rotating=false; | |
boolean A_set = false; | |
boolean B_set = false; | |
volatile unsigned int encoderpos = 0; | |
unsigned int lastReportedPos = 1; | |
volatile long lastDebounceTime = 0; | |
volatile long debounceDelay = 5; | |
#define encoderpinA PD_0 | |
#define encoderpinB PD_1 | |
#define encoderClick PD_2 | |
volatile int state = LOW; | |
volatile int redraw = HIGH; | |
void setup() | |
{ | |
// put your setup code here, to run once: | |
ledmatrix.Initialize(DISPLAY_TEST_OFF, 0x6); | |
pinMode(encoderpinA, INPUT_PULLUP); | |
pinMode(encoderpinB, INPUT_PULLUP); | |
pinMode(encoderClick, INPUT_PULLUP); | |
attachInterrupt(encoderpinA, doencoderA, CHANGE); | |
attachInterrupt(encoderpinB, doencoderB, CHANGE); | |
attachInterrupt(encoderClick, togglestate, FALLING); | |
} | |
void matrixCharacterWrite(uint8_t* data,int invert) | |
{ | |
uint8_t j = 0; | |
while(j < 8) | |
{ | |
if (!invert) { | |
ledmatrix.Write(_max7219_register_digit_0 + j, *(data + j)); | |
} else { | |
ledmatrix.Write(_max7219_register_digit_0 + j, ~*(data + j)); | |
} | |
j++; | |
} | |
} | |
void loop() | |
{ | |
rotating = true; | |
if((lastReportedPos != encoderpos) || (redraw)) { | |
encoderpos = constrain(encoderpos,0,numberOfCharacters); | |
matrixCharacterWrite(&font[encoderpos*8],state); | |
lastReportedPos = encoderpos; | |
redraw = 0; | |
} | |
} | |
void doencoderA(){ | |
if ( rotating ) delay (debounceDelay); | |
if( digitalRead(encoderpinA) != A_set ) { | |
A_set = !A_set; | |
if ( A_set && !B_set ) encoderpos += 1; | |
rotating = false; | |
} | |
} | |
void doencoderB(){ | |
if ( rotating ) delay (debounceDelay); | |
if( digitalRead(encoderpinB) != B_set ) { | |
B_set = !B_set; | |
if( B_set && !A_set ) encoderpos -= 1; | |
rotating = false; | |
} | |
} | |
void togglestate() | |
{ | |
if ( rotating ) delay (debounceDelay); | |
digitalRead(encoderClick); | |
state = !state; | |
redraw = HIGH; | |
rotating = false; | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#ifndef FONT_H_ | |
#define FONT_H_ | |
uint8_t font[] = { | |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |
0x00, 0x3E, 0x41, 0x55, 0x41, 0x55, 0x49, 0x3E, | |
0x00, 0x3E, 0x7F, 0x6B, 0x7F, 0x6B, 0x77, 0x3E, | |
0x00, 0x22, 0x77, 0x7F, 0x7F, 0x3E, 0x1C, 0x08, | |
0x00, 0x08, 0x1C, 0x3E, 0x7F, 0x3E, 0x1C, 0x08, | |
0x00, 0x08, 0x1C, 0x2A, 0x7F, 0x2A, 0x08, 0x1C, | |
0x00, 0x08, 0x1C, 0x3E, 0x7F, 0x3E, 0x08, 0x1C, | |
0x00, 0x00, 0x1C, 0x3E, 0x3E, 0x3E, 0x1C, 0x00, | |
0xFF, 0xFF, 0xE3, 0xC1, 0xC1, 0xC1, 0xE3, 0xFF, | |
0x00, 0x00, 0x1C, 0x22, 0x22, 0x22, 0x1C, 0x00, | |
0xFF, 0xFF, 0xE3, 0xDD, 0xDD, 0xDD, 0xE3, 0xFF, | |
0x00, 0x0F, 0x03, 0x05, 0x39, 0x48, 0x48, 0x30, | |
0x00, 0x08, 0x3E, 0x08, 0x1C, 0x22, 0x22, 0x1C, | |
0x00, 0x18, 0x14, 0x10, 0x10, 0x30, 0x70, 0x60, | |
0x00, 0x0F, 0x19, 0x11, 0x13, 0x37, 0x76, 0x60, | |
0x00, 0x08, 0x2A, 0x1C, 0x77, 0x1C, 0x2A, 0x08, | |
0x00, 0x60, 0x78, 0x7E, 0x7F, 0x7E, 0x78, 0x60, | |
0x00, 0x03, 0x0F, 0x3F, 0x7F, 0x3F, 0x0F, 0x03, | |
0x00, 0x08, 0x1C, 0x2A, 0x08, 0x2A, 0x1C, 0x08, | |
0x00, 0x66, 0x66, 0x66, 0x66, 0x00, 0x66, 0x66, | |
0x00, 0x3F, 0x65, 0x65, 0x3D, 0x05, 0x05, 0x05, | |
0x00, 0x0C, 0x32, 0x48, 0x24, 0x12, 0x4C, 0x30, | |
0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x7F, 0x7F, | |
0x00, 0x08, 0x1C, 0x2A, 0x08, 0x2A, 0x1C, 0x3E, | |
0x00, 0x08, 0x1C, 0x3E, 0x7F, 0x1C, 0x1C, 0x1C, | |
0x00, 0x1C, 0x1C, 0x1C, 0x7F, 0x3E, 0x1C, 0x08, | |
0x00, 0x08, 0x0C, 0x7E, 0x7F, 0x7E, 0x0C, 0x08, | |
0x00, 0x08, 0x18, 0x3F, 0x7F, 0x3F, 0x18, 0x08, | |
0x00, 0x00, 0x00, 0x70, 0x70, 0x70, 0x7F, 0x7F, | |
0x00, 0x00, 0x14, 0x22, 0x7F, 0x22, 0x14, 0x00, | |
0x00, 0x08, 0x1C, 0x1C, 0x3E, 0x3E, 0x7F, 0x7F, | |
0x00, 0x7F, 0x7F, 0x3E, 0x3E, 0x1C, 0x1C, 0x08, | |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |
0x00, 0x18, 0x3C, 0x3C, 0x18, 0x18, 0x00, 0x18, | |
0x00, 0x36, 0x36, 0x14, 0x00, 0x00, 0x00, 0x00, | |
0x00, 0x36, 0x36, 0x7F, 0x36, 0x7F, 0x36, 0x36, | |
0x00, 0x08, 0x1E, 0x20, 0x1C, 0x02, 0x3C, 0x08, | |
0x00, 0x60, 0x66, 0x0C, 0x18, 0x30, 0x66, 0x06, | |
0x00, 0x3C, 0x66, 0x3C, 0x28, 0x65, 0x66, 0x3F, | |
0x00, 0x18, 0x18, 0x18, 0x30, 0x00, 0x00, 0x00, | |
0x00, 0x60, 0x30, 0x18, 0x18, 0x18, 0x30, 0x60, | |
0x00, 0x06, 0x0C, 0x18, 0x18, 0x18, 0x0C, 0x06, | |
0x00, 0x00, 0x36, 0x1C, 0x7F, 0x1C, 0x36, 0x00, | |
0x00, 0x00, 0x08, 0x08, 0x3E, 0x08, 0x08, 0x00, | |
0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0x30, 0x60, | |
0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, | |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, | |
0x00, 0x00, 0x06, 0x0C, 0x18, 0x30, 0x60, 0x00, | |
0x00, 0x3C, 0x66, 0x6E, 0x76, 0x66, 0x66, 0x3C, | |
0x00, 0x18, 0x18, 0x38, 0x18, 0x18, 0x18, 0x7E, | |
0x00, 0x3C, 0x66, 0x06, 0x0C, 0x30, 0x60, 0x7E, | |
0x00, 0x3C, 0x66, 0x06, 0x1C, 0x06, 0x66, 0x3C, | |
0x00, 0x0C, 0x1C, 0x2C, 0x4C, 0x7E, 0x0C, 0x0C, | |
0x00, 0x7E, 0x60, 0x7C, 0x06, 0x06, 0x66, 0x3C, | |
0x00, 0x3C, 0x66, 0x60, 0x7C, 0x66, 0x66, 0x3C, | |
0x00, 0x7E, 0x66, 0x0C, 0x0C, 0x18, 0x18, 0x18, | |
0x00, 0x3C, 0x66, 0x66, 0x3C, 0x66, 0x66, 0x3C, | |
0x00, 0x3C, 0x66, 0x66, 0x3E, 0x06, 0x66, 0x3C, | |
0x00, 0x00, 0x18, 0x18, 0x00, 0x18, 0x18, 0x00, | |
0x00, 0x00, 0x18, 0x18, 0x00, 0x18, 0x18, 0x30, | |
0x00, 0x06, 0x0C, 0x18, 0x30, 0x18, 0x0C, 0x06, | |
0x00, 0x00, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x00, | |
0x00, 0x60, 0x30, 0x18, 0x0C, 0x18, 0x30, 0x60, | |
0x00, 0x3C, 0x66, 0x06, 0x1C, 0x18, 0x00, 0x18, | |
0x00, 0x38, 0x44, 0x5C, 0x58, 0x42, 0x3C, 0x00, | |
0x00, 0x3C, 0x66, 0x66, 0x7E, 0x66, 0x66, 0x66, | |
0x00, 0x7C, 0x66, 0x66, 0x7C, 0x66, 0x66, 0x7C, | |
0x00, 0x3C, 0x66, 0x60, 0x60, 0x60, 0x66, 0x3C, | |
0x00, 0x7C, 0x66, 0x66, 0x66, 0x66, 0x66, 0x7C, | |
0x00, 0x7E, 0x60, 0x60, 0x7C, 0x60, 0x60, 0x7E, | |
0x00, 0x7E, 0x60, 0x60, 0x7C, 0x60, 0x60, 0x60, | |
0x00, 0x3C, 0x66, 0x60, 0x60, 0x6E, 0x66, 0x3C, | |
0x00, 0x66, 0x66, 0x66, 0x7E, 0x66, 0x66, 0x66, | |
0x00, 0x3C, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3C, | |
0x00, 0x1E, 0x0C, 0x0C, 0x0C, 0x6C, 0x6C, 0x38, | |
0x00, 0x66, 0x6C, 0x78, 0x70, 0x78, 0x6C, 0x66, | |
0x00, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x7E, | |
0x00, 0x63, 0x77, 0x7F, 0x6B, 0x63, 0x63, 0x63, | |
0x00, 0x63, 0x73, 0x7B, 0x6F, 0x67, 0x63, 0x63, | |
0x00, 0x3C, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3C, | |
0x00, 0x7C, 0x66, 0x66, 0x66, 0x7C, 0x60, 0x60, | |
0x00, 0x3C, 0x66, 0x66, 0x66, 0x6E, 0x3C, 0x06, | |
0x00, 0x7C, 0x66, 0x66, 0x7C, 0x78, 0x6C, 0x66, | |
0x00, 0x3C, 0x66, 0x60, 0x3C, 0x06, 0x66, 0x3C, | |
0x00, 0x7E, 0x5A, 0x18, 0x18, 0x18, 0x18, 0x18, | |
0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3E, | |
0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3C, 0x18, | |
0x00, 0x63, 0x63, 0x63, 0x6B, 0x7F, 0x77, 0x63, | |
0x00, 0x63, 0x63, 0x36, 0x1C, 0x36, 0x63, 0x63, | |
0x00, 0x66, 0x66, 0x66, 0x3C, 0x18, 0x18, 0x18, | |
0x00, 0x7E, 0x06, 0x0C, 0x18, 0x30, 0x60, 0x7E, | |
0x00, 0x1E, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1E, | |
0x00, 0x00, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x00, | |
0x00, 0x78, 0x18, 0x18, 0x18, 0x18, 0x18, 0x78, | |
0x00, 0x08, 0x14, 0x22, 0x41, 0x00, 0x00, 0x00, | |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, | |
0x00, 0x0C, 0x0C, 0x06, 0x00, 0x00, 0x00, 0x00, | |
0x00, 0x00, 0x00, 0x3C, 0x06, 0x3E, 0x66, 0x3E, | |
0x00, 0x60, 0x60, 0x60, 0x7C, 0x66, 0x66, 0x7C, | |
0x00, 0x00, 0x00, 0x3C, 0x66, 0x60, 0x66, 0x3C, | |
0x00, 0x06, 0x06, 0x06, 0x3E, 0x66, 0x66, 0x3E, | |
0x00, 0x00, 0x00, 0x3C, 0x66, 0x7E, 0x60, 0x3C, | |
0x00, 0x1C, 0x36, 0x30, 0x30, 0x7C, 0x30, 0x30, | |
0x00, 0x00, 0x3E, 0x66, 0x66, 0x3E, 0x06, 0x3C, | |
0x00, 0x60, 0x60, 0x60, 0x7C, 0x66, 0x66, 0x66, | |
0x00, 0x00, 0x18, 0x00, 0x18, 0x18, 0x18, 0x3C, | |
0x00, 0x0C, 0x00, 0x0C, 0x0C, 0x6C, 0x6C, 0x38, | |
0x00, 0x60, 0x60, 0x66, 0x6C, 0x78, 0x6C, 0x66, | |
0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, | |
0x00, 0x00, 0x00, 0x63, 0x77, 0x7F, 0x6B, 0x6B, | |
0x00, 0x00, 0x00, 0x7C, 0x7E, 0x66, 0x66, 0x66, | |
0x00, 0x00, 0x00, 0x3C, 0x66, 0x66, 0x66, 0x3C, | |
0x00, 0x00, 0x7C, 0x66, 0x66, 0x7C, 0x60, 0x60, | |
0x00, 0x00, 0x3C, 0x6C, 0x6C, 0x3C, 0x0D, 0x0F, | |
0x00, 0x00, 0x00, 0x7C, 0x66, 0x66, 0x60, 0x60, | |
0x00, 0x00, 0x00, 0x3E, 0x40, 0x3C, 0x02, 0x7C, | |
0x00, 0x00, 0x18, 0x18, 0x7E, 0x18, 0x18, 0x18, | |
0x00, 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x3E, | |
0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x3C, 0x18, | |
0x00, 0x00, 0x00, 0x63, 0x6B, 0x6B, 0x6B, 0x3E, | |
0x00, 0x00, 0x00, 0x66, 0x3C, 0x18, 0x3C, 0x66, | |
0x00, 0x00, 0x00, 0x66, 0x66, 0x3E, 0x06, 0x3C, | |
0x00, 0x00, 0x00, 0x3C, 0x0C, 0x18, 0x30, 0x3C, | |
0x00, 0x0E, 0x18, 0x18, 0x30, 0x18, 0x18, 0x0E, | |
0x00, 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, | |
0x00, 0x70, 0x18, 0x18, 0x0C, 0x18, 0x18, 0x70, | |
0x00, 0x00, 0x00, 0x3A, 0x6C, 0x00, 0x00, 0x00, | |
0x00, 0x08, 0x1C, 0x36, 0x63, 0x41, 0x41, 0x7F | |
}; | |
#endif | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment