32浏览
查看: 32|回复: 9

[项目] 【Arduino 动手做】在 Rangoli 或沙子上绘画和书写的机器人

[复制链接]
Arduino是一个开放源码的电子原型平台,它可以让你用简单的硬件和软件来创建各种互动的项目。Arduino的核心是一个微控制器板,它可以通过一系列的引脚来连接各种传感器、执行器、显示器等外部设备。Arduino的编程是基于C/C++语言的,你可以使用Arduino IDE(集成开发环境)来编写、编译和上传代码到Arduino板上。Arduino还有一个丰富的库和社区,你可以利用它们来扩展Arduino的功能和学习Arduino的知识。

Arduino的特点是:
1、开放源码:Arduino的硬件和软件都是开放源码的,你可以自由地修改、复制和分享它们。
2、易用:Arduino的硬件和软件都是为初学者和非专业人士设计的,你可以轻松地上手和使用它们。
3、便宜:Arduino的硬件和软件都是非常经济的,你可以用很低的成本来实现你的想法。
4、多样:Arduino有多种型号和版本,你可以根据你的需要和喜好来选择合适的Arduino板。
5、创新:Arduino可以让你用电子的方式来表达你的创意和想象,你可以用Arduino来制作各种有趣和有用的项目,如机器人、智能家居、艺术装置等。

【Arduino 动手做】在 Rangoli 或沙子上绘画和书写的机器人图1

【Arduino 动手做】在 Rangoli 或沙子上绘画和书写的机器人图2

驴友花雕  中级技神
 楼主|

发表于 前天 17:23

【Arduino 动手做】在 Rangoli 或沙子上绘画和书写的机器人

这是一个绘画/沙画制作机器人。它有两个伺服电机,由 Arduino Uno 原型板控制。它可以绘制不同的形状。


【Arduino 动手做】在 Rangoli 或沙子上绘画和书写的机器人图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 前天 17:28

【Arduino 动手做】在 Rangoli 或沙子上绘画和书写的机器人

这个项目中使用的东西

硬件组件
Arduino UNO       
×        1       
SG90微型伺服电机       
×        2       
面包板(通用)       
×        1       
跳线(通用)       
×        1       
USB-A 转 Mini-USB 线缆       
×        1       

手动工具和制造机器
剪刀,电工       
电气胶带       

你的项目是关于什么的?

这个项目是关于一个可以在兰戈里上绘画和书写的机器人。它有两个伺服电机,由安装在 Arduino Uno 原型板上的 Atmega328p 微控制器控制。

你为什么决定做这个?
制作这个机器人的目的是为了在兰戈里上画任何形状。兰戈里是手绘的。我不擅长画兰戈里。所以我决定做一个机器人,可以帮我画兰戈里。

它是如何工作的?
它有两个伺服电机,由安装在 Arduino Uno 原型板上的 Atmega328p 微控制器控制。它的工作原理是逆运动学。待绘制图像的轮廓坐标存储在 Arduino 代码的一个数组中。

CAD设计

【Arduino 动手做】在 Rangoli 或沙子上绘画和书写的机器人图1


回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 前天 17:32

【Arduino 动手做】在 Rangoli 或沙子上绘画和书写的机器人

这是机器人的CAD设计图。我们可以看到,两个电机、两个连杆和一支铅笔。第一个电机放置在地面上。连杆与其轴连接。第二个电机安装在该轴上。另一个连杆连接到第二个电机的轴上。连杆末端连接着一支铅笔。铅笔的尖端指向目标点。当两个电机旋转时,借助地面上的铅笔,可以画出任何东西。这是真正的机器人,有 2 个马达、2 个连杆和一支笔作为追踪的末端执行器。

真实设计

【Arduino 动手做】在 Rangoli 或沙子上绘画和书写的机器人图1

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 前天 17:36

【Arduino 动手做】在 Rangoli 或沙子上绘画和书写的机器人

【Arduino 动手做】在 Rangoli 或沙子上绘画和书写的机器人图1

【Arduino 动手做】在 Rangoli 或沙子上绘画和书写的机器人图2

【Arduino 动手做】在 Rangoli 或沙子上绘画和书写的机器人图3

【Arduino 动手做】在 Rangoli 或沙子上绘画和书写的机器人图4

【Arduino 动手做】在 Rangoli 或沙子上绘画和书写的机器人图5

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 前天 17:38

【Arduino 动手做】在 Rangoli 或沙子上绘画和书写的机器人

图像到坐标的转换
要从图像中获取坐标,我们可以从这个网站获取帮助。这里我们只需要上传图像。我们需要它的坐标。图像将显示在下方。单击图形的边缘。将生成相应的坐标。所有坐标将显示在下方。复制它们,然后将它们存储在 Arduino 代码的数组中。

转换问题
但是伺服电机需要输入角度,并旋转到给定的角度。因此,我们必须将笛卡尔坐标转换为球坐标。这需要借助三角函数。

【Arduino 动手做】在 Rangoli 或沙子上绘画和书写的机器人图1

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 前天 17:42

【Arduino 动手做】在 Rangoli 或沙子上绘画和书写的机器人

