#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SW1 3
#define SW2 2
int Count = 1;
String text;
/*
* Connections
* SSD1306 OLED | Arduino Uno
* ---------------------------
* VCC | +5V (Vcc/power/+ve)
* GND | GND (Ground/-ve/0v)
* SCL | A5 (Serial Clock Line)
* SDA | A4 (Serial Data Line)
*/
const int SCREEN_WIDTH = 128; // OLED display width, in pixels
const int SCREEN_HEIGHT = 64; // OLED display height, in pixels
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
// this is the bitmap, change this variable for your specification.
const unsigned char horse_icon [] PROGMEM = {
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0x07, 0xff, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0xe0, 0x0f, 0xff, 0xff, 0xff,
0xff, 0xfe, 0x01, 0x80, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xfe, 0x30, 0x00, 0x00, 0x3f, 0xff, 0xff,
0xff, 0xfe, 0x38, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xfe, 0x24, 0x00, 0x03, 0x3f, 0xff, 0xff,
0xff, 0xfe, 0x22, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xfc, 0x62, 0x00, 0x00, 0x0f, 0xff, 0xff,
0xff, 0xf8, 0x41, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xf8, 0x60, 0x80, 0x00, 0x0f, 0xff, 0xff,
0xff, 0xf0, 0x20, 0x80, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xe0, 0x21, 0x80, 0x07, 0x3f, 0xff, 0xff,
0xff, 0xe0, 0x37, 0xc0, 0x1e, 0x3f, 0xff, 0xff, 0xff, 0xc0, 0x3f, 0xff, 0x60, 0x3f, 0xff, 0xff,
0xff, 0xc0, 0x3f, 0x87, 0x8c, 0x1f, 0xff, 0xff, 0xff, 0x80, 0x3e, 0x01, 0x3f, 0x1f, 0xff, 0xff,
0xff, 0x80, 0x3c, 0xfc, 0x7f, 0x8f, 0xff, 0xff, 0xff, 0x00, 0x39, 0xfe, 0x7f, 0xcf, 0xff, 0xff,
0xff, 0x00, 0x79, 0xfe, 0x79, 0xc7, 0xff, 0xff, 0xff, 0x00, 0x73, 0xff, 0x70, 0xc7, 0xff, 0xff,
0xfe, 0x00, 0xf3, 0xe3, 0x70, 0xc7, 0xff, 0xff, 0xfe, 0x00, 0xf3, 0xc3, 0x70, 0xcf, 0xff, 0xff,
0xfc, 0x01, 0xf3, 0xe3, 0x7f, 0x8f, 0xff, 0xff, 0xfc, 0x01, 0xf3, 0xf6, 0x3f, 0x87, 0xcf, 0xff,
0xfc, 0x01, 0xf9, 0xfe, 0x1e, 0x00, 0x00, 0x1f, 0xfc, 0x03, 0xf8, 0xfc, 0xc0, 0xc0, 0x00, 0x0f,
0xf8, 0x03, 0xfc, 0x79, 0xff, 0xf8, 0xf0, 0x07, 0xf8, 0x07, 0xff, 0x03, 0xff, 0xff, 0x1c, 0x03,
0xf8, 0x07, 0xff, 0xff, 0xff, 0xfc, 0x07, 0x23, 0xf8, 0x07, 0xff, 0xff, 0xff, 0xf8, 0x47, 0x93,
0xf0, 0x0f, 0xff, 0xff, 0xff, 0xf3, 0xe3, 0xc3, 0xf0, 0x0f, 0xdf, 0xff, 0xff, 0xe6, 0x33, 0xc1,
0xf0, 0x0f, 0x9f, 0xff, 0xff, 0xe4, 0x33, 0xe3, 0xf0, 0x0f, 0x9f, 0xff, 0xff, 0xec, 0x1b, 0xe3,
0xf0, 0x1f, 0x9f, 0xf8, 0x7f, 0xf8, 0x1f, 0xf1, 0xf0, 0x1f, 0x9f, 0xf0, 0xff, 0xf8, 0x1f, 0xf1,
0xf0, 0x1f, 0x8f, 0xf0, 0xff, 0xf8, 0x1f, 0xf1, 0xf0, 0x1f, 0x8b, 0xe0, 0x7f, 0xfc, 0x1f, 0xf1,
0xf0, 0x1f, 0x80, 0x30, 0x3f, 0xfe, 0x3f, 0xf1, 0xf0, 0x3f, 0x80, 0x00, 0x0f, 0xff, 0xff, 0xf1,
0xf0, 0x3f, 0xc0, 0x00, 0x07, 0xff, 0xff, 0xf1, 0xf0, 0x3f, 0xc0, 0x00, 0x00, 0x7f, 0xff, 0xf1,
0xf0, 0x3f, 0xe0, 0x00, 0x00, 0x03, 0xff, 0xf1, 0xf0, 0x3f, 0xe0, 0x00, 0x00, 0x00, 0x1f, 0xf1,
0xf0, 0x3f, 0xc0, 0x00, 0x00, 0x00, 0x01, 0xc1, 0xf8, 0x3f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x03,
0xf8, 0x3f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x03, 0xf8, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07,
0xfc, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xfc, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f,
0xfe, 0x1e, 0x00, 0x00, 0x04, 0x00, 0x00, 0x1f, 0xff, 0x0c, 0x00, 0x00, 0x02, 0x00, 0x00, 0x7f,
0xff, 0x04, 0x00, 0x00, 0x01, 0x80, 0x00, 0xff, 0xff, 0x80, 0x00, 0x00, 0x00, 0xf0, 0x07, 0xff,
0xff, 0xc0, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff,
0xff, 0xf0, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xf9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
};
const unsigned char bird_icon [] PROGMEM = {
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xc7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xfe, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x0f, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xf0, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x3f, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x7f, 0xff, 0xff,
0xff, 0xff, 0xff, 0xf8, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x07, 0xff, 0xff,
0xff, 0xff, 0xff, 0xf0, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x0f, 0xff, 0xff,
0xff, 0xff, 0xff, 0xf8, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x1f, 0xff, 0xff,
0xff, 0xff, 0xff, 0xe0, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x3f, 0xff, 0xff,
0xff, 0xff, 0xf8, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x00, 0x00, 0xff, 0xff, 0xff,
0xff, 0xff, 0x80, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff,
0xff, 0xfe, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xf8, 0x01, 0x00, 0x00, 0x3f, 0xff, 0xff,
0xff, 0xf0, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xe2, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff,
0xff, 0xe6, 0x00, 0x30, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xcf, 0x00, 0x4f, 0x80, 0x07, 0xff, 0xff,
0xff, 0xdf, 0x01, 0x9f, 0xe0, 0x07, 0xff, 0xff, 0xff, 0x9f, 0x87, 0x3f, 0xf0, 0x07, 0xff, 0xff,
0xff, 0x9f, 0xff, 0x7f, 0xf8, 0x03, 0xff, 0xff, 0xff, 0x9f, 0xfe, 0xf0, 0x78, 0x03, 0xff, 0xff,
0xff, 0x9f, 0xfe, 0xf1, 0xb8, 0x03, 0xff, 0xff, 0xff, 0x81, 0xfe, 0xe3, 0xb8, 0x03, 0xff, 0xff,
0xff, 0x9e, 0x7e, 0xe1, 0x38, 0x03, 0xff, 0xff, 0xfe, 0x7f, 0xbe, 0xe0, 0x38, 0x01, 0xff, 0xff,
0xfc, 0xff, 0x9e, 0xf0, 0x38, 0x01, 0xff, 0xff, 0xfd, 0xff, 0xcf, 0x78, 0x74, 0x01, 0xff, 0xff,
0xfb, 0xff, 0xef, 0x7f, 0xe4, 0x01, 0xff, 0xff, 0xfb, 0xff, 0xef, 0xbf, 0xcc, 0x01, 0xff, 0xff,
0xf3, 0xff, 0xef, 0xcf, 0x3c, 0x01, 0xff, 0xff, 0xf7, 0xff, 0xef, 0xf8, 0xfc, 0x01, 0xff, 0xff,
0xf7, 0xff, 0xcf, 0xff, 0xf0, 0x00, 0xff, 0xff, 0xf7, 0xf0, 0x0f, 0xff, 0xf0, 0x00, 0x7f, 0xff,
0xf7, 0x8f, 0xef, 0xff, 0xf0, 0x00, 0x3f, 0xff, 0xf6, 0x07, 0xef, 0xff, 0xf0, 0x00, 0x3f, 0xff,
0xf0, 0x01, 0xcf, 0xff, 0xf0, 0x00, 0x1f, 0xff, 0xfb, 0xf8, 0x1f, 0xff, 0xe0, 0x1c, 0x1f, 0xff,
0xff, 0xfe, 0x7f, 0xff, 0xe0, 0x1f, 0xff, 0xff, 0xff, 0xfe, 0x7f, 0xff, 0xc0, 0x1f, 0xff, 0xff,
0xff, 0xfe, 0x7f, 0xff, 0xc8, 0x1f, 0xff, 0xff, 0xff, 0xfe, 0x71, 0xe1, 0xcf, 0xff, 0xff, 0xff,
0xff, 0xfe, 0x41, 0xc0, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x01, 0x8c, 0x1f, 0xff, 0xff, 0xff,
0xff, 0xff, 0x78, 0x1f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x3f, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
};
const unsigned char wolf_icon [] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00,
0x00, 0x1f, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x1f, 0xc0, 0x00, 0x00, 0x1f, 0x00, 0x00,
0x00, 0x1f, 0xe0, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x1f, 0xf0, 0x7f, 0xf0, 0x3f, 0x00, 0x00,
0x00, 0x1f, 0xfb, 0xff, 0xfe, 0x7f, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x1f, 0xfe, 0x7f, 0xff, 0xff, 0x00, 0x00,
0x00, 0x0f, 0xf8, 0x1f, 0xf8, 0x7e, 0x00, 0x00, 0x00, 0x0f, 0xf0, 0x87, 0xe0, 0x1e, 0x00, 0x00,
0x00, 0x0f, 0xe3, 0xe3, 0xc7, 0x8e, 0x00, 0x00, 0x00, 0x0f, 0xe7, 0xf1, 0x8f, 0xcc, 0x00, 0x00,
0x00, 0x07, 0xcf, 0xf8, 0x9f, 0xe4, 0x00, 0x00, 0x00, 0x07, 0xcf, 0xcc, 0x38, 0xe4, 0x00, 0x00,
0x00, 0x07, 0xcf, 0x86, 0x30, 0xe4, 0x00, 0x00, 0x00, 0x07, 0xcf, 0x82, 0x30, 0xe4, 0x00, 0x00,
0x00, 0x07, 0xcf, 0x82, 0x39, 0xcc, 0x00, 0x00, 0x00, 0x07, 0xc7, 0x86, 0x1f, 0xcc, 0x00, 0x00,
0x00, 0x07, 0xe7, 0xfc, 0x07, 0x18, 0x00, 0x00, 0x00, 0x0f, 0xe3, 0xf8, 0xc0, 0x38, 0x00, 0x00,
0x00, 0x3f, 0xf0, 0x61, 0xf0, 0xfc, 0x00, 0x00, 0x00, 0xff, 0xf8, 0x03, 0xff, 0xff, 0xc0, 0x00,
0x01, 0xff, 0xfe, 0x0f, 0xff, 0xff, 0xf8, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xf3, 0xc2, 0x00,
0x00, 0x0f, 0xff, 0xff, 0xff, 0xe7, 0x03, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xe4, 0x03, 0x80,
0x00, 0x3f, 0xff, 0xff, 0xff, 0xf0, 0x03, 0x80, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xf0, 0x03, 0x80,
0x00, 0x83, 0xff, 0xff, 0xff, 0xf8, 0x07, 0x80, 0x00, 0x07, 0xff, 0xff, 0xff, 0xfe, 0x0f, 0x80,
0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x1f, 0xff, 0xf8, 0xff, 0xff, 0x1e, 0x00,
0x00, 0x38, 0x63, 0xf0, 0x1f, 0xfe, 0x08, 0x00, 0x00, 0x30, 0x41, 0xf8, 0x03, 0xfc, 0x00, 0x00,
0x00, 0x00, 0x03, 0xff, 0x80, 0x00, 0x40, 0x00, 0x00, 0x00, 0x07, 0xff, 0xf0, 0x00, 0xf0, 0x00,
0x00, 0x00, 0x07, 0xff, 0xfc, 0xc7, 0xf0, 0x00, 0x00, 0x00, 0x01, 0xff, 0xfe, 0xcf, 0xe0, 0x00,
0x00, 0x00, 0x00, 0x00, 0x3e, 0xcf, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x1f, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
void setup()
{
pinMode(SW1,INPUT_PULLUP);
pinMode(SW2,INPUT_PULLUP);
display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // here the 0x3c is the I2C address, check your i2c address if u have multiple devices.
display.clearDisplay();
delay(2000);
}
void loop()
{
display.clearDisplay();
display.setTextColor(WHITE);
if(digitalRead(SW1)==0)
{
Count++;
while(digitalRead(SW1)==0) { delay(10); }
if(Count>3) { Count=1; }
}
if(Count==1)
{
display.drawBitmap(64, 0, horse_icon , 64, 64, WHITE);
}
if(Count==2)
{
display.drawBitmap(64, 0, bird_icon, 64, 64, WHITE);
}
if(Count==3)
{
display.drawBitmap(64, 0, wolf_icon, 64, 64, WHITE);
}
text = String(Count);
display.setTextSize(3);
display.setCursor(0, 0);
display.println(text);
display.display();
}