Groveで広がるArduinoの世界-Step2-① Grove-LCD RGB Backlight

 Step1では、Senser Kitに入っていたセンサ類をつなぎました。Step2ではGroveコネクタでつながる製品を取り上げます。

 Arduino UNOのブロックを切り離します。

表示器Grove-LCD RGB Backlightの接続

 測定結果を表示するために、キャラクタの表示ができるLCDをつなぎます。

温湿度センサSHT35の接続

 温湿度センサのSHT35を、上記と同様にI2Cにコネクタでつなぎます。

Grove - LCD RGB Backlightのおもなスペック

 データ

  • 動作電圧 5V
  • 動作電流 60mA以下
  • インターフェース I2C
  • LCDのスレーブ・アドレス 0x3e
  • RGBのスレーブ・アドレス 0x62
  • 表示 16文字2行

SHT35ボードのおもなスペック

 データ

  • 動作電圧 3.3/5V
  • 温湿度 ±1.5%RH、±0.1℃
  • 温度分解能 0.01℃
  • 湿度分解能 0.01%RH
  • インターフェース I2C
  • スレーブ・アドレス 0x45(デフォルト)/ 0x44(オプション)

I2Cscannerでスレーブ・アドレスを見つける

 Arduino.ccのサイトにおいてあるI2Cscannerを動かします。

#include <Wire.h>

void setup(){
  Wire.begin();

  Serial.begin(115200);
  while (!Serial);             // Leonardo: wait for serial monitor
  Serial.println("\nI2C Scanner");
}

void loop(){
  byte error, address;
  int nDevices;
 
  Serial.println("Scanning...");
 
  nDevices = 0;
  for(address = 1; address < 127; address++ )
  {
    // The i2c_scanner uses the return value of
    // the Write.endTransmisstion to see if
    // a device did acknowledge to the address.
    Wire.beginTransmission(address);
    error = Wire.endTransmission();

    if (error == 0){
      Serial.print("I2C device found at address 0x");
      if (address<16)
        Serial.print("0");
      Serial.print(address,HEX);
      Serial.println("  !");

      nDevices++;
    }
    else if (error==4){
      Serial.print("Unknown error at address 0x");
      if (address<16)
        Serial.print("0");
      Serial.println(address,HEX);
    }    
  }
  if (nDevices == 0)
    Serial.println("No I2C devices found\n");
  else
    Serial.println("done\n");
 
  delay(5000);           // wait 5 seconds for next scan
}

 実行結果です。

 SHT35が0x45、LCDが0x03、0x3e、0x62、0x70ですね。0x03と0x70はデータシートには書かれていないアドレスです。

Grove - LCD RGB Backlightのライブラリを導入

 Arduino IDEのメニュー「ツール」から「ライブラリを管理」を選択します。「Grove - LCD RGB Backlight」を検索欄に入れます。見つけてきました。インストールをクリックします。

 一緒にサンプル・スケッチもインストールされています。Grove - LCD RGB BacklightからHelloWorldを選択します。

 実行例です。露出が少ないのでオレンジ色に見えますが、実際は赤色です。

SHT35のライブラリを導入

 Arduino IDEのメニュー「ツール」から「ライブラリを管理」を選択します。「SHT35」を検索欄に入れます。Grove - I2C High Accuracy Temp_Humi Sensor SHT35を見つけてくるので、インストールをクリックします。

 一緒にサンプル・スケッチもインストールされています。Grove - I2C High Accuracy Temp_Humi Sensor SHT35からbasic_demoを動かします。

合成したスケッチ

 SHT35の温度と湿度の値をLCDに表示します。

/* Copyright (c) 2018 Seeed Technology Co., Ltd.
 * Website    : www.seeed.cc
 * Author     : downey
 * Create Time: May 2018
 * 2013 Copyright (c) Seeed Technology Inc.  All right reserved.
 * Author:Loovee
 * 2013-9-18
 */

#include "Seeed_SHT35.h"
#include 
#include "rgb_lcd.h"
#define SCLPIN  A5
SHT35 sensor(SCLPIN);
rgb_lcd lcd;

const int colorR = 50;
const int colorG = 150;
const int colorB = 150;
void setup(){ Serial.begin(115200); delay(10); Serial.println("serial start!!"); if(sensor.init()){ Serial.println("sensor init failed!!!"); } lcd.begin(16, 2); lcd.setRGB(colorR, colorG, colorB); lcd.print("hello, world!"); delay(1000); } void loop(){ u16 value=0; u8 data[6]={0}; float temp,hum; if(NO_ERROR!=sensor.read_meas_data_single_shot(HIGH_REP_WITH_STRCH,&temp,&hum)){ Serial.println("read temp failed!!"); } else{ Serial.println("read data :"); Serial.print("temperature = "); Serial.print(temp); Serial.println(" ℃ "); Serial.print("humidity = "); Serial.print(hum); Serial.println(" % "); lcd.clear(); lcd.setCursor(0, 0); lcd.print("temp ="); lcd.print(temp); lcd.setCursor(0, 1); lcd.print("humi ="); lcd.print(hum); } delay(1000); }


 実行中の様子です。


ライブラリのソースの保存場所

 Grove-LCD RGB Backlight  SHT35

LCDの書式例

初期化 begin(16, 2);
バックライトの設定 setRGB(int r, int g, int b);
画面クリア clear();
カーソルの位置設定 setCursor(x, y); 左上が0,0 
ホーム home();
表示 print(文字列もしくは変数);
画面の表示/非表示 noDisplay();
display();
ブリンク noBlink();
blink();
バックライトのブリンク noBlinkLED();
blinkLED();
カーソルの表示/非表示 noCursor();
cursor();
オート・スクロール autoscroll();
noAutoscroll();
左右のスクロール scrollDisplayLeft();
scrollDisplayRight();
シリアル・ポートからの入力表示 write(Serial.read());
表示方向の変更(シリアルモニタの送信欄) 右m rightToLeft();
左s leftToRight();
フェード setPWM(color, intensity);

前へ

STEMMAで広がるArduinoの世界⑱ まとめ