LoginSignup
4
7

More than 5 years have passed since last update.

Arduino UnoとVSCodeとPlatformIO IDEを使ってATTiny13Aにプログラムを書き込む(Lチカ)

Last updated at Posted at 2018-08-26

初投稿です,至らない点があると思いますがよろしくお願いします.
Qiita記事のうまい書き方があればご指南ください.

想定環境はMac,VSCode,PlatformIO IDEです.

0. はじめに

面倒な方は読み飛ばして1. 環境構築へ飛んでください.
VSCodeもPlatformIO IDEも導入済みだよって人は2. へ

ATTiny13Aみたいな超小さなマイコンにプログラムを書き込みたい!
そう思う頃が誰にでもあると思います.

しかし,Google先生に聞いてみると,書き込みにはArduinoをライタにするといいよ!
そのためにはArduino IDEを使って〜〜〜みたいなお話になります.

いやだ

たぶんある程度プログラムを書いたことがある人はこう考えます.

Arduino IDE じゃなくて 自分の使ってるエディタで作業したい!

僕の場合は VSCode を使っているので コーディングからなにからなにまで VSCode で完結させたいわけです.

VSCode では PlatformIO 用の拡張 PlatformIO IDE が存在し,これを使うことでArduinoにプログラムを書き込むことができます.M5Stackとかでも書き込めますね.

これを利用しない手はありません.ATTinyにだって書き込めるはず.

1. PC側の環境構築

1.1 VSCode をインストールする

そのへんの解説記事を参考にVSCodeを導入します(丸投げ)

1.2 PlatformIO IDE を導入する

拡張機能検索でPlatformIOと入力したら一番上に出てくると思います.
スクリーンショット 2018-08-26 23.02.23.png

2. Arduino Uno と ATTiny13A側の準備

2.1 Arduino Uno を ATTiny のライタに改造する①

まず,Arduino IDEを起動します.
使うのは1度だけな上,プログラムは書かないのでArduino IDEを使ってもいいのです.

起動したら以下のようにして,ArduinoをArduinoISPとして利用するためのスケッチ例を読み込みます.
スクリーンショット 2018-08-26 23.11.19.png

このスケッチをArduino Unoに書き込みましょう.

2.2 Arduino Uno を ATTiny のライタに改造する②

配線を行います.
ついでにLチカ用の配線もしてしまいましょう.

ATTiny13A のピンアサインはこうなっているみたいです.

スクリーンショット 2018-08-26 23.33.58.png

データシートからパクってきました.

もしかすると手元にあるATTiny13Aと微妙に模様みたいなやつの位置が違うかもしれません.
左上に丸い穴が開いているように見ればこの図と同じようになります.

こんな感じ
a3j-f5E2.jpg

というわけで以下のように配線します.

スクリーンショット 2018-08-26 23.32.06.png

これでATTiny13Aにプログラムを書き込む準備(とLチカさせる準備)ができました!

3. プログラムを書き込む

3.1 プロジェクト(スケッチ?)の作成

  1. + New Project を選択
    スクリーンショット 2018-08-27 0.01.34.png

  2. プロジェクト設定
    以下のように Board に Generic ATTiny13 (Atmel) を選択します.
    FrameworkはArduino,Nameはお好きにどうぞ.
    スクリーンショット 2018-08-27 0.04.04.png

3.2 プログラミング

Lチカ用のプログラムを書き込みます.
この記事ではLチカを目標としていますので,Arduinoのライブラリを使用しています.
本当は#include <avr/io.h>とかしたほうがいいと思います.

#include <Arduino.h>

#define LED 3

void setup()
{
    pinMode(LED, OUTPUT);
}

void loop()
{
    digitalWrite(LED, HIGH);
    /*
        1000 / 9.6 = 104.166...
    */
    delay(104);
    digitalWrite(LED, LOW);
    delay(104);
}

注意点として,ATTiny13Aはデフォルトで9.6MHzで動作するという点があります.
そのため,1秒ごとに点いて,消えてを繰り返したい場合は1000[msec]を9.6で割った値にしなければなりません.(小数点以下を切り捨てているので厳密には1秒にはなりませんね)

3.3 platformio.ini を編集

これをやらないと詰みます.
おそらくここで詰まった人が結構いるのではないでしょうか?

ここに設定方法が書いてあります.
これを参考に以下のように設定しましょう.

最初から書き込まれてるやつは消していいです.

[env:attiny13]
platform = atmelavr
board = attiny13
framework = arduino
upload_protocol = stk500v1
upload_flags =
    -P$UPLOAD_PORT
    -b$UPLOAD_SPEED

; ****を適切な値に書き換えましょう
upload_port = /dev/tty.usbmodem****
upload_speed = 19200

upload_portについてですが,ここにArduinoが刺さっているポートを指定します.
調べ方なのですが,端末などでls -l /dev/tty.*とやればいいと思います.

と思ったのですが

どうやらupload_portは指定しなくてもいいっぽいですね.
もし,指定せずに書き込めなかった場合は試してみてください.

3.4 書き込み

VSCodeの左下のツールバーにある
スクリーンショット 2018-08-27 0.24.39.png
これをクリックしましょう.
もしくは,F1キーで出現するやつにuploadって入力して出てくるやつでもいいと思います.
ターミナル派の人はpio run -t uploadです.

VSCode内のTerminalに SUCCESS って出たら成功していると思います.

3.5 やったぜ。

5zMHgSxk.jpg

青いLEDとレッドクリアなブレッドボードがかっこいいですね.

以上となります.

4
7
0

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
4
7