Arduino勉強会

2015/12/24からのアクセス回数 1363

「8pino」ではじめるミニマム電子工作 (以下ミニマム本と書きます)に触発されて、ブレッドボードで作るATtiny85を使ったワンコインArduinoで 電子工作を楽しんでみました。

例題の多くは、ミニマム本を参考にさせて頂き、これをlbedライブラリを使ってmbed風に書き替えています。

お復習い

ワンコインArduino(lbedGemma)の作り方をもう一度お復習いします。

ブレッドボードで動作を確認

8pinoの回路を参考に最初にブレッドボードでATtiny85を使ったGemmaを組み立てます。 USBとの接続部分は75Ωの抵抗、プルアップとLEDには1KΩの抵抗を使いました。

lbedGamma_brd.png

完成したブレッドボードは、以下のようになりました。

lbedGamma_brd_photo.png

Adafruit Gemmaのブートローダの書き込み

Adafruit Gemmaのブートローダ書き込みスケッチは、以下のURLで公開されています。

ブートローダの書き込みには、Arduino UNOが必要になります。 今回は、以前作ったArduino UNO(秋月のAE-ATmegaボード)を使用しました。 Arduino UnoのGNDと3.3Vには10μFの電解コンデンサーを差し、ATtiny85とは 以下の様に接続します。

ATtiny85Arduino UNO
8番ピン VCC5V
4番ピン GNDGND
1番ピン Reset10番ピン
5番ピン PB011番ピン
6番ピン PB112番ピン
7番ピン PB213番ピン

ATtiny85のピンの説明をデータシートから引用します。

ATtiny85_pins.png

Bootloader_writting.png

ブートローダ書き込み手順

ダウンロードしたスケッチ(trinketloader)をArduino IDEで開き、Arduino UNOに書き込みます。

シリアルモニターを開き9600 baudにセットし、以下のメッセージが出力されたら、「G」を入力します。

Trinket loader!

Type 'G' or hit BUTTON for next chip

書き込みの途中で以下の様なメッセージが出力されます。

Starting Program Mode [OK]

Reading signature:930B
Searching for image...
  Found "blankfull.hex" for attiny85

Setting fuses  Set Low Fuse to: F1 -> A000  Set High Fuse to: D5 -> A800  Set Ext Fuse to: 6 -> A400
Verifying fuses...
Low Fuse: 0xF1 is 0xF1
High Fuse: 0xD5 is 0xD5
Ext Fuse: 0x6 is 0x6


Setting fuses

Verifing flash...
Flash verified correctly!
Verifying fuses...

Fuses verified correctly!
*OK!*

ATtiny85をlbedGemma用のブレッドボードに戻し、USBケーブルを接続すると LEDが細かく点滅したら、ブートローダの書き込みが正常に行われています。

勉強会などで利用する場合のご注意

TrinketやGemma使われているブートローダはフリーなのですが、商品やプロジェクトに勝手にAdrafruitのUSB VID/PIDを使ってはいけない との注意書きがあります。

Arduino IDE 1.6.4以降Gemmaがサポートされたので、そのままブートローダが使えて便利です。趣味で使う分には問題ないと思うのですが、勉強会はプロジェクトかもしれないので、以下の様な対応を取りました。

趣味や研究で使う場合に限定したUSB VID/PIDにブートローダを変更したバージョンを用意しました。

USB VID/PIDは、「インターネット・ガジェット設計」の著者が、「ホビーや個人の研究であれば、自由にお使い下さい」 と記述されているご厚意に甘えて使わせて頂きました。

以下のファイルをダウンロードし、展開し、FreeGemma以下のFreeGemmaLoaderとharware2個のフォルダーがあります。 これをユーザのArduinoディレクトリ配下にコピーしてください。

Arduino勉強会/16-ワンコイン・マイコンlbedGemmaで説明した、

  • trinketloaderの代わりにFreeGemmaLoaderを使用し
  • ボードの選択で、「Adafruit Gemma 8MHz」の代わりに「Free Gemma」を選択してください。

