27浏览
查看: 27|回复: 2

[项目] 【Arduino 动手做】产生 15 种不同运动效果的无用盒子

[复制链接]
本帖最后由 驴友花雕 于 2025-6-13 08:06 编辑

一台按下开关的无用机器。它会自行关闭,并产生 15 种不同的运动效果。

又一个没用的盒子。我在网上看到它,就决定自己做一个。做起来和玩起来都很有趣。

旧代码很容易找到,但有一些对我来说有用的小改进。非常感谢编写代码的人,他真的懂乐趣。这是我画的几张图。虽然构造完全可以自定义,但我还是把它们贴出来给感兴趣的人看,因为我找不到类似的入门资料。

电路图也根据我的喜好做了一些调整。我选择使用 USB 电源(手机充电器或移动电源),而不是电池,而是通过一个二极管连接到 5V 引脚。这样可以防止在将开发板插入计算机 USB 进行编程时伺服电机通电,因为电流消耗过高。

电气图
电路图根据我的喜好做了一些调整。我选择使用 USB 电源(手机充电器或移动电源),而不是电池,而是通过一个二极管连接到 5V 引脚。这样可以防止在将开发板插入计算机 USB 进行编程时伺服电机通电,因为电流消耗过高。

也适用于 UNO,无需任何改动。
上传时只需在 Arduino 编辑器中选择合适的开发板即可。
旧代码很容易找到,但有一些对我来说有用的小改进。非常感谢编写代码的人,他真的很有趣。

在 YouTube 上发表评论或给我发送电子邮件(YO3RAK at gmail.com )以获取更多信息,因为该平台不会通知我新的评论。

【Arduino 动手做】产生 15 种不同运动效果的无用盒子图1

【Arduino 动手做】产生 15 种不同运动效果的无用盒子图5

【Arduino 动手做】产生 15 种不同运动效果的无用盒子图2

【Arduino 动手做】产生 15 种不同运动效果的无用盒子图4

【Arduino 动手做】产生 15 种不同运动效果的无用盒子图3

驴友花雕  中级技神
 楼主|

发表于 昨天 08:02

【Arduino 动手做】它会自行关闭并产生 15 种不同的运动...

