Programa para ejecutar un PWM con un PID. Al presionar un boton que incrementa los valores de Kp, Ti y Td, suena mediante un PWM

Dependencies:   Debounced TextLCD mbed

Files at this revision

API Documentation at this revision

Comitter:
diego_carvajal
Date:
Sat Mar 29 19:38:30 2014 +0000
Commit message:
Programa para ejecutar un PWM con un PID

Changed in this revision

Debounced.lib Show annotated file Show diff for this revision Revisions of this file
TextLCD.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
diff -r 000000000000 -r 6e11c5a96cde Debounced.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Debounced.lib	Sat Mar 29 19:38:30 2014 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/WarwickRacing/code/Debounced/#8992c13bbb9b
diff -r 000000000000 -r 6e11c5a96cde TextLCD.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/TextLCD.lib	Sat Mar 29 19:38:30 2014 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/simon/code/TextLCD/#308d188a2d3a
diff -r 000000000000 -r 6e11c5a96cde main.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Sat Mar 29 19:38:30 2014 +0000
@@ -0,0 +1,187 @@
+#include "mbed.h"
+#include "DebouncedIn.h"
+#include "TextLCD.h"
+ 
+AnalogIn Vin(PTC2);
+TextLCD lcd(PTB10, PTB11, PTE2, PTE3, PTE4, PTE5); // rs, e, d4-d7
+ 
+DigitalOut led1(LED1);
+DigitalOut led2(LED2);
+DigitalOut led3(LED3);
+DebouncedIn button1(PTC6);
+DebouncedIn button2(PTC10);
+DebouncedIn button3(PTC11);
+PwmOut Pwm(PTD6);
+
+
+
+
+//int C1=0x0F;
+int sp=0,kp=0,kd=0,ki=0,p=1;
+float periodo=0.01;
+int main()
+{
+    Pwm.period(periodo); //Establezco el periodo para el PWM
+           
+    lcd.cls();
+    //lcd.writeCommand(C1);//escribimos un comando segun el manual del modulo LCD
+    lcd.locate(8,0);
+    lcd.printf("kp=%d", kp);
+    lcd.locate(0,1);
+    lcd.printf("Ki=%d", ki);
+    lcd.locate(8,1);
+    lcd.printf("Kd=%d", kd);
+    lcd.locate(0,0);
+    lcd.printf("Sp=%d", sp);
+ 
+    while(1)
+    {
+        if (button1.falling())
+        {
+      // Genero el PWM haciendo esperar cada que se oprime un boton      
+            Pwm.write(0.3); 
+            wait(0.03);
+            Pwm.write(0);
+            wait(0.03);
+            led1 =!led1;
+            if (p==1)
+            {
+                ++sp;
+                lcd.locate(3,0);
+                lcd.printf("   ");
+                lcd.locate(3,0);
+                lcd.printf("%d", sp);
+            }
+            else if (p==2)
+            {
+                ++kp;
+                lcd.locate(11,0);
+                lcd.printf("   ");
+                lcd.locate(11,0);
+                lcd.printf("%d", kp);
+            }
+            else if (p==3)
+            {
+                ++ki;
+                lcd.locate(3,1);
+                lcd.printf("   ");
+                lcd.locate(3,1);
+                lcd.printf("%d", ki);
+            }
+            else if (p==4)
+            {
+                ++kd;
+                lcd.locate(11,1);
+                lcd.printf("   ");
+                lcd.locate(11,1);
+                lcd.printf("%d", kd);
+            }
+        }
+        if (button2.falling())
+        {
+            // Genero el PWM haciendo esperar cada que se oprime un boton      
+            Pwm.write(0.3); 
+            wait(0.03);
+            Pwm.write(0);
+            wait(0.03);
+            led2 =!led2;
+            if (p==1)
+            {
+                if (sp==0)  // no mostrar nada
+                {
+                }
+                else
+                {
+                    --sp;
+                    lcd.locate(3,0);
+                    lcd.printf("   ");
+                    lcd.locate(3,0);
+                    lcd.printf("%d", sp);
+                }
+            }
+            if (p==2)
+            {
+                if (kp==0)  // no mostrar nada
+                {
+                }
+                else
+                {
+                    --kp;
+                    lcd.locate(11,0);
+                    lcd.printf("   ");
+                    lcd.locate(11,0);
+                    lcd.printf("%d", kp);
+                }
+            }
+            if (p==3)
+            {
+                if (ki==0)  // no mostrar nada
+                {
+                }
+                else
+                {
+                    --ki;
+                    lcd.locate(3,1);
+                    lcd.printf("   ");
+                    lcd.locate(3,1);
+                    lcd.printf("%d", ki);
+                }
+            }
+            if (p==4)
+            {
+                if (kd==0)  // no mostrar nada
+                {
+                }
+                else
+                {
+                    --kd;
+                    lcd.locate(11,1);
+                    lcd.printf("   ");
+                    lcd.locate(11,1);
+                    lcd.printf("%d", kd);
+                }
+            }
+        }
+        if (button3.falling())
+        {
+            // Genero el PWM haciendo esperar cada que se oprime un boton      
+            Pwm.write(0.3); 
+            wait(0.03);
+            Pwm.write(0);
+            wait(0.03);
+            led3 =!led3;
+            if (p==1)
+            {
+                ++p;
+                lcd.locate(11,0);
+                lcd.printf("%d", kp);
+                
+                
+            }
+            else if (p==2)
+            {
+                ++p;
+                lcd.locate(3,1);
+                lcd.printf("%d", ki);
+                lcd.locate(3,1);
+                
+            }
+            else if (p==3)
+            {
+                ++p;
+                lcd.locate(11,1);
+                lcd.printf("%d", kd);
+                
+                
+            }
+            else if (p==4)
+            {
+                p=1;
+                lcd.locate(3,0);
+                lcd.printf("%d", sp);
+                
+                
+            }
+        }
+    }
+}
\ No newline at end of file
diff -r 000000000000 -r 6e11c5a96cde mbed.bld
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Sat Mar 29 19:38:30 2014 +0000
@@ -0,0 +1,1 @@
+http://world3.dev.mbed.org/users/mbed_official/code/mbed/builds/824293ae5e43
\ No newline at end of file