Mira&Luna's nursery lab

旅乙女と発明娘の子供部屋

2つ目のトラブル🦇 tone関数で制御できる音符数が足りない😢

    Mira
 外付けEEPROMにデータを書き込み、tone関数で音楽を鳴らす電子メロディの作製🍑


<第5回>
「2つ目のトラブル🦇
  tone関数ではすべての音符を鳴らせない🐸」


目次

   🍩 Tiny蓄音機レコード仕様を作ろう 🍩
🍩1回目「 構想とEEPROMについてと曲紹介
🍩2回目「EEPROMに楽譜を記録♬ "レコード盤作り"
🍩3回目「EEPROMから楽譜を読み取って演奏するプログラム
🍩4回目「トラブル1🐉 ArduinoのRAMが足りない..p_q..💦
🍩5回目「トラブル2🦇 tone関数ではすべての音符を鳴らせない」(この記事)



🌷 ATmega328p(蓄音機)と24LC64(レコード盤)の配線
f:id:miraluna:20210920085347p:plain

EEPROMと、ArduinoマイコンATmega328pを使って電子オルゴールを自作する電子工作をしています。

前回は、EEPROMに一曲分の楽譜データを書き込もうとしたところ、書き込む側のArduinoのRAMが足りなかったの。容量に対してデータが多かったのね。そこで曲をA~Eパートに分割してEEPROMに書き込むことにしました。
今回はその続きです。


書込み用プログラム分割
📝 Arduinoから外付けEEPROMへの書き込み
f:id:miraluna:20210920085453p:plain:w300:left
大仕事が終わった。『Onenight』一曲分のすべての音符の音階と長さのデータをプログラムに書きました。次はその楽譜データをEEPROMに書き込むことで、『OneNight』レコード盤が完成します。
前回はArduinoのRAMが足りなかったけれど、今回は曲を5つのパートに分けて、3回にわたって(AとB、DとEはいっしょにしました)書き込みます。
さあ、うまくいくかな?

上の図のように配線をして、Arduinoの書き込み用プログラム(→ プログラム例はこちら)に分割したデータを入れて、EEPROMに書き込みを行います。このときに書き込み用プログラムの中の音符数や書き込み番地も、パートに合わせて書き換えが必要です。


📓 例:) Cパートの書き込み用プログラム

