ニクロム線に電流を流したり流さなかったりするライブラリです.

Dependents:   Hybrid_main_FirstEdtion HYBRYD2018_IZU_ROCKET

Committer:
Gaku0606
Date:
Mon Feb 20 15:13:12 2017 +0000
Revision:
2:17450e1cc2e8
Parent:
1:c39bb138b40c
?

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Gaku0606 0:55796b0c5005 1 #ifndef _NICROM_HPP_
Gaku0606 0:55796b0c5005 2 #define _NICROM_HPP_
Gaku0606 0:55796b0c5005 3
Gaku0606 0:55796b0c5005 4 /**
Gaku0606 0:55796b0c5005 5 @author Gaku MATSUMOTO
Gaku0606 0:55796b0c5005 6 @bref ニクロム線に電流を流したり流さなかったりするライブラリです.
Gaku0606 0:55796b0c5005 7 @note オブジェクト指向の真似事としてクラスにしてみました.
Gaku0606 0:55796b0c5005 8 */
Gaku0606 0:55796b0c5005 9 class Nicrom{
Gaku0606 0:55796b0c5005 10 public:
Gaku0606 2:17450e1cc2e8 11 /**
Gaku0606 2:17450e1cc2e8 12 * @bref ニクロム線クラスのインスタンス
Gaku0606 2:17450e1cc2e8 13 * @param _pin ニクロム線に電流を流すトリガーとなるピン番号
Gaku0606 2:17450e1cc2e8 14 */
Gaku0606 0:55796b0c5005 15 Nicrom(PinName _pin);
Gaku0606 0:55796b0c5005 16 private:
Gaku0606 0:55796b0c5005 17 Timeout stopTimer;
Gaku0606 0:55796b0c5005 18 Nicrom* _nic;
Gaku0606 0:55796b0c5005 19 DigitalOut _nicrom;
Gaku0606 0:55796b0c5005 20 PinName pinBango;
Gaku0606 0:55796b0c5005 21 public:
Gaku0606 0:55796b0c5005 22 int status;
Gaku0606 0:55796b0c5005 23 void fire();
Gaku0606 0:55796b0c5005 24 void stop();
Gaku0606 0:55796b0c5005 25 void autoStop(float t);
Gaku0606 0:55796b0c5005 26 };
Gaku0606 0:55796b0c5005 27
Gaku0606 0:55796b0c5005 28 Nicrom::Nicrom(PinName _pin) : _nicrom(_pin){
Gaku0606 0:55796b0c5005 29 _nic = this;
Gaku0606 0:55796b0c5005 30 pinBango = _pin;
Gaku0606 0:55796b0c5005 31 _nicrom = 0;
Gaku0606 0:55796b0c5005 32 status = 0;
Gaku0606 0:55796b0c5005 33 }
Gaku0606 0:55796b0c5005 34
Gaku0606 0:55796b0c5005 35 /**
Gaku0606 0:55796b0c5005 36 @bref ニクロム線を通電します.
Gaku0606 0:55796b0c5005 37 @note 当然ですが,あくまでトリガーとして利用してください.
Gaku0606 0:55796b0c5005 38 */
Gaku0606 0:55796b0c5005 39 void Nicrom::fire(){
Gaku0606 0:55796b0c5005 40 _nicrom = 1;
Gaku0606 0:55796b0c5005 41 status = 1;
Gaku0606 0:55796b0c5005 42 printf("fire\r\n");
Gaku0606 0:55796b0c5005 43 }
Gaku0606 0:55796b0c5005 44
Gaku0606 0:55796b0c5005 45 /**
Gaku0606 0:55796b0c5005 46 @bref ニクロム線の電流を止めます.
Gaku0606 0:55796b0c5005 47 @note MOSFETの種類によっては漏れ電流などで少し流れる場合があります.
Gaku0606 0:55796b0c5005 48 */
Gaku0606 0:55796b0c5005 49 void Nicrom::stop(){
Gaku0606 0:55796b0c5005 50 _nicrom = 0;
Gaku0606 0:55796b0c5005 51 status = 0;
Gaku0606 0:55796b0c5005 52 printf("stop\r\n");
Gaku0606 0:55796b0c5005 53 }
Gaku0606 0:55796b0c5005 54
Gaku0606 0:55796b0c5005 55 /**
Gaku0606 0:55796b0c5005 56 @bref 指定した時間だけ,電流を流し,時間が来たら止めます.
Gaku0606 0:55796b0c5005 57 @note 連続で何度も実行しないようにお願いします.
Gaku0606 0:55796b0c5005 58 */
Gaku0606 0:55796b0c5005 59 void Nicrom::autoStop(float t){
Gaku0606 0:55796b0c5005 60 fire();
Gaku0606 0:55796b0c5005 61 stopTimer.attach(_nic, &Nicrom::stop, t);
Gaku0606 0:55796b0c5005 62 }
Gaku0606 0:55796b0c5005 63 #endif