Attiny85 4 key keyboard prototypeing(1番ピンのリセット解除)
前回、
https://funasover.blogspot.com/2024/06/attiny85-3-key-keyboard-prototypeing.html
3つのキーのプロトタイプで4つにしていなかった。これを4つキーにするのが今回の目的。
https://funasover.blogspot.com/2024/06/attiny85-3-key-keyboard-prototypeing.html
3つのキーのプロトタイプで4つにしていなかった。これを4つキーにするのが今回の目的。
これはATtiny85を使う人は皆ご存じで、1番ピンがリセットに割り当てされているので、USBを使う場合、自由に使えるのが、PB0(5番ピン)、PB1(6番ピン)、PB2(7番ピン)の3つしかなかったため。
1番ピンをデジタルインプットとして使えれば、一つ増やせる。
【スケッチの変更】
4つもあるので、どれが押されたかわかりやすいように、変更。
#include <TrinketKeyboard.h>
// Attiny85
// PB5(reset)-| |-VCC
// PB3-| |-PB2
// PB4-| |-PB1
// GND-| |-PB0
#define KEY_ESCAPE 0x29
const int PB0pin = 0;
const int PB1pin = 1;
const int PB2pin = 2;
const int PB5pin = 5;
bool outputState = true;
void setup() {
pinMode (PB0pin, INPUT_PULLUP);
pinMode (PB1pin, INPUT_PULLUP);
pinMode (PB2pin, INPUT_PULLUP);
pinMode (PB5pin, INPUT_PULLUP);
TrinketKeyboard.begin(); //start USB stuff
}
void loop() {
TrinketKeyboard.poll();
if (digitalRead(PB0pin) == LOW)
{
// type out a string using the Print class
TrinketKeyboard.print("PB0 key pushed");
TrinketKeyboard.pressKey(0,KEYCODE_ENTER);
// this should push enter key
TrinketKeyboard.pressKey(0, 0);
// this releases the key
delay(100);
}
if (digitalRead(PB1pin) == LOW)
{
// type out a string using the Print class
TrinketKeyboard.print("PB1 key pushed");
TrinketKeyboard.pressKey(0,KEYCODE_ENTER);
// this should push enter key
TrinketKeyboard.pressKey(0, 0);
// this releases the key
delay(100);
}
if (digitalRead(PB2pin) == LOW)
{
// type out a string using the Print class
TrinketKeyboard.print("PB2 key pushed");
delay(100);
TrinketKeyboard.pressKey(0,KEYCODE_ENTER);
// this should push enter key
TrinketKeyboard.pressKey(0, 0);
// this releases the key
}
if (digitalRead(PB5pin) == LOW)
{
// type out a string using the Print class
TrinketKeyboard.print("PB5 key pushed");
delay(100);
TrinketKeyboard.pressKey(0,KEYCODE_ENTER);
// this should push enter key
TrinketKeyboard.pressKey(0, 0);
// this releases the key
}
delay(1);
}
前回配線していなかった4つ目のスイッチと1番ピンを接続!(赤いスイッチと赤いライン)のスイッチにすべて配線。
【リセット機能の解除】
フィーズは、以下の設定にしていた。(https://funasover.blogspot.com/2024/06/attiny85digispark.html)
Low: 0xE1
High: 0xDD
Extended: 0xFE
に変更する。
変更の仕方だが、Attiny85のdigispark化した時の手順と同じ。https://funasover.blogspot.com/2024/06/attiny85digispark.html
・ArudinoNANOをISPとして、ATtiny85をセット
・コマンドプロンプトから
avrdude -C avrdude.conf -v -pattiny85 -carduino -PCOM22 -b19200 -U hfuse:w:0x5D:m
で書き換えてしまう。
ここで注意は、これで書き換えてしまうと、外部からのリセットが聞かないのでISPでの書き込みができなくなる。書き込む際は、リセッターでリセットしなおす必要がある。
【動作の確認】
無事に4のキーにする事ができる!
外部からリセットを掛ける事もないのでこれで4キーボードのプロトタイプが完了!
(後日談)
ただし、アルファベットや数字はよいが、このままだと記号が正しく表示されない。
解決方法については、
TrinketKeyboardで日本語キーボード109で正しく表示する方法https://funasover.blogspot.com/2024/06/trinketkeyboard109.html
を参照されたい。
次回はプロンプトタイプから基板を起こして作り込みをしていく!
コメント
コメントを投稿