Piccolo, cuadrado, diagonal y circulo

Dependencies:   mbed

Revision:
0:e0c1f3f89b27
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Sat Sep 16 14:22:04 2017 +0000
@@ -0,0 +1,276 @@
+#include "mbed.h"
+
+PwmOut eje_x(PB_3);
+PwmOut eje_y(PB_4);
+PwmOut eje_z(PB_5);
+
+double i=0,rad=0;
+double pulso_us=0,RET_PRU=0,gain=15,b=10;
+double grados=0,retardo_for=0.05,retardo=1,diam=70,var_x=0,var_y=0;
+
+    
+
+void REFERENCE(){
+    eje_x.pulsewidth_us(1650);
+    eje_y.pulsewidth_us(1635);
+    eje_z.pulsewidth_us(750);
+    wait_ms(500);
+    }
+
+    
+void SERVO_X(){
+    pulso_us=((grados*1700)/(180))+790; 
+    eje_x.pulsewidth_us(pulso_us);
+    wait_ms(0);
+    }
+    
+void SERVO_Y(){
+    pulso_us=((grados*1870)/(180))+700;
+    eje_y.pulsewidth_us(pulso_us);
+    wait_ms(0);
+    }
+    
+void SERVO_Z(){
+    pulso_us=((grados*1800)/(180))+650;  
+    eje_z.pulsewidth_us(pulso_us);
+    wait_ms(100);
+    } 
+    
+void PruevaX(){
+        grados=0;
+        SERVO_X();
+        wait_ms(RET_PRU);
+    for(i=0;i<=90;i=i+10){
+        grados=i;
+        SERVO_X();
+        wait_ms(retardo);
+        }
+        wait_ms(RET_PRU);
+        grados=180;
+        SERVO_X();
+        wait_ms(RET_PRU);
+    }
+void PruevaY(){
+        grados=0;
+        SERVO_Y();
+        wait_ms(RET_PRU);
+    for(i=0;i<=90;i=i+10){
+        grados=i;
+        SERVO_Y();
+        wait_ms(retardo);
+        }
+        wait_ms(RET_PRU);
+        grados=180;
+        SERVO_Y();
+        wait_ms(RET_PRU);
+    }
+    
+void ESCRIBIR(){
+    grados=120;
+    SERVO_Z();
+    }
+
+void ESCRIBIR_0(){
+    grados=30;
+    SERVO_Z();
+    }
+      
+void LINEA_DIAG(){
+    REFERENCE();
+    wait(2);
+    for(i=0;i<=1800;i=i+5){
+        grados=i;
+        SERVO_X();
+        SERVO_Y();
+        wait_ms(retardo);
+        ESCRIBIR();
+        }
+    ESCRIBIR_0();
+    }
+    
+void CUADRADO(){
+    REFERENCE();
+    grados=0;
+    SERVO_X();
+    SERVO_Y();
+    wait(2);
+    for(i=0;i<=180;i=i+5){
+        grados=i;
+        SERVO_Y();
+        wait_ms(retardo);
+        ESCRIBIR();        
+        }
+    for(i=0;i<=180;i=i+5){
+        grados=i;
+        SERVO_X();
+        wait_ms(retardo);
+        ESCRIBIR();
+        }
+    for(i=180;i>=0;i=i-5){
+        grados=i;
+        SERVO_Y();
+        wait_ms(retardo);
+        ESCRIBIR();
+        }
+    for(i=180;i>=0;i=i-5){
+        grados=i;
+        SERVO_X();
+        wait_ms(retardo);
+        ESCRIBIR();
+        }
+    for(i=180;i<=0;i=i+10){
+        grados=i;
+        SERVO_Y();
+        wait_ms(retardo);
+        ESCRIBIR();        
+        }
+    ESCRIBIR_0();
+        }
+void CIRCULO(){
+    REFERENCE();
+    wait(2);
+    for(i=0;i<360;i=i+10){
+        rad=(i*2*3.1416)/(180);
+        grados=(((cos(rad)+1)*180/2)*140/180)+20;
+        SERVO_X();
+        grados=(((sin(rad)+1)*180/2)*140/180)+20;
+        SERVO_Y();
+        wait_ms(retardo);
+        ESCRIBIR();
+        }
+    ESCRIBIR_0();
+    }
+
+void DIBUJO(){
+    REFERENCE();
+    wait(2);
+    grados=0+gain;
+    SERVO_X();
+    SERVO_Y();
+    ESCRIBIR();
+    wait(retardo);
+    
+    grados=30+gain;
+    SERVO_X();
+    wait(retardo);
+    
+    grados=60+gain;
+    SERVO_Y();
+    wait(retardo);
+    
+    grados=90+gain;
+    SERVO_X();
+    wait(retardo);
+    
+    grados=120+gain;
+    SERVO_Y();
+    wait(retardo);
+    
+    grados=150+gain;
+    SERVO_X();
+    wait(retardo);
+    
+    grados=150+gain;
+    SERVO_Y();
+    wait(retardo);
+    
+    grados=120+gain-b;
+    SERVO_X();
+    wait(retardo);
+    
+    grados=90+gain-b;
+    SERVO_Y();
+    wait(retardo);
+    
+    grados=60+gain-b;
+    SERVO_X();
+    wait(retardo);
+    
+    grados=30+gain-b;
+    SERVO_Y();
+    wait(retardo);
+    
+    grados=0+gain-b;
+    SERVO_X();
+    wait(retardo);
+    
+    grados=0+gain-b;
+    SERVO_Y();
+    wait(retardo);
+
+    ESCRIBIR_0();
+    
+    grados=150+gain;
+    SERVO_Y();
+    wait(retardo);
+    
+    grados=0+gain;
+    SERVO_X();
+    wait(retardo);
+    
+    ESCRIBIR();
+    for(i=0;i<45;i++){
+    grados=i+gain;
+    SERVO_X();
+    grados=150-i+gain;
+    SERVO_Y();
+    wait(retardo_for);
+    }
+    
+    ESCRIBIR_0();
+    
+    grados=150+gain;
+    SERVO_X();
+    wait(retardo);
+
+    grados=0+gain;
+    SERVO_Y();
+    wait(retardo);
+    
+    ESCRIBIR();
+    for(i=0;i<45;i++){
+    grados=150-i+gain;
+    SERVO_X();
+    grados=i+gain;
+    SERVO_Y();
+    wait(retardo_for);
+        }
+    
+    ESCRIBIR_0();
+        
+    grados=150+gain;
+    SERVO_X();
+    wait(retardo);
+
+    grados=60+gain;
+    SERVO_Y();
+    wait(retardo);
+    
+    for(i=180;i<360;i=i+5){
+        rad=(i*3.1416)/(180);
+        var_x=((cos(rad)+1)*diam/2)*1.0;
+        grados=var_x+30+gain;
+        SERVO_X();
+        var_y=((sin(rad)+1)*diam/2)*1.5;
+        grados=var_y+120+gain;
+        SERVO_Y();
+        ESCRIBIR();
+        }
+    ESCRIBIR_0();
+    }
+    
+    
+int main() {
+        eje_x.period_us(20000);
+        eje_y.period_us(20000);
+        eje_z.period_us(20000);        
+        REFERENCE();  
+    
+    while(1) { 
+    
+        DIBUJO(); 
+        
+        
+
+}
+}
\ No newline at end of file