Ingresar valores al PID sin incremental.

Dependencies:   Debounced TextLCD1 mbed

main.cpp

Committer:
jmcallef
Date:
2013-10-21
Revision:
0:a9989a1d4252

File content as of revision 0:a9989a1d4252:

#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);
DigitalOut led4(LED4);
DebouncedIn button1(PTC12);     // Aumento
DebouncedIn button2(PTC13);     // Disminución
DebouncedIn button3(PTC16);     // Cambio de variable
DebouncedIn button4(PTC17);     // Reset

int C1=0x0E;                                                // solo muestra el curzor.
int C2=0x18;                                                // desplaza izquierda.
int C3=0x1A;                                                // desplaza derecha.
int C4=0x0C;                                                // quito cursor bajo.

int i;                                                      // Indice de la variable.
int j;                                                      // Controla cambio de posición.
int kp, ki, kd, sp; 

int main(){
    lcd.writeCommand(C1);                                   // Escribimos un comando segun el manual del modulo LCD
    lcd.cls();                                               // Borro toda la pantalla
    lcd.locate(0,0);                                         // Localizo donde se escribirá el siguiente comando.    
    lcd.printf("Sp %d",sp);                                  // Escribe Sp (aparecen desde el punto (0,0)
    lcd.locate(8,0);                                         // Localizo donde se escribirá el siguiente comando.
    lcd.printf("Kp %d",kp);                                  // Escribe Kp (aparecen desde el punto (8,0)
    lcd.locate(0,1);
    lcd.printf("Ki %d",ki);
    lcd.locate(8,1);
    lcd.printf("Kd %d",kd);
  
        
    while(1){
           led3 =1;
           if (button3.falling()){
              led3 =!led3;                                // Prendo el LED color rojo cada vez que pulso el boton 3 ya que pasa a valer 0 (encendido).              
               ++j;
                                 }                        // INCREMENTA POSICION DEL MENU CON BOTON 3
           if (j==0){
               lcd.locate(3,0);
               lcd.printf("%d",sp);
               
               wait(0.3);
                  
                  led1 = 1;
                  if (button1.falling()) { 
                  led1 =!led1;                            // Prendo el LED color azul cada vez que pulso el boton 3 ya que pasa a valer 0 (encendido).        
                  ++sp;                                   // Incrementa valor al pulsar el botón.
                                         }
                  led2 =1;
                  if (button2.falling()) {  
                  lcd.locate(3,0);
                  lcd.printf("%d   ");
                  led2 =!led2;                            // Prendo el LED color rojo cada vez que pulso el boton 3 ya que pasa a valer 0 (encendido).       
                  --sp;                                   // Reduce el valor al pulsar el botón.
                                         } 
                  if (sp>10000){                     // Ponemos un tope incremental en 10.000
                  sp=10000;
                               } 
                                         
                  if (sp<0){                         // No permitimos valores negativos, definimos valor mínimo en 0.
                  sp=0;
                           }   
                           
                    }
           if (j==1){
               lcd.locate(11,0);
               lcd.printf("%d",kp);
               wait(0.3);
                  led1 =1;
                  if (button1.falling()) {
                    led1 =!led1;
                    ++kp;
                                         }
                  led2 =1;
                  if (button2.falling()) {  
                    lcd.locate(11,0);
                    lcd.printf("%d   ");
                    led2 =!led2;                          
                    --kp;
                                         }
                 if (kp>10000){
                    kp=10000;
                    lcd.locate(11,0);
                    lcd.printf("%d",kp);
                              } 
                                         
                 if (kp<0){
                    kp=0;
                    lcd.locate(11,0);
                    lcd.printf("%d",kp);
                          }   
                    }
           if (j==2){
               lcd.locate(3,1);
               lcd.printf("%d",ki);
               wait(0.3);
                  led1 =1;
                  if (button1.falling()){
                    led1 =!led1;
                    ++ki;
                                        }
                  led2 =1;
                  if (button2.falling()){
                    lcd.locate(3,1);
                    lcd.printf("%d   ");                    
                    led2 =!led2;                          
                    --ki;
                                        }   
                  if (ki>10000){
                    ki=10000;
                    lcd.locate(3,1);
                    lcd.printf("%d",ki);
                               } 
                                         
                  if (ki<0){
                    ki=0;
                    lcd.locate(3,1);
                    lcd.printf("%d",ki);
                           }
                    }   
           
           if (j==3){
               lcd.locate(11,1);
               lcd.printf("%d",kd);
               wait(0.3);
                  led1 =1;
                  if (button1.falling()){
                  led1 =!led1;
                  ++kd;
                                        }
                  led2 =1;
                  if (button2.falling()){
                    lcd.locate(11,1);
                    lcd.printf("%d   ");
                    led2 =!led2;                            
                    --kd;

                    
                                        }
                  if (kd>10000){
                    kd=10000;
                    lcd.locate(11,1);
                    lcd.printf("%d",kd);
                               } 
                                         
                  if (kd<0){
                    kd=0;
                    lcd.locate(11,1);
                    lcd.printf("%d",kd);
                           }   
                    } 
           
                  if (j==4){
                    j=0;
                           }                          
    
                 if (button4.falling()){
                    sp=0;
                    kp=0;
                    ki=0;
                    kd=0;
                    lcd.locate(11,1);
                    lcd.printf("%d   ",kd);
                    lcd.locate(3,1);
                    lcd.printf("%d   ",ki);
                    lcd.locate(11,0);
                    lcd.printf("%d   ",kp);
                    lcd.locate(3,0);
                    lcd.printf("%d   ",sp);
                                       }     
            }           
          }