Posted on  Updated on 

无聊的盒子制作

前言

一开始想把这个当成一个开源项目来做,然后发现想要超越网上现有的开源项目,还是需要费一番功夫,至少不是花一两天就能完成的。
目前的项目其实还不是很完善,甚至部分打印件需要用小刀进行修正,遂本次制作仅自娱自乐,作为自己的练习项目。
文件仓库如下

https://github.com/liwuyou/box.git

arduino代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
// 无聊的盒子
//使用mg90s舵机
#include <Servo.h>
Servo myservo; //创建一个舵机控制对象

int close_pos = 110; // 该变量用与存储舵机能够关闭钮子开关的角度
int home_pos = 20; // 回正角度

int pin_on = 2;
void setup()
{
Serial.begin(9600);
myservo.attach(9); // 该舵机由arduino第九脚控制
myservo.write(home_pos);
pinMode(pin_on,INPUT_PULLUP);

randomSeed(analogRead(0));//随机数种子
}

void case_1(){
// 快进快出

myservo.write(close_pos);
delay(300);
myservo.write(home_pos);
delay(300);
}

void case_2(){
//中速
delay(500);
myservo.write(close_pos);
delay(500);
myservo.write(home_pos);
delay(1000);
}

void case_3(){
//低速
delay(500);
myservo.write(close_pos);
delay(1000);
myservo.write(home_pos);
delay(1000);
}

void case_4(){
//疲惫
int pos;
for(pos = home_pos; pos<=close_pos-20; pos+=1)
{
myservo.write(pos);
delay(30);
}
myservo.write(close_pos);
delay(1000);
myservo.write(home_pos);
delay(500);
}

void case_5(){
//生气
int pos;
for(pos = home_pos; pos<=close_pos-20; pos+=1)
{
myservo.write(pos);
delay(10);
}
for(pos = close_pos-20; pos>=home_pos+30; pos-=1)
{
myservo.write(pos);
delay(10);
}
myservo.write(close_pos);
delay(1000);
myservo.write(home_pos);
delay(500);
}

void loop()
{
int randNumber = random(5);
if(digitalRead(2)==0){
switch(randNumber){
case 0:case_1();break;
case 1:case_2();break;
case 2:case_3();break;
case 3:case_4();break;
case 4:case_5();break;

}
}
}