这是要到达的点。两条连线的长度相同。因此,计算该点到原点的距离D,以及高度H。我们可以轻松计算出所有角度。

绘制兰戈里的原因
我们不用笔在纸上画画。因为装置不够坚固,无法在纸上施加足够的压力。

不过,我们还是成功画了一些画。虽然画得不太好,但我们对结果很满意。

【Arduino 动手做】在 Rangoli 或沙子上绘画和书写的机器人图3

【Arduino 动手做】在 Rangoli 或沙子上绘画和书写的机器人图2

【Arduino 动手做】在 Rangoli 或沙子上绘画和书写的机器人图1

【Arduino 动手做】在 Rangoli 或沙子上绘画和书写的机器人图4

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 前天 17:48

【Arduino 动手做】在 Rangoli 或沙子上绘画和书写的机器人

定制零件和外壳

【Arduino 动手做】在 Rangoli 或沙子上绘画和书写的机器人图1

【Arduino 动手做】在 Rangoli 或沙子上绘画和书写的机器人图3

【Arduino 动手做】在 Rangoli 或沙子上绘画和书写的机器人图2

【Arduino 动手做】在 Rangoli 或沙子上绘画和书写的机器人图4


回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 前天 17:51

【Arduino 动手做】在 Rangoli 或沙子上绘画和书写的机器人

