Arduino UNO (3) 1602 LCD i2c 表示

1602 LCD直接繋ぐと、6つのデジタルポートを占有(4つデータワイヤ+2の制御ワイヤが必要)し、GPIOはたくさん消耗するので、i2cを利用すると2つのアナログポートが足りる。

WeMosで試すと、うまくいかないので、より汎用のこのNANOで試す。すんなりうまくいく。行きよいでUnoにも試す。これを成功することて、次に、BLT通信を実験するさい、受信文字をモニタリングできる。

I2C インターフェイス SDA、SCL は Arduino Uno ではそれぞれ A4、A5 です。

Arduino Uno R3
SDA A4
SCL A5

 

サンプルプログラム。

#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27,16,2);

void setup() {
  lcd.init(); 
  lcd.backlight();
  lcd.setCursor(0, 0);
  lcd.print("Hello, world!");
}

void loop(){
  // set the cursor to column 0, line 1
  // (note: line 1 is the second row, since counting begins with 0):
  lcd.setCursor(0, 1);
  // print the number of seconds since reset:
  lcd.print(millis() / 1000);
}

写真も後ほどに。

Arduino NANO (1) 1602 LCD i2c 表示

1602 LCD直接繋ぐと、6つのデジタルポートを占有(4つデータワイヤ+2の制御ワイヤが必要)し、GPIOはたくさん消耗するので、i2cを利用すると2つのアナログポートが足りる。

WeMosで試すと、うまくいかないので、より汎用のこのNANOで試す。すんなりうまくいく。

I2C インターフェイス SDA、SCL は Arduino Nano ではそれぞれ A4、A5 です。

Arduino Nano
SDA A4
SCL A5

 

サンプルプログラム。

#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27,16,2);

void setup() {
  lcd.init(); 
  lcd.backlight();
  lcd.setCursor(0, 0);
  lcd.print("Hello, world!");
}

void loop(){
  // set the cursor to column 0, line 1
  // (note: line 1 is the second row, since counting begins with 0):
  lcd.setCursor(0, 1);
  // print the number of seconds since reset:
  lcd.print(millis() / 1000);
}

写真も後ほどに。

Arduino UNO (2) TM1637 7段4桁LED

Arduino UNO (1) 7段4桁LED を表示してみる

参考のURLの通り、試しただけ。

TM1637 用ライブラリをインストール

  1. ライブラリをダウンロード
    http://www.seeedstudio.com/wiki/File:DigitalTube.zip
  2. ライブラリを Arduino IDE にインストール
    Arduino IDE の [スケッチ] → [ライブラリを使用] → [ライブラリをインストール…] からダウンロードしたライブラリ ZIP (DigitalTube.zip) を選択しインストールする。

    • \ドキュメント\Arduino\libraries\ 以下にコピーされる

繋がる

ピンアサインは、下表です。

Arduino Sensor Color
GND GND Black
VCC VCC Red
D8 DIO White
D7 CLK Yellow

スケッチを作成する

#include "TM1637.h"

#define NANA_SEG_CLK 7
#define NANA_SEG_DIO 8

TM1637 tm1637( NANA_SEG_CLK, NANA_SEG_DIO );

void setup() {
  tm1637.init();
  tm1637.set( BRIGHT_DARKEST );
}

