Sub Process_Globals
'These global variables will be declared once when the application starts.
'Public variables can be accessed from all modules.
'Public Serial1 As Serial
End Sub
Private Sub AppStart
RunNative ("start_oled",Null)
End Sub
#if C
#include <Wire.h>
void start_oled(B4R::Object* o)
{
Wire.begin(); // init i2c bus
Wire.setClock(400000); //400khz
//oled init.
unsigned char addr=0x3C;
Wire.beginTransmission(addr);
Wire.write(0x00);
Wire.write(0xAE);
Wire.endTransmission();
Wire.beginTransmission(addr);
Wire.write(0x00);
Wire.write(0x8D);
Wire.endTransmission();
Wire.beginTransmission(addr);
Wire.write(0x00);
Wire.write(0x14);
Wire.endTransmission();
Wire.beginTransmission(addr);
Wire.write(0x00);
Wire.write(0x20);
Wire.endTransmission();
Wire.beginTransmission(addr);
Wire.write(0x00);
Wire.write(0x00);
Wire.endTransmission();
Wire.beginTransmission(addr);
Wire.write(0x00);
Wire.write(0xA1);
Wire.endTransmission();
Wire.beginTransmission(addr);
Wire.write(0x00);
Wire.write(0xC8);
Wire.endTransmission();
Wire.beginTransmission(addr);
Wire.write(0x00);
Wire.write(0xDA);
Wire.endTransmission();
Wire.beginTransmission(addr);
Wire.write(0x00);
Wire.write(0x12);
Wire.endTransmission();
Wire.beginTransmission(addr);
Wire.write(0x00);
Wire.write(0x81);
Wire.endTransmission();
Wire.beginTransmission(addr);
Wire.write(0x00);
Wire.write(0x9F);
Wire.endTransmission();
Wire.beginTransmission(addr); //on
Wire.write(0x00);
Wire.write(0xAF);
Wire.endTransmission();
//clear scrn
unsigned char y, x;
for ( y = 0; y < 8; y++ ) {
for (x = 0; x < 17; x++){
Wire.beginTransmission(addr);
Wire.write(0x00);
Wire.write(0x21);
Wire.endTransmission();
Wire.beginTransmission(addr);
Wire.write(0x00);
Wire.write(8*x);
Wire.endTransmission();
Wire.beginTransmission(addr);
Wire.write(0x00);
Wire.write(8*x+7);
Wire.endTransmission();
Wire.beginTransmission(addr);
Wire.write(0x00);
Wire.write(0x22);
Wire.endTransmission();
Wire.beginTransmission(addr);
Wire.write(0x00);
Wire.write(y);
Wire.endTransmission();
Wire.beginTransmission(addr);
Wire.write(0x00);
Wire.write(y);
Wire.endTransmission();
Wire.beginTransmission(addr);
Wire.write(0x40);
for (unsigned char i = 0; i < 8; i++){
Wire.write(0x00);
}
Wire.endTransmission();
}
}
//draw bitmap
const unsigned char bmp[] = { //toothwheel
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFE,
0xFE, 0xFE, 0xFF, 0xFF, 0xFC, 0xF8, 0xF0, 0xE0, 0xF0, 0xF8, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE,
0xFE, 0x80, 0x80, 0x80, 0x80, 0xC0, 0xE0, 0xE0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x0E, 0x3F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x3F, 0x1F,
0x1F, 0x0F, 0x07, 0x07, 0x07, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x07, 0x07, 0x07, 0x0F, 0x0F,
0x1F, 0x3F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0x07, 0x02, 0x00, 0x00, 0x00, 0x00,
0xF8, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x07, 0x01, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x01, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x7F, 0x3F,
0x00, 0x01, 0x81, 0xC1, 0xC3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xE0, 0x80, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0xF8, 0xF0, 0xE0,
0x00, 0x00, 0x07, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x0F, 0x0F, 0x3F, 0xFF, 0xFF, 0xFE, 0xFC, 0xF8,
0xF8, 0xF0, 0xF0, 0xE0, 0xE0, 0xE0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xE0, 0xE0, 0xE0, 0xF0, 0xF0,
0xF8, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0x87, 0x03, 0x03, 0x07, 0x07, 0x07, 0x07, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x1F, 0x1F, 0x3F, 0x3F, 0x3F,
0x1F, 0x0F, 0x07, 0x07, 0x07, 0x07, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x03, 0x03,
0x03, 0x03, 0x07, 0x0F, 0x1F, 0x1F, 0x0F, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
unsigned char v, h, c;
for (h = 0; h < 6;++h){
for (c = 0; c < 3;++c){
Wire.beginTransmission(addr);
Wire.write(0x00);
Wire.write(0x21);
Wire.endTransmission();
Wire.beginTransmission(addr);
Wire.write(0x00);
Wire.write(c*16);
Wire.endTransmission();
Wire.beginTransmission(addr);
Wire.write(0x00);
Wire.write(16+c*16);
Wire.endTransmission();
Wire.beginTransmission(addr);
Wire.write(0x00);
Wire.write(0x22);
Wire.endTransmission();
Wire.beginTransmission(addr);
Wire.write(0x00);
Wire.write(h);
Wire.endTransmission();
Wire.beginTransmission(addr);
Wire.write(0x00);
Wire.write(h+1);
Wire.endTransmission();
Wire.beginTransmission(addr);
Wire.write(0x40);
for (v = 0+c*16; v < 16+c*16; ++v){
Wire.write(bmp[v+48*h]);
}
Wire.endTransmission();
}
}
}
#End if