Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
3
Help us understand the problem. What is going on with this article?
@illness072

Amazon で売ってる Digispark クローンの 5 ピンめを使えるようにしたメモ

More than 1 year has passed since last update.

タイトルの通り、Amazon で 1 こあたりアホみたいな安値でまとめ売りしてる Digispark(の中華クローン) を買った。

USB Type-A に直挿しできるものもあるが、PC 側にダメージとかあると嫌だし何かに組込むには逆に不便かなって思ったので今回は MicroUSB 版にした。

電源まわり以外で 6 ピン(HID デバイスとして利用するときは 4 ピン)ほど使えて、ソフト的には Pro Micro だとか Arduino なんかと同じように気軽に書けて焼けて使えるってんでとっても魅力的だ。なによりアホみたいに安い。しかも prime なので注文翌日には届く。

うんで動作確認がてらこんな感じで各ピンにそれぞれ繋いだ LED を順番に光らせるスケッチを書いて動かそうとしたんだけど、

void setup() {
  pinMode(0, OUTPUT); digitalWrite(0, LOW);
  pinMode(1, OUTPUT); digitalWrite(1, LOW);
  pinMode(2, OUTPUT); digitalWrite(2, LOW);
  pinMode(3, OUTPUT); digitalWrite(3, LOW);
  pinMode(4, OUTPUT); digitalWrite(4, LOW);
  pinMode(5, OUTPUT); digitalWrite(5, LOW);
}

void loop() {
  delay(500); digitalWrite(0, HIGH);
  delay(500); digitalWrite(0, LOW);
  delay(500); digitalWrite(1, HIGH);
  delay(500); digitalWrite(1, LOW);
  delay(500); digitalWrite(2, HIGH);
  delay(500); digitalWrite(2, LOW);
  delay(500); digitalWrite(3, HIGH);
  delay(500); digitalWrite(3, LOW);
  delay(500); digitalWrite(4, HIGH);
  delay(500); digitalWrite(4, LOW);
  delay(500); digitalWrite(5, HIGH);
  delay(500); digitalWrite(5, LOW);
}

まずアップロードができない。これは Arduino IDE のプリセットに DigiSpark のボード情報がないからで、

  1. Preferences → 追加のボードマネージャの URL に以下を追記
  2. ツール → ボード → ボードマネージャ を開き、Digistump AVR Boards by Digistump をインストール
  3. ツール → ボード で Digispark (Default - 16.5mhz) を選択
  4. ツール → 書き込み装置 で Micronucleus を選択
  5. ツール → シリアルポート には Digispark が表示されないので、何でもいいので適当に選んどく
  6. Digispark から USB ケーブルを抜く
  7. 書き込みを開始
  8. Digispark に USB ケーブルを差す

で良いらしい。PlatformIO を使うなら pio init --board digispark-tiny で OK.

ということで上記スケッチを動かしてみたんだが、

ezgif.com-video-to-gif(1).gif

P6 が点かねえ。いやこれうっすら点きっぱなしになってるのか。とにかく意図した通りに動作しない。

これは Digispark のクローン品の独自仕様で、P5 がリセットピンにアサインされてるらしい。いらねえ。
このままだと 2x2 のキーマトリクスすら作れなくて非常に悲しいので、ファームウェアの書き換えをして P5 を本来の ADC0 として使えるようにする。

やりかたは色々あるが、今回はどこのご家庭にでもある Arduino UNO を書き込み装置として使用する方法にした。

  1. Arduino IDE を開き、ファイル → スケッチ例 → 11. Arduino ISP → Arduino ISP を開く
  2. でてきたスケッチをそのまま UNO に書き込む
    • 上記で変更した書き込み先ボードとかの設定を戻すのを忘れないこと
  3. UNO と Digispark を下表のとおりに接続する
    • UNO 側にて、RESET と GND の間に 10μF のコンデンサを挟むべしとの記載があるものもあったが、入れなくても問題なかった。
UNO側ピン Digispark側ピン
GND GND
5V 5V
10 P5
11 P0
12 P1
13 P2
  1. UNO が刺さってるシリアルポートの名前 (/dev/なんちゃら みたいな名前) を控える
  2. コマンドラインで以下を実行 (/dev/なんちゃら 部分は上記で控えた値に差し替え)
$ avrdude -P /dev/なんちゃら -b 19200 -c avrisp -p attiny85 -n

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.02s

avrdude: Device signature = 0x1e930b (probably t85)

avrdude: safemode: Fuses OK (E:FE, H:DD, L:E1)

avrdude done.  Thank you.
$ avrdude -P /dev/なんちゃら -b 19200 -p attiny85 -c avrisp  -U hfuse:w:0x5F:m

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.02s

avrdude: Device signature = 0x1e930b (probably t85)
avrdude: reading input file "0x5F"
avrdude: writing hfuse (1 bytes):

Writing | ################################################## | 100% 0.02s

avrdude: 1 bytes of hfuse written
avrdude: verifying hfuse memory against 0x5F:
avrdude: load data hfuse data from input file 0x5F:
avrdude: input file 0x5F contains 1 bytes
avrdude: reading on-chip hfuse data:

Reading | ################################################## | 100% 0.01s

avrdude: verifying ...
avrdude: 1 bytes of hfuse verified

avrdude: safemode: Fuses OK (E:FE, H:5F, L:E1)

avrdude done.  Thank you.

これでファームウェアの書き換えが済み、P5 が使えるようになったはず。

ということで再度 LED つないでスケッチを書き込んで・・・

ezgif.com-video-to-gif(2).gif

イエー! やったぜ!

3
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
3
Help us understand the problem. What is going on with this article?