Arduino UNO 및 AQM0802 (액정) 및 DS1307 (실시간 시계) 시계
10947 단어 ArduinoUnoAQM0802ArduinoDS1307
x 시간 맞추는 것은 다른
1.SCL과 SDA를 연결, 풀업도 잊지 않고
2. 전원 연결
3. 아래 소스 코드 작성
4. 컴파일 실행으로 표시되면 종료
5. 끝
#include <Wire.h> //I2C library
#define ADDR 0x68 // 2進数 1101000
#define I2Cadr 0x3e // 固定
int ii; //ループカウンター
char data_read[8]; //i2cバッファー
//初期レジスター
char INIT_com[]={0x0,0x38,
0x0,0x39,
0x0,0x4,
0x0,0x14,
0x0,0x70,
0x0,0x56,
0x0,0x6C,
0x0,0x38,
0x0,0xC,
0x0,0x1,
0x40,0x41};
//画面クリアレジスター
char INIT_cls[]={0x0,0x1};
//時間をLCD表示形式に変換
char ch_hex_a_b[5];
char *ch_hex_a(int l_num)
{
ch_hex_a_b[0] = '@';
ch_hex_a_b[1] = '0' + (l_num >> 4);
ch_hex_a_b[2] = '0' + (l_num & 0xf);
ch_hex_a_b[3] = ':';
ch_hex_a_b[4] = 0;
return(ch_hex_a_b);
}
//i2c書き込みルーチン 2と4のみ
void i2c_led_w(char *buff1,int n){
Wire.beginTransmission(I2Cadr);
Wire.write(buff1[0]); //rs 0がレジスター rs 1がデータ
Wire.write(buff1[1]); //値1
if( n == 4 ) {
Wire.write(buff1[2]); //値2
Wire.write(buff1[3]); //値3
}
Wire.endTransmission();
delay(2);
}//i2c_led_w
void setup()
{
Wire.begin(); //uno
//液晶の初期化
for(ii=0;ii<11;ii++){
i2c_led_w(&INIT_com[ii*2],2);
} //for
} //end setup
void loop()
{
//液晶のクリア
i2c_led_w(INIT_cls,2);
// レジスタのアドレスを先頭にする
Wire.beginTransmission(ADDR);
Wire.write(0x00);
Wire.endTransmission();
// I2Cスレーブに8byteのレジスタデータを要求する
Wire.requestFrom(ADDR, 8);
// 8byteのデータを取得する
for (ii = 0; ii < 8; ii++) {
while (Wire.available() == 0 ) {}
data_read[ii] = Wire.read();
}//for
//画面に表示
i2c_led_w(ch_hex_a(data_read[2]) ,4);
i2c_led_w(ch_hex_a(data_read[1]) ,4);
i2c_led_w(ch_hex_a(data_read[0]) ,4);
delay(1000); //1秒待つ
}//loop
시간 맞추기
#include <Wire.h> //I2C library
#define ADDR 0x68 // 2進数 1101000
char data_read[8]; //i2cバッファー
#define HH 12
#define MM 34
void setup()
{
Wire.begin(); //uno
//i2c書き込み
Wire.beginTransmission(ADDR);
Wire.write((char) 0 ); //0 レジスターの位置は0
Wire.write((char) 0 ); //1 秒
Wire.write((char) ( MM /10)*16+( MM %10) ); //2 分
Wire.write((char) ( HH /10)*16+( HH %10) ); //3 時
Wire.write((char) 3 ); //4 曜日
Wire.write((char) 1 ); //5 日
Wire.write((char) 1 ); //6 月
Wire.write((char) 0x20 ); //7 年
Wire.endTransmission();
} //end setup
void loop()
{
} //loop
Reference
이 문제에 관하여(Arduino UNO 및 AQM0802 (액정) 및 DS1307 (실시간 시계) 시계), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/caa45040/items/74a5d4be906e130f514f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)