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

Dependents:   Hybrid_main_FirstEdtion HYBRYD2018_IZU_ROCKET

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