Arduino Polska Forum

Pełna wersja: Problem z biblioteką dla LCD 5110
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
Kod:
// Date and time functions using a DS3231 RTC connected via I2C and Wire lib
#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Adafruit_PCD8544.h>
#include "RTClib.h"

// Software SPI (slower updates, more flexible pin options):
// pin 7 - Serial clock out (SCLK)
// pin 6 - Serial data out (DIN)
// pin 5 - Data/Command select (D/C)
// pin 4 - LCD chip select (CS)
// pin 3 - LCD reset (RST)
Adafruit_PCD8544 display = Adafruit_PCD8544(7, 6, 5, 4, 3);

RTC_DS3231 rtc;
// the pin that is connected to SQW
#define CLOCK_INTERRUPT_PIN 2

char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
volatile bool state;

void setup () {
  pinMode(LED_BUILTIN, OUTPUT);
 
  Serial.begin(9600);
  display.begin();
 
  display.setContrast(37);
  display.setCursor(0,0);
  display.println("Witam");
  display.display();
  delay(2000);
  display.clearDisplay();   // clears the screen and buffer

#ifndef ESP8266
  while (!Serial); // wait for serial port to connect. Needed for native USB
#endif

  if (! rtc.begin()) {
    Serial.println("Couldn't find RTC");
    Serial.flush();
    abort();
  }

  if (rtc.lostPower()) {
    Serial.println("RTC lost power, let's set the time!");
    // When time needs to be set on a new device, or after a power loss, the
    // following line sets the RTC to the date & time this sketch was compiled
    rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
    // This line sets the RTC with an explicit date & time, for example to set
    // January 21, 2014 at 3am you would call:
    // rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0));
  }

  // When time needs to be re-set on a previously configured device, the
  // following line sets the RTC to the date & time this sketch was compiled
  // rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
  // This line sets the RTC with an explicit date & time, for example to set
  // January 21, 2014 at 3am you would call:
  // rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0));

     //we don't need the 32K Pin, so disable it
    rtc.disable32K();

    rtc.writeSqwPinMode(DS3231_SquareWave1Hz);
   
    // Making it so, that the alarm will trigger an interrupt
    pinMode(CLOCK_INTERRUPT_PIN, INPUT_PULLUP);
    attachInterrupt(digitalPinToInterrupt(CLOCK_INTERRUPT_PIN), oneSecond, RISING);
}

void loop () {
  digitalWrite(LED_BUILTIN, state); 
  DateTime now = rtc.now();

  Serial.print(now.year(), DEC);
  Serial.print('/');
  Serial.print(now.month(), DEC);
  Serial.print('/');
  Serial.print(now.day(), DEC);
  Serial.print(" (");
  Serial.print(daysOfTheWeek[now.dayOfTheWeek()]);
  Serial.print(") ");
  Serial.print(now.hour(), DEC);
  Serial.print(':');
  Serial.print(now.minute(), DEC);
  Serial.print(':');
  Serial.print(now.second(), DEC);
  Serial.println();
   
  Serial.print("Temperature: ");
  Serial.print(rtc.getTemperature());
  Serial.println(" C");

  Serial.println();
  delay(1000);
}

void oneSecond() {
  state=!state;
 
}
Mam pytanie potyczące funkcji display.begin(); w tym kodzie.
Po wpisaniu tej funkcji nie jest wykonywany program z zatrzymuje się w funkcji setup ().
Gdy natomiast odkomentuję display.begin(); to wszystko działa poprawnie i program się wykonuje co można zaobserwować w oknie monitora szeregowego.Co może być powodem?
Powodem jest biblioteka do tego wyświetlacza po prostu nie uwzględnia złego podłączenia i się wiesza bo nie może zainicjować połączenia..

Ogólnie sprawdź poprawność podłączenia wyświetlacza.