15
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

1000円ではじめるArduino互換機入門

Last updated at Posted at 2017-01-10

1000円ではじめるArduino互換機入門

あけましておめでとうございます。

はじめに

Arduino互換機を使って、安く手軽に電子工作をはじめてみましょう。

用意するもの

  • Arduino互換機 500円~
  • 液晶表示装置(LCD)+キーパッドシールド 400円~
  • 必要に応じて:USBケーブル 100円~

すべて購入してもたった1000円。やすい!

Arduino

Arduino は、もともと教育用に作られた単純なマイコンボードです。

手軽に扱えるマイコンボードとして人気があり、純正品の Arduino Uno でも3000円~購入できます。
マイコンボードとしては、十分安いのですが、今回は使いません。

最近(2015年~)では、Amazon.co.jp で Arduino 互換機がとても安価に購入できます。
たとえば、こちらは、なんと 435円(2017年1月4日現在)で入手できます。

この Arduino互換機に保障などは一切ないため、購入は自己責任でよろしくおねがいします。

LCD+キーパッドシールド

Arduino もコンピューターの3大要素、入力・出力・演算がきちんとあります。

  • 入力/出力:シリアル通信, GPIO etc.
  • 演算:8-bit AVR RISC-based microcontroller, 1KB EEPROM, 2KB SRAM

... 残念ながら単体でできることは、LEDの点滅がせいぜいです。

Arduino はシールドと呼ばれる外部機器を接続することで、自由に機能を追加できます。

LCD+キーパッドシールドを使うと、

  • 16文字x2行の文字表示
  • analogRead(A0) を利用した5個のボタン入力

ができるようになり、見た目を派手にできます。

こちらの LCD+キーパッドシールドは、351円(2017年1月4日現在)で入手できます。

購入は自己責任でおねがいします。

開発環境の準備

Arduino IDE のインストール

公式サイトから、自分の環境にあった Arduino IDE をダウンロードし、 Getting Started のページなどを参考にして、Arduino IDE をインストールします。

ドライバーのインストール

純正の Arduino の場合、PCへのドライバーの不要なのですが、安価な互換機の場合、USB-シリアルコンバーターのチップが変更されていることもあり、その場合、PCへのドライバーのインストールが必要です。

上述の Arduino 互換機の場合、Amazon.co.jp の商品の説明によると、

CH340G Driver

と記載があり、CH340Gのチップが使われているようなので、このドライバーをインストールします。

Aitendo の商品のページなどからPC用ドライバーをダウンロードして、インストールします。

macOSの場合は、次の記事が参考になるかと思います。

MacOSX+CH340G搭載Arduino互換ボードの動作メモ - Qiita

スケッチ例の書き込み

Arduino IDEを起動し、メニューから[ファイル]→[スケッチ例]→[01.Basics]→[Blink]を選択して、サンプルコードを開きます。

続いて、[ツール]→[シリアルポート]から、マイコンボードが接続されているシリアルポートを選択します。
書き込みボタン(右矢印ボタン)を押すと、30秒以内にプログラムがマイコンボードに書き込まれ、正常に書き込まれれば、自動的にスケッチが実行されます。

このスケッチ「Blink」は通称「Lチカ(LEDチカチカ)」と呼ばれるもので、実行されるとマイコンボードのLEDが1秒間隔で繰り返し点滅するはずです。

LCD+キーパッドシールドを使ってみる

Arduino 互換機のボードにLCD+キーパッドシールドを差し込んで、次のスケッチを書きこみます。

#include <LiquidCrystal.h>
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

enum { RIGHT, UP, DOWN, LEFT, SELECT, NONE };

void setup() {
  lcd.begin(16, 2);
  lcd.print("Push the buttons");
}
 
void loop() {
  lcd.setCursor(0,1);
  switch (readKey()) {
    case RIGHT: {
      lcd.print("RIGHT ");
      break;
    }
    case LEFT: {
      lcd.print("LEFT   ");
      break;
    }
    case UP: {
      lcd.print("UP    ");
      break;
    }
    case DOWN: {
      lcd.print("DOWN  ");
      break;
    }
    case SELECT: {
      lcd.print("SELECT");
      break;
    }
    case NONE: {
      lcd.print("NONE  ");
      break;
    }
  }
}

int readKey() {
  int adc_key_in = analogRead(A0);
  if (adc_key_in < 50)   return RIGHT;
  if (adc_key_in < 250)  return UP;
  if (adc_key_in < 450)  return DOWN;
  if (adc_key_in < 650)  return LEFT;
  if (adc_key_in < 850)  return SELECT;
  return NONE;
}

このスケッチは、公式サイトにあるものを参考にしています。

購入直後の状態では、コントラストが調整されていない為、LCDに何も表示されないと思います。
LCDの左上の半固定抵抗をマイナスドライバーで十数回まわし、見やすく表示されるように調節しましょう。

正常に書き込めることが確認できたので、他のスケッチ例を書き込んでみたり、自分で自由にスケッチを改造してみたいと思います。

年賀マイコン

お正月のあいさつをLCDに表示させて見ました。

UP/DOWNボタンを押すと、2017年から1年ずつ加算/減算できるので、西暦9999年まで新年のあいさつに活用できます。

スケッチは次のとおりです。

#include <LiquidCrystal.h>
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

void setup() {
  byte de[8] = {
    0x68>>3,
    0x00>>3,
    0xf8>>3,
    0x20>>3,
    0x20>>3,
    0x20>>3,
    0x40>>3,
  };

  byte go[8] = {
    0x28>>3,
    0xf8>>3,
    0x08>>3,
    0x08>>3,
    0x08>>3,
    0x08>>3,
    0xf8>>3,
  };

  byte za[8] = {
    0x58>>3,
    0xf0>>3,
    0x50>>3,
    0x50>>3,
    0x10>>3,
    0x20>>3,
    0x40>>3,
  };

  lcd.createChar(1, de);
  lcd.createChar(2, go);
  lcd.createChar(3, za);
  lcd.begin(16, 2);
  lcd.print("HappyNewYear");
  lcd.setCursor(0, 1);
  lcd.print("\xb1\xb9\xcf\xbc\xc3\xb5\xd2\x01\xc4\xb3\x02\x03\xb2\xcf\xbd!");
}

void loop() {
  char year[4];
  sprintf(year, "%4d", yearReadKey());
  lcd.setCursor(12, 0);
  lcd.print(year);
  delay(200);
}

int yearReadKey() {
  static int i = 2017;
  int adc_key_in = analogRead(A0);
  
  if (adc_key_in < 50)   return i;
  if (adc_key_in < 250)  return ++i;
  if (adc_key_in < 450)  return --i;

  return i;
}

ほぼ全てのキャラクタLCD製品には、日立 HD44780 互換ICが搭載されており、日本語カナに対応する文字コードを LiquidCrystal::print() に与えるだけで表示できます。

表示文字数の都合上、濁音カナ文字3つ「デ(U+30c7)」「ゴ(U+30b4)」「ザ(U+30b6)」は k6x8フォント から抽出し、CGRAMに 0x010x03 に格納しました。

HD44780

引用元:HD44780U のデータシート - SparkFun Electronics

自由にコーディングして実際に思い通り動くとそれだけで楽しいですね。

読んでいただきありがとうございました。本年もよろしくお願いします。

15
10
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?