I3231C를 통해 통합 DS2의 날짜와 온도를 확인하는 Arduino 라이브러리

I3231C를 통해 통합 DS2의 날짜와 온도를 확인하는 Arduino 라이브러리

I3231C를 통해 통합 DS2의 날짜와 온도를 확인하는 Arduino 라이브러리

업데이트됨: 또한 새로운 페이지를 방문하세요. DS3231 RTC 모듈 및 Arduino를 사용하여 날짜와 시간을 관리하는 라이브러리 계절별 시간 등의 개선을 통해

의 운영 IC de 실시간 시계(RTC) 가장 인기 있는 것은 버스 I2C 일반적으로 매우 유사합니다. 게다가, 와이어 라이브러리 de 아두 이노 장치와의 통신을 크게 단순화합니다. 2선 직렬 인터페이스(TWI), I2C, 특정한.

목차

    광범위하게 말하면 프로세스는 다음과 같이 구성됩니다.

    1. 기능을 사용하여 슬레이브 또는 마스터(기본적으로 설정됨)로 통신을 시작합니다. Wire.begin(주소). "주소"가 생략되면 통신은 다음 주소로 시작됩니다. μC 선생님 버스 I2C.

    2. 커뮤니케이션 활성화 I2C 다음 명령을 사용하여 장치가 위치한 메모리 주소를 통해 장치와 함께 Wire.beginTransmission(주소).

    3. 에 주문을 작성하세요. 버스 I2C 장치에 수행하려는 작업을 알려주려면 다음을 사용하세요. Wire.write(명령), 여기서 "order"는 작업 코드입니다.

    4. 통신을 비활성화하여 버스 I2C 기능 Wire.endTransmission ().

    5. 해당 기능을 사용하여 요청한 작업(이 경우 날짜 및 시간)에 해당하는 일정량의 데이터를 장치에 전송하도록 요청합니다. Wire.requestFrom(주소,금액).

    6. 해당 기능으로 요청된 데이터를 읽을 수 있을 때까지 기다립니다. Wire.available (), 이미 수신되어 읽을 수 있는 데이터 수를 반환합니다.

    7. 장치에서 보낸 데이터를 읽습니다( 실시간 시계, 이 경우) 함수를 사용하여 와이어.읽기() 표시된 바이트만큼 Wire.available () 사용할 수 있습니다.

    8. 일반적으로 데이터는 매우 컴팩트한 형식으로 전송되므로 장치를 사용하는 프로그램에서 생성된 데이터 표현에 해당하는 방식으로 수신된 데이터를 해석해야 할 가능성이 높습니다.

    DS3231(및 동일한 시리즈의 호환 제품: DS3232) 및 통합 사양에 따른 데이터 해석, 예를 들어 시간을 나타내는 다양한 숫자의 값은 다음과 같이 표시됩니다. BCD(이진 코드 십진수) 10진수 값으로 표현하는 것이 더 편리할 것입니다(a 바이트)에서 사용 아두 이노

    같은 줄에서 온도는 바이트로 표시됩니다. 2의 보수 정수 부분의 경우 1/4도의 분해능을 갖는 단계의 경우 2비트, 소수 부분. 시계의 데이터 표현에 대한 이러한 측면과 기타 측면은 아래 라이브러리 코드에서 철저하게 논의되었습니다. DS3231

    이 라이브러리로 온도를 확인하려면 다음 메소드를 사용하십시오. 읽기_온도() 목적 DS3231 처음에 인스턴스화되었습니다. 날짜와 시간을 읽으려면 먼저 로드된 다음 다양한 용도로 사용할 수 있는 형식(컴팩트, 휴먼...) 중 하나로 요청됩니다. 이는 아래 코드 라이브러리의 헤더 문서에 설명되어 있습니다.

    다음은 라이브러리 사용 방법을 보여주는 예제 코드입니다. 위에서 언급했듯이 온도는 함수로 간단히 읽혀집니다. 읽기_온도() 클래스 객체의 DS3231 그러나 판독 오류를 무시하기 위해 데이터 시트에 따라 장치의 최대 및 최소 온도를 각각 저장하고 해당 기능으로 판독하는 두 개의 상수가 사용됩니다.

    온도 판독은 두 단계로 수행됩니다. 먼저 값이 로드되어 날짜나 시간의 다양한 사용이 일관되게 유지되고(불리한 경우에는 더 높은 값이 표시되지 않음) 두 번째는 다음 형식에 따라 사용됩니다. 필요합니다. 예제 프로그램(모든 가능성을 설명하지만 그다지 실용적이지는 않음)은 사용 가능한 모든 형식을 보여줍니다.

    • 함수 날짜_시간_값() 배열에 대한 포인터를 반환합니다. 이륜 전차 (바이트) 시계의 날짜와 시간을 나타내는 7개의 숫자 값을 포함합니다. DS3231 십진수로 변환됩니다(그들은 BCD 장치에서)

    • 기능 사용 평일_번호() 일요일부터 시작하는 요일의 숫자에 해당하는 값을 구합니다. 텍스트로 표시하려면 배열을 사용하고 인덱스 0인 일요일부터 시작하여 1을 뺍니다.

    • "로컬"(스페인어) 형식으로 날짜를 확인하려면 다음 기능을 사용하세요. 인간_날짜()는 날짜가 DD/MM/YYYY 형식으로 표시되는 문자열에 대한 포인터를 반환합니다. 여기서 DD는 2자리 숫자로 표시되는 일, MM은 2자리 숫자로 표시되는 월, YYYY는 4자리 숫자로 표시되는 연도입니다.

    • 함수 인간_시간() hh:mm:ss 형식으로 시간을 반환합니다. 여기서 hh는 24자리의 시간(2 형식)이고, mm은 2자리의 분, ss는 2자리의 초입니다.

    • 날짜와 시간을 쉽게 사용하려면 로그 파일 기능이 프로그래밍되었습니다 컴팩트_날짜_시간(), YYMMDDhhmmss 형식으로 날짜 및 시간 값을 전달합니다. 여기서 AA는 마지막 2자리 연도, MM은 2자리 월, DD는 2자리 일, hh는 시간(24 형식) 2입니다. mm는 2자리의 분, ss는 2자리의 초입니다. 이 형식은 텍스트임에도 불구하고 공간을 거의 차지하지 않으며 매우 간단한 알파벳 순서를 허용합니다.

    • 함수 날짜_시간_MySQL() 데이터베이스 관리자가 사용하는 형식으로 날짜와 시간을 표시하는 데 사용됩니다. MySQL의 (또는 새롭고 자유로운 MariaDB) YYYY-MM-DD hh:mm:ss, 여기서 YYYY는 4자리로 표시되는 연도, MM은 2자리로 표시되는 월, DD는 2자리로 표시되는 일, hh는 24자리로 표시되는 시간(2 형식)입니다. , mm은 2자리의 분, 2자리의 초입니다.

    날짜와 시간을 표현하는 형식은 다양하지만 필요한 형식이 없을 수도 있지만 확실히 기존 형식 중 하나를 기반으로 하고 이를 예로 사용하면 다음과 같이 새 메서드를 쉽게 추가할 수 있습니다. 다른 사양. 새로운 기능을 추가하시면 코드를 공유(공개!) 해주시고, 어떻게 작동하는지 설명해주시면 조금씩 라이브러리를 개선할 수 있도록 해주세요. 감사합니다!

    위 예제 프로그램의 출력은 다음 이미지에 표시된 것과 유사할 수 있습니다. 7개 값 목록(초, 분, 시간, 요일, 월, 월, 연도), 날짜 및 "인간의" 방식으로 표현된 시간(스페인 스타일에 따름) XNUMX자리 시계 형식의 정수로 표시된 시간, 데이터베이스 형식의 날짜 및 시간 MySQL의, 간단한 형식의 날짜 및 시간(예: 로그) 및 내부 온도 DS3231.

    I3231C 버스를 통한 Arduino 콘솔 출력 라이브러리 실시간 클록(RTC) 및 온도 DS2

    코멘트 남기기

    당신은 놓쳤을 수도 있습니다