Arduinoで実験 (3.5インチ液晶 for Arduino MEGA2560)

2013/12/20


◆ 3.5インチ液晶 for Arduino MEGA2560

aitendo より Arduino MEGA 用 TFT 液晶シールドが発売されたので購入しました。

MEGA は大容量&多数のポートがあるので 16ビットパラレルの液晶制御には最適です。また、2000円程度なのでお財布にも優しい。

以前から MEGA も持っていたのですが、MEGA を使用するほどの物を作ってなかったのでほとんど触っていませんでしたが、タッチスクリーン&SDカードスロットがついているので、本体とこのシールドで完結できるものができそうです。

液晶は基板にハンダ付けしてあるのが Arduino と接続するピンは同封されておらず自分でハンダ付けする必要がある。

内蔵コントローラは R61581 というものらしいのですが、aitendo のホームページにライブラリとサンプルスケッチがあるので、これを参考にする。

5V用なので張られるバスにはレベル変換用の抵抗が入っているようだ 3V 品や due への転用は厳しいかもしれない。

 

◆ LiPo 燃料ゲージ

スイッチサイエンスで購入した Sparkfun の燃料ゲージです。 この商品は I2C で通信しリチウムイオンポリマー電池の残量を測定することができます。また、一定割合の電圧降下になるとアラートピンが出力となるので、マイコンなどで割込み処理に使用できます。

しきい値の設定は CONFIG レジスタで行い、下位バイトの bit4 ~ bit0 で設定する。

#include <Wire.h>

#define I2C_ADDR 0x36

void setup() {
Serial.begin(9600); Serial.println("Start"); Wire.begin(); quickStart(); } void loop() { byte cmd; if(Serial.available() > 0) { cmd = Serial.read(); if (cmd == 'R') readData(); } } void readData(void) { unsigned int vcell = 0; byte soc = 0; float per; //Quick Start quickStart(); //read VCELL Wire.beginTransmission(I2C_ADDR); Wire.write(0x02); Wire.endTransmission(); Wire.requestFrom(I2C_ADDR, 2); while (Wire.available() < 2); vcell = Wire.read() << 8; vcell |= Wire.read(); vcell = vcell >> 4; Serial.print("VCELL = "); Serial.println(vcell, DEC); //read SOC Wire.beginTransmission(I2C_ADDR); Wire.write(0x04); Wire.endTransmission(); Wire.requestFrom(I2C_ADDR, 2); while (Wire.available() < 2); soc = Wire.read(); per = (soc << 8) + (Wire.read() / 256); Serial.print("SOC(High) = "); Serial.println(soc, DEC); Serial.print("SOC(%) = "); Serial.print(per, 6); Serial.println(" %"); } void quickStart(void) { //Quick Start Wire.beginTransmission(I2C_ADDR); Wire.write(0x06); Wire.write(0x40); Wire.write(0x00); Wire.endTransmission(); delay(500); }