[Arduino] 모든 디바이스를 I2C화
처음에
Arduino에 여러 장치와 센서를 연결하여 사용하고 싶을 때 핀 수가 부족하거나, 타격 등이 없습니까?
또한 사용중인 I2C 센서를 프로그램을 다시 쓰지 않고 다른 센서로 대체하고 싶지 않을까요?
이번에는
· 여러 I2C 디바이스
· 소프트웨어 시리얼
・전자 릴레이
등으로 복수 핀이 사용되고 있는 Arduino에 대해서, 한층 더 액정 모듈을 장착하고 싶다고 하는 요구를 위해서 액정 모듈을 I2C화했습니다.
경위
처음에는 I2C 16x2 문자 흑백 LCD을 사용했지만,
· 좀 더 크게 표시하고 싶습니다.
· 프로그램을 변경하지 않고 LCD 만 교체하고 싶습니다.
라는 요구가 있어 SPI 연결 1.8인치 TFT LCD 모듈 을 I2C 16x2 문자 흑백 LCD 와 커멘드 호환으로 Arduino와 I2C로 접속할 수 있도록 하기로 했습니다.
구조
SPI 연결 1.8인치 TFT LCD 모듈을 I2C 모듈화하기 위해,
・TFT 액정을 다른 Arduino로 제어
・메인의 Arduino와 I2C로 접속(TFT 액정측을 슬레이브로 한다)
· 메인 Arduino에서 I2C로 명령을 보내 슬레이브 측 Arduino에서 표시
했다.
이렇게 하면 Arduino의 핀을 새롭게 소비하지 않고 액정을 추가할 수 있습니다.
Arduino 간의 I2C
Arduino를 I2C로 연결하는 방법은
Arduino간에 I2C 통신하는 방법
에 자세히 설명되어 있지만 매우 간단합니다.
이번은, 지금까지 사용하고 있던 I2C 16x2 문자 흑백 LCD 와 주소 호환, 커멘드 호환이 되도록(듯이) 했습니다.
흑백 액정에서는 커맨드(문자 출력, 커서 위치 변경 등)와 데이터(위치, 문자 등)를 0x40의 부호로 판단하고 있었으므로,
Wire.beginTransmission(m_addr);
Wire.write(_isData ? 0x40 : 0x00);
Wire.write(_command[i]);
Wire.endTransmission();
슬레이브측의 Arduino에서도 거기에 맞춘 사양으로 받도록 했습니다.
if(isData==0){ // !0x40
if((v_data&0x80)==0x80){ // 0x80はカーソルセットコマンド
int x = (v_data&0x3f);
int y = ((v_data>>6)&0x1);
emu->SetCursor(x,y); // 16x2行を8x4行に
}
}else if(isData==0x40){ // 0x40は文字表示コマンド
emu->WriteCharReq(v_data);
}
else if(isData==0x10){ // 0x10は色変えコマンド(拡張)
emu->SetPalette(v_data); // 0xfront|back
}
요약
기존 디바이스를 I2C화하여 동작시킬 수 있었습니다.
그래픽 액정을 고속 표시하는 용도에는 적합하지 않지만,
· I2C 연결된 센서/장치를 사양을 변경하지 않고 다른 것으로 교체하고 싶습니다.
· 장치를 가능한 한 모듈화하고 싶습니다.
같은 용도에 적합하지 않을까 생각합니다.
Reference
이 문제에 관하여([Arduino] 모든 디바이스를 I2C화), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ELIXIR/items/55c8f83a1af24c7e3d65
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
처음에는 I2C 16x2 문자 흑백 LCD을 사용했지만,
· 좀 더 크게 표시하고 싶습니다.
· 프로그램을 변경하지 않고 LCD 만 교체하고 싶습니다.
라는 요구가 있어 SPI 연결 1.8인치 TFT LCD 모듈 을 I2C 16x2 문자 흑백 LCD 와 커멘드 호환으로 Arduino와 I2C로 접속할 수 있도록 하기로 했습니다.
구조
SPI 연결 1.8인치 TFT LCD 모듈을 I2C 모듈화하기 위해,
・TFT 액정을 다른 Arduino로 제어
・메인의 Arduino와 I2C로 접속(TFT 액정측을 슬레이브로 한다)
· 메인 Arduino에서 I2C로 명령을 보내 슬레이브 측 Arduino에서 표시
했다.
이렇게 하면 Arduino의 핀을 새롭게 소비하지 않고 액정을 추가할 수 있습니다.
Arduino 간의 I2C
Arduino를 I2C로 연결하는 방법은
Arduino간에 I2C 통신하는 방법
에 자세히 설명되어 있지만 매우 간단합니다.
이번은, 지금까지 사용하고 있던 I2C 16x2 문자 흑백 LCD 와 주소 호환, 커멘드 호환이 되도록(듯이) 했습니다.
흑백 액정에서는 커맨드(문자 출력, 커서 위치 변경 등)와 데이터(위치, 문자 등)를 0x40의 부호로 판단하고 있었으므로,
Wire.beginTransmission(m_addr);
Wire.write(_isData ? 0x40 : 0x00);
Wire.write(_command[i]);
Wire.endTransmission();
슬레이브측의 Arduino에서도 거기에 맞춘 사양으로 받도록 했습니다.
if(isData==0){ // !0x40
if((v_data&0x80)==0x80){ // 0x80はカーソルセットコマンド
int x = (v_data&0x3f);
int y = ((v_data>>6)&0x1);
emu->SetCursor(x,y); // 16x2行を8x4行に
}
}else if(isData==0x40){ // 0x40は文字表示コマンド
emu->WriteCharReq(v_data);
}
else if(isData==0x10){ // 0x10は色変えコマンド(拡張)
emu->SetPalette(v_data); // 0xfront|back
}
요약
기존 디바이스를 I2C화하여 동작시킬 수 있었습니다.
그래픽 액정을 고속 표시하는 용도에는 적합하지 않지만,
· I2C 연결된 센서/장치를 사양을 변경하지 않고 다른 것으로 교체하고 싶습니다.
· 장치를 가능한 한 모듈화하고 싶습니다.
같은 용도에 적합하지 않을까 생각합니다.
Reference
이 문제에 관하여([Arduino] 모든 디바이스를 I2C화), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ELIXIR/items/55c8f83a1af24c7e3d65
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Arduino를 I2C로 연결하는 방법은
Arduino간에 I2C 통신하는 방법
에 자세히 설명되어 있지만 매우 간단합니다.
이번은, 지금까지 사용하고 있던 I2C 16x2 문자 흑백 LCD 와 주소 호환, 커멘드 호환이 되도록(듯이) 했습니다.
흑백 액정에서는 커맨드(문자 출력, 커서 위치 변경 등)와 데이터(위치, 문자 등)를 0x40의 부호로 판단하고 있었으므로,
Wire.beginTransmission(m_addr);
Wire.write(_isData ? 0x40 : 0x00);
Wire.write(_command[i]);
Wire.endTransmission();
슬레이브측의 Arduino에서도 거기에 맞춘 사양으로 받도록 했습니다.
if(isData==0){ // !0x40
if((v_data&0x80)==0x80){ // 0x80はカーソルセットコマンド
int x = (v_data&0x3f);
int y = ((v_data>>6)&0x1);
emu->SetCursor(x,y); // 16x2行を8x4行に
}
}else if(isData==0x40){ // 0x40は文字表示コマンド
emu->WriteCharReq(v_data);
}
else if(isData==0x10){ // 0x10は色変えコマンド(拡張)
emu->SetPalette(v_data); // 0xfront|back
}
요약
기존 디바이스를 I2C화하여 동작시킬 수 있었습니다.
그래픽 액정을 고속 표시하는 용도에는 적합하지 않지만,
· I2C 연결된 센서/장치를 사양을 변경하지 않고 다른 것으로 교체하고 싶습니다.
· 장치를 가능한 한 모듈화하고 싶습니다.
같은 용도에 적합하지 않을까 생각합니다.
Reference
이 문제에 관하여([Arduino] 모든 디바이스를 I2C화), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ELIXIR/items/55c8f83a1af24c7e3d65
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여([Arduino] 모든 디바이스를 I2C화), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ELIXIR/items/55c8f83a1af24c7e3d65텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)