/* The purpose of this program is to test and demonstrate dual displays 2 x 128 x 64 display This could tested should work with any Arduino  オリジナルから無駄な空行やコードを削除した  OLEDを2つ定義すると正常に動かなくなった(RAM不足と思われる) */ #include // オリジナルの状態 /* #define OLED_RESET 4 Adafruit_SSD1306 Display1(OLED_RESET); Adafruit_SSD1306 Display2(OLED_RESET); */ // 下記に変更してみた #define SCREEN_WIDTH 128 // OLED display width, in pixels #define SCREEN_HEIGHT 64 // OLED display height, in pixels #define OLED_RESET -1 // Reset pin # (or -1 if sharing Arduino reset pin) Adafruit_SSD1306 Display1(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET); Adafruit_SSD1306 Display2(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET); int i, j; void setup() { Display1.begin(SSD1306_SWITCHCAPVCC, 0x3D); Display1.clearDisplay(); Display1.display(); Display2.begin(SSD1306_SWITCHCAPVCC, 0x3C); Display2.clearDisplay(); Display2.display(); } void loop() { for (i = 0; i < 270; i+=10) { Display1.setTextSize(2); Display1.setTextColor(WHITE, BLACK); Display1.setCursor(0, 0 ); Display1.println("Display 1"); Display1.fillCircle(i, 30, 10, 1); Display1.display(); Display1.clearDisplay(); Display2.setTextSize(2); Display2.setTextColor(WHITE, BLACK); Display2.setCursor(0, 0); Display2.println("Display 2"); Display2.fillCircle(i - 127, 30, 10, 1); // バグを修正済 Display2.display(); Display2.clearDisplay(); } }