void loop() {
  int8_t NumTab[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
  int8_t ListDisp[4];
  unsigned char count = 0;
  delay( 150 );
  while( 1 ) {
    count ++;
    if( count == sizeof(NumTab) ) count = 0;
    for( unsigned char BitSelect = 0; BitSelect < 4; BitSelect ++ ) ListDisp[BitSelect] = NumTab[count];
    tm1637.display( ListDisp );
    delay( 850 );
  }
}

 

動作を確認する

  1. Arduino IDE にてコンパイル&書き込み
  2. 7 セグの表示が 0 → 9 とカウントアップし、0 から再カウントアップすることを確認する

参考:

http://qiita.com/warafuuji/items/51b04c6ccfac92803fd3

WeMos (3) 1602 LCD 表示

OSが付いてないので、GUIの実現は難しい。

簡単に文字が表示できるデバイス1602 LCDを使う。

/*
 * 1602 LCD Sample
 * 
 * 1602LCD ---- WeMos
 *  GND    ---- GND
 *  VCC    ---- 5V
 *  VE     ---- Variable resistor
 *  RS     ---- D1(GPIO5)
 *  R/W    ---- GND
 *  Enable ---- D2(GPIO4)
 *  DB0    ---- N.C
 *  DB1    ---- N.C
 *  DB2    ---- N.C
 *  DB3    ---- N.C
 *  DB4    ---- D0(GPIO16)
 *  DB5    ---- D5(GPIO14)
 *  DB6    ---- D6(GPIO12)
 *  DB7    ---- D7(GPIO13)
 * 
 */
#include "SPI.h"
#include <LiquidCrystal.h>
  
/* LiquidCrystal(rs, enable, d4, d5, d6, d7)  */
LiquidCrystal lcd(5, 4, 16, 14, 12, 13); 
 
void setup() {
  // set up the LCD's number of columns and rows:
  lcd.begin(16, 2);
  // Print a message to the LCD.
  lcd.print("hello, world!");
}

void loop() {
  // set the cursor to column 0, line 1
  // (note: line 1 is the second row, since counting begins with 0):
  lcd.setCursor(0, 1);
  // print the number of seconds since reset:
  lcd.print(millis() / 1000);
}

これてhello, world!と一秒ことにインクリメント数字が表示される。

WeMos (2) 3色LED表示

3色LEDをつないて、順次点滅する。

 

#define LEDR 12
#define LEDG 13
#define LEDB 14

void setup() 
{
  pinMode(LEDR, OUTPUT);
  pinMode(LEDG, OUTPUT);
  pinMode(LEDB, OUTPUT);
}

void loop() 
{
  digitalWrite(LEDR, HIGH);
  delay(1000);
  digitalWrite(LEDG, HIGH);
  delay(1000);
  digitalWrite(LEDB, HIGH);
  delay(1000);
  digitalWrite(LEDR, LOW);
  delay(1000);
  digitalWrite(LEDG, LOW);
  delay(1000);
  digitalWrite(LEDB, LOW);
  delay(1000);
}

 

WeMos (1) Blink

About WeMos

WeMosはESP8266モジュールを利用した、Arduino互換ボード。

WeMosには「D1 Mini」と「D1 R2」の2種類がある。使い方が同じ。

Macbook Air で実験する。

Arduino IDEのインストール

Arduino IDEがまたインストールしてないの場合、普通に、Arduino IDEのインストールする。

CH340のドライバー

UNO互換機を使っている方は、特に何も必要ないが、今まで互換機を使ったことが無い方はWeMosのホームページからCH340のドライバー(CH341SER_MAC.ZIP)をインストールする必要がある。

http://www.wch.cn/download/CH341SER_ZIP.html

http://www.wch.cn/download/CH341SER_MAC_ZIP.html

AddOn

Arduino-IDEを使ってスケッチを書き込むには、こ ち らを参考にESP8266用のAddOnを追加する必要がある。

  1.  [Arduino]-[環境設定]に、[ボードマネージャーURL]を追加
    http://arduino.esp8266.com/stable/package_esp8266com_index.json
  2. ボードマネージャーに、ESP8266を検索して追加

Blink

動作確認のため、まずLちか(Blink)をする。

参考

Arduino UNO (1) Lちか

接続図

ArduinoのGNDとD13の間に赤色LEDとカーボン抵抗330Ωを接続しましょう。

Arduino IDEのインストール

Arduino IDEがまたインストールしてないの場合、普通に、Arduino IDEのインストールする。

以下URLから、ArduinoのウェブサイトからIDEをダウンロードして、インストールする

https://www.arduino.cc/en/Main/Software

CH340のドライバー

UNO互換機を使っている方は、特に何も必要ないが、今まで互換機を使ったことが無い方はWeMosのホームページからCH340のドライバー(CH341SER_MAC.ZIP)をインストールする必要がある。

以下江苏沁恒股份有限公司のHPから
CH341SER.ZIP をダウンロードして解凍し、ファイルが展開されるので setup.exe を実行。

http://www.wch.cn/download/CH341SER_ZIP.html

http://www.wch.cn/download/CH341SER_MAC_ZIP.html

Blink

動作確認のため、まずLちか(Blink)をする。

プログラムを実行してみましょう。接続した赤色LEDが1秒間隔で点滅したら成功です。

// led_blink_sample1

const int led_pin = 13;           // LED connected to digital pin 13

void setup() {
  pinMode( led_pin, OUTPUT );     // sets the digital pin as output
}

void loop() {
  digitalWrite( led_pin, HIGH );  // sets the LED on
  delay( 1000 );                  // waits for a second
  digitalWrite( led_pin, LOW );   // sets the LED off
  delay( 1000 );                  // waits for a second
}

LのLEDをBlink する様子

Arduino 101 (4) LED on/off

Lちか

締めに、App Inventor + IoT: LEDを参考して、Android のアプリから、Lちかをやる。

http://iot.appinventor.mit.edu/#/arduino101/arduinoled

LED接続

LEDをD5に接続してください

Arduinoプログラム

ARDUINO (2) INSTALLのArduinoのプログラムを修正する。

先頭の定義部分に、LED を ENABLEDに、その他全てを
DISABLEDにセットしてください

スクリーンショット 2017-09-04 15.38.13

App Inventorプログラム

Arduino (3) BluetoothのIoT_BaseConnectプログラムに、LED操作する部品とプログラムを追加する。

http://iot.appinventor.mit.edu/assets/resources/edu.mit.appinventor.iot.arduino101.aix

スクリーンショット 2017-09-04 16.47.06

スクリーンショット 2017-09-04 16.58.15

アプリのLED On/Off テスト

 

Arduino 101 (3) Bluetooth

Bluetooth連携する環境のセットアップ

次に、App Inventor + IoT: Basic Bluetooth Connection Setup を参考して、Arduino 101とApp InventorをBluetooth通して連携する環境のセットアップ。

プロジェクト新規作成

http://ai2.appinventor.mit.edu/を開いて、BasicIoTSetupというプロジェクトを新規作成してください。

BluetoothLE extensionをインストールする必要があり、edu.mit.appinventor.ble.aixをダウンロードし、Paletteの底に、Import extensionから、インポートしてください。

スクリーンショット 2017-09-04 15.49.06

画面デザイン

下記の様式を参考して、部品を並べてください。

底のBluetoothLE extensionは、先ほどインポートしたもの。

スクリーンショット 2017-09-04 15.45.10

ブロックエディタ

スクリーンショット 2017-09-04 15.57.02

アプリのBT接続テスト

Arduino 101 (2) Install

Arduino IDEのインストール

まず App Inventor + IoT: Setting Up Your Arduinoを参考して、セットアップを進める。

Arduino IDEのインストール

Arduino IDEがまたインストールしてないの場合、普通に、Arduino IDEのインストールする。

以下URLから、ArduinoのウェブサイトからIDEをダウンロードして、インストールする

https://www.arduino.cc/en/Main/Software

App Inventorと連携するファイル

AIM-for-Things-Arduino101.inoをダウンロードし、解凍して、Arduino IDEで開いてください。

次は、ライブラリを追加する。

“DHT-sensor-library”ライブラリの追加

スクリーンショット 2017-09-04 15.21.34

“Adafruit Unified Sensor”ライブラリの追加

スクリーンショット 2017-09-04 15.24.15

”Grove LCD RGB Backlight”の追加

Grove LCD RGB Backlightをダウンロードして、Sketch > Include Library > Add .ZIP Library順に追加する

“Grove LCD”で検索して、インストールしたことを確認

スクリーンショット 2017-09-04 15.28.01

101ボードの選択

ボード一覧に”Arduino/Genuino 101″あれば選択して、なければ、ボードマネージャを開き、101を検索してください。

“Intel Curie Board by Intel”を見つけ、インストールしてください。

スクリーンショット 2017-09-04 15.33.31

Portの選択

/dev/cu.usbmodem…らしいものを選択する

スクリーンショット 2017-09-04 15.36.06

ここで、右矢印➡️を押して、プログラムをArduinoボードに書き込み、実行してみてください。