Arduinoでクルマのエンジンが動く？　オープンソースECU Speeduino (4)回転数の確認

#クランク角センサ信号を入力し、回転数を確認する
[前回記事](https://qiita.com/covao/items/af936d3aa246510ef081)

クランク角センサの疑似信号を用いて、Speeduinoでエンジン回転を認識するか確認します。

##用意するもの
- Arduino Mega  
- Arduino Uno、または、互換ボード

##SpeeduinoのI/Oポート確認
[util.ino](https://github.com/noisymime/speeduino/blob/201810/speeduino/utils.ino)に定義されています。

デフォルトのI/Oポートは、以下のように設定されています。

- pin 19:クランク角センサ
- pin 18:カムセンサ(2ndクランク角センサ)

```ruby:utils.ino

    case 3:
      //Pin mappings as per the v0.4 shield
      pinInjector1 = 8; //Output pin injector 1 is on
      pinInjector2 = 9; //Output pin injector 2 is on
      pinInjector3 = 10; //Output pin injector 3 is on
      pinInjector4 = 11; //Output pin injector 4 is on
      pinInjector5 = 12; //Output pin injector 5 is on
      pinInjector6 = 50; //CAUTION: Uses the same as Coil 4 below. 
      pinCoil1 = 40; //Pin for coil 1
      pinCoil2 = 38; //Pin for coil 2
      pinCoil3 = 52; //Pin for coil 3
      pinCoil4 = 50; //Pin for coil 4
      pinCoil5 = 34; //Pin for coil 5 PLACEHOLDER value for now
      pinTrigger = 19; //The CAS pin
      pinTrigger2 = 18; //The Cam Sensor pin
      pinTPS = A2;//TPS input pin
      pinMAP = A3; //MAP sensor pin
      pinIAT = A0; //IAT sensor pin
      pinCLT = A1; //CLS sensor pin
      pinO2 = A8; //O2 Sensor pin
      pinBat = A4; //Battery reference voltage pin
      pinDisplayReset = 48; // OLED reset pin
      pinTachOut = 49; //Tacho output pin  (Goes to ULN2803)
      pinIdle1 = 5; //Single wire idle control
      pinIdle2 = 6; //2 wire idle control
      pinBoost = 7; //Boost control
      pinVVT_1 = 4; //Default VVT output
      pinFuelPump = 45; //Fuel pump output  (Goes to ULN2803)
      pinStepperDir = 16; //Direction pin  for DRV8825 driver
      pinStepperStep = 17; //Step pin for DRV8825 driver
      pinStepperEnable = 24; //Enable pin for DRV8825
      pinFan = 47; //Pin for the fan output (Goes to ULN2803)
      pinLaunch = 51; //Can be overwritten below
      pinFlex = 2; // Flex sensor (Must be external interrupt enabled)
      pinResetControl = 43; //Reset control output

```
##結線
Arduino Mega(Speeduino)とArduino(Ardu-Stim)を以下のように結線します。

| Speeduino    | Ardu-Stim   |
|:-------------|:------------|
| 19:Crank     |  8:Crank    |
| 18:Cam       |  9:Cam      |
| GND          |  GND        |

##Arduino Mega(Speeduino)とArduino(Ardu-Stim)をPCに接続
![IMG_1063.JPG](https://qiita-image-store.s3.amazonaws.com/0/329764/22f19748-d11c-1ebb-2dd7-725f8dc3beb2.jpeg)

##TunerStudio
1. TunerStudioを起動し、前回作成したProjectを開く
2. Arduino Mega(Speeduino)のシリアルポートを設定し、通信を接続
3. File>Load Tuneより、reference/Base Tunes/Speeduino base tune.msqを開き、デフォルト設定データを書き込む

##Device Druid
1. Device Druidを起動
2. Arduino (Ardu-Stim)のシリアルポートを設定し、通信を接続
3. Wheel Options>Choose wheelsで25を入力
4. Topメニューに戻り、Set Fixed RPMで回転数を入力（例えば1500)

##TunerStudioでの確認
設定した回転数がメーターに表示されます。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/329764/f916dddc-756c-d60e-a9b3-4a410cdb1dde.png)
回転数をスイープさせてみます。:smiling_imp:
1. Device DruidのSet Swept RPMで500,3000,1000を入力
2. TunerStudioのTuning>Real-Time Displayを開く

回転数の変化をプロッターで確認できます。
500<->3000 RPM（1000rpm/sec)

![RealTime.gif](https://qiita-image-store.s3.amazonaws.com/0/329764/9034e06b-7cf3-1f8e-e634-aaa153530788.gif)



##最後に
クランク角センサの信号を入力し、Speeduinoで回転数の確認ができました。:smiley:
[次回](https://qiita.com/covao/items/259e25114d9f493147ea)は、インジェクターとイグニッションの出力信号を確認します。