111
Dependencies: BufferedSerial FastPWM mbed
Revision 0:f3108add3d98, committed 2016-04-12
- Comitter:
- sbh9428
- Date:
- Tue Apr 12 06:52:10 2016 +0000
- Commit message:
- 11
Changed in this revision
diff -r 000000000000 -r f3108add3d98 BufferedSerial.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/BufferedSerial.lib Tue Apr 12 06:52:10 2016 +0000 @@ -0,0 +1,1 @@ +http://developer.mbed.org/users/sam_grove/code/BufferedSerial/#a0d37088b405
diff -r 000000000000 -r f3108add3d98 FastPWM.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/FastPWM.lib Tue Apr 12 06:52:10 2016 +0000 @@ -0,0 +1,1 @@ +http://developer.mbed.org/users/Sissors/code/FastPWM/#87e38b846651
diff -r 000000000000 -r f3108add3d98 commandt.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/commandt.cpp Tue Apr 12 06:52:10 2016 +0000 @@ -0,0 +1,146 @@ +/* + * commandt.cpp + * + * Created on: 2016. 2. 19. + * Author: sbh9428 + */ + +#include "commandt.h" + +command_t::command_t() { + // TODO Auto-generated constructor stub + +} + +command_t::command_t(BufferedSerial* _pc, control_t* _control) +{ + time=0; + count=0; + control=_control; + pc=_pc; +} + +command_t::~command_t() { + // TODO Auto-generated destructor stub +} + +void command_t::clear_data() +{ + for(int i=0;i<10;i++) + { + data[i]=0; + } +} +void command_t::parse() +{ + switch(data[0]) + { + case 's': + switch(data[1]) + { + case 'm': + control->setMode(data[2]-'0'); + printf("set mode %d\n", data[2]-'0'); + break; + case 'p': + control->setP(asci_to_bin(data+2)); + printf("set P %f1.5\n", asci_to_bin(data+2)); + break; + case 'i': + control->setI(asci_to_bin(data+2)); + printf("set I %f\n", asci_to_bin(data+2)); + break; + case 'd': + control->setD(asci_to_bin(data+2)); + printf("set D %f\n", asci_to_bin(data+2)); + break; + case 'o': + control->setPower(asci_to_bin(data+2)); + printf("set I value %f\n", asci_to_bin(data+2)); + break; + case 'a': + control->setRatio(asci_to_bin(data+2)); + printf("set Ratio %f\n", asci_to_bin(data+2)); + break; + } + break; + case 'g': + switch(data[1]) + { + case 'm': + printf("mode is %d\n", control->getMode()); + break; + case 'p': + printf("P is %f\n", control->getP()); + break; + case 'i': + printf("I is %f\n", control->getI()); + break; + case 'd': + printf("D is %f\n", control->getD()); + break; + case 'o': + printf("power is %f\n", control->getPower()); + break; + case 'a': + printf("ratio is %f\n", control->getRatio()); + break; + } + + break; + dafault: + pc->printf("command error"); + } + pc->printf("\n"); + count=0; +} + +void command_t::get_data() +{ + data [count]=pc->getc(); + + if(data [count]=='f') + parse(); + else + count++; + + if(count>9) + { + count=0; + pc->printf("command error\n"); + } +} + +double command_t::asci_to_bin(int *start) +{ + double _data=0; + int current=0; + + double nth=1; //�ڸ��� + int mode=0; + int sign=1; + + if(*start=='-') + { + current++; + sign=-1; + } + while(*(start+current)!='f'&&*(start+current)!='.') + { + _data*=10; + _data+=*(start+current)-'0'; + + current++; + } + if(*(start+current)=='.') + { + current++; + while(*(start+current)!='f') + { + nth/=10; + _data+=nth*(*(start+current)-'0'); + current++; + } + } + return sign*_data; +}
diff -r 000000000000 -r f3108add3d98 commandt.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/commandt.h Tue Apr 12 06:52:10 2016 +0000 @@ -0,0 +1,36 @@ +/* + * commandt.h + * + * Created on: 2016. 2. 19. + * Author: sbh9428 + */ + +#ifndef COMMANDT_H_ +#define COMMANDT_H_ + +#include "BufferedSerial.h" +#include "controlt.h" + +class command_t { +public: + void clear_data(); + void parse(); + void get_data(); + double asci_to_bin(int *start); + + command_t(); + command_t(BufferedSerial* _pc, control_t* _control); + virtual ~command_t(); +private: + int count; + int data[30]; + int time; + + BufferedSerial *pc; + control_t *control; +}; + + +#endif /* COMMANDT_H_ */ + +
diff -r 000000000000 -r f3108add3d98 controlt.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/controlt.cpp Tue Apr 12 06:52:10 2016 +0000 @@ -0,0 +1,108 @@ +/* + * controlt.cpp + * + * Created on: 2016. 2. 19. + * Author: sbh9428 + */ + +#include "controlt.h" + +control_t::control_t() { + // TODO Auto-generated constructor stub + +} + +control_t::control_t(pump_t *_dry, pump_t *_wet, humSensor_t *humSensor, BufferedSerial *_pc) +{ + dry=_dry; + wet=_wet; + + pc=_pc; + + mode=0; +} + +control_t::~control_t() { + // TODO Auto-generated destructor stub +} + +void control_t::setP(float _P) +{ + P=_P; +} + +void control_t::setI(float _I) +{ + I=_I; +} + +void control_t::setD(float _D) +{ + D=_D; +} + +void control_t::setMode(int _mode) +{ + mode=_mode; +} + +void control_t::setPower(float _power) +{ + power=_power; +} + +void control_t::setRatio(float _ratio) +{ + ratio=_ratio; +} + +float control_t::getP() +{ + return P; +} + +float control_t::getI() +{ + return I; +} + +float control_t::getD() +{ + return D; +} + +int control_t::getMode() +{ + return D; +} + +float control_t::getPower() +{ + return power; +} +float control_t::getRatio() +{ + return ratio; +} + +void control_t::refreshPWM() +{ + humidity=humSensor->getHumidity(); + switch(mode) + { + case 0: + dry->setPWM(0); + wet->setPWM(0); + break; + case 1: + dryValue=power*(1-ratio); + wetValue=power*ratio; + dry->setPWM(dryValue); + wet->setPWM(wetValue); + break; + + + } + printf("%d %1.3f %1.3f\n", mode, dryValue, wetValue); +} +
diff -r 000000000000 -r f3108add3d98 controlt.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/controlt.h Tue Apr 12 06:52:10 2016 +0000 @@ -0,0 +1,70 @@ +/* + * controlt.h + * + * Created on: 2016. 2. 19. + * Author: sbh9428 + */ + +#ifndef CONTROLT_H_ +#define CONTROLT_H_ + +#include "BufferedSerial.h" +#include "humsensort.h" +#include "pumpt.h" + +class control_t { +public: + void setP(float _P); + void setI(float _I); + void setD(float _D); + + void setMode(int _mode); + + void setPower(float _power); + void setRatio(float _ratio); + + float getP(); + float getI(); + float getD(); + + int getMode(); + + float getPower(); + float getRatio(); + + void refreshPWM(); + + float calculatePID(); + + control_t(); + control_t(pump_t *_dry, pump_t *_wet, humSensor_t *_humSensor, BufferedSerial *_pc); + virtual ~control_t(); +private: + float P; + float I; + float D; + + int mode; + + float power; + float ratio; + + float humidity; + + float dryValue; + float wetValue; + + humSensor_t *humSensor; + + pump_t *dry; + pump_t *wet; + + Ticker refresh; + + BufferedSerial *pc; +}; + +#endif /* CONTROLT_H_ */ + + +
diff -r 000000000000 -r f3108add3d98 humsensort.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/humsensort.cpp Tue Apr 12 06:52:10 2016 +0000 @@ -0,0 +1,28 @@ +/* + * tempsensott.cpp + * + * Created on: 2016. 2. 19. + * Author: sbh9428 + */ + +#include "humsensort.h" + +humSensor_t::humSensor_t() { + // TODO Auto-generated constructor stub + +} + +humSensor_t::humSensor_t(AnalogIn* _humiditySensor) +{ + humiditySensor=_humiditySensor; +} + + +humSensor_t::~humSensor_t() { + // TODO Auto-generated destructor stub +} + +float humSensor_t::getHumidity() +{ + return (double)humiditySensor->read_u16()/1024/64*100; +}
diff -r 000000000000 -r f3108add3d98 humsensort.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/humsensort.h Tue Apr 12 06:52:10 2016 +0000 @@ -0,0 +1,23 @@ +/* + * tempsensott.h + * + * Created on: 2016. 2. 19. + * Author: sbh9428 + */ + +#ifndef TEMPSENSORT_H_ +#define TEMPSENSORT_H_ + +#include "mbed.h" +class humSensor_t { +public: + float getHumidity(); + + humSensor_t(); + humSensor_t(AnalogIn* _Humidityensor); + virtual ~humSensor_t(); +private: + AnalogIn* humiditySensor; +}; + +#endif /* TEMPSENSOTT_H_ */
diff -r 000000000000 -r f3108add3d98 main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Tue Apr 12 06:52:10 2016 +0000 @@ -0,0 +1,45 @@ +#include "mbed.h" +#include "humsensort.h" +#include "FastPWM.h" +#include "controlt.h" +#include "commandt.h" +#include "pumpt.h" + +BufferedSerial pc(USBTX, USBRX, 2048); + +AnalogIn humidityPin(p20); + +humSensor_t humSensor(&humidityPin); + +FastPWM wetPin(p21); +FastPWM dryPin(p22); + +pump_t wetPump(&wetPin); +pump_t dryPump(&dryPin); + +Ticker sysTick; + +control_t control(&dryPump, &wetPump, &humSensor, &pc); + +command_t command(&pc, &control); + +void refreshPWM(); + +int main() +{ + sysTick.attach(&refreshPWM, 5); + while(1) + { + + while(pc.readable()) + { + command.get_data(); + + } + } +} + +void refreshPWM() +{ + control.refreshPWM(); +} \ No newline at end of file
diff -r 000000000000 -r f3108add3d98 mbed.bld --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Tue Apr 12 06:52:10 2016 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/mbed/builds/99a22ba036c9 \ No newline at end of file
diff -r 000000000000 -r f3108add3d98 pumpt.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pumpt.cpp Tue Apr 12 06:52:10 2016 +0000 @@ -0,0 +1,29 @@ +/* + * pumpt.cpp + * + * Created on: 2016. 4. 11. + * Author: right + */ + +#include "pumpt.h" + +pump_t::pump_t() { + // TODO Auto-generated constructor stub + +} + +pump_t::pump_t(FastPWM *_out) +{ + out=_out; + out->period_ms(1); +} + +pump_t::~pump_t() { + // TODO Auto-generated destructor stub +} + +void pump_t::setPWM(float PWMvalue) +{ + out->pulsewidth_us(1000*PWMvalue); +} +
diff -r 000000000000 -r f3108add3d98 pumpt.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pumpt.h Tue Apr 12 06:52:10 2016 +0000 @@ -0,0 +1,25 @@ +/* + * pumpt.h + * + * Created on: 2016. 4. 11. + * Author: right + */ + +#ifndef PUMPT_H_ +#define PUMPT_H_ + +#include "FastPWM.h" + +class pump_t { +public: + void setPWM(float PWMvlaue); + + pump_t(); + pump_t(FastPWM *_out); + virtual ~pump_t(); +private: + FastPWM *out; +}; + +#endif /* PUMPT_H_ */ +