小学生からのフルコン作成入門


     
 
車に興味をもち自分で整備を始めた初心者が作るサイト。
The site that I am interested in a car, and the beginner who began preparation makes with oneself
初心者が悩むようなことを自分の経験で記載していきます。
ど素人私一人で作業を行っています。プロの助言と本を参考にして何処まで出来るか!
皆さんのレストアに役立てばと思い写真を多く使用して説明しております。皆さんもはまってみますか??
※サイトに書かれている作業による事故等の責任は取れません。個人の責任で作業をしてください。
I do not get responsibility of accidents by work written in a site.Please work by personal responsibility.

   

 

 





 
  準備編
TOPページ > コンピューターROMチューン入門 > マイコン制御方法
概要:
マイコン制御の作成。プログラムの作成。随時更新中。
ペリを制御するサイトは知る限りこのサイトしかない!またプロ方々の記事もないので、試行錯誤して作成しているので、結果的に嘘になってしまったらごめんなさい。素人の趣味レベルの電気知識と素人プログラマーだと思って読んでいただければと思います。。
 
コンパイルエラーからの離脱!:

今日こそ朝勉でクリアするぞい!とプログラムソフトを起動。
メニューから「スケッチ」−「検証・コンパイル」を選択します。


本日も大量エラー。
これらを何をして回避したのか代表的なエラーを抜粋して具体的に掲載します。

ちなみにプログラム名(バージョン)は Arduino: 1.7.6 (Windows 8.1)
マイコンボードは:"Arduino Uno"の環境で作成。
プログラム名:Peri01→Peri02と更新しました。このことを頭に入れて以下のエラーを見て頂ければと思います。

はじめのころわからずプログラムをきれいにスペースキーを使って並べた。
それがそもそもの間違い。
そんなところから始まります。

◆エラー1:
 Peri02.ino:99:4: error: stray '\' in program  ⇔ これって全角が入っているよ!という意味

 ※ちなみに、Peri02とはプログラム名で99:4は行数を表しているようです。

◆対応1:
 私の場合初心者なもんで ; の後でも全角空白がだめなのを知らなかったので、サクラエディターで起動して探して削除。
 その後大量に修正する羽目に。
 以下はサクラエディターでプログラムを開くと全角が四角形で表示されているので、すぐ探せます。
 //のあとはメモ書きなので全角OKなんですよ。
 


◆エラー2:
 Peri01.ino:50:5: error: 'X1' was not declared in this scope ⇔ 「X1はスコープ内に宣言されてない」という意味。

エラー先プログラムの原文

 if (IG12 & IG1 == HIGH) {
 newtime = micros();
 oldtime = newtime;
 newtime = micros();
 X1 = oldtime - newtime;
 oldtime = newtime;

◆対応2:
 何が問題かというと以下のプログラムで、実はX1が何なのか宣言していなかった。
 具体的には、事前にX1は何か?をプログラムに教えてあげるんだけど。
 ほかのoldtimeとかはしてあったんだけど、X1だけ抜けていたというわけ。
 実は、こんな簡単なことが私は先に進まない原因だった。
 知らないものは知らない。でも時間をかければ解決できる。素人だから関係ないですからねぇ。

 float X1 = 0;      //X1は差分計算用代入用初期化

 と宣言してエラー回避出来ました。


◆エラー3:
 Peri01.ino:81:7: error: 'elase' was not declared in this scope ⇔ 「elaseはスコープ内に宣言されてない」という意味。

エラー先プログラムの原文

 elase{
 int threshold1 = 409;
 if (ValW >= threshold1)
 delaytime = 1.05;
}

◆対応3:
 超恥ずかしースペルミス。
 英語の成績が「2」常連だったことがバレる。
 
 elase → else

 これって、if 文のオプション的な存在なんですが、
 スペルミスしたので、プログラムからするとX1と同様これ何?となったわけです。

◆エラー4:
 Peri01.ino:22:1: error: stray '\' in program ⇔ またまた全角!!

エラー先プログラムの原文

 float X1;       //X1は差分計算用代入用

◆対応4:
 修正時にまた全角入れていた。 ; と // の間を削除!
 コメントを読みやすくスペースを入れたのが失敗。
 寂しー限りです。

◆エラー5:
 Peri01.ino:319:22: error: 'IJBA860s' was not declared in this scope

エラー先プログラムの原文

 digitalWrite(IJB550, HIGH);
 digitalWrite(IJB860m, HIGH);
 digitalWrite(IJBA860s, HIGH);

◆対応5:
 これは簡単!というか設計書が頭の中にしかない私にしか修正できないエラー。
 IJBA860sをIJB860s

◆エラー6:
 Peri01.ino: In function 'void loop()':
 Peri01.ino:334:3: error: expected '}' at end of input

◆対応6:
 実はプログラムを作成する際プログラムのルールで{ }で作るのですが、それが足りないというエラー。
 最初は紙に印刷して蛍光ペンで探していたのですが、完璧と思ったがこれが最後のエラー。
 そしたら、奥さん便利なものがあるじゃない。
 メニューで「ツール」-「自動整形」を選んだら、最後の行に } が一番左にない。
 そうペアになって自動で段落をつけて表示されるじゃないですか?

 

 だったら、早くいじって気が付けばよかった。
 大量のプログラムを スペースキー でひたすら揃えていた。
 素人て怖い。採算無視の暴挙ですね。


最後に検証・コンパイルを選んだら。以下のメッセージが出ました。



スケッチが プログラムストレージ領域の 5,950バイト (18%) を使用しています。最大は 32,256バイト です。
グローバル変数が 57バイト (2%) の 動的メモリを使用しており、ローカル変数に 1,991 バイトが残っています。最高は 2,048バイトですArduino: 1.7.6 (Windows 8.1), ボード:"Arduino Uno"

そうです。合格証書です。

ただし、あくまでも構文が正しいだけでプログラムが正しく動くかは別。
車の車検と同じで、重要な部分を調べただけで、故障はしなくなったわけではない。

プログラム等は公開しますがもう少し待ってくださいね。
このあと、テストしてとりあえず動くようになったら公開して、Arduino に具体的にインストールする方法を公開します。

電源回路を作成してエンジンノイズから無事動作するのか?
水温センサーの読み取りテスト、点火と回転数計算のテストなど。
実際の中古車から取ったセンサーの性能を調べてプログラムの修正をする予定です。

まずは、水温センサーからですかねぇ。
O2センサーはどうやろうかな?実車で装着してテストですかねぇ。


 
 
   
 
このサイトで公開している文章、画像の全ては私に著作権があります。
無断使用、無断転写はご遠慮くださいませ。