Разница между DS1307 и IN1307N: я использую RTClib для создания модуля RTC с использованием IN1307N, но RTC не запускается.

#include <Wire.h>
#include "RTClib.h"

#if defined(ARDUINO_ARCH_SAMD)
// для Zero, вывод на последовательную USB-консоль, удалите строку ниже, если для программирования Zero используется порт программирования!
#define Serial SerialUSB
#endif

RTC_DS1307 rtc;

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

void setup () {


#ifndef ESP8266
while (!Serial); // для Леонардо/Микро/Зеро
#endif

Serial.begin(9600);
if (! rtc.begin()) {
Serial.println("Couldn't find RTC");
while (1);
}

if (! rtc.isrunning()) {
Serial.println("RTC is NOT running!");
// следующая строка устанавливает RTC на дату и время компиляции этого скетча
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
// Эта строка задает RTC с явной датой и временем, например, чтобы установить
// 21 января 2014 года в 3 часа ночи вы бы позвонили:
// rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0));
}
}

void loop () {
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(" since midnight 1/1/1970 = ");
Serial.print(now.unixtime());
Serial.print("s = ");
Serial.print(now.unixtime() / 86400L);
Serial.println("d");

// вычислить дату, которая наступит через 7 дней и 30 секунд
DateTime future (now + TimeSpan(7,12,30,6));

Serial.print(" now + 7d + 30s: ");
Serial.print(future.year(), DEC);
Serial.print('/');
Serial.print(future.month(), DEC);
Serial.print('/');
Serial.print(future.day(), DEC);
Serial.print(' ');
Serial.print(future.hour(), DEC);
Serial.print(':');
Serial.print(future.minute(), DEC);
Serial.print(':');
Serial.print(future.second(), DEC);
Serial.println();

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

Если я использую 57600, я получу случайные символы в одной строке 1 строка. Я подключил PIN5 IN1307N к A4, PIN4 IN1307N к A5

, 👍0

Обсуждение

А как насчет подтягиваний на SDA/SCL?, @KIIV

да, применено. 10k на VCC, @antoniomerlin

Можно попробовать использовать 4k7 (или два 10k параллельно) и более короткие провода, но это всего лишь предположение. Можно попробовать [сканер I2C](http://playground.arduino.cc/Main/I2cScanner), если RTC вообще обнаружится. Кстати, значение 165 не так уж и случайно, как вы думаете. Это 0xF*10 + 0xF, то есть 0xFF в двоично-десятичном коде., @KIIV

Сканирование... Устройства I2C не найдены., @antoniomerlin

Проверьте проводку: A4 = SDA -> PIN5, A5 = SCL -> PIN6 (PIN4 - это клемма GND), @KIIV

да, это связано.., @antoniomerlin


1 ответ


Лучший ответ:

0

Эта схема решила мою проблему, но я все еще не понимаю разницу между DS1307 и IN1307N.

,

Разницы быть не должно. Просто разные заводы производят чипы., @KIIV