Mighty-1284p_Bootloaderの書込み
自作工程のメモとして
26.Feb.2017
Edit by bluegriffon2.3.1
1.BL書込み |
Mighty-1284p | ArduinoUNO |
+5V | +5V |
GND | GND |
RESET | D10 |
D5 | D11 |
D6 | D12 |
D7 | D13 |
2.Mighty-1284p定義ファイルの導入 |
Web上で「Mighty-1284p」を検索すると、最初に古いタイプの定義ファイルが検出できますが、これを導入しても Arduino IDE 1.8.1 ではエラーに成ってしまいます。
その5番目ぐらいの位置にある Mighty-1284p repo updated for IDE 1.6.x - Arduino Forum の中のリンクにある 1.6.3 が最新のようなので、それをダウンロードします。
■ ダウンロード場所のイメージ
v1.6.3 を確認して、@AとクリックしてZIPファイルをダウンロードします。
■ ZIPファイルを展開した後のイメージ
(1)
上図のように、フォルダーの -1.6.3 を削除する。
(2)
フォルダー名を変更した後。
(3)
スケッチを置いている場所に hardware フォルダーを作成して、先ほど名前を変更したフォルダーをコピーする。
■ Arduino IDE 1.8.1 を起動してボードを確認(修正:2017/03/05)
多分、「avr-developers.com pinouts 16MHz using Optiboot」を選択すれば良いと思います。 (削除:2017/03/05)
上記の削除前(avr-developers.com pinouts ・・・・・)設定でも動作しますが、基板の設計を「STANDARD」としましたので、ボードは「"maniacbug" Mighty 1284p 16MHz using Optiboot」を選択すれば良いと思います。
◆両者の主な違い(左:avr-developers.com pinouts ・・・ 、右:"maniacbug" Mighty 1284p 16MHz using Optiboot )
(1)アナログピンをデジタルポート番号で指定するときの番号順が逆。
(2)LEDの接続ピンが、13か7の違い。
■ k3ng_keyerスケッチを書き込んだ時の最下行
Web上では昨年の時点でも、ヒューズ設定を書き直す必要があると書かれている方もいらっしゃいますので、わかりませんが、今のところ動作が不安定にはなっていないようです。
変化が有りましたら、この場所に追記します。
3.ボードのテスト |
#include <Wire.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x3f, 16, 2); // set the LCD address to 0x27 for a 16 chars and 2 line display // start_pin = 0 to end_pin =15 // start_pin = 18 to end_pin =23 // start_pin = 24 to end_pin =31 int start_pin = 18; int end_pin = 23; int val = 0; void setup() { pinMode(7, OUTPUT); //LCD初期設定(LiquidCrystal_I2C) lcd.init(); // initialize the lcd lcd.backlight(); lcd.print(" digital Mode "); delay(1000); lcd.clear(); } void loop() { for (int i = start_pin; i <= end_pin; i++) { pinMode(i, OUTPUT); // 出力に設定 } for (int i = start_pin; i <= end_pin; i++) { lcd.setCursor(0, 0); lcd.print(i); lcd.print(" Pin=LOW "); digitalWrite(i, LOW); val = digitalRead(i); // 入力ピンを読む lcd.setCursor(0, 1); if (val == 0 ) { lcd.print(" INPUT LOW "); } else { lcd.print(" INPUT HIGH"); } delay(1000); lcd.setCursor(0, 0); lcd.print(i); lcd.print(" Pin=HIGH "); digitalWrite(i, HIGH); val = digitalRead(i); // 入力ピンを読む lcd.setCursor(0, 1); if (val == 0 ) { lcd.print(" INPUT LOW "); } else { lcd.print(" INPUT HIGH"); } delay(1000); lcd.setCursor(0, 0); lcd.print(i); lcd.print(" Pin=LOW "); digitalWrite(i, LOW); val = digitalRead(i); // 入力ピンを読む lcd.setCursor(0, 1); if (val == 0 ) { lcd.print(" INPUT LOW "); } else { lcd.print(" INPUT HIGH"); } delay(1000); lcd.setCursor(0, 0); lcd.print(i); lcd.print(" Pin=HIGH "); digitalWrite(i, HIGH); val = digitalRead(i); // 入力ピンを読む lcd.setCursor(0, 1); if (val == 0 ) { lcd.print(" INPUT LOW "); } else { lcd.print(" INPUT HIGH"); } delay(1000); // lcd.setCursor(0, 0); // lcd.print("====TEST END===="); } } |
#include <Wire.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x3f, 16, 2); // set the LCD address to 0x27 for a 16 chars and 2 line display int start_pin = 0; int end_pin = 7; int val = 0; void setup() { pinMode(7, OUTPUT); //LCD初期設定(LiquidCrystal_I2C) lcd.init(); // initialize the lcd lcd.backlight(); lcd.print(" Analog Mode "); delay(1000); lcd.clear(); } void loop() { for (int i = start_pin; i <= end_pin; i++) { lcd.setCursor(0, 0); lcd.print(i); lcd.print(" Aval="); val = analogRead(i); // アナログピンを読み取る lcd.print(val); lcd.print(" "); delay(1000); } } |
4.その他気づいたこと |
99.追記用(予備) |