{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"オリジナルの作成:2016/03/26\n",
"\n",
"[「8pino」ではじめるミニマム電子工作 ](https://www.kohgakusha.co.jp/books/detail/978-4-7775-1915-6)\n",
"(以下ミニマム本と書きます)に触発されて、ブレッドボードで作るATtiny85を使ったワンコインArduinoで 電子工作を楽しんでみました。\n",
"\n",
"例題の多くは、ミニマム本を参考にさせて頂き、これをScratch風のArdublockを使ってスケッチを作りました。\n",
"\n",
"このコーナーに進む前に、ワンコインArduinoの基本について Arduino勉強会/C2-ワンコインArduinoのArdublockでLチカ を参考にしてください。\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# C3-ワンコインArduinoのArdublockで遊ぶ\n",
"## デジタル入力\n",
"最初の工作は、タクトスイッチを使ったスイッチのオン・オフをとらえて、LEDを点滅してみましょう。\n",
"\n",
"デジタルの入力は、0と1のみで、スケッチではLOW, HIGHとして表現しています。\n",
"\n",
"### 部品\n",
"スイッチ回路に必要な部品は、以下の4つです。\n",
"\n",
"- タクトスイッチ 1個\n",
"- 抵抗(茶黒赤金)10KΩ 1本\n",
"- 青のジャンパー線 1本\n",
"- オレンジのジャンパー線 1本\n",
"\n",
"\n",
"\n",
"### プルアップ抵抗を使ったスイッチ回路\n",
"それでは、以下のような抵抗を電池のプラス側につないだスイッチ回路を作ってみましょう。\n",
"\n",
"\n",
"\n",
"VCCは、電池のプラスを表し、USBからの5Vに相当します。VCCに10KΩの抵抗をつなぎ、その下にタクトスイッチの左側のピンにつなぎ、右側のピンをGNDにつなぎます。途中Switch(7番ピン#2)というピンがタクトスイッチと抵抗の間につながれています。\n",
"\n",
"ブレッドボードで部品を以下の様につないでください。\n",
"\n",
"\n",
"\n",
"### スケッチを描く\n",
"それでは、Ardublockを使って以下のようにスケッチを描いてください。\n",
"\n",
"- [SwitchButton-PullUp.abp](data/SwitchButton-PullUp.abp)\n",
"\n",
"\n",
"\n",
"### 動かしてみる\n",
"スケッチが完成したら、USBケーブルをPCに接続し、「Arduinoにアップロード」ボタンを押して、 ワンコインArduinoにスケッチを書き込みます(Arduinoでは、これをアップロードと言います)。\n",
"\n",
"タクトスイッチを押すとLEDが短く点滅し、離すとLEDが消えます。\n",
"\n",
"\n",
"\n",
"### スイッチの電圧を測ってみる\n",
"スイッチを離しているときのスイッチの両端の電圧をテスターで測ってみましょう。\n",
"\n",
"VCCからわずかの電流がマイコンに流れ込み、USBの電圧(この時4.73V)がわずかに下がり4.72Vであり、 デジタル入力は、1のHIGHとなります。\n",
"\n",
"\n",
"\n",
"スイッチを押すとSwitchのピンの電圧はGNDと同じになるので0Vとなり、 デジタル入力は、0のLOWとなります。この時スケッチの「もし」の条件が成り立ち、 LEDを短く点滅させます。\n",
"\n",
"\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## アナログ出力(PWM)\n",
"Arduinoでは電圧を変えるアナログ出力機能はありません。その代わりに一定の周期のパルス幅の割合(デューティ比) を変えるパルス幅変調方式を使ってアナログ出力を行っています。\n",
"\n",
"Wikiの\n",
"[デューティ比](https://ja.wikipedia.org/wiki/%E3%83%87%E3%83%A5%E3%83%BC%E3%83%86%E3%82%A3%E6%AF%94)\n",
"からデューティ比の説明図を引用します。\n",
"\n",
"デューティ比が大きいと電圧が掛かっている時間が長く、 デューティ比が小さいと電圧が掛かっている時間が短くなります。 これで、LEDやモータに流れる電流の量を調整することで、明るさや回転の強さをコントロールします。 また、抵抗とコンデンサーを使った低周波フィルターを通すとデューティ比の変化が波の形で出力します。\n",
"\n",
"\n",
"\n",
"### 部品\n",
"アナログ出力回路に必要な部品は、以下の2つです。\n",
"\n",
"- LED 1個\n",
"- 抵抗(黄紫茶金)470Ω 1本\n",
"\n",
"\n",
"\n",
"\n",
"### 回路\n",
"アナログ出力回路は、以下の様にします。 抵抗はLEDにたくさんの電流が流れないようするために、つなぎます。\n",
"\n",
"\n",
"\n",
"ブレッドボードで部品を以下の様につないでください。 LEDの線の長い方*1をマイコンの5番ピンに、LEDの線の短い方*2を抵抗につなぎます。\n",
"\n",
"\n",
"\n",
"\n",
"### スケッチを描く\n",
"Ardublockを使ってアナログ出力のスケッチを描いてみましょう。\n",
"\n",
"- [PWMOut.abp](data/PWMOut.abp)\n",
"\n",
"\n",
"\n",
"以下の手順でスケッチを描いて下さい。\n",
"\n",
"- 「制御」から「repeat between」部品をドラッグし、「ずっと」入れます\n",
"\n",
"\n",
"\n",
"- 変数をled、スタートを0、ストップを255、steps ofを5に変更します\n",
"- 「ピン」からアナログ出力をドラッグし、repeat betweenのcommandsに入れます\n",
"\n",
"\n",
"\n",
"- #をD0に、255を外してゴミ箱に入れます\n",
"- 「repeat between」の変数ledを右クリックして、複製を選択します\n",
"\n",
"\n",
"\n",
"- 複製されたledを「アナログ出力」の空いたところに入れます\n",
"\n",
"\n",
"\n",
"「制御」から「delay MILLIS」をドラッグし、「アナログ出力」の下に入れ、ミリ秒の値を20に変えます\n",
"\n",
"\n",
"\n",
"- これまでの処理を繰り返し、もう一つ「repeat between」を「ずっと」に入れ、スタートが255、ストップが0にします\n",
"\n",
"### 動かしてみる\n",
"スケッチが完成したら、 「名前をつけて保存」を押して、PWMOutと名前を入力して保存します。 次に、USBケーブルをPCに接続し、「Arduinoにアップロード」ボタンを押して、 ワンコインArduinoにスケッチを書き込みます。\n",
"\n",
"LEDが少しずつ明るくなったり、暗くなったりを繰り返します。\n",
"\n",
""
]
},
{
"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
}