/*EEPROMへ「OneNight」の「ABパート」を書き込んだ後に
「Cパート」を書込むためのツールスケッチ*/
#include<Wire.h>
#include "tone_def.h"

 int melody[] = {
  /*C*/o,ru,ru,0,s,s,s,l,s, s,o,m,o,o,l,f,r,l,o, ru,ru,ru,ru,ruh,s,l,s,  //27
  o,o,l,l,s,o,f,o,f,m,r, m,0,m,s,f,m,f,o, o,l,s,0,s,s,s,  //26
  du,s,s,s,du,s,s,s,du,l,s,  //11
  /*C①*/ru,fuh,su, ou,fuh,ou,su,su,fuh,mu,fuh,ru,s,ru,  //14
  mu,ru,mu,ou,ru,0,du,s, du,du,du,du,mu,ou,fuh,ou,fuh,ru,ru, s,l,l,s,ru,s,0,fuh,  //27
  ou,fuh,ou,su,su,fuh,mu,fuh,ru,ru, mu,fuh,ou,lu,su,0,mu,ou, 0,mu,fuh,0,ru,mu,mu, ou,su,muu,0,  //29
  ou,fu,mu,ru,s,s,ru, mu,ru,mu,o,ru,du,s, du,o,o,r,l,o,l,s,s, fh,s,mu,ou,   //27
  su,lu,ou,fuh,lu,ou,fuh,ru, ou,lu,su,mu,ou, mu,fuh,ru,mu,mu, ou,su,muu,0,  //22
  /*C*/o,ru,ru,0,s,s,s,l,s, s,o,m,o,o,l,f,r,l,o, ru,ru,ru,ru,ruh,s,l,s,  //27
  o,o,l,l,s,o,f,o,f,m,r, m,0,m,s,f,m,f,o, o,l,s,0,s,s,s,  //26
  du,s,s,s,du,s,s,s,du,l,s,  //11
  /*C②*/s,s, du,du,fu,ou,  //6
  };
 int durations[] = {
  /*C*/8,16,3.2,5.33,16,16,16,16,16, 8,16,5.33,16,16,8,16,8,8,3.2, 16,16,16,16,8,8,8,8,  //27
  8,16,8,16,16,16,4,16,16,16,16, 4,16,16,16,3.2,16,8,2.66, 16,16,3.2,16,16,16,16,  //26
  8,16,4,16,16,16,16,8,16,16,2.28,  //11
  /*C①*/32,32,16, 8,16,8,8,16,8,16,8,16,16,16,  //14 
  8,16,5.33,16,3.2,8,16,16, 8,16,8,16,16,16,8,16,8,8,16, 8,16,16,8,16,3.2,5.33,16,  //27
  8,16,8,8,16,8,16,8,8,16, 8,16,5.33,16,3.2,8,16,3.2, 8,16,3.2,8,16,2,4, 32,32,16,8,  //29
  8,16,8,8,3.2,8,8, 8,16,8,8,3.2,8,8, 8,16,3.2,8,8,8,16,16, 2,8,8,8,8,  //27
  8,16,8,5.33,8,16,8,5.33, 4,4,2.66,16,2.28, 16,2.28,16,2,4, 32,32,16,16,  //22
  /*C*/8,16,3.2,5.33,16,16,16,16,16, 8,16,5.33,16,16,8,16,8,8,3.2, 16,16,16,16,8,8,8,8,  //27
  8,16,8,16,16,16,4,16,16,16,16, 4,16,16,16,3.2,16,8,2.66, 16,16,3.2,16,16,16,16,  //26
  8,16,4,16,16,16,16,8,16,16,4,  //11
  /*C②*/4,2, 2,4,8,8,  //6
  };
    
void eep_write(int device_add, unsigned int eep_add, int data){
  Wire.beginTransmission(device_add);//対象デバイスへ移動
  Wire.write((int)(eep_add >> 8));
  Wire.write((int)(eep_add & 0xff));
  Wire.write(data);
  Wire.endTransmission();
}

void setup() {
  Serial.begin(9600);
  Wire.begin();
    for(int n=210; n < 253+210; n++){  
        //音符の数  210番地から書き込み 210~462番地まで書き込む
        //[210:ABパートの格納済み番地が208。209にはCパートの音符数格納。]
      eep_write(0x50,n,melody[n-210]/4);
        //濃縮[÷4:OneNight] nは210から210+253まで
        //eepに高音域(256以上)を格納できないので、÷4や-100の濃縮還元
        delay(5);//書き込み待ち
      eep_write(0x50,n+719-3,durations[n-210]);
        //719+207(AB音符数)番地から253個書き込む
        delay(5);//書込み待ち
    }
      eep_write(0x50,209,253);  //209番地にCの音符数格納
        delay(5);
}

void loop() {

}


ちょっとごちゃごちゃしていますが......。
プログラム下のほうの「void setup」のところを見てください。このプログラムはCパートの書込み用なので、EEPROMの書き込み先番地が210とか462とか大きな数になっています。これはABパートのデータがEEPROMの208番地まで書き込まれているから、その続きに書き込むため。音符数はCパートのみの音符数になっています。
プログラムの書き換えというのは、それら音符数や番地の数字のことです。

プログラム上のほうのmuやらruやらfuhは、音階のミやラやファ#のことです。ライブラリのようなものを作ったので、それら自作の名前が音階(周波数)を表しているんです。→ ライブラリを作る


