Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed
Revision 1:3b6c9baa7d0c, committed 2016-03-02
- Comitter:
- YCTung
- Date:
- Wed Mar 02 08:57:00 2016 +0000
- Parent:
- 0:564d77fcaa70
- Commit message:
- added some comment
Changed in this revision
| main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/main.cpp Tue Feb 23 13:47:59 2016 +0000
+++ b/main.cpp Wed Mar 02 08:57:00 2016 +0000
@@ -3,9 +3,9 @@
//The number will be compiled as type "double" in default
//Add a "f" after the number can make it compiled as type "float"
-#define Ts 0.01f
-#define Kp 20.0f
-#define Ki 5.0f
+#define Ts 0.01f //period of timer1 (s)
+#define Kp 1.0f
+#define Ki 1.0f
PwmOut servo(A0);
PwmOut pwm1(D7);
@@ -18,24 +18,42 @@
DigitalOut led2(D12);
Ticker timer1;
+void timer1_interrupt(void);
+void init_TIMER(void);
void init_IO(void);
-void init_ADC(void);
void init_PWM(void);
+void flash(void);
+//Variable(s) for PI controller
float ref = 0.45; // 0.45 +(0.48/180.0)*angle, -90<angle<90
float err = 0.0;
float ierr = 0.0;
float PI_out = 0.0;
float ad_read = 0.0; // ADC value
+float ad_check;
float pwm1_duty = 0.5;
+
+//Variable(s) for internal control
float servo_duty = 0.079;//0.079 +(0.084/180)*angle, -90<angle<90
+int main (void)
+{
+ init_IO();
+ init_PWM();
+ init_TIMER();
+ while(1)
+ {
+ ;
+ }
+}
+
void timer1_interrupt(void)
{
ad_read = adc.read();
+ ad_check = ad_read;
- //////code of PI control//////
+ //////code for PI control//////
@@ -45,12 +63,11 @@
if(PI_out >= 0.5f)PI_out = 0.5;
else if(PI_out <= -0.5f)PI_out = -0.5;
pwm1_duty = PI_out + 0.5f;
- ad_read = adc.read();
- if(ad_read > 0.69f || ad_read < 0.21f)pwm1_duty = 0.5;
+ if(ad_check > 0.69f || ad_check < 0.21f)pwm1_duty = 0.5;
pwm1.write(pwm1_duty);
TIM1->CCER |= 0x4;
- //////code of internal control//////
+ //////code for internal control//////
@@ -85,15 +102,4 @@
void flash(void)
{
led1 = !led1;
-}
-
-int main (void)
-{
- init_IO();
- init_PWM();
- init_TIMER();
- while(1)
- {
- ;
- }
}
\ No newline at end of file