项目代码

  1. #include <Servo.h>
  2. Servo m1,m2;
  3. float d,h,l,phi;
  4. float theta1,theta2;
  5. int i,j;
  6. int dly=80;
  7. void setup() {
  8.   m1.attach(11);
  9.   m2.attach(10);
  10.   
  11. }
  12. void go(float x, float y){
  13.   
  14.   l = 8; //length of link, l= 8cm
  15.   
  16.   d = sqrt((x*x)+(y*y)); //distace between origin left and (x,y) point
  17.   phi = atan2(y,x)*180/3.14; // phi, angle between d and x axis  
  18.   
  19.   h = sqrt((l*l)-((d/2)*(d/2))); //height of the triangle
  20.   
  21.   theta1 = atan2(h,(d/2))*180/3.14; // phi 1, angle between d and axis
  22.   
  23.   theta2 = (90 - theta1)*2; // angle between l and l
  24.   theta1+=phi;
  25.   
  26.   if ((theta1>0 && theta2>0) && (theta1<180 && theta2<180)){
  27.     m1.writeMicroseconds((int)((theta1/180)*1500+700));
  28.     m2.writeMicroseconds((int)((theta2/180)*1500+700));
  29.    
  30.   }
  31.   
  32. }
  33. void coverage(){
  34.   for (i=0;i<180;i+=1){
  35.     m1.write(i);  
  36.     delay(25);
  37.   }  
  38.   for (j=10;j<180;j+=1){
  39.     m2.write(j);
  40.     delay(25);
  41.   }
  42.   
  43.   for (i=180;i>0;i-=1){
  44.     m1.write(i);  
  45.     delay(25);
  46.   }  
  47.   
  48.   for (j=180;j>10;j-=1){
  49.     m2.write(j);
  50.     delay(25);
  51.   }
  52. }
  53. void human(){
  54.   int l= 100;
  55.   float x[l]={1.92, 2.33, 2.75, 3.17, 2.25, 1.33, 0.83, 0.5, 0.25, 0.25, 0.33, 0.83, 1.25, 1.75, 2.33, 2.92, 3.5, 3.25, 3.0, 2.83, 2.75, 2.83, 2.92, 3.25, 3.5, 3.92, 4.33, 4.92, 5.33, 5.83, 6.25, 6.5, 6.67, 6.75, 6.75, 6.75, 6.67, 6.5, 6.33, 6.25, 6.67, 7.0, 7.5, 8.0, 8.33, 8.67, 9.0, 9.0, 9.0, 9.0, 8.83, 8.5, 8.0, 7.5, 7.0, 6.5, 6.08, 6.25, 6.42, 6.58, 6.75, 6.92, 7.17, 7.33, 7.5, 7.67, 8.08, 8.42, 8.83, 8.75, 8.67, 8.42, 8.0, 7.42, 6.92, 6.42, 5.92, 5.67, 5.42, 5.17, 4.92, 4.75, 4.5, 4.25, 4.0, 3.67, 3.5, 2.92, 2.25, 1.67, 1.25, 0.92, 0.58, 0.5, 0.5, 0.67, 1.0, 1.42, 1.58, 1.92};
  56.   float y[l]={8.92, 8.33, 7.5, 6.58, 6.67, 6.75, 6.67, 6.33, 5.92, 5.33, 4.83, 4.5, 4.33, 4.25, 4.17, 4.17, 4.17, 3.83, 3.5, 3.08, 2.58, 2.0, 1.5, 1.17, 0.83, 0.5, 0.25, 0.25, 0.42, 0.58, 0.83, 1.25, 1.58, 2.0, 2.42, 2.92, 3.25, 3.58, 3.92, 4.0, 4.25, 4.25, 4.25, 4.42, 4.5, 4.67, 4.92, 5.25, 5.67, 5.92, 6.33, 6.58, 6.67, 6.67, 6.67, 6.5, 6.5, 6.83, 7.17, 7.5, 7.92, 8.25, 8.58, 8.92, 9.25, 9.33, 9.42, 9.58, 9.92, 10.33, 10.83, 11.25, 11.42, 11.42, 11.58, 11.5, 11.25, 11.0, 10.67, 10.42, 10.17, 9.92, 10.0, 10.42, 10.83, 11.0, 11.33, 11.5, 11.5, 11.58, 11.33, 11.08, 10.83, 10.33, 9.92, 9.58, 9.42, 9.5, 9.33, 8.92};
  57.   
  58.   for(i=0;i<l;i+=1){
  59.     go(x[i],y[i]+2);  
  60.     delay(dly);
  61.   }
  62.   
  63. }
  64. void star(){
  65.   int l=99;
  66.   float x[l] = {3.8333, 3.9167, 4.0, 4.1667, 4.25, 4.3333, 4.4167, 4.5, 4.6667, 4.25, 3.9167, 3.5833, 3.25, 2.8333, 2.5833, 2.6667, 2.9167, 3.1667, 3.5, 3.75, 4.0, 4.3333, 4.6667, 4.9167, 5.25, 5.25, 5.4167, 5.5, 5.6667, 5.75, 5.8333, 5.9167, 6.0, 6.1667, 6.1667, 6.25, 6.3333, 6.4167, 6.4167, 6.5, 6.5833, 6.6667, 6.6667, 6.75, 6.8333, 6.8333, 7.0, 7.0833, 7.3333, 7.5, 7.75, 7.9167, 8.0833, 8.25, 8.5, 8.75, 9.0, 9.1667, 9.0833, 8.75, 8.5, 8.25, 8.0, 7.8333, 7.6667, 7.4167, 7.25, 7.3333, 7.4167, 7.5833, 7.5833, 7.6667, 7.75, 7.8333, 7.9167, 8.0833, 8.1667, 8.0, 7.8333, 7.5, 7.1667, 7.0, 6.8333, 6.5, 6.25, 6.0, 5.75, 5.5833, 5.5, 5.1667, 5.0833, 4.8333, 4.6667, 4.5, 4.3333, 4.0833, 3.9167, 3.8333, 3.6667};
  67.   float y[l] = {8.75, 8.4167, 8.0833, 7.75, 7.4167, 7.0833, 6.75, 6.5, 6.1667, 6.0, 5.75, 5.5, 5.25, 5.0833, 4.8333, 4.6667, 4.6667, 4.6667, 4.6667, 4.6667, 4.6667, 4.6667, 4.6667, 4.6667, 4.75, 4.4167, 4.0833, 3.75, 3.5, 3.1667, 2.8333, 2.5833, 2.3333, 2.5, 2.6667, 2.8333, 3.0833, 3.25, 3.4167, 3.5833, 3.75, 4.0, 4.1667, 4.3333, 4.4167, 4.5833, 4.6667, 4.6667, 4.6667, 4.6667, 4.6667, 4.6667, 4.6667, 4.6667, 4.6667, 4.6667, 4.6667, 4.6667, 4.8333, 5.0, 5.1667, 5.3333, 5.5, 5.75, 5.8333, 6.0, 6.1667, 6.4167, 6.5, 6.8333, 7.0833, 7.3333, 7.5, 7.8333, 8.0833, 8.25, 8.5833, 8.3333, 8.1667, 8.0833, 7.9167, 7.6667, 7.5, 7.25, 7.0833, 7.0, 7.0833, 7.25, 7.4167, 7.5833, 7.75, 7.9167, 8.0833, 8.1667, 8.25, 8.4167, 8.5833, 8.75, 8.8333};
  68.   for(i=0;i<l;i+=1){
  69.     go(x[i],y[i]);  
  70.     delay(dly);
  71.   }
  72. }
  73. void hand(){
  74.   int l=55;
  75.   float x[l] ={3.5833, 3.5, 3.75, 4.1667, 4.25, 4.25, 4.5833, 4.5833, 4.5833, 4.5833, 4.9167, 5.25, 5.3333, 5.3333, 5.4167, 5.4167, 5.6667, 5.75, 5.75, 5.6667, 5.9167, 6.25, 6.5833, 6.5833, 6.5833, 6.5833, 6.5833, 6.8333, 6.9167, 7.0, 7.0, 7.25, 7.6667, 7.6667, 7.75, 7.75, 7.75, 7.75, 8.1667, 8.5, 9.0, 9.3333, 9.0, 8.5, 8.0, 7.5, 6.8333, 6.0833, 5.1667, 4.5833, 4.0833, 3.6667, 3.5833, 3.5, 3.5833};
  76.   float y[l] ={6.5, 4.1667, 3.9167, 3.9167, 4.5, 5.9167, 5.8333, 4.9167, 3.5, 2.9167, 2.5833, 2.5833, 2.8333, 3.3333, 5.25, 5.75, 5.6667, 4.9167, 3.9167, 2.5833, 2.1667, 2.25, 2.3333, 2.9167, 3.9167, 5.0, 5.5, 5.5833, 4.5833, 3.6667, 3.1667, 2.8333, 2.9167, 3.5, 4.5833, 5.3333, 6.0833, 7.1667, 6.5833, 5.9167, 5.8333, 6.1667, 6.6667, 8.0, 8.9167, 9.4167, 9.75, 9.8333, 9.8333, 9.5, 9.0, 8.3333, 7.5833, 6.9167, 6.5};
  77.   for(i=0;i<l;i+=1){
  78.     go(x[i],y[i]);  
  79.     delay(dly);
  80.   }
  81. }
  82. void head(){
  83.   int l=128;
  84.   float x[l] ={7.0, 6.92, 6.92, 7.0, 7.0, 7.08, 7.08, 7.17, 7.17, 7.33, 7.5, 7.58, 8.17, 8.25, 8.42, 8.5, 8.67, 8.83, 8.83, 8.75, 8.75, 8.92, 8.92, 8.83, 8.75, 8.75, 8.83, 8.92, 9.0, 8.92, 8.92, 9.08, 9.17, 9.25, 9.33, 9.42, 9.25, 9.25, 9.08, 9.08, 9.0, 9.0, 8.83, 8.83, 8.75, 8.75, 8.67, 8.67, 8.75, 8.75, 8.67, 8.67, 8.58, 8.58, 8.5, 8.5, 8.33, 8.33, 8.17, 8.17, 7.75, 7.67, 7.42, 7.33, 7.25, 7.17, 7.08, 7.0, 6.92, 6.75, 6.67, 6.5, 6.42, 6.17, 6.08, 4.67, 4.58, 4.33, 4.25, 4.08, 4.0, 3.83, 3.75, 3.67, 3.5, 3.42, 2.92, 2.92, 2.75, 2.75, 2.67, 2.67, 2.58, 2.58, 2.5, 2.5, 2.58, 2.58, 2.67, 2.67, 2.75, 2.75, 2.83, 2.83, 2.92, 2.92, 3.08, 3.08, 3.17, 3.17, 3.33, 3.33, 3.42, 3.42, 3.5, 3.5, 3.58, 3.58, 3.67, 3.67, 3.58, 3.58, 3.5, 3.5, 3.42, 3.42, 3.33, 3.25};
  85.   float y[l] ={10.08, 10.0, 9.92, 9.83, 9.5, 9.42, 9.25, 9.17, 9.08, 8.92, 8.92, 9.0, 9.0, 9.08, 9.08, 9.0, 9.0, 8.83, 8.33, 8.25, 8.08, 7.92, 7.75, 7.75, 7.67, 7.58, 7.5, 7.5, 7.42, 7.33, 6.92, 6.75, 6.75, 6.67, 6.67, 6.58, 6.42, 6.33, 6.17, 6.08, 6.0, 5.92, 5.75, 5.67, 5.58, 5.5, 5.42, 5.25, 5.17, 4.67, 4.58, 4.25, 4.17, 4.0, 3.92, 3.75, 3.58, 3.5, 3.33, 3.25, 2.83, 2.83, 2.58, 2.58, 2.5, 2.5, 2.42, 2.42, 2.33, 2.33, 2.25, 2.25, 2.17, 2.17, 2.08, 2.08, 2.17, 2.17, 2.25, 2.25, 2.33, 2.33, 2.42, 2.42, 2.58, 2.58, 3.08, 3.17, 3.33, 3.5, 3.58, 3.75, 3.83, 4.17, 4.25, 4.83, 4.92, 5.42, 5.5, 5.75, 5.83, 6.0, 6.08, 6.25, 6.33, 6.42, 6.58, 6.67, 6.75, 6.83, 7.0, 7.08, 7.17, 7.25, 7.33, 7.42, 7.5, 7.75, 7.83, 9.0, 9.08, 9.42, 9.5, 9.75, 9.83, 9.92, 10.0, 10.0};
  86.   for(i=0;i<l;i+=1){
  87.     go(x[i],y[i]+1);  
  88.     delay(dly);
  89.   }
  90. }
  91. void heart(){
  92.   int l=65;
  93.   float x[l] ={5.92, 6.25, 6.58, 6.92, 7.17, 7.58, 7.92, 8.42, 9.0, 9.5, 10.0, 10.42, 10.83, 11.33, 11.58, 11.83, 11.92, 11.92, 11.75, 11.5, 11.25, 10.83, 10.42, 9.83, 9.17, 8.58, 8.0, 7.42, 7.08, 6.67, 6.42, 6.0, 5.5, 5.0, 4.42, 3.92, 3.42, 3.0, 2.5, 2.0, 1.67, 1.33, 1.0, 0.58, 0.33, 0.08, 0.08, 0.17, 0.42, 0.75, 1.17, 1.58, 2.0, 2.58, 3.08, 3.5, 3.83, 4.33, 4.75, 5.0, 5.25, 5.58, 5.67, 5.83, 6.0};
  94.   float y[l] ={2.25, 1.92, 1.5, 1.0, 0.67, 0.5, 0.33, 0.25, 0.17, 0.17, 0.33, 0.5, 0.83, 1.17, 1.67, 2.42, 3.33, 4.0, 4.58, 5.33, 5.83, 6.5, 7.33, 8.08, 8.83, 9.5, 10.17, 10.67, 11.08, 11.33, 11.67, 12.17, 11.58, 11.0, 10.5, 9.92, 9.33, 8.92, 8.25, 7.75, 7.17, 6.67, 6.08, 5.42, 4.75, 3.83, 3.0, 2.17, 1.67, 1.25, 0.83, 0.5, 0.17, 0.08, 0.08, 0.17, 0.17, 0.25, 0.5, 0.75, 1.08, 1.33, 1.67, 2.0, 2.33};
  95.   for(i=0;i<l;i+=1){
  96.     go(x[i],y[i]+2);  
  97.     delay(dly);
  98.   }
  99. }
  100. void house(){
  101.   int l=112;
  102.   float x[l] ={1.4167, 1.4167, 1.4167, 1.4167, 1.4167, 1.4167, 1.4167, 1.4167, 1.0833, 0.8333, 0.5833, 0.25, 0.25, 0.5833, 0.9167, 1.25, 1.6667, 2.0833, 2.5, 2.9167, 3.25, 3.5833, 3.9167, 4.25, 4.5833, 5.0, 5.3333, 5.75, 6.0, 6.3333, 6.6667, 7.0, 7.25, 7.5, 7.6667, 7.75, 7.6667, 7.6667, 7.6667, 8.0, 8.3333, 8.5833, 8.9167, 9.0, 8.9167, 9.0, 9.0, 9.0, 9.0, 8.9167, 8.9167, 9.1667, 9.4167, 9.6667, 10.0, 10.25, 10.5833, 10.8333, 11.0833, 11.4167, 11.5833, 11.5833, 11.3333, 11.0833, 10.8333, 10.5833, 10.5833, 10.5833, 10.5833, 10.5833, 10.5833, 10.5833, 10.5833, 10.5833, 10.5833, 10.5833, 10.5833, 10.5833, 10.5833, 10.5833, 10.5833, 10.3333, 10.0, 9.6667, 9.25, 8.9167, 8.4167, 8.0, 7.5833, 7.25, 6.75, 6.4167, 6.0, 5.75, 5.3333, 5.0, 4.5833, 4.0833, 3.8333, 3.5833, 3.25, 2.8333, 2.5833, 2.0833, 1.9167, 1.75, 1.4167, 1.4167, 1.4167, 1.4167, 1.4167, 1.4167};
  103.   float y[l] ={7.5, 7.0, 6.5, 6.0, 5.5833, 5.25, 4.75, 4.4167, 4.4167, 4.4167, 4.4167, 4.4167, 4.0833, 3.8333, 3.6667, 3.4167, 3.0833, 2.8333, 2.5833, 2.4167, 2.25, 2.0, 1.6667, 1.5, 1.25, 1.0, 0.8333, 0.5833, 0.4167, 0.5833, 0.6667, 0.9167, 1.0, 1.1667, 1.25, 1.0, 0.8333, 0.5, 0.3333, 0.3333, 0.3333, 0.3333, 0.3333, 0.5, 0.5833, 0.9167, 1.25, 1.5, 1.75, 1.9167, 2.1667, 2.3333, 2.5, 2.6667, 2.8333, 3.0, 3.1667, 3.3333, 3.5, 3.6667, 3.75, 4.1667, 4.1667, 4.1667, 4.1667, 4.1667, 4.3333, 4.5, 4.8333, 5.1667, 5.5, 5.9167, 6.1667, 6.4167, 6.6667, 6.9167, 7.1667, 7.4167, 7.6667, 7.9167, 8.3333, 8.3333, 8.3333, 8.3333, 8.3333, 8.3333, 8.3333, 8.3333, 8.3333, 8.3333, 8.3333, 8.3333, 8.3333, 8.3333, 8.3333, 8.3333, 8.3333, 8.3333, 8.3333, 8.3333, 8.3333, 8.3333, 8.3333, 8.3333, 8.3333, 8.3333, 8.3333, 8.1667, 8.0, 7.9167, 7.6667, 7.5};
  104.   for(i=0;i<l;i+=1){
  105.     go(x[i],y[i]+1);  
  106.     delay(dly);
  107.   }
  108. }
  109. void f22(){
  110.   int l=102;
  111.   float x[l] ={1.8333, 2.1667, 2.4167, 2.75, 3.0, 3.3333, 3.5, 3.8333, 4.0, 4.0, 4.0, 4.0, 4.25, 4.5, 4.5, 4.5833, 4.5833, 4.6667, 4.75, 4.8333, 4.9167, 5.0, 5.0833, 5.1667, 5.1667, 5.25, 5.25, 5.25, 5.25, 5.25, 5.4167, 5.5833, 5.75, 5.75, 5.75, 5.8333, 5.8333, 5.8333, 5.9167, 6.0833, 6.25, 6.5, 6.6667, 6.9167, 7.1667, 7.3333, 7.5833, 7.8333, 7.8333, 7.8333, 7.8333, 7.8333, 7.6667, 7.5, 7.25, 7.0, 6.75, 6.4167, 6.0833, 6.1667, 6.3333, 6.5833, 6.75, 6.8333, 6.8333, 6.8333, 6.8333, 6.8333, 6.6667, 6.5, 6.25, 6.0, 5.75, 5.5833, 5.5833, 5.5, 5.1667, 4.8333, 4.5833, 4.3333, 4.3333, 4.3333, 4.1667, 4.0, 3.9167, 3.6667, 3.3333, 3.0, 3.0, 3.0, 3.1667, 3.4167, 3.6667, 3.3333, 3.0, 2.6667, 2.3333, 2.0, 1.9167, 1.8333, 1.75, 1.8333};
  112.   float y[l] ={7.5833, 7.25, 7.0, 6.8333, 6.5, 6.25, 5.9167, 5.6667, 5.3333, 4.9167, 4.5833, 4.25, 4.0833, 3.9167, 3.5, 3.0833, 2.75, 2.3333, 2.0, 1.75, 1.8333, 1.9167, 2.1667, 2.4167, 2.6667, 2.9167, 3.1667, 3.4167, 3.6667, 3.9167, 4.0833, 4.1667, 4.25, 4.4167, 4.6667, 4.9167, 5.0833, 5.3333, 5.5833, 5.75, 5.9167, 6.0833, 6.25, 6.5, 6.75, 7.0, 7.1667, 7.4167, 7.5833, 7.6667, 7.9167, 8.1667, 8.1667, 8.3333, 8.4167, 8.5, 8.5833, 8.6667, 8.75, 9.0, 9.0833, 9.25, 9.5, 9.5, 9.5833, 9.75, 9.9167, 10.0833, 10.1667, 10.25, 10.25, 10.0833, 9.9167, 9.75, 9.5, 9.3333, 9.25, 9.25, 9.25, 9.25, 9.3333, 9.5833, 9.75, 10.0, 10.0833, 10.25, 10.25, 10.1667, 10.0, 9.6667, 9.4167, 9.1667, 8.9167, 8.6667, 8.5833, 8.5, 8.4167, 8.25, 8.0, 7.6667, 7.5833, 7.4167};
  113.   for(i=0;i<l;i+=1){
  114.     go(x[i],y[i]+1);  
  115.     delay(dly);
  116.   }
  117. }
  118. void butterfly(){
  119.   int l=133;
  120.   float x[l] ={3.333, 3.75, 4.083, 4.417, 4.75, 5.083, 5.333, 5.667, 5.833, 6.25, 6.583, 6.917, 7.167, 7.333, 7.583, 7.75, 8.083, 8.333, 8.667, 9.083, 9.417, 9.75, 10.083, 10.5, 10.917, 11.333, 11.667, 11.667, 11.667, 11.667, 11.583, 11.583, 11.417, 11.25, 11.083, 11.0, 10.917, 10.833, 10.833, 10.75, 10.5, 10.083, 9.75, 9.417, 9.083, 8.833, 9.0, 9.417, 9.667, 9.917, 10.083, 10.25, 10.333, 10.417, 10.417, 10.333, 10.333, 10.083, 10.0, 9.75, 9.583, 9.25, 8.917, 8.667, 8.333, 8.083, 7.833, 7.5, 7.333, 7.333, 7.167, 7.0, 6.917, 6.75, 6.667, 6.583, 6.5, 6.333, 6.083, 5.917, 5.833, 5.833, 5.667, 5.667, 5.583, 5.583, 5.417, 5.25, 5.0, 4.667, 4.417, 4.083, 3.75, 3.417, 3.0, 2.667, 2.417, 2.25, 2.083, 2.083, 2.25, 2.333, 2.583, 2.917, 3.167, 3.333, 3.083, 2.917, 2.5, 2.25, 2.0, 1.667, 1.583, 1.333, 1.25, 1.083, 1.083, 0.917, 0.667, 0.417, 0.333, 0.25, 0.25, 0.583, 0.917, 1.25, 1.75, 2.0, 2.25, 2.583, 2.667, 2.917, 3.083};
  121.   float y[l] ={1.667, 1.917, 2.25, 2.5, 2.833, 3.0, 3.25, 3.5, 3.75, 3.833, 3.833, 3.583, 3.25, 2.917, 2.75, 2.583, 2.25, 1.917, 1.667, 1.25, 1.167, 0.917, 0.583, 0.583, 0.5, 0.417, 0.5, 0.667, 1.0, 1.25, 1.5, 1.833, 2.083, 2.333, 2.583, 2.917, 3.25, 3.5, 3.833, 4.083, 4.333, 4.333, 4.333, 4.333, 4.167, 4.25, 4.5, 4.667, 4.833, 5.0, 5.167, 5.417, 5.667, 6.0, 6.333, 6.667, 7.0, 7.25, 7.5, 7.667, 7.833, 7.917, 8.167, 8.25, 8.333, 8.333, 8.333, 8.167, 7.917, 7.583, 7.333, 7.0, 6.833, 6.667, 6.417, 6.167, 6.0, 6.0, 6.0, 6.0, 6.25, 6.5, 6.75, 7.083, 7.417, 7.667, 8.167, 8.25, 8.333, 8.5, 8.5, 8.5, 8.5, 8.333, 8.167, 7.917, 7.583, 7.25, 6.833, 6.333, 6.0, 5.583, 5.25, 5.0, 4.833, 4.667, 4.583, 4.583, 4.583, 4.583, 4.583, 4.5, 4.083, 3.75, 3.333, 3.0, 2.667, 2.333, 2.083, 1.833, 1.5, 1.25, 0.75, 0.583, 0.583, 0.583, 0.667, 0.833, 1.0, 1.083, 1.25, 1.25, 1.417};
  122.   for(i=0;i<l;i+=1){
  123.     go(x[i],y[i]+2);  
  124.     delay(dly);
  125.   }
  126. }
  127. void lamp(){
  128.   int l=114;
  129.   float x[l] ={0.5833, 1.0, 1.3333, 1.75, 2.1667, 2.6667, 3.1667, 3.6667, 4.1667, 4.5833, 5.0, 5.25, 5.0833, 5.0833, 5.0833, 4.75, 4.4167, 4.25, 3.9167, 3.8333, 3.8333, 3.9167, 4.0, 4.1667, 4.3333, 4.5, 4.6667, 4.6667, 4.6667, 4.6667, 4.6667, 4.6667, 4.6667, 4.75, 4.75, 4.9167, 5.0833, 5.25, 5.4167, 5.5833, 5.75, 5.8333, 6.0, 6.0833, 6.1667, 6.25, 6.25, 6.25, 6.3333, 6.3333, 6.25, 6.0833, 6.0, 5.9167, 5.75, 5.6667, 5.4167, 5.3333, 5.25, 5.25, 5.25, 5.25, 5.25, 5.25, 5.5, 5.9167, 6.3333, 6.75, 7.1667, 7.5833, 8.0, 8.4167, 8.8333, 9.25, 9.6667, 9.5833, 9.5, 9.4167, 9.3333, 9.1667, 9.0, 8.6667, 8.5, 8.25, 7.9167, 7.75, 7.4167, 7.0833, 6.75, 6.4167, 6.0, 5.5833, 5.25, 4.75, 4.3333, 4.0, 3.5833, 3.25, 2.9167, 2.5833, 2.3333, 2.0, 1.75, 1.5833, 1.4167, 1.1667, 1.0, 0.8333, 0.75, 0.6667, 0.6667, 0.5833, 0.5833, 0.5833};
  130.   float y[l] ={7.4167, 7.1667, 7.0, 6.9167, 6.8333, 6.8333, 6.6667, 6.6667, 6.6667, 6.6667, 6.6667, 6.5833, 6.5, 6.1667, 5.75, 5.6667, 5.5833, 5.3333, 5.0, 4.5833, 4.1667, 3.75, 3.5, 3.1667, 2.75, 2.5, 2.1667, 1.8333, 1.5, 1.1667, 0.9167, 0.6667, 0.3333, 0.5833, 0.8333, 0.9167, 1.0, 1.25, 1.4167, 1.6667, 1.9167, 2.1667, 2.3333, 2.6667, 2.9167, 3.1667, 3.5, 3.75, 4.0, 4.25, 4.5, 4.75, 5.0, 5.1667, 5.3333, 5.3333, 5.4167, 5.5, 5.6667, 6.0, 6.0833, 6.3333, 6.4167, 6.5833, 6.6667, 6.6667, 6.6667, 6.6667, 6.6667, 6.75, 6.8333, 6.8333, 7.0, 7.0833, 7.25, 7.5833, 7.9167, 8.25, 8.5833, 8.9167, 9.3333, 9.5, 9.8333, 10.1667, 10.3333, 10.5833, 10.6667, 10.9167, 11.0833, 11.25, 11.25, 11.3333, 11.3333, 11.3333, 11.25, 11.1667, 11.1667, 11.0, 10.8333, 10.75, 10.5833, 10.4167, 10.1667, 9.9167, 9.6667, 9.5, 9.25, 9.0, 8.8333, 8.5, 8.3333, 8.1667, 7.8333, 7.4167};
  131.   for(i=0;i<l;i+=1){
  132.     go(x[i],y[i]+2);  
  133.     delay(dly);
  134.   }
  135. }
  136. void tree(){
  137.   int l=79;
  138.   float x[l] ={3.08, 3.42, 3.58, 3.75, 3.75, 3.75, 3.75, 3.67, 3.17, 2.58, 2.17, 1.58, 1.08, 0.83, 0.67, 0.42, 0.17, 0.17, 0.42, 0.75, 1.0, 1.25, 1.25, 1.42, 1.67, 2.08, 2.5, 2.83, 3.17, 3.42, 3.58, 3.92, 4.25, 4.5, 4.83, 5.0, 5.33, 5.67, 6.0, 6.25, 6.67, 6.83, 7.0, 7.25, 7.58, 7.92, 8.08, 8.17, 8.17, 8.17, 7.92, 8.0, 8.25, 8.33, 8.5, 8.58, 8.58, 8.42, 8.25, 8.0, 7.75, 7.5, 7.17, 6.67, 6.25, 5.92, 5.75, 5.42, 5.17, 5.08, 5.0, 5.0, 5.0, 5.08, 5.17, 5.33, 5.5, 5.75, 5.92};
  139.   float y[l] ={11.0, 10.25, 9.67, 9.0, 8.42, 7.67, 6.92, 6.33, 6.33, 6.17, 6.25, 6.33, 6.17, 5.67, 5.0, 4.58, 4.17, 3.5, 3.08, 2.67, 2.5, 2.42, 2.0, 1.58, 1.33, 1.17, 1.0, 1.08, 1.25, 1.25, 1.0, 0.92, 1.0, 1.08, 0.92, 0.67, 0.67, 0.58, 0.58, 0.67, 0.67, 0.92, 1.25, 1.17, 1.42, 1.5, 1.92, 2.17, 2.58, 2.92, 3.17, 3.33, 3.58, 3.75, 4.17, 4.5, 4.92, 5.33, 5.75, 5.92, 6.08, 6.33, 6.5, 6.5, 6.5, 6.33, 6.17, 6.17, 6.33, 6.67, 6.92, 7.42, 8.0, 8.5, 9.0, 9.42, 9.92, 10.33, 10.83};
  140.   for(i=0;i<l;i+=1){
  141.     go(x[i],y[i]+2);  
  142.     delay(dly);
  143.   }
  144. }
  145. void A(){
  146.   int l=14;
  147.   float x[l] ={3.5833, 4.25, 5.5833, 6.25, 7.5, 8.25, 7.5, 4.25, 7.5, 8.25, 6.25, 5.5833, 4.25, 3.5833};
  148.   float y[l] ={8.1667, 6.1667, 2.4167, 2.4167, 6.1667, 8.1667, 6.1667, 6.1667, 6.1667, 8.1667, 2.4167, 2.4167, 6.1667, 8.1667};
  149.   for(i=0;i<l;i+=1){
  150.     go(x[i],y[i]);  
  151.     delay(dly);
  152.   }
  153. }
  154. void square(){
  155.   for(i=0;i<10;i++){
  156.     go(0,i);  
  157.     delay(dly);
  158.   }
  159.   for (i=0;i<10;i++){
  160.     go(i,10);  
  161.     delay(dly);
  162.   }
  163.   for(i=10;i>0;i-=1){
  164.     go(10,i);
  165.     delay(dly);
  166.   }
  167.   for(i=10;i>0;i-=1){
  168.     go(i,0);
  169.     delay(dly);
  170.   }
  171. }
  172. void line(){
  173.     for(i=0;i<10;i++){
  174.       go(i+4,4);
  175.       delay(dly);
  176.       }
  177.     for(i=10;i>0;i--){
  178.       go(i+4,4);
  179.       delay(dly);
  180.       }
  181. }
  182. void working_envelop(){
  183.   
  184.   for(float x=16;x>=0;x-=0.20){
  185.     go(x,1);  
  186.     delay(50);
  187.   }
  188.   
  189.   m2.write(20);
  190.   
  191.   for (i=150;i<180;i+=1){
  192.     m1.write(i);
  193.     delay(50);
  194.   }  
  195.   for (i=20;i<170;i+=1){
  196.     m2.write(i);
  197.     delay(15);
  198.   }
  199.   for(i=180;i>10;i-=1){
  200.     m1.write(i);
  201.     delay(25);
  202.   }
  203. }
  204. void working_envelop_one(){
  205.   for(i=0;i<180;i+=1){
  206.     m1.write(i);
  207.     delay(25);  
  208.   }
  209.   
  210.   for(i=180;i>0;i-=1){
  211.     m1.write(i);
  212.     delay(25);  
  213.   }  
  214. }
  215. void loop() {
  216.   working_envelop();
  217.   
  218.   star();
  219.   tree();
  220.   lamp();
  221.   human();
  222.   house();
  223.   heart();
  224.   hand();
  225.   f22();
  226.   butterfly();
  227.   A();
  228.   
  229.   delay(500);
  230. }
复制代码


回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 前天 18:02

【Arduino 动手做】在 Rangoli 或沙子上绘画和书写的机器人

附录
项目链接:https://www.hackster.io/Robotics ... making-robot-7e3d60
项目作者:印度浦那 Robotics EveryDay
视频教程(4分钟):https://www.youtube.com/watch?v=GRJwoxl9V6U
项目代码:https://www.hackster.io/code_files/572041/download
3D打印文件:https://hacksterio.s3.amazonaws. ... obot_uQ2SvRREZ2.stl

【Arduino 动手做】在 Rangoli 或沙子上绘画和书写的机器人图1

【Arduino 动手做】在 Rangoli 或沙子上绘画和书写的机器人图2

附件.zip

158.67 KB, 下载次数: 0

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4 备案 沪公网安备31011502402448

© 2013-2025 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail