Alonso Angulo / Mbed 2 deprecated controlador_stepper

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 
00003 DigitalOut myled(LED1);
00004 DigitalIn giro(D2);
00005 DigitalIn modo(D3);
00006 AnalogIn pot(A0);
00007 BusOut stepper(D5, D6, D7, D8);
00008 Timer t1;
00009 Timer t2;
00010 int valbot1;
00011 int valbot2;
00012 int caso;
00013 float pwm;
00014 Serial pc (USBTX,USBRX);
00015 
00016 int main() {
00017         valbot1 = 0;
00018         valbot2 = 0;
00019         myled = 0;
00020         wait(0.4);
00021         myled = 1;
00022         wait(0.4);
00023         float x;
00024         
00025         
00026         stepper = 8;
00027         wait(0.5);      
00028         t1.start();
00029         t2.start();
00030     while(1) {
00031         
00032         x= pot;
00033         pwm = ((x/0.004348)+20);
00034         
00035         if (t1.read() == 0) {
00036             t1.start();
00037         }
00038         if (t2.read() == 0) {
00039             t2.start();
00040         }
00041         
00042         switch (caso){ 
00043                 
00044                 case 1:
00045                 if (stepper == 0) { //como el corrimiento de bits se fue a 0, ya no me sirve y los reinicio a 8 (osea 1000)
00046                     stepper = 8;
00047                 }    
00048                 break;
00049                 
00050                 case 2:
00051                 if (stepper == 0) { // al igual que en el caso 1 pero ahora se inicializa en 1 (0001)
00052                     stepper = 1;   
00053                 }
00054                 break;
00055                 
00056                 case 3:
00057                 if (stepper == 1) { //en este caso ya no llega a desaparecer el bit con (0000) pero cuando en vez de 2 bits se visualiza 1 solo (0001) ya es error y se coniverte en el requerido (1001)
00058                     stepper = 9;     
00059                 }
00060                 if (stepper == 4) { //aquí cuando hay un (0100 porque el corrimiento asi se llevo 1 bit este se convierte en (0110))
00061                     stepper = 12;    
00062                 }             
00063                 break;
00064                 
00065                 case 4:
00066                 if (stepper == 8) {
00067                     stepper = 9;    
00068                 }
00069                 if (stepper == 2) {
00070                     stepper = 3;   
00071                 }
00072                 break;
00073             }
00074         
00075         pc.printf("%d \n",t1.read_ms()); // para checar la lectura si esta llegando al valor deseado y reiniciandose antes de entrar al if
00076         if (t1.read_ms() >= pwm ){
00077             switch (caso){ //abro un switch case dependiendo de las 4 combinaciones posibles de los 2 botones
00078                 
00079                 case 1:
00080                 stepper = stepper >> 1; //hago un corrimiento hacia la derecha
00081                 t1.reset();
00082                 break;
00083                 
00084                 case 2:
00085                 stepper = stepper << 1; //se hace un corrimiento hacia la izquierda
00086                 t1.reset();
00087                 break;
00088                 
00089                 case 3:           
00090                 stepper = stepper >> 1; //corrimiento hacia la derecha
00091                 t1.reset();
00092                 break;
00093                 
00094                 case 4:
00095                 stepper = stepper << 1; //corrimiento hacia la izquierda
00096                 t1.reset(); // se pone el reset dentro de los case ya que sino se vera interrumpido por el break;
00097                 break;
00098             }
00099                                         
00100                             
00101         }
00102             
00103             if (giro == 0){ // es cero porque es pullup
00104                 valbot1 = !valbot1; //cambio de estado entre valbot1 y 2
00105             }
00106             if (modo == 0){
00107                 valbot2 = !valbot2;
00108             }
00109        
00110             if (valbot1 ==0 && valbot2 == 0){
00111                 
00112                 caso = 1;
00113             } else if (valbot1 == 1 && valbot2 == 0){
00114                 caso = 2;
00115             } else if (valbot1 == 0 && valbot2 == 1){
00116                 caso = 3;
00117             } else if (valbot1 == 1 && valbot2 == 1){
00118                 caso = 4;
00119             }
00120           
00121         
00122         }
00123     }  
00124