ちょっと軽めのmbedライクなライブラリlbed

mbedはとても使い易いライブラリを提供していますが、mbedが提供されていないボードやArduinoなどで、 mbed風のプログラミングを楽しんでもらうために、lbedライブラリを作成しました。

今回は、ブレッドボードで作るATtiny85を使ったワンコインArduino(lbedGemmaと呼びます) を使ってmbed風のプログラミングを体験してみましょう。

lbedGemmaの作り方は、 Arduino勉強会/16-ワンコイン・マイコンlbedGemma を参照してください。

開発環境のインストール

Arduino IDE 1.6.4を以下のURLからダウンロードし、インストールしてください。

lbedGemmaとTinyWireMは、以下のURLからダウンロードできますが、

以下にTinyWireMとlbedGemmaをまとめましたので、こちらをダウンロードし、 展開したTinyWireM, lbedGemma, lbedGemmaUserをユーザのホームディレクトリ/書類/Arduino/libraries に入れてください。

デジタル入力

プルダウン抵抗を使ったスイッチ回路

デジタル入力はスイッチのオン・オフのように0と1だけを入力値とします。 以下の様なスイッチをもちいた回路をlbedGemmaで作ってみましょう。

SwitchButton_sch.png

VCCは、電池のプラスを表しlbedGemmaではUSBからの5Vに相当します。その下にタクトスイッチSWが接続され、 10KΩの抵抗を通り、GND(電池のマイナス)につながっています。途中Switchというピンがタクトスイッチと抵抗の間につながれています。

この抵抗のあることで、スイッチが押されたときに電源のプラスとマイナスが直結し、ショートすることを防いでくれます。 この抵抗はスイッチがオフの時に、Switchピンの電圧をマイナス付近に落としてくれるので、プルダウン抵抗と呼ばれています。

この回路をlbedGemmaのブレッドボードに追加してみます。

SwitchButton-pullDown_brd.png

Arduinoでスケッチを書く

「8pinoではじめるミニマム電子工作」のスイッチ・ボタンのスケッチでは、 以下の様に書いています。

int led_pin = 1;  // GPIO # LED on board
int sw_pin = 2;  // GPIO #2

void setup() {
  pinMode(led_pin, OUTPUT);
  pinMode(sw_pin, INPUT);
}

void loop() {
  if (digitalRead(sw_pin) == HIGH) {
    digitalWrite(led_pin, HIGH);
    delay(250);
    digitalWrite(led_pin, LOW);
    delay(250);
  }
}

lbedを使ってスケッチを書く

上記のスケッチをlbedを使ったスケッチは以下の様に入力します。 最初の#includeはこれから、TinyWireMとlbedGemmaというライブラリを使うことを 表します。*1

DigitalOutは、デジタル出力のクラス名で、led(1)は1番ピンをデジタル出力するledという変数を宣言しています。 DigitalInは、デジタル入力のクラス名で、sw(2)は2番ピンをデジタル入力するswという変数を宣言しています。

setup関数では特に処理を行いません。

loop関数では、swがHIGHの時にledにHIGHをセットし、250ミリ秒待ち、 ledにLOWをセットし、250ミリ秒待つように処理します。 これで、スイッチが押されている間、LEDが250ミリ秒間隔で点灯と消灯を繰り返します。

mbed風の変数を参照するとピンから値が読まれ、変数に代入するとピンに値が書き込まれる 書き方の方が直感的で分かりやすいと思うのです。

#include "TinyWireM.h"
#include "lbedGemma.h"
 
DigitalOut  led(1);  // GPIO #1 LED on board.
DigitalIn   sw(2);   // GPIO #2

void setup() {                
}

void loop() {
  if (sw == HIGH) {
    led = HIGH;
    wait_ms(250);
    led = LOW;
    wait_ms(250);
  }
}

実際にブレッドボードでこのスケッチを動かしてみましょう。

スイッチを押すと電源のプラスとSwitchピン2番が接続され、swの値がHIGHになるので、 if文の中の処理が実行され、LEDが点滅します。

SwitchButton.png