项目代码

  1. #include <Servo.h>
  2. Servo handServo;
  3. Servo boxServo;
  4. int switchStatus=0, action=1, vot, randNumber=0;
  5. const int ledPin = 13;
  6. const int frontSwitchPin = 2;
  7. const int handServoPin = 5;
  8. const int boxServoPin = 6;
  9. void setup()
  10. {
  11.   Serial.begin(9600);
  12.   
  13.   pinMode(ledPin, OUTPUT);
  14.   
  15.   handServo.attach(handServoPin);
  16.   boxServo.attach(boxServoPin);
  17.   handServo.write(180);
  18.   boxServo.write(70);
  19.   //randomSeed(analogRead(0));
  20. }
  21. void loop()
  22. {
  23.   switchStatus = digitalRead(frontSwitchPin);
  24.   //action = random(1,16);
  25.   
  26.   if (switchStatus == LOW){
  27.    
  28.     if (action == 1)
  29.     {
  30.       Serial.println("Action 1");
  31.       for (int i = 70; i <= 110; i++)
  32.       {
  33.         boxServo.write(i);
  34.         delay(20);
  35.       }
  36.       for (int i = 180; i >= 35; i--)
  37.       {
  38.         handServo.write(i);
  39.         delay(20);
  40.       }
  41.       delay(1000);
  42.       handServo.write(26);
  43.       delay(200);
  44.       for (int i = 26; i <=180; i++)
  45.       {
  46.         handServo.write(i);
  47.         delay(20);
  48.       }
  49.       for (int i = 110; i >= 70; i--)
  50.       {
  51.         boxServo.write(i);
  52.         delay(20);
  53.       }
  54.       action++;
  55.     }
  56.    
  57.    
  58.     else if (action == 2)
  59.     {
  60.       Serial.println("Action 2");
  61.       for (int i = 70; i <= 110; i++){
  62.         boxServo.write(i);
  63.         delay(6);
  64.       }
  65.       delay(550);
  66.       handServo.write(26);
  67.       delay(1000);
  68.       handServo.write(180);
  69.       delay(550);
  70.       boxServo.write(70);
  71.       delay(1500);
  72.       for (int i = 70; i <= 110; i++){
  73.         boxServo.write(i);
  74.         delay(6);
  75.       }
  76.       delay(3000);
  77.       boxServo.write(70);
  78.       action++;
  79.     }
  80.    
  81.     else if (action == 3)
  82.     {
  83.       Serial.println("Action 3");
  84.       for (int i = 70; i <= 110; i++){
  85.         boxServo.write(i);
  86.         delay(6);
  87.       }
  88.       delay(1000);
  89.       boxServo.write(70);
  90.       delay(2000);
  91.       for (int i = 70; i <= 110; i++){
  92.         boxServo.write(i);
  93.         delay(6);
  94.       }
  95.       handServo.write(26);
  96.       delay(650);
  97.       handServo.write(180);
  98.       delay(500);
  99.       boxServo.write(70);
  100.       action++;
  101.     }
  102.    
  103.     else if (action == 4)
  104.     {
  105.       Serial.println("Action 4");
  106.       for (int i = 70; i <= 110; i++)
  107.       {
  108.         boxServo.write(i);
  109.         delay(20);
  110.       }
  111.       for (int i = 180; i >= 35; i--)
  112.       {
  113.         handServo.write(i);
  114.         delay(20);
  115.       }
  116.       delay(2000);
  117.       handServo.write(26);
  118.       delay(200);
  119.       handServo.write(180);
  120.       delay(400);
  121.       boxServo.write(70);
  122.       action++;
  123.     }
  124.    
  125.     else if (action == 5)
  126.     {
  127.       Serial.println("Action 5");
  128.       for (int i = 70; i <= 110; i++){
  129.         boxServo.write(i);
  130.         delay(6);
  131.       }
  132.       delay(2000);
  133.       handServo.write(65);
  134.       delay(550);
  135.       handServo.write(40);
  136.       delay(200);
  137.       handServo.write(65);
  138.       delay(200);
  139.       handServo.write(40);
  140.       delay(200);
  141.       handServo.write(65);
  142.       delay(200);
  143.       handServo.write(40);
  144.       delay(200);
  145.       handServo.write(65);
  146.       delay(200);
  147.       handServo.write(40);
  148.       delay(200);
  149.       handServo.write(65);
  150.       delay(200);
  151.       handServo.write(40);
  152.       delay(200);
  153.       handServo.write(65);
  154.       delay(2000);
  155.       handServo.write(26);
  156.       delay(400);
  157.       handServo.write(180);
  158.       delay(400);
  159.       boxServo.write(70);
  160.       action++;
  161.     }
  162.    
  163.     else if (action == 6)            
  164.     {
  165.       Serial.println("Action 6");
  166.       for (int i = 70; i <110; i++)
  167.       {
  168.         boxServo.write(i);
  169.         delay(20);
  170.       }
  171.       delay(1000);
  172.       for (int i = 0; i < 12; i++)
  173.       {
  174.         for (int j = 70; j <= 110; j++){
  175.           boxServo.write(j);
  176.           delay(6);
  177.         }
  178.         delay(200);
  179.       }
  180.       for (int i = 180; i >= 35; i--)
  181.       {
  182.         handServo.write(i);
  183.         delay(30);
  184.       }
  185.       handServo.write(26);
  186.       delay(400);
  187.       handServo.write(180);
  188.       delay(400);
  189.       boxServo.write(70);
  190.       delay(1500);
  191.       for (int i = 70; i <= 110; i++){
  192.         boxServo.write(i);
  193.         delay(6);
  194.       }
  195.       delay(3000);
  196.       boxServo.write(70);
  197.       action++;
  198.     }
  199.    
  200.     else if (action == 7)
  201.     {
  202.       Serial.println("Action 7");
  203.       for (int i = 70; i <= 110; i++){
  204.         boxServo.write(i);
  205.         delay(6);
  206.       }
  207.       delay(400);
  208.       handServo.write(26);
  209.       delay(1000);
  210.       for (int i = 0; i < 6; i++)
  211.       {
  212.         for (int j = 70; j <= 110; j++){
  213.           boxServo.write(j);
  214.           delay(6);
  215.         }
  216.         delay(200);
  217.       }
  218.       delay(500);
  219.       handServo.write(180);
  220.       delay(400);
  221.       boxServo.write(70);
  222.       action++;
  223.     }
  224.    
  225.     else if (action == 8)
  226.     {
  227.       Serial.println("Action 8");
  228.       for (int i = 70; i <= 110; i++){
  229.         boxServo.write(i);
  230.         delay(6);
  231.       }
  232.       handServo.write(26);
  233.       delay(2000);
  234.       for (int i = 0; i < 7; i++)
  235.       {
  236.         handServo.write(75);
  237.         delay(100);
  238.         handServo.write(40);
  239.         delay(100);
  240.       }
  241.       delay(500);
  242.       handServo.write(180);
  243.       delay(1000);
  244.       boxServo.write(70);
  245.       action++;
  246.     }
  247.    
  248.     else if (action == 9)
  249.     {
  250.       Serial.println("Action 9");
  251.       for (int i = 70; i <= 105; i++){
  252.         boxServo.write(i);
  253.         delay(6);
  254.       }
  255.       delay(2000);
  256.       boxServo.write(110);
  257.       for (int i = 180; i >=35; i--)
  258.       {
  259.         handServo.write(i);
  260.         delay(40);
  261.       }
  262.       delay(500);
  263.       handServo.write(26);
  264.       delay(200);
  265.       for (int i = 26; i <=180; i++)
  266.       {
  267.         handServo.write(i);
  268.         delay(40);
  269.       }
  270.       boxServo.write(70);
  271.       delay(2000);
  272.       boxServo.write(100);
  273.       delay(3000);
  274.       boxServo.write(70);
  275.       action++;
  276.     }
  277.   
  278.    
  279.     else if (action == 10)
  280.     {
  281.       Serial.println("Action 10");
  282.       for (int i = 70; i <= 105; i++)
  283.       {
  284.         boxServo.write(i);
  285.         delay(100);
  286.       }
  287.       delay(1000);
  288.       for (int i = 0; i < 10; i++)
  289.       {
  290.         for (int j = 70; j <= 100; j++){
  291.           boxServo.write(j);
  292.           delay(6);
  293.       }
  294.         delay(100);
  295.       }
  296.       boxServo.write(110);
  297.       delay(100);
  298.       handServo.write(26);
  299.       delay(650);
  300.       handServo.write(180);
  301.       delay(400);
  302.       boxServo.write(70);
  303.       action++;
  304.     }
  305.    
  306.     else if (action == 11)
  307.     {
  308.       Serial.println("Action 11");
  309.       for (int i = 70; i <= 110; i++){
  310.         boxServo.write(i);
  311.         delay(6);
  312.       }
  313.       handServo.write(26);
  314.       delay(2000);
  315.       for (int i = 0; i < 3; i++)
  316.       {
  317.         handServo.write(65);
  318.         delay(200);
  319.         handServo.write(40);
  320.         delay(200);
  321.       }
  322.       delay(1500);
  323.       handServo.write(180);
  324.       delay(400);
  325.       boxServo.write(70);
  326.       delay(1500);
  327.       for (int i = 70; i <= 110; i++){
  328.         boxServo.write(i);
  329.         delay(6);
  330.       }
  331.       handServo.write(26);
  332.       delay(3000);
  333.       handServo.write(180);
  334.       delay(400);
  335.       boxServo.write(70);
  336.       action++;
  337.     }
  338.    
  339.     else if (action == 12)
  340.     {
  341.       Serial.println("Action 12");
  342.       for (int i = 70; i <= 110; i++)
  343.       {
  344.         boxServo.write(i);
  345.         delay(50);
  346.       }
  347.       delay(1000);
  348.       for (int i = 180; i >= 26; i--)
  349.       {
  350.         handServo.write(i);
  351.         delay(50);
  352.       }
  353.       delay(2000);
  354.       handServo.write(26);
  355.       delay(200);
  356.       handServo.write(180);
  357.       delay(400);
  358.       boxServo.write(70);
  359.       action++;
  360.     }
  361.    
  362.     else if (action == 13)
  363.     {
  364.       Serial.println("Action 13");
  365.       for (int i = 70; i <= 110; i++){
  366.         boxServo.write(i);
  367.         delay(6);
  368.       }
  369.       delay(2000);
  370.       for (int i = 180; i >= 60; i--)
  371.       {
  372.         handServo.write(i);
  373.         delay(40);
  374.       }
  375.       for (int i = 0; i < 3; i++)
  376.       {
  377.         handServo.write(60);
  378.         delay(200);
  379.         handServo.write(40);
  380.         delay(800);
  381.       }
  382.       handServo.write(26);
  383.       delay(2000);
  384.       handServo.write(180);
  385.       delay(500);
  386.       boxServo.write(70);
  387.       action++;
  388.     }
  389.    
  390.     else if (action == 14)
  391.     {
  392.       Serial.println("Action 14");
  393.       for (int i = 70; i <= 105; i++){
  394.         boxServo.write(i);
  395.         delay(6);
  396.       }
  397.       delay(4000);
  398.       boxServo.write(110);
  399.       handServo.write(26);
  400.       delay(650);
  401.       handServo.write(180);
  402.       delay(500);
  403.       boxServo.write(100);
  404.       delay(4000);
  405.       boxServo.write(70);
  406.       action++;
  407.     }
  408.    
  409.     else if (action == 15)
  410.     {
  411.       Serial.println("Action 15");
  412.       for (int i = 70; i <= 105; i++){
  413.         boxServo.write(i);
  414.         delay(6);
  415.       }
  416.       delay(1000);
  417.       for (int i = 0; i < 3; i++)
  418.       {      
  419.         for (int j = 70; j <= 105; j++){
  420.           boxServo.write(j);
  421.           delay(50);
  422.         }
  423.         for (int j = 105; j >= 70; j--)
  424.         {
  425.           boxServo.write(j);
  426.           delay(50);
  427.         }
  428.       }
  429.       for (int j = 70; j <= 110; j++){
  430.         boxServo.write(j);
  431.         delay(50);
  432.       }
  433.       for (int i = 180; i >= 35; i--)
  434.       {
  435.         handServo.write(i);
  436.         delay(40);
  437.       }
  438.       delay(1000);
  439.       handServo.write(26);
  440.       delay(400);
  441.       handServo.write(180);
  442.       delay(400);
  443.       boxServo.write(70);
  444.       action = 1;
  445.     }
  446.    
  447.   }
  448.   
  449. }
复制代码


回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 昨天 08:06

【Arduino 动手做】它会自行关闭并产生 15 种不同运动效...

附录
【Arduino 动手做】它会自行关闭并产生 15 种不同运动效果的无用盒子
项目链接:https://www.hackster.io/viorelra ... with-arduino-d67b47
项目作者:维奥雷尔拉科维泰亚努

项目视频 :https://www.youtube.com/watch?v=QCohS-ENN_Q
项目代码:https://www.hackster.io/code_files/463257/download

【Arduino 动手做】产生 15 种不同运动效果的无用盒子图1

回复

使用道具 举报

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

本版积分规则

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

硬件清单

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

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

mail