Arduino Polska Forum

Pełna wersja: Dwa oledy ..
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
Chciałem zastosować dwa wyświetlacze oled w projekcie ... podłączone do ardurino uno i2c różne adresy.

Tak wygląda kod dla wyswietlaczy 

Kod:
#include <Wire.h>
#include <Adafruit_SSD1306.h>
#include <Adafruit_GFX.h>
#define OLED1_RESET 4
Adafruit_SSD1306 display1(OLED1_RESET);
#define OLED2_RESET 4
Adafruit_SSD1306 display2(OLED2_RESET);


  void setup()
  {
     display1.begin(SSD1306_SWITCHCAPVCC, 0x3D);
     display2.begin(SSD1306_SWITCHCAPVCC, 0x3C);

  }

void loop() {

  display1.clearDisplay();
  display1.setTextColor(WHITE,BLACK);
  display1.setCursor(8,10);
  display1.println("ON");
  display1.display();
 
  display2.clearDisplay();
  display2.setTextColor(WHITE,BLACK);
  display2.setCursor(8,10);
  display2.println("off");
  display2.display();
  }


Co robie źle ponieważ nie widze na jednym napisu ... a wszystko wygląda prawidłowo, gdy w kodzie wyłączam jeden lub drugi. Gdy działają oba napis pojawia się tylko na pierwszym, który występuje pierwszy w kodzie. 
Spróbuj tak:
(02-07-2019, 13:07)maniek100 napisał(a): [ -> ]void loop() {

display1.begin(SSD1306_SWITCHCAPVCC, 0x3D);
  display1.clearDisplay();
  display1.setTextColor(WHITE,BLACK);
  display1.setCursor(8,10);
  display1.println("ON");
  display1.display();
 
display2.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  display2.clearDisplay();
  display2.setTextColor(WHITE,BLACK);
  display2.setCursor(8,10);
  display2.println("off");
  display2.display();
  }[/code]
Jak zadziała, to masz do przerobienia biblioteki.
Testowałem taki kod:
Kod:
#include <Adafruit_SSD1306.h>
#include <Adafruit_GFX.h>
#define OLED1_RESET -1
Adafruit_SSD1306 display1(OLED1_RESET);
#define OLED2_RESET -1
Adafruit_SSD1306 display2(OLED2_RESET);


  void setup()
  {
     display1.begin(SSD1306_SWITCHCAPVCC, 0x3D);
     display2.begin(SSD1306_SWITCHCAPVCC, 0x3C);

  }

void loop() {
static int parzysta=0;
static int nieparzysta=1;
  display1.clearDisplay();
  display1.setTextColor(WHITE,BLACK);
  display1.setCursor(8,10);
  display1.println(nieparzysta+=2);
  display1.display();
 
  display2.clearDisplay();
  display2.setTextColor(WHITE,BLACK);
  display2.setCursor(8,10);
  display2.println(parzysta+=2);
  display2.display();
  delay(1000);
  }
I potem Twój,  działa OK, tak że biblioteka jest w porządku. Przynajmniej moja, wziąłem ją stąd:  link .