{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "オリジナルの作成: 2014/02/23" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 04-Protosnapをバラして組み立てる\n", "第4回目の勉強会の資料です。" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## ProtoSnap Pro Miniボードをバラバラにする\n", "さあ、これまで難なく動いていたProtoSnap Pro Miniボードをバラバラにしてみましょう。\n", "\n", "ボードから部品を切り離すときには、ニッパを使うと便利です。 \n", "[1](#Ref_1)\n", "\n", "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## ブレッドボードに組み立てる\n", "私は、シリアルボードのL字ピンの付ける面を間違えてしまいました。 上ではなく下に付けた方が使いやすいです!\n", "\n", "\n", "\n", "ブレッドボードの配線は、以下の図をみてください。\n", "\n", "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 動作確認\n", "組み立てたボードがきちんと動くか確かめましょう。\n", "\n", "\n", "\n", "Blinkをボードに書き込んでArduino Pro Miniのボードが動作するか見てみましょう。 ファイル→スケッチの例→01.Basics→Blinkを選択して、Arduinoに書き込んで緑のLEDが点滅することを確認してください。" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Arduino Pro miniをブレッドボードに差す\n", "電源を入れる前に、もう一度ブレッドボードのVCCとGNDの位置が合っているか確認しましょう! 写真の赤い四角で囲まれたところがVCCのピンと合っているか確かめて下さい\n", "\n", "順番に動作を確認します。\n", "\n", "- 電源を入れます。先ほどのBlinkが同じように動くことを確認してください。\n", "- カラーLEDの接続確認:pin2の値を、1個づつ5(緑)、6(青)、3(赤)に変えて書き込みLEDの点滅を確認してください。\n", "```C++\n", "int pin2 = 2;\n", "```\n", "- スイッチの確認:1回目に使ったスイッチのスケッチを使って動作を確かめてます。\n", "\n", "```C++\n", "int buttonPin = 7; // ボタンは 7番ピンにつながっています\n", "int ledPin = 13; // LEDは 13番ピンにつながっています\n", "\n", "int buttonStatus; // ボタンの状態を保持するための変数\n", "\n", "void setup() {\n", " pinMode(buttonPin, INPUT); // ボタンピンを入力として初期設定\n", " pinMode(ledPin, OUTPUT); // LEDピンを出力として初期設定\n", "}\n", "\n", "void loop() {\n", " /* 最初にボタンの状態を読み込みます\n", " HIGH = ボタンが押されていない状態\n", " LOW = ボタンが押されている状態 */\n", " buttonStatus = digitalRead(buttonPin);\n", " \n", " if (buttonStatus == LOW) {\n", " digitalWrite(ledPin, HIGH); // ボタンが押されていたらLEDを点灯する\n", " }\n", " else {\n", " digitalWrite(ledPin, LOW); // そうでなければLEDを消す\n", " }\n", "}\n", "```\n", "\n", "- スピーカー:スピーカーの例題を動かします。\n", "\n", "```C++\n", "// Tone\n", "int toneDuration = 40; // 音のでる間隔(40ミリ秒)\n", "int speakerPin = 2; //ブザーのピン番号\n", "int index = 0; // 何番目の配列かを示す値(配列の添え字を求める)\n", "char ch; // パソコンから読み込んだ文字(コード)\n", "int tones[]={262,294,330,392,440}; // ド、レ、ミ、ソ、ラ\n", " \n", "void setup() {\n", " /* シリアル通信の速度を9600ボーにセットし、最初にHello…のメッセージを表示する */\n", " Serial.begin(9600);\n", " Serial.println(\"Input [1-5]!\");\n", "}\n", "\n", "void loop() {\n", " ch = Serial.read(); // パソコンから1文字読み込む\n", " if (ch >= '1' && ch <= '5') { // 読み込んだ値が1から5の文字なら、音を鳴らす\n", " index = ch - '1'; // 1の文字から0のインデックスを求めるために、'1'を引く\n", " tone(speakerPin, tones[index], toneDuration);\n", " }\n", " delay(500); // 次の読み込みまで待つ\n", "}\n", "```\n", "\n", "- 光センサー:同様に光センサーの例題を動かします。シリアルモニターがセンサーの値がでてくることを確認してください。\n", "\n", "```C++\n", "int lightPin = A0; // 光センサーはA0につながっている\n", "\n", "int lightReading; // 光センサーからの値を保持する変数\n", "\n", "void setup() {\n", " /* シリアル通信の速度を9600ボーにセットし、最初にHello…のメッセージを表示する */\n", " Serial.begin(9600);\n", " Serial.println(\"Hello world, let's read some light sensors!\");\n", "}\n", "\n", "void loop() {\n", " lightReading = analogRead(lightPin); // 光センサーから値を読み込む\n", " Serial.println(lightReading, DEC); // 読み込んだ値をシリアル通信を使ってシリアルモニターに送る\n", " delay(250); // 次の読み込みまで待つ\n", "}\n", "```" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 温度センサーを使ってみる\n", "温度センサーには、いろんなタイプがあります。\n", "\n", "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### LM35を使ってみる\n", "電圧を測るだけで、温度が分かるLM35はとても使いやすいセンサーです。\n", "\n", "\n", "\n", "シリアルモニターの出力は、44から46の値が出ています。\n", "\n", "\n", "\n", "テスターで電圧を測ってみると、以下の様に227.7mVとなりました。 温度は、22.7℃になります。\n", "\n", "$$\n", "frac{46}{1023} \\times 4.78 V = 0.2149 V\n", "$$\n", "\n", "Arduinoの出力した値も21.5℃と良い値を示しています。\n", "\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 半固定抵抗を使ってみる\n", "今度は、LM35の代わりにスイッチサイエンスからブレッドボードにそのままささる、 \n", "[つまみの大きい半固定抵抗10KΩ ](http://www.switch-science.com/catalog/1039/)\n", "を使ってみます。\n", "\n", "\n", "\n", "先ほどと同じスケッチで動かしてみて下さい。 つまみを回すと値が0から1023に変わるのを確かめて下さい。" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## ハンダ付けの様子 \n", "参加者の皆さんが、ハンダ付けに挑戦している様子をアップします\n", "\n", "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 脚注\n", "\n", "- [1] 切り離すときは、部品を壊さないように気を付けましょう。" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 2", "language": "python", "name": "python2" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.13" } }, "nbformat": 4, "nbformat_minor": 0 }