Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed
Fork of Piccolo_1C_Funciones by
main.cpp@0:ad525f3cd781, 2017-09-09 (annotated)
- Committer:
- Vanessa620
- Date:
- Sat Sep 09 13:44:36 2017 +0000
- Revision:
- 0:ad525f3cd781
- Child:
- 1:f246d2321c06
Piccolo
Who changed what in which revision?
User | Revision | Line number | New 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 | } |