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

Dependents:   Hybrid_main_FirstEdtion HYBRYD2018_IZU_ROCKET

Committer:
Gaku0606
Date:
Mon Feb 20 08:09:23 2017 +0000
Revision:
1:c39bb138b40c
Parent:
0:55796b0c5005
Child:
2:17450e1cc2e8
?

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 0:55796b0c5005 11 Nicrom(PinName _pin);
Gaku0606 0:55796b0c5005 12 private:
Gaku0606 0:55796b0c5005 13 Timeout stopTimer;
Gaku0606 0:55796b0c5005 14 Nicrom* _nic;
Gaku0606 0:55796b0c5005 15 DigitalOut _nicrom;
Gaku0606 0:55796b0c5005 16 PinName pinBango;
Gaku0606 0:55796b0c5005 17 public:
Gaku0606 0:55796b0c5005 18 int status;
Gaku0606 0:55796b0c5005 19 void fire();
Gaku0606 0:55796b0c5005 20 void stop();
Gaku0606 0:55796b0c5005 21 void autoStop(float t);
Gaku0606 0:55796b0c5005 22 };
Gaku0606 0:55796b0c5005 23
Gaku0606 0:55796b0c5005 24 Nicrom::Nicrom(PinName _pin) : _nicrom(_pin){
Gaku0606 0:55796b0c5005 25 _nic = this;
Gaku0606 0:55796b0c5005 26 pinBango = _pin;
Gaku0606 0:55796b0c5005 27 _nicrom = 0;
Gaku0606 0:55796b0c5005 28 status = 0;
Gaku0606 0:55796b0c5005 29 }
Gaku0606 0:55796b0c5005 30
Gaku0606 0:55796b0c5005 31 /**
Gaku0606 0:55796b0c5005 32 @bref ニクロム線を通電します.
Gaku0606 0:55796b0c5005 33 @note 当然ですが,あくまでトリガーとして利用してください.
Gaku0606 0:55796b0c5005 34 */
Gaku0606 0:55796b0c5005 35 void Nicrom::fire(){
Gaku0606 0:55796b0c5005 36 _nicrom = 1;
Gaku0606 0:55796b0c5005 37 status = 1;
Gaku0606 0:55796b0c5005 38 printf("fire\r\n");
Gaku0606 0:55796b0c5005 39 }
Gaku0606 0:55796b0c5005 40
Gaku0606 0:55796b0c5005 41 /**
Gaku0606 0:55796b0c5005 42 @bref ニクロム線の電流を止めます.
Gaku0606 0:55796b0c5005 43 @note MOSFETの種類によっては漏れ電流などで少し流れる場合があります.
Gaku0606 0:55796b0c5005 44 */
Gaku0606 0:55796b0c5005 45 void Nicrom::stop(){
Gaku0606 0:55796b0c5005 46 _nicrom = 0;
Gaku0606 0:55796b0c5005 47 status = 0;
Gaku0606 0:55796b0c5005 48 printf("stop\r\n");
Gaku0606 0:55796b0c5005 49 }
Gaku0606 0:55796b0c5005 50
Gaku0606 0:55796b0c5005 51 /**
Gaku0606 0:55796b0c5005 52 @bref 指定した時間だけ,電流を流し,時間が来たら止めます.
Gaku0606 0:55796b0c5005 53 @note 連続で何度も実行しないようにお願いします.
Gaku0606 0:55796b0c5005 54 */
Gaku0606 0:55796b0c5005 55 void Nicrom::autoStop(float t){
Gaku0606 0:55796b0c5005 56 fire();
Gaku0606 0:55796b0c5005 57 stopTimer.attach(_nic, &Nicrom::stop, t);
Gaku0606 0:55796b0c5005 58 }
Gaku0606 0:55796b0c5005 59 #endif