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.
Diff: draw.cpp
- Revision:
- 0:89b318e49395
diff -r 000000000000 -r 89b318e49395 draw.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/draw.cpp Sat Mar 17 00:57:56 2018 +0000
@@ -0,0 +1,81 @@
+
+#include "draw.h"
+#include "mbed.h"
+#include "math.h"
+
+
+PwmOut myServoZ(PB_3);
+PwmOut myServoX(PB_4);
+PwmOut myServoY(PB_5);
+
+uint8_t posx_old=0; // posición anterior del eje X
+uint8_t posy_old=0; // posición anterior del eje Y
+uint8_t ss_time=50; // tiempo de espera para moverse 1 mm en microsegundos
+
+void put_sstime(uint8_t vtime){
+ ss_time=vtime;
+
+}
+
+int coord2us(float coord)
+{
+ if(0 <= coord <= MAXPOS)
+ return int(750+coord*1900/50);// u6
+ return 750;
+
+}
+
+void sstime(uint8_t x, uint8_t y)
+{
+ double dx=abs(x-posx_old);
+ double dy=abs(y-posy_old);
+ double dist= sqrt(dx*dx+dy*dy);
+ wait_ms((int)(ss_time*dist));
+ posx_old =x;
+ posy_old=y;
+
+ }
+
+void draw(){
+myServoZ.pulsewidth_us(coord2us(POSDRAW));
+wait_ms(ss_time*10);
+}
+
+void nodraw(){
+myServoZ.pulsewidth_us(coord2us(POSNODRAW));
+wait_ms(ss_time*10);
+}
+
+
+void vertex2d(uint8_t x, uint8_t y){
+
+ int pulseX = coord2us(x);
+ int pulseY = coord2us(y);
+
+ myServoX.pulsewidth_us(pulseX);
+ myServoY.pulsewidth_us(pulseY);
+
+ sstime(x,y);
+
+}
+
+void initdraw(float x, float y){
+ vertex2d (x,y);
+ draw();
+}
+
+void home(){
+ nodraw();
+ vertex2d(0 ,0);
+}
+
+
+
+void init_servo()
+{
+ myServoX.period_ms(20);
+ myServoY.period_ms(20);
+ myServoZ.period_ms(20);
+
+
+}
\ No newline at end of file