The grandchildren requested a face on one of the robots. i found these displays and thought they would be suitable for eyes. I got some rudimentary code going with one display mirroring the other. When i changed the address I can get one or the other to operate but not both. Looking for direction on how to proceed.
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SH1106.h>
#define OLED_RESET 4
Adafruit_SH1106 display(OLED_RESET);
void setup() {
Serial.begin(9600);
// by default, we'll generate the high voltage from the 3.3v line internally! (neat!)
display.begin(SH1106_SWITCHCAPVCC, 0x3C); // initialize left eye
// display.begin(SH1106_SWITCHCAPVCC, 0x3D); // initialize right eye
display.clearDisplay();
// NOTE: You _must_ call display after making any drawing commands
// to make them visible on the display hardware!
display.display();
delay(2000);
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(0, 0);
display.print("Display");
display.display();
delay(50);
display.setCursor(0, 15);
display.print("Started");
display.display();
delay(1500);
display.setCursor(0, 30);
display.print("Init");
display.display();
delay(50);
display.setCursor(0, 45);
display.print("Finished");
display.display();
delay(1500);
display.clearDisplay();
display.display();
}
void loop() {
display.clearDisplay();
display.display();
testfillroundrect();
display.clearDisplay();
display.display();
scanlr();
}
void scanlr() {
display.fillCircle(display.width() / 2, display.height() / 2, 50, WHITE);
display.fillCircle(64, 30, 8, BLACK);
display.display();
delay(5);
display.fillCircle(display.width() / 2, display.height() / 2, 50, WHITE);
display.fillCircle(62, 30, 8, BLACK);
display.display();
delay(5);
display.fillCircle(display.width() / 2, display.height() / 2, 50, WHITE);
display.fillCircle(60, 30, 8, BLACK);
display.display();
delay(5);
display.fillCircle(display.width() / 2, display.height() / 2, 50, WHITE);
display.fillCircle(58, 30, 8, BLACK);
display.display();
delay(5);
display.fillCircle(display.width() / 2, display.height() / 2, 50, WHITE);
display.fillCircle(56, 30, 8, BLACK);
display.display();
delay(5);
display.fillCircle(display.width() / 2, display.height() / 2, 50, WHITE);
display.fillCircle(54, 30, 8, BLACK);
display.display();
delay(5);
display.fillCircle(display.width() / 2, display.height() / 2, 50, WHITE);
display.fillCircle(52, 30, 8, BLACK);
display.display();
delay(5);
display.fillCircle(display.width() / 2, display.height() / 2, 50, WHITE);
display.fillCircle(50, 30, 8, BLACK);
display.display();
delay(5);
display.fillCircle(display.width() / 2, display.height() / 2, 50, WHITE);
display.fillCircle(46, 30, 8, BLACK);
display.display();
delay(5);
display.fillCircle(display.width() / 2, display.height() / 2, 50, WHITE);
display.fillCircle(44, 30, 8, BLACK);
display.display();
delay(5);
display.fillCircle(display.width() / 2, display.height() / 2, 50, WHITE);
display.fillCircle(42, 30, 8, BLACK);
display.display();
delay(5);
display.fillCircle(display.width() / 2, display.height() / 2, 50, WHITE);
display.fillCircle(40, 30, 8, BLACK);
display.display();
delay(5);
display.fillCircle(display.width() / 2, display.height() / 2, 50, WHITE);
display.fillCircle(38, 30, 8, BLACK);
display.display();
delay(5);
display.display();
display.fillCircle(display.width() / 2, display.height() / 2, 50, WHITE);
display.fillCircle(36, 30, 8, BLACK);
display.display();
delay(5);
display.fillCircle(display.width() / 2, display.height() / 2, 50, WHITE);
display.fillCircle(34, 30, 8, BLACK);
display.display();
delay(5);
display.fillCircle(display.width() / 2, display.height() / 2, 50, WHITE);
display.fillCircle(32, 30, 8, BLACK);
display.display();
delay(5);
display.fillCircle(display.width() / 2, display.height() / 2, 50, WHITE);
display.fillCircle(30, 30, 8, BLACK);
display.display();
delay(5);
delay(5);
display.fillCircle(display.width() / 2, display.height() / 2, 50, WHITE);
display.fillCircle(30, 30, 8, BLACK);
display.display();
delay(5);
display.fillCircle(display.width() / 2, display.height() / 2, 50, WHITE);
display.fillCircle(32, 30, 8, BLACK);
display.display();
delay(5);
display.fillCircle(display.width() / 2, display.height() / 2, 50, WHITE);
display.fillCircle(34, 30, 8, BLACK);
display.display();
delay(5);
display.fillCircle(display.width() / 2, display.height() / 2, 50, WHITE);
display.fillCircle(36, 30, 8, BLACK);
display.display();
delay(5);
display.fillCircle(display.width() / 2, display.height() / 2, 50, WHITE);
display.fillCircle(38, 30, 8, BLACK);
display.display();
delay(5);
display.fillCircle(display.width() / 2, display.height() / 2, 50, WHITE);
display.fillCircle(40, 30, 8, BLACK);
display.display();
delay(5);
display.fillCircle(display.width() / 2, display.height() / 2, 50, WHITE);
display.fillCircle(42, 30, 8, BLACK);
display.display();
delay(5);
display.fillCircle(display.width() / 2, display.height() / 2, 50, WHITE);
display.fillCircle(44, 30, 8, BLACK);
display.display();
delay(5);
display.fillCircle(display.width() / 2, display.height() / 2, 50, WHITE);
display.fillCircle(46, 30, 8, BLACK);
display.display();
delay(5);
display.fillCircle(display.width() / 2, display.height() / 2, 50, WHITE);
display.fillCircle(48, 30, 8, BLACK);
display.display();
delay(5);
display.fillCircle(display.width() / 2, display.height() / 2, 50, WHITE);
display.fillCircle(50, 30, 8, BLACK);
display.display();
delay(5);
display.fillCircle(display.width() / 2, display.height() / 2, 50, WHITE);
display.fillCircle(52, 30, 8, BLACK);
display.display();
delay(5);
display.fillCircle(display.width() / 2, display.height() / 2, 50, WHITE);
display.fillCircle(54, 30, 8, BLACK);
display.display();
delay(5);
display.display();
display.fillCircle(display.width() / 2, display.height() / 2, 50, WHITE);
display.fillCircle(58, 30, 8, BLACK);
display.display();
delay(5);
display.fillCircle(display.width() / 2, display.height() / 2, 50, WHITE);
display.fillCircle(60, 30, 8, BLACK);
display.display();
delay(5);
display.fillCircle(display.width() / 2, display.height() / 2, 50, WHITE);
display.fillCircle(62, 30, 8, BLACK);
display.display();
delay(5);
display.fillCircle(display.width() / 2, display.height() / 2, 50, WHITE);
display.fillCircle(64, 30, 8, BLACK);
display.display();
delay(2000);
}
void testfillroundrect(void) {
uint8_t color = BLACK;
for (int16_t i = 0; i < display.height() / 2 - 2; i += 2) {
display.fillRoundRect(i, i, display.width() - 2 * i, display.height() - 2 * i, display.height() / 4, color);
if (color == BLACK) color = BLACK;
else color = BLACK;
display.display();
}
}