プルアップ抵抗を使ったスイッチ回路

次に、以下の様な抵抗を電池のプラス側につないだスイッチ回路を作ってみましょう。

SwitchButton-pullUp_sch.png

ブレッドボードでは、マイナスにつながっていた抵抗をプラス(赤い線)につなぎ、 スイッチのプラスにつながっていた線をマイナスにつなぎます。

SwitchButton-pullUp_brd.png

スケッチは、スイッチが押されたときにGND(電池のマイナス)につながるので、 if文のHIGHからLOWに変更します。 これで、先ほどと同じ動作をします。

#include "TinyWireM.h"
#include "lbedGemma.h"
 
DigitalOut  led(1);  // GPIO #1 LED on board.
DigitalIn   sw(2);   // GPIO #2

void setup() {                
}

void loop() {
  if (sw == LOW) {
    led = HIGH;
    wait_ms(250);
    led = LOW;
    wait_ms(250);
  }
}

抵抗を使わないスイッチ回路

スイッチを追加するたびに抵抗をつなぐと部品点数が増えるので、 Arduinoなどの最近のマイコンにはデジタル入力端子にプルアップ抵抗を内部で付けてくれる 機能があります。

この機能を使うと回路は以下の様にとても簡単になります。

SwitchButton_sch.png

ブレッドボードも抵抗を外します。

SwitchButton_brd.png

デジタル入力ピンにプルアップ抵抗をセットするには、 setup関数内で、swのmodeをINPUT_PULLUPにセットします。

#include "TinyWireM.h"
#include "lbedGemma.h"
 
DigitalOut  led(1);  // GPIO #1 LED on board.
DigitalIn   sw(2);   // GPIO #2

void setup() {
  sw.mode(INPUT_PULLUP);
}

void loop() {
  if (sw == LOW) {
    led = HIGH;
    wait_ms(250);
    led = LOW;
    wait_ms(250);
  }
}

実際に動かしてみましょう。

SwitchButton.png

もし、modeでPULL_UPの設定をしなかったらどうなるのでしょう。 setupのmodeの設定部分を//でコメントアウトして動かしてみてください。 スイッチを押さなくても点滅しますね。

これはスイッチ端子の電圧が不定となりスイッチを押していなくてもLOWに近い値になっているからです。

アナログ出力(PWM)

Arduinoでは電圧を変えるアナログ出力機能はありません。その代わりに一定の周期のパルス幅の割合(デューティ比) を変えるパルス幅変調方式を使ってアナログ出力を行っています。

Wikiのデューティ比 からデューティ比の説明図を引用します。

デューティ比が大きいと電圧が掛かっている時間が長く、 デューティ比が小さいと電圧が掛かっている時間が短くなります。 これで、LEDやモータに流れる電流の量を調整することで、明るさや回転の強さをコントロールしています。 また、抵抗とコンデンサーを使った低周波フィルターを通すとデューティ比の変化が波の形で出力します。

Dutycycle.png

ATtiny85でPWMが使えるのは、3番ピンの#4、5番ピンの#0、6番ピンの#1の3つです。

PWMの回路は、以下の様にします。

PWMOut_sch.png

LED出力には、5番ピンの#0を使用します。抵抗値は470Ωにしました。

PWMOut_brd.png

lbedのPWMOutクラスを使ったスケッチを以下に示します。

PwmOutはのクラス名で、led(1)で1番ピンにアナログ出力(PWM)するledという変数を宣言しています。 ledへの代入する値は、デューティ比を実数で与えます。とてもすっきりしたスケッチになります。

#include "TinyWireM.h"
#include "lbedGemma.h"
 
PwmOut led(0); // PWM LED

void setup() {  
}

void loop() {
  for (led = 0.0; led < 1.0; led = led + 0.02)
    wait_ms(20);
  for (led = 1.0; led > 0.0; led = led - 0.02)
    wait_ms(20);
}

電子工作の回路をみるとLEDにつなぐ抵抗の値が330Ωだったり、今回のように470Ωだったりしますが、 この値はどのようにして決めるのでしょうか。

