・目的
ATTiny13Aのピン一つでシリアル通信を行う
・使用したもの
ATTiny13A
シリアル変換機
10KΩ抵抗 1個
ブレッドボード
・方法
(1)ライブラリのインポート
まずはシリアル通信を行うために
ライブラリを追加する
下のサイトにとんで
Nerd Ralph: AVR half-duplex software UART supporting single pin operation
赤で囲ってある部分をクリックすると
ライブラリをダウンロードできる
図1:ライブラリのダウンロード
出典:Nerd Ralph: AVR half-duplex software UART supporting single pin operation
ダウンロードし終わったら
zip形式のライブラリをインストールを
クリックしいて BasicSerial3を選択する
図2:ライブラリの追加
(2)回路を組み立てる
図3に回路図を示した
シリアル変換器につなげるときは
TX-RX RX-TX
とクロスして接続すること
図3:シリアル通信回路
(3)ライブラリの設定
使うピンの指定と通信速度はをスケッチ上では
指定できないのでライブラリを直接編集して
指定する。
まずは使用するピンの指定から
$vim Documents/Arduino/libraries/BasicSerial3
$vim BasicSerial3.S
13,14行目にデフォルトで
#define UART_Tx 5
#define UART_Rx 5
とあるので5を2に変更
#define UART_Tx 2
#define UART_Rx 2
つぎに通信速度の指定
$vim BasicSerial3.h
7行目にある
#define BAUD_RATE 115200
がシリアル通信の速度を指定している
今回38400bpsに指定したいので
#define BAUD_RATE 38400
に変更して保存
以上でライブラリの設定は終わり
(4)スケッチの作成
スケッチを示した
1を受け取ったら”CHIBA”を返し
それ以外は”jajaja”を返す
#include <BasicSerial3.h>
void setup() {
}
void serOut(const char* str) {
while (*str) TxByte (*str++);
}
void loop(){
byte c;
c = RxByte();
switch(c) {
case '1':
for (uint8_t i=0;i<10;i++) serOut("CHIBA");
serOut("\n\r");
break;
default:
serOut("jajaja");
break;
}
}
図4:スケッチ
・結果
上手くいくとこんな感じ
図5:シリアルモニタ
追記
BasicSerial3.SのUART_Tx 、UART_Rx
を違うピンを割り振れば
普通のシリアル通信が行える
回路図を図6に示した
$vim BasicSerial3.S
13,14行目
#define UART_Tx 1
#define UART_Rx 0
図6:回路図
<参考文献>
Nerd Ralph: AVR half-duplex software UART supporting single pin operation