Piccolo / Mbed 2 deprecated Piccolo_1C_Funciones

Dependencies:   mbed

Fork of Piccolo_1C_Funciones by Heidy Vanessa Vasquez Valencia

Committer:
Vanessa620
Date:
Sat Sep 09 13:44:36 2017 +0000
Revision:
0:ad525f3cd781
Child:
1:f246d2321c06
Piccolo

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Vanessa620 0:ad525f3cd781 1 #include "mbed.h"
Vanessa620 0:ad525f3cd781 2 #define MAXPOS 50
Vanessa620 0:ad525f3cd781 3 #define SS_TIME 500
Vanessa620 0:ad525f3cd781 4
Vanessa620 0:ad525f3cd781 5 PwmOut myServoX(PB_3);
Vanessa620 0:ad525f3cd781 6 PwmOut myServoY(PB_4);
Vanessa620 0:ad525f3cd781 7 PwmOut myServoZ(PB_10);
Vanessa620 0:ad525f3cd781 8
Vanessa620 0:ad525f3cd781 9
Vanessa620 0:ad525f3cd781 10 int coord2us(float coord)
Vanessa620 0:ad525f3cd781 11 {
Vanessa620 0:ad525f3cd781 12 if(0 <= coord <= MAXPOS)
Vanessa620 0:ad525f3cd781 13 return int(750+coord*1900/50);// u6
Vanessa620 0:ad525f3cd781 14 return 750;
Vanessa620 0:ad525f3cd781 15 }
Vanessa620 0:ad525f3cd781 16
Vanessa620 0:ad525f3cd781 17 void vertex2d(float x, float y)
Vanessa620 0:ad525f3cd781 18 {
Vanessa620 0:ad525f3cd781 19 int pulseX = coord2us(x);
Vanessa620 0:ad525f3cd781 20 int pulseY = coord2us(y);
Vanessa620 0:ad525f3cd781 21
Vanessa620 0:ad525f3cd781 22 myServoX.pulsewidth_us(pulseX);
Vanessa620 0:ad525f3cd781 23 myServoY.pulsewidth_us(pulseY);
Vanessa620 0:ad525f3cd781 24 wait_ms(SS_TIME);
Vanessa620 0:ad525f3cd781 25 }
Vanessa620 0:ad525f3cd781 26
Vanessa620 0:ad525f3cd781 27
Vanessa620 0:ad525f3cd781 28
Vanessa620 0:ad525f3cd781 29 void home()
Vanessa620 0:ad525f3cd781 30 {
Vanessa620 0:ad525f3cd781 31
Vanessa620 0:ad525f3cd781 32 vertex2d(0,0);
Vanessa620 0:ad525f3cd781 33 myServoZ.pulsewidth_us(MAXPOS);
Vanessa620 0:ad525f3cd781 34 }
Vanessa620 0:ad525f3cd781 35
Vanessa620 0:ad525f3cd781 36 void maxpos()
Vanessa620 0:ad525f3cd781 37 {
Vanessa620 0:ad525f3cd781 38 vertex2d(MAXPOS,MAXPOS);
Vanessa620 0:ad525f3cd781 39 }
Vanessa620 0:ad525f3cd781 40
Vanessa620 0:ad525f3cd781 41 void diag()
Vanessa620 0:ad525f3cd781 42 {
Vanessa620 0:ad525f3cd781 43 /* wait(2);vertex2d(0,0);
Vanessa620 0:ad525f3cd781 44 wait(2);vertex2d(10,10);
Vanessa620 0:ad525f3cd781 45 wait(2);vertex2d(20,20);
Vanessa620 0:ad525f3cd781 46 wait(2);vertex2d(30,30);
Vanessa620 0:ad525f3cd781 47 wait(2);vertex2d(40,40);
Vanessa620 0:ad525f3cd781 48
Vanessa620 0:ad525f3cd781 49
Vanessa620 0:ad525f3cd781 50
Vanessa620 0:ad525f3cd781 51 wait(1);vertex2d(0,0);
Vanessa620 0:ad525f3cd781 52 wait(1);vertex2d(40,0);
Vanessa620 0:ad525f3cd781 53 wait(1);vertex2d(40,40);
Vanessa620 0:ad525f3cd781 54 wait(1);vertex2d(0,40);
Vanessa620 0:ad525f3cd781 55 wait(1);vertex2d(0,0); */
Vanessa620 0:ad525f3cd781 56 }
Vanessa620 0:ad525f3cd781 57
Vanessa620 0:ad525f3cd781 58 void cuadrado()
Vanessa620 0:ad525f3cd781 59 {
Vanessa620 0:ad525f3cd781 60 float l=20;
Vanessa620 0:ad525f3cd781 61 float a=10;
Vanessa620 0:ad525f3cd781 62 float b=10;
Vanessa620 0:ad525f3cd781 63
Vanessa620 0:ad525f3cd781 64 myServoZ.pulsewidth_us(MAXPOS);
Vanessa620 0:ad525f3cd781 65 vertex2d(a,b);
Vanessa620 0:ad525f3cd781 66 myServoX.pulsewidth_us(100);
Vanessa620 0:ad525f3cd781 67 a=a+l;
Vanessa620 0:ad525f3cd781 68 vertex2d(a,b);
Vanessa620 0:ad525f3cd781 69 b=b+l;
Vanessa620 0:ad525f3cd781 70 vertex2d(a,b);
Vanessa620 0:ad525f3cd781 71 a=a-l;
Vanessa620 0:ad525f3cd781 72 vertex2d(a,b);
Vanessa620 0:ad525f3cd781 73 b=b-l;
Vanessa620 0:ad525f3cd781 74 vertex2d(a,b);
Vanessa620 0:ad525f3cd781 75 }
Vanessa620 0:ad525f3cd781 76
Vanessa620 0:ad525f3cd781 77 void line(int x0, int y0, int x1, int y1) {
Vanessa620 0:ad525f3cd781 78 home();
Vanessa620 0:ad525f3cd781 79 wait(2);
Vanessa620 0:ad525f3cd781 80 vertex2d(x0,y0);
Vanessa620 0:ad525f3cd781 81 bool steep = abs(y1 - y0) > abs(x1 - x0);
Vanessa620 0:ad525f3cd781 82 int temp, deltax, deltay, error, y, x;
Vanessa620 0:ad525f3cd781 83 if (steep) {
Vanessa620 0:ad525f3cd781 84 temp = y0;
Vanessa620 0:ad525f3cd781 85 y0 = x0;
Vanessa620 0:ad525f3cd781 86 x0 = temp;
Vanessa620 0:ad525f3cd781 87 temp = y1;
Vanessa620 0:ad525f3cd781 88 y1 = x1;
Vanessa620 0:ad525f3cd781 89 x1 = temp;
Vanessa620 0:ad525f3cd781 90 }
Vanessa620 0:ad525f3cd781 91 if (x0 > x1) {
Vanessa620 0:ad525f3cd781 92 temp = x1;
Vanessa620 0:ad525f3cd781 93 x1 = x0;
Vanessa620 0:ad525f3cd781 94 x0 = temp;
Vanessa620 0:ad525f3cd781 95 temp = y1;
Vanessa620 0:ad525f3cd781 96 y1 = y0;
Vanessa620 0:ad525f3cd781 97 y0 = temp;
Vanessa620 0:ad525f3cd781 98 }
Vanessa620 0:ad525f3cd781 99
Vanessa620 0:ad525f3cd781 100 deltax = x1 - x0;
Vanessa620 0:ad525f3cd781 101 deltay = abs(y1 - y0);
Vanessa620 0:ad525f3cd781 102 error = deltax / 2;
Vanessa620 0:ad525f3cd781 103 y = y0;
Vanessa620 0:ad525f3cd781 104 /*if (y0 < y1) {
Vanessa620 0:ad525f3cd781 105 ystep = 1;
Vanessa620 0:ad525f3cd781 106 } else {
Vanessa620 0:ad525f3cd781 107 ystep = -1;
Vanessa620 0:ad525f3cd781 108 }*/
Vanessa620 0:ad525f3cd781 109 for (x=x0; x<=x1; x++) {
Vanessa620 0:ad525f3cd781 110 if (steep) {
Vanessa620 0:ad525f3cd781 111 vertex2d(y,x);
Vanessa620 0:ad525f3cd781 112 } else {
Vanessa620 0:ad525f3cd781 113 vertex2d(x,y);
Vanessa620 0:ad525f3cd781 114 }
Vanessa620 0:ad525f3cd781 115 }
Vanessa620 0:ad525f3cd781 116 }
Vanessa620 0:ad525f3cd781 117
Vanessa620 0:ad525f3cd781 118 void circle(int cx, int cy, int radius) {
Vanessa620 0:ad525f3cd781 119
Vanessa620 0:ad525f3cd781 120 int x = 0;
Vanessa620 0:ad525f3cd781 121 int y = radius;
Vanessa620 0:ad525f3cd781 122 int d = 3 - (2 * radius);
Vanessa620 0:ad525f3cd781 123
Vanessa620 0:ad525f3cd781 124 home();
Vanessa620 0:ad525f3cd781 125 wait(2);
Vanessa620 0:ad525f3cd781 126 vertex2d(cx,cy);
Vanessa620 0:ad525f3cd781 127 myServoX.pulsewidth_us(100);
Vanessa620 0:ad525f3cd781 128 myServoZ.pulsewidth_us(MAXPOS);
Vanessa620 0:ad525f3cd781 129 /*cx=cx+radius;
Vanessa620 0:ad525f3cd781 130 vertex2d(cx,cy);*/
Vanessa620 0:ad525f3cd781 131 myServoX.pulsewidth_us(100);
Vanessa620 0:ad525f3cd781 132
Vanessa620 0:ad525f3cd781 133 while (x <= y) {
Vanessa620 0:ad525f3cd781 134 vertex2d(cx + x, cy + y);
Vanessa620 0:ad525f3cd781 135 vertex2d(cx + y, cy + x);
Vanessa620 0:ad525f3cd781 136 vertex2d(cx - x, cy + y);
Vanessa620 0:ad525f3cd781 137 vertex2d(cx + y, cy - x);
Vanessa620 0:ad525f3cd781 138 vertex2d(cx - x, cy - y);
Vanessa620 0:ad525f3cd781 139 vertex2d(cx - y, cy - x);
Vanessa620 0:ad525f3cd781 140 vertex2d(cx + x, cy - y);
Vanessa620 0:ad525f3cd781 141 vertex2d(cx - y, cy + x);
Vanessa620 0:ad525f3cd781 142
Vanessa620 0:ad525f3cd781 143 if (d<0){
Vanessa620 0:ad525f3cd781 144 d += (4 * x) + 6;
Vanessa620 0:ad525f3cd781 145 } else
Vanessa620 0:ad525f3cd781 146 {
Vanessa620 0:ad525f3cd781 147 d += (4 * (x - y)) + 10;
Vanessa620 0:ad525f3cd781 148 y--;
Vanessa620 0:ad525f3cd781 149 }
Vanessa620 0:ad525f3cd781 150 x++;
Vanessa620 0:ad525f3cd781 151 }
Vanessa620 0:ad525f3cd781 152 }
Vanessa620 0:ad525f3cd781 153
Vanessa620 0:ad525f3cd781 154 int main()
Vanessa620 0:ad525f3cd781 155 {
Vanessa620 0:ad525f3cd781 156 // configuracion de periodo
Vanessa620 0:ad525f3cd781 157 myServoX.period_ms(20);
Vanessa620 0:ad525f3cd781 158 myServoY.period_ms(20);
Vanessa620 0:ad525f3cd781 159 myServoZ.period_ms(20);
Vanessa620 0:ad525f3cd781 160
Vanessa620 0:ad525f3cd781 161 while(1)
Vanessa620 0:ad525f3cd781 162 {
Vanessa620 0:ad525f3cd781 163 home();
Vanessa620 0:ad525f3cd781 164 wait(3);
Vanessa620 0:ad525f3cd781 165 maxpos();
Vanessa620 0:ad525f3cd781 166 wait(3);
Vanessa620 0:ad525f3cd781 167 //diag();
Vanessa620 0:ad525f3cd781 168 cuadrado();
Vanessa620 0:ad525f3cd781 169 wait(3);
Vanessa620 0:ad525f3cd781 170
Vanessa620 0:ad525f3cd781 171 }
Vanessa620 0:ad525f3cd781 172
Vanessa620 0:ad525f3cd781 173 }