LEDの場合、どの程度の電流を流すかによって抵抗の値が変わります。 LEDに流す電流はデータシート呼ばれる部品の規格を説明した資料で調べます。

秋月のサイトから赤色LED(OSDR3133A)をみると、 「抵抗の計算方法 があります。これに沿って説明します。

赤色LEDの順方向電圧(VF)は、2.0Vであり、LEDに電流が流れたときに電圧が2.0V下がることを意味しています。 順方向電流IF(DC Forward Current)30mAとあります。

通常LEDの電流はIFの半分以下の10mA程度で使うのがよいとされおり、 最近のLEDは輝度も高いので5mA程度でも十分と思われます。

470Ωでは、抵抗による電圧降下はオームの法則から抵抗×電流ですから、 以下の等式から電流は6.3mAと求まります。

$$ 5V = 2.0 + 470 \times 6.3mA $$

スケッチを実際に動かしてみましょう。LEDの明るさが、もわもわっと変わります。

PWMOut.png

シリアル通信

シリアル通信には、UART(調歩同期方式)方式が使われています。 UARTでは、送信(TX or TDX)と受信(RX or RDX)と呼ばれる2本の信号線を使って、 双方向に通信します。

UARTのつなぎ方は特徴的でPC側のTXとArduino側のRX、PC側のRXとArduino側のTX を接続します。

USBシリアル変換モジュール

Arduinoとのシリアル通信には、5Vと3.3Vのどちらでも使える https://www.switch-science.com/catalog/1032/ が便利です。 アマゾンで検索すると、同じ機能のモジュールがワンコイン程度であります。 *2

71QK0doXcNL._SL1001_.jpg

USBシリアル変換モジュールとATtiny85(Gemma)をつないだ回路を作ります。

USBSerial_sch.png

これをブレッドボードで組み立てると以下の様になります。

USBSerial_brd.png

スケッチを書く

ミニマム本に習って、Arduino IDEのシリアルモニターから数値を入力し、その回数分 LEDを点滅させる例題を作ってみましょう。

ATtiny85にはシリアル通式の機能がないので、ArduinoのSoftwareSerialクラスを使って、 ソフトウェアでシリアル通信を処理します。

  • #include "SoftwareSerial.h"は、これからSoftwareSerialを使うことを宣言しています
  • SoftwareSerial pc(4,3)は、RXに#4、TXに#3を使ってシリアル通信を行うpc変数を宣言しています
  • pc.begin(4800) で通信速度を4800ボー(かなり遅い)にセットします
  • pc.available()は、PCからデータ送られているか確認します
  • pc.read()は、PCから1バイトのデータを読み込みます
  • pc.write()は、PCに1バイトのデータを送ります
  • value = recv_value - '0'は、読み込んだでーたrecv_valueの値(ASCIIコード)から数値に変えています
#include "TinyWireM.h"
#include "lbedGemma.h"
#include "SoftwareSerial.h"
 
DigitalOut led(1); // Gemmaに付属のLED
SoftwareSerial pc(4, 3);  // RX=4, TX=3

void setup() {  
  pc.begin(4800);
}

void loop() {
  if (pc.available()) {
    // PCから受信した値
    int recv_value = pc.read();
    // PCにそのまま送信
    pc.write(recv_value);
    // 数字'0'〜'9'を数値の0〜9に変える
    int value = recv_value - '0';
    if (0 < value && value <= 9) {
      for (int i = 0; i < value; i++) {
        led = HIGH;
        wait_ms(250);
        led = LOW;
        wait_ms(250);
      }
    }
  }
}

動作確認

電源は、USBシリアルモジュールから取りますので、スケッチを書き込む時にはUSBシリアルを外しておいて、 書き込みが終わったら、lbedGemmaのUSBケーブルを外し、USBシリアルモジュールに付け直してください。

USBSerial.png

Arduino IDEのシリアルモニターを起動し、ボーレートを4800baud、改行なしにセットして、 数字を入力して「送信」ボタンをおしてみてください。

数値がシリアルモニターにエコーバックされ、数値の回数だけLEDが点滅します。