外付けEEPROM内の番地図
EEPROM[24LC64]には0番地から8191番地まで、データを格納できる番地があります。『Onenight』の音符の数(私のプログラムでの音符数だけどね)は715音符。1つの音符には「音階データ」と「長さデータ」の2種類が必要。さらに各パートごとの音符数も記憶しなきゃいけない。こんがらがっちゃいそうだから、番地図を作りました。


番地名>            <格納データ

 0                ABパートの音符数
 1                曲全体のテンポ
 2~208              ABパート"音階" 207個
 209               Cパートの音符数
 210~462             Cパート"音階" 253個
 463               DEパートの音符数
 464~718             DEパート"音階" 255個

 719~925             ABパートの"長さ" 207個
 926~1178            Cパートの"長さ" 253個
 1179~1433            DEパートの"長さ" 255個
 

EEPROMの中はこんなふうにデータが収められていて、1433番地まで使っています。まだまだ空き地がいっぱいあるので、この5倍以上の長さの曲を入れたり、同じくらいの長さの曲を5曲入れるなんていうのもいいわね。

(この時点(トラブル前)での音符数の格納は、「0番地」に一曲の音符総数を格納するのみでした。上記のように各パートごとに音符数を格納しているのは、トラブル後の処理によるものです。)

さあ、これで加賀谷玲さんの『Onenight』が1曲まるまるっと入ったEEPROMレコード盤の完成です!(∂, ∂🎀y

f:id:miraluna:20211013184449p:plain:w300:left


 レコード盤『Onenight』"EEPROM"オリジナルエディション。あの「銀河鉄道の夜」の感動を再び。加賀谷玲のオリジナル曲を電子工作娘ミラヒェンが電圧スピーカ用にオリジナルアレンジ。
~現代(いま)だからこそ味わいたいレトロロマンがある~大好評発売中!

(嘘です。非売品です🐈)




🍰 Tea Time
f:id:miraluna:20200223224106j:plain
                       Mira & Luna's nursery lab


トラブル発生
 tone関数で制御できる音符数には制限があった🦇>

ついにレコード盤としての曲を収めたEEPROMが完成したので、さっそく再生用プログラムをArduinoに書き込んで再生してみましょう🍅

📯 再生用プログラム

Arduino IDE の「マイコンボードに書き込む」をクリック。
「書き込みが完了しました」の文字。
そしてブザー(圧電スピーカ)から「Onenight」のメロディが......
♪ Dancing ♬ f:id:miraluna:20210117102243j:plain:w100 やったね🎶



・・・ってなる予定だったのに~f:id:miraluna:20200916184356j:plain:w100

流れてきたのは変なバグ音。
い゛や゛~~🐛
Mira Bitter 🦇f:id:miraluna:20180430190439j:plain:w200


ほんのちょっとだけお菓子をやけ食いしてからいろいろ試して調べたところ、tone関数でメロディを流すとき音符数が257以上だと変なバグ音が出ることがわかったの。よく見つけた私、えらい。で、256だと無音で、255以下だと正常に動作する。ミラアレンジの『Onenight』の音符数は715。さあ、どうしましょ。

もうちょびっとだけお菓子を食べて考えました。


Tiny蓄音機再生用プログラムを変える>

tone関数で鳴らせる音楽は音符数255個まで。これは変えられそうにない。だから音符255個以内の演奏を3回行うことにしたらどうかしら。書き込みを行ったときのように曲を3分割して、それを連続して流す。つまりtone関数のプログラムを3つ続けて書くのよ。

🍎 こんなふうに

// Tiny蓄音機実装用 [OneNight]専用
// 周波数を÷4で濃縮還元用
#include<Wire.h>

int eep_read(int device_add, unsigned int eep_add){
  Wire.beginTransmission(device_add);//対象デバイスへ移動
  Wire.write((int)(eep_add >> 8));
  Wire.write((int)(eep_add & 0xff));
  Wire.endTransmission();
  
  Wire.requestFrom(device_add,1);
  if(Wire.available()){}
  return Wire.read();
}

void setup() {
  Wire.begin();
}

void loop() {
  int onpu_ab = eep_read(0x50,0);  //0番地から音符数を読む ABパート分
  int sokudo = eep_read(0x50,1);//1番地から速度を読む(100分の1)
  
  for(int note = 0; note < onpu_ab; note++){       //ABパート再生
    int melody =eep_read(0x50,note+2);
    int duration = eep_read(0x50,note+719);     //719番地からduration格納してある
    int noteDuration = sokudo*100 / duration;   //速度を復元(x100)
    tone(3, melody*4, noteDuration);

    int note_hazama = noteDuration * 1.10;
    delay(note_hazama);
  }

  int onpu_c = eep_read(0x50,209);              //209番地にあるCの音符数を読む
    for(int note = 0; note < onpu_c; note++){   //Cパート再生
    int melody =eep_read(0x50,note+onpu_ab+3);
    int duration = eep_read(0x50,note+onpu_ab+719);
    int noteDuration = sokudo*100 / duration;   //速度を復元(x100)
    tone(3, melody*4, noteDuration);
    int note_hazama = noteDuration * 1.10;
    delay(note_hazama);
  }

  int onpu_de = eep_read(0x50,463);             //463番地にあるDEの音符数を読む
    for(int note = 0; note < onpu_de; note++){   //DEパート再生
    int melody =eep_read(0x50,note+onpu_ab+onpu_c+4);
    int duration = eep_read(0x50,note+onpu_ab+onpu_c+719);
    int noteDuration = sokudo*100 / duration;   //速度を復元(x100)
    tone(3, melody*4, noteDuration);
    int note_hazama = noteDuration * 1.10;
    delay(note_hazama);
  }
  delay(5000);  //余韻
}


「ABパート再生」「Cパート再生」「DEパート再生」という部分が3つの再生プログラムね。
こうすればEEPROM内の楽譜データすべてを演奏することができる。
でもそのためには音符数の情報を各パートごとに読み取れるようにしなきゃいけない。3つのプログラムそれぞれで音符数の情報が必要になるからね。
そんなわけで上述の番地図のように「AB」「C」「DE」それぞれの音符数も格納できるようにEEPROM内のデータを書き直しました。
そして再生すると、うまくいきました。(∂. <🎀y

でもね、このやり方だと1つ諦めなくちゃいけないことがあるの。それは再生用プログラムに「OneNight」用の数値を書き込んでしまったことによって、『Onenight』専用の蓄音機になってしまったこと。
これでレコード盤EEPROMを交換すれば音楽が流れる「Tiny蓄音機レコード仕様」にはならない。プログラムのリライトが必要ね。
でもまずはこのプログラムで「Tiny蓄音機レコード仕様」の作製を進めていきます。書き換えは後からでもできるもんね🐪


兎に角🐇これで「Tiny蓄音機レコード仕様」で『OneNight』を鳴らすことができそうです。やれやれ🍵


次回もトラブル続きです。
 ミラでした。




目次

   🍩 Tiny蓄音機レコード仕様を作ろう 🍩
🍩1回目「 構想とEEPROMについてと曲紹介
🍩2回目「EEPROMに楽譜を記録♬ "レコード盤作り"
🍩3回目「EEPROMから楽譜を読み取って演奏するプログラム
🍩4回目「トラブル1🐉 ArduinoのRAMが足りない..p_q..💦
🍩5回目「トラブル2🦇 tone関数ではすべての音符を鳴らせない」(この記事)

次回>6回目もトラブル続き!? 後半から曲が超音痴に🐸 乞うご期待。



<お買い物コーナー>
🌟「銀河鉄道の夜」楽譜   🌟 CD        🌟 DVD
        
加賀谷玲さんの音楽も、KAGAYAさんの映像も、どちらも素敵です🌠

1つめのトラブル🐉 ArduinoのRAMが足りないエラー..p_q..💦

f:id:miraluna:20200610180017j:plain:w200 Mira

女の子も自作電子工作したい🦋
ArduinoでEEPROM電子オルゴールの作製🎹


<第4回>
「1つめのトラブル🐉
  Arduino(みつは)のRAMが足りない ..p_q..💦」



目次
   🍩 Tiny蓄音機レコード仕様を作ろう 🍩
🍩1回目「 構想とEEPROMについてと曲紹介
🍩2回目「EEPROMに楽譜を記録♬ "レコード盤作り"
🍩3回目「EEPROMから楽譜を読み取って演奏するプログラム
🍩4回目「トラブル1🐉 ArduinoのRAMが足りない..p_q..💦」(この記事)
🍩5回目「[トラブル2🦇 tone関数ではすべての音符を鳴らせない


🍩「Tiny蓄音機レコード仕様」
f:id:miraluna:20210926165439j:plain


前回まででEEPROMをレコード盤に、みつは(ATmega328P)を蓄音機にした電子オルゴールの実験は成功しました。EEPROMに短い曲を入れて、Arduinoから独立させたみつはで再生できた。
   ↓ 前回の記事
miraluna.hatenablog.com

ライブラリ📚を作る>
さあ、ここからが大仕事。
加賀谷玲さんの『OneNight』の曲を、まるまる音符データに替えて、EEPROMに保存する計画なの。
つまりとってもたくさんの音符データをプログラムに入力しなくちゃいけない。
音符のデータは「音階」と「長さ」。長さのほうは 4分音符なら「4」、16分音符なら「16」と打てばいいのでそれほど大変じゃない。でも音階のほうは、ドなら131、ミなら165、1オクターブ高いミなら330、というように周波数の数字をプログラムするの。最終的に音符の総数は715音符になったので、これを全て手入力していくのはなかなか大変。
そこで🌟 手間を省く工夫をしましょう😊
ミラ工夫 🍰 f:id:miraluna:20210106121720j:plain:w60#defineを使ってライブラリを作る」

📚 ライブラリのようなもの
f:id:miraluna:20211005185922j:plain:left:w270 Arduino IDEでスケッチ(プログラム)を書くとき、左の写真のピンクの丸のところからタブの設定ができます。クリックして「新しいタブを開く」を選ぶと、真っ白な新しいタブが開かれます。ここに定義づけした予約語を登録できます。
どういうことかというと、ある特定の文字列に値をあらかじめ代入することができるの。例えば「du」という名前の文字列を特別扱いして(予約語)、その文字列には「262」という値が入りますよという取り決め(定義づけ)をすることができる。するとプログラム上で「du」と書けば、それは「262」を意味する
                   ことになるというわけ。便利でしょ?

書き方は

#define  du  262

です。

音階の周波数が全部頭に入っていれば大きな違いはないかもしれないけど、私の場合は周波数表をネットで調べて、それを見ながら「え~と、ファのシャープは...っと。ん~~っと。あっ、185ね。」みたいな感じだからすっごく大変。だから「ファのシャープ」は「fh」と自分で名前を決めちゃえば、どんどん書けちゃう。ちなみに「f」が「ファ」で、「h」はhalfの意味で「シャープ」というふうに決めました。


📚 定義づけ
f:id:miraluna:20211005185926j:plain

オレンジの四角で囲まれた文字列が予約語。私が名付けた"特定の文字列"です。その右の数字が周波数。さらにその右はただのメモ。プログラムに影響しないようにコメントアウト(スラッシュスラッシュ)されています。


これで予約語の辞典のようなもの(ライブラリのようなもの)ができました。
でもこのままではだめなの。この辞典をプログラムに持たせなくては、プログラムは辞典に載っている予約語を無視しちゃう。そこでプログラムにこの辞典を持たせる一文を書き加えます。
タブに書かれている文字が辞典の名前。ここでは「tone_def.h」ね。プログラム上にはその名前を含む

#include "tone_def.h"

という一文をプログラムの初めのほうに書き加えます。
これで辞典に載っている自作のルールは効力を発揮して、「du」は「262」を意味するようになりました(∂, <🎀y


楽譜プログラム♪の作成>
いよいよ楽譜プログラムの作成です。
『あこがれ』のプログラムを書いたときのように、EEPROMへ書き込みを行うプログラムに『OneNight』の楽譜データを入力していきます。
  → 『あこがれ』の楽譜プログラム

参考にさせていただいた加賀谷玲さんの公式Youtubeチャンネルの『OneNight』。楽譜付きなので"絶対音感"どころか"そこそこ音感"も"まあまあ音感"もない私でも楽譜データを入れられました。ありがとうございます😊

www.youtube.com


そしてなんと......。
半年以上かかりました🐥
f:id:miraluna:20210106121657j:plain:w80 え゛~~🐤

まぁ、私がさぼってたのがいけないんだけどね。  長かったなぁ。
f:id:miraluna:20191015184121j:plain:w100:right
でもついについに、この雨ばかりだった夏休みに楽譜データの入力がすべて終わりました。


EEPROMへの書き込み>
それではArduinoとEEPROMを配線して(→ 配線図)、Arduinoに楽譜データ書込み用プログラムを書き込んでEEPROMに楽譜データを書き込みましょう(ややこしぃ)。

🍎 書込み通信開始 🍎
f:id:miraluna:20211005185929j:plain

ん? あれ?
エラーが出てる......。

なになに?
"最大2048バイトのRAMのうち、グローバル変数が2888バイト(141%)を使っていて、"......。
つまりこれってArduinoのRAMが足りないってことね。

RAMとはプログラムを動かす上で一時的に記憶しておくメモリのこと。ここでの楽譜データはRAMを使うことになるデータなので、それがあまりにも多すぎたみたい。Arduino UNOのブレインである"みつは"ことATmega328Pは2kB、つまり2048バイトのRAMを持っている。でも今回の楽譜データプログラムを走らせるには2888バイトのRAMが必要になる。つまりみつはじゃ収まりきらない量の楽譜データだったわけ。
さぁ、どうしよ~🐣


Tea Time
f:id:miraluna:20210302183413j:plain:w300 お茶して考えよ☕
   Mira & Luna's nursery lab


アイディアトラブルをやっつけよぅ👊>
困ったら、お茶したり散歩したりおしゃべりしたりしてくつろぎましょう。きっとそのうちいい考えが浮かんでくるはず。

💡ほら! ひらめいた💡
Arduinoにひといきにデータを入れられなくたって、結果としてEEPROMに全部入ればそれでいい。
バケツを使ってプールの水をいっぱいにするとき、バケツ一杯分でプールをいっぱいにできなくたって問題には感じないでしょ? だって、何回分も汲めばいいんだもん。それと同じよ。Arduinoに楽譜データを小分けにして入れて、数回にわたってEEPROMにデータを入れればいい。

そういう理屈で楽譜データである曲をA~Eのパートに分けて、少しずつ(プログラムが2kB未満ずつ)EEPROMに書き込んでいこうと思います。

「待てば恵みの雨が降る」Mira


f:id:miraluna:20180521193649j:plain:w200 ミラでした。



目次
   🍩 Tiny蓄音機レコード仕様を作ろう 🍩
🍩1回目「 構想とEEPROMについてと曲紹介
🍩2回目「EEPROMに楽譜を記録♬ "レコード盤作り"
🍩3回目「EEPROMから楽譜を読み取って演奏するプログラム
🍩4回目「トラブル1🐉 ArduinoのRAMが足りない..p_q..💦」(この記事)
🍩5回目「[トラブル2🦇 tone関数ではすべての音符を鳴らせない

手作りGPSが動作しなくなっちゃったΣ(∂。∂🎀 でも大丈夫🍎 はんだごて片手にすぐ修理します🔧

f:id:miraluna:20210920081120j:plain:w200 Mira

自作したGPSロガー🧭が通電しなくなったので、原因を調査してリペアします。



🐇 小箱
f:id:miraluna:20211002183528j:plain

コルク絵が貼られた木造りの可愛い小箱。
お気に入り🐤


◆ 箱の中
f:id:miraluna:20211002183554j:plain

小箱を開けるとメカニカルな中身が。
これは私が何年か前に作ったGPSロガーです。
ルナとカタリがヨーロッパの自転車旅に持っていったの。

GPSロガーの作り方の記事  の目次ページ
miraluna.hatenablog.com
↓ 自転車旅の目次ページへのリンクがある  ルナの部屋
miraluna.hatenablog.com


◆ 「うん」とも「すん」とも
f:id:miraluna:20211002183620j:plain

GPSでログを取ろうとして電源を入れたらロガーが動作しない。GPS受信機[AE-GYSFDMAXB]のLEDが光って液晶ディスプレイに文字が表示されるはずなんだけど、どちらも反応しない。どうやら通電していないみたい。ということは、電源周りが断線している可能性が大きいわね。


◆ 小箱の中の本体
f:id:miraluna:20211002183705j:plain

原因を調べるため、箱から中身を取り出しました。
写真ではディスプレイはまだ接続してあるけど、電源ボックス、GPS受信機、液晶ディスプレイ、みつは(ATmega328P)は取り外すことができるようにしてあります。


◆ 小箱の底
f:id:miraluna:20211002183644j:plain

普段は見られない小箱の底は茶色のギンガムチェック🍅

テスターを使って通電状況を調べてみると、電源から基板に配線した導線のどこかで途切れているみたい。
もっと詳しく見てみましょう。


◆ 電源周りを調査
f:id:miraluna:20211002183724j:plain

この ↑ 電源につなぐハーネスが怪しいと思うの。


◆ 断線箇所
f:id:miraluna:20211002183924j:plain

よく調べていくと、断線している個所が見つかりました🐔 やっぱりね。きっとはんだ付けしたところだと思っていたの。だってGPSロガーを作ったときは電子工作を始めたばかりで、はんだ付けがとってもへたっぴな初心者だったから🔰 今は......まぁ、今でも相変わらずへたっぴだけど、ちょっとはましになってると思う。たぶん......。


◆ 導線を外す
f:id:miraluna:20211002183745j:plain

とりあえずハーネスを外しました。
さて、どうやって修理しよう。


◆ 新しく作り直す?
f:id:miraluna:20211002183804j:plain

この電源用ハーネス、新しく作り直さなくてもそのまま使えるかな? なんだか使えそうでしょ? きっと使えるよね?(横着者)


◆ 使いました🐈
f:id:miraluna:20211002183832j:plain

はんだで再接続完了(∂. ∂🎀y
ハーネスは結局再利用。今までずっと問題なく動作してたんだから、いいよね🐫


◆ 動作確認
f:id:miraluna:20211002183852j:plain

電源を入れて動作確認をすると、GPSロガーの赤いLEDが点灯。液晶ディスプレイには「SDカードが入ってないですよ~」の表示が現れました。
               f:id:miraluna:20191015184112j:plain:w50 やったね🍰
◆ 修理完了
f:id:miraluna:20211002183912j:plain

これにて修理完了です。
ルナたちが自転車旅で使った後も、日常のお出かけやカタリ(たまに私も)の登山に持っていったりして頻繁に使ってきた。自転車の振動にも、カタリの下り(岩から岩へ跳ぶように下るんですよ)の衝撃にも耐え続けて、むしろよく今まで壊れなかったなぁって思う。もし壊れてもすぐにまた修理してあげるから、これからもよろしくね🍎


GPSロガーの作製と修理はミラでした。
f:id:miraluna:20180105114819j:plain:w300 Mira
miraluna.hatenablog.com


いいなぁ、ガーミン(GARMIN)のGPS。高くて買えないけど。