USBSerial_monitor.png

アナログ入力

ミニマム本では、アナログ入力の例に光センサーCdsセルを使っていますが、 手元にCdsがないので温度センサーLM35を使ってアナログ入力の紹介をします。

LM35は、秋月などで120円程度で買える手軽な温度センサーです。 両端にVCCとGNDをつなぎ、中央の電圧に100倍すると温度になるとてもシンプルなセンサーです。 ピンの配置は平らな部分を上にして、底の左から+Vs, Vout, GNDに割り当てられています。

I-00116.jpg LM35-buttom.png

シリアル通信の回路に温度センサーLM35を追加した回路は、以下の様になります。

AnalogInput_sch.png

この回路をブレッドボードで組み立てると以下の様になります。

AnalogInput_brd.png

スケッチを書く

AnalogInはのクラス名で、lm35(1)でアナログ1(6番ピン)にアナログ入力するlm35という変数を宣言しています。 lm35からの入力値は、0V〜稼働電圧(5V)を0.0〜1.0の値で返します。

温度は、lm35の値に5V x 100倍で計算されますので、float value = lm35*5.0*100.0; としています。

#include "TinyWireM.h"
#include "lbedGemma.h"
#include "SoftwareSerial.h"
 
SoftwareSerial pc(4, 3);  // RX=4, TX=3
AnalogIn lm35(1);

void setup() {  
  pc.begin(4800);
}

void loop() {
  float value = lm35*5.0*100.0; 
  
  pc.print("Temp="); pc.print(value, 1); pc.println("");
  wait_ms(1000);
}

LM35で温度を測ってみる

できたスケッチをブレッドボードに書き込み、USBケーブルをUSBシリアルに付け替えて、 シリアルモニターを開くと、温度が表示されます。

AnalogInput.png

AnalogIn_monitor.png

超音波センサーで距離を測る

秋月でも400円で購入できる超音波センサーHC-SR04を使って距離を測ってみましょう。 Arduino UNOでは2m程度は測定できましたが、8MHzのATtiny85では測定範囲は1cm~34cm程度でした。

M-08762.jpg

ATtiny85とHC-SR04の結線は、以下の通りです。

GemmaHC-SR04
5VVCC
6番ピン #1Echo
5番ピン #0Trig
GNDGND

HC-SR04_on_Gemma.png

スケッチを書く

このスケッチは、 Arduino and HC-SR04 ultrasonic sensor のスケッチをATtiny85用に修正したものです。

#include "SoftwareSerial.h"

#define trigPin 0
#define echoPin 1
SoftwareSerial pc(4, 3);

void setup() {
  pc.begin(4800);
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
}

void loop() {
  int duration, distance;
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(1000);
  digitalWrite(trigPin, LOW);
  duration = pulseIn(echoPin, HIGH);
  distance = (duration/2) / 29.1;
  if (distance >= 200 || distance <= 0){
    pc.println("Out of range");
  }
  else {
    pc.print(distance);
    pc.println(" cm");
  }
  delay(500);
}

pulseInはArduinoの提供する関数で、パルスの種類をHIGHに指定すると、 入力がHIGHからLOWになるまでの時間をマイクロ秒で返します。

この関数を使って、超音波を発信してそのエコーを受信するまでの時間を計測して距離を計算します。

例えば、\( \Delta t = 500 \) μ秒だとすると、その半分の 250μ秒が物体まで超音波が届くまでの時間になります。

音の速度cは、以下の式で求まります。 $$ c = 343.5 + 0.6*温度 $$ 気温が20℃だとすると、 c = 331.5 + 0.6 * 20 = 343.5 m/s となります。 単位をcm/μ秒に変換すると、 $$ c = 343.5 * 100/1000000 = 0.0345 cm / \mu s $$ これを使うと\( \Delta t = 500 \)の距離は、D = 250 * 0.03435 = 8.6 cmとなります。

スケッチで使われている29.1という値は、音の伝搬を距離当たりで計算した値(μ秒/cm)です。 $$ 音の伝搬の割合 = 1 / 0.03435 = 29.1 \mu s $$ パルスが戻ってくるまでの時間\(\Delta t \)が変数durationにセットされていますので、距離Dは以下の計算できます。 $$ D = (\Delta t /2 ) / 29.1 $$

測定結果をシリアルモニターで出力している様子です。

HC-SR04_monitor.png

I2Cでつなぐ

シリアル通信と同じくらいよく使われのが、I2C(正確には\(I^2 C\)と書きます)通信方式です。

I2C(アイ・ツー・シー)の接続例をWikipediaから引用します。 SDAとSCLの2本の線に1つのマスターと複数のスレーブが接続しており、 Vdd(電源のプラス)にプルアップ抵抗Rpがつながれています。

I2C_conn.png

マスターはスレーブに割り当てられたアドレスで通信相手を指定し、 スレーブはマスターからの要求応答を返すような使い方をします。

ATtiny85のように使えるピンが少ない場合、I2C接続の部品はとても重宝します。

I2C LCD

I2Cの部品として最初に紹介するのは、液晶キャラクタ・ディスプレイです。 電子工作ではLチカのつぎに良く出てくる部品で、とても重宝します。

ここでは、秋月電子で販売されている「I2C接続小型LCDモジュール」(600円)を使用します。

K-06795.jpg

単独でしようケースが多いので、基板のジャンパーにハンダを盛って、プルアップします。

I2CLCD_PullUp.png

lbedGemmaの3.3V化

I2C LCDは3.3Vで動作するので、lbedGemmaも3.3Vの電源を使用します。 *3

5Vから3.3Vに変換するには、秋月で100円の低損失三端子レギュレーター(TA48M033F)を使います。

I2CLCDと三端子レギュレーターのブレッドボードでの配置と接続は以下の様になります。

I2CLCD_brd.png

mbedのライブラリからAQCM0802を使わせて頂いたので、スケッチはとても簡単です。 AQCM0802のクラス名で、lcd(0, 2)で#0をSDA、#2をSCLに割り当て、I2C LCDに出力するlcdという変数を宣言しています。

#include "TinyWireM.h"
#include "lbedGemma.h"
#include "AQCM0802.h"

AQCM0802 lcd(0, 2);  // sda, scl

void setup()
{
    TinyWireM.begin();
    lcd.setup();
    // print Hello Wrold!
    lcd.print("Hello");
    lcd.locate(0, 1);
    lcd.print("World!");
}

void loop()
{
}

実際に動かしてみましょう!こんなに簡単にHello World!が表示できました。

I2CLCD_HelloWorld.png

温度をLCDに表示する

液晶キャラクタディスプレイが使えるようになったので、温度を表示してみましょう。

LM35で使った#2がI2Cで使ってしまったので、I2C用の温度センサーを使うことにします。 *4

温度センサーは、秋月の500円で購入できる温度センサモジュールADT7410です。

M-06675.jpg

ブレッドボードへの配置

I2C用のプルアップの抵抗は液晶キャラクタディスプレイに付いているので、 温度センサモジュールADT7410には、VCC, SDA, SCL, GNDをつなぐだけです。

I2CLCD_ADT7410_brd.png

スケッチを書く

ADT7410のライブラリには、 Tom Kreycheさんがmbed用に公開されている ADT7410ライブラリ を使わせてもらいます。

ADT7410ライブラリの修正箇所は、ADT7410.hのmbed.hのインクルード文をlbedGemma.hに変更し、 getTempメソッドを若干修正しました。

スケッチは、以下の様になります。

#include "TinyWireM.h"
#include "lbedGemma.h"
#include "AQCM0802.h"
#include "ADT7410.h"

AQCM0802 lcd(0, 2);  // sda, scl
ADT7410  themometer(0, 2, 0x90, 400000); // sda, scl, addr, hz
int I2CAdrs;

void setup()
{
    TinyWireM.begin();
    I2CAdrs = 0x48;     // スレーブアドレス
    lcd.setup();
    themometer.setConfig(ONE_SPS_MODE);
    // print TEXT
    lcd.print("Temp. is");
}

void loop()
{
  float temp = themometer.getTemp();
  lcd.locate(0, 1);
  lcd.print(temp, 2);
  lcd.print(" C.");

  wait_ms(1000);
}

動作確認

準備ができましたので、動かしてみましょう! 現在の室温が1秒間隔で、温度を更新しています。

I2C_Temp.png

コメント

選択肢 投票
おもしろかった 0  
そうでもない 0  
わかりずらい 0  

皆様のご意見、ご希望をお待ちしております。勉強会で分からなかったこと等、お気軽に問い合わせて下さい。

スパム防止に画像の文字列も入力してください。

  • アナログ出力を追加しました。 -- 竹本 浩? 2015-12-26 (土) 15:00:42
  • シリアル出力、アナログ入力を追加しました。 -- 竹本 浩? 2015-12-27 (日) 17:07:17
  • ホビー用に使えるUSB VID/PIDに変更したブートローダと設定ファイルを追加しました。 -- 竹本 浩? 2015-12-28 (月) 20:28:17
  • FreeGemmaの設定ファイルを使う場合には、Arduino IDE 1.6.4をお使い下さい。 -- 竹本 浩? 2015-12-29 (火) 11:10:55
  • I2Cの例題を追加しました。 -- 竹本 浩? 2015-12-30 (水) 13:44:16
  • お復習いを追加しました。 -- 竹本 浩? 2015-12-30 (水) 15:50:09
  • USBシリアルのブレッドボード結線を修正しました。 -- 竹本 浩? 2016-04-09 (土) 15:44:32

(Input image string)


*1 今回はTinyWireMは直接使うことはありませんが、この2つをセットで宣言するようにしてください
*2 通信チップがFT232RLのものを使ってください
*3 Gemmaは、3.3V, 5Vでも8MHzで動作するように設定されているので、本体の変更は不要です
*4 他のアナログ入力ピンを使っても可能だと思いますが、ここではI2Cセンサーの例として使います

添付ファイル: fileUSBSerial_brd.png 127件 [詳細] fileI2CLCD_ADT7410_brd.png 164件 [詳細] fileBootloader_writting.png 130件 [詳細] fileATtiny85_pins.png 152件 [詳細] filelbedGamma_brd.png 138件 [詳細] filelbedGamma_brd_photo.png 159件 [詳細] filelbed_gemma_brd.png 68件 [詳細] filePWMOut_brd.png 166件 [詳細] filelbedGemma.zip 66件 [詳細] fileI2C_Temp.png 159件 [詳細] fileI2C_conn.png 148件 [詳細] fileI2CLCD_PullUp.png 133件 [詳細] fileI2CLCD_brd.png 147件 [詳細] fileI2CLCD_HelloWorld.png 157件 [詳細] fileFreeGemma.zip 68件 [詳細] fileHC-SR04_on_Gemma.png 163件 [詳細] fileHC-SR04_monitor.png 152件 [詳細] fileAnalogInput_sch.png 164件 [詳細] fileLM35-buttom.png 150件 [詳細] fileAnalogIn_monitor.png 152件 [詳細] fileAnalogInput_brd.png 174件 [詳細] fileAnalogInput.png 166件 [詳細] fileUSBSerial_sch.png 174件 [詳細] fileUSBSerial.png 161件 [詳細] fileUSBSerial_monitor.png 209件 [詳細] filePWMOut.png 168件 [詳細] filePWMOut_sch.png 161件 [詳細] fileSwitchButton.png 190件 [詳細] fileSwitchButton-pullUp_sch.png 197件 [詳細] fileSwitchButton-pullUp_brd.png 160件 [詳細] fileSwitchButton-pullDown.png 80件 [詳細] fileSwitchButton-pullDown_sch.png 68件 [詳細] fileSwitchButton-pullDown_brd.png 153件 [詳細] fileSwitchButton_sch.png 154件 [詳細] fileSwitchButton_brd.png 161件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2016-04-09 (土) 15:58:17 (385d)
SmartDoc