今天跟大家伙儿唠唠我做的“羞花”这个事儿,别想歪,我说的是我最近捣鼓的一个小玩意儿,灵感来自杨贵妃“羞花”的典故。
话说那天,我在花鸟市场溜达,看到一盆含羞草,叶子绿油油的,挺招人喜欢。突然就想,能不能搞点什么,把这“羞花”的意境给整出来。
我先是琢磨,怎么能让它“羞”得更有意思。直接碰肯定不行,没啥技术含量。得有点科技感,有点仪式感。
第一步,选材料!
- 含羞草一盆,这个是主角。
- Arduino Uno 开发板一块,我的老伙计。
- 超声波传感器一个,用来感应距离。
- 舵机一个,控制杆子去碰含羞草。
- 一些杜邦线,连接各种东西。
- 一个好看的小盒子,用来装电路。
第二步,开始搭电路!
超声波传感器连到 Arduino 上,主要是 VCC 接 5V,GND 接地,Trig 和 Echo 分别接两个数字 IO 口。舵机也一样,信号线接一个数字 IO 口,电源地线也接这步没啥难度,网上一搜一大堆教程。
第三步,写代码!
这块儿稍微有点费劲,毕竟我不是专业的程序员。我的想法是,当超声波传感器检测到有人靠近时,就触发舵机,让它动一下,碰一下含羞草。
arduino
#include
Servo myservo; // 创建舵机对象
int trigPin = 9; // 超声波发射端
int echoPin = 10; // 超声波接收端
int servoPin = 8; // 舵机信号线
long duration;
int distance;
void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
*(servoPin); // 连接舵机到引脚
*(9600);
void loop() {
// 超声波测距
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = duration 0.034 / 2;
*("Distance: ");
*(distance);
*(" cm");
// 如果距离小于 20cm,就让舵机动一下
if (distance < 20) {
*(90); // 舵机转到 90 度
delay(500);
*(0); // 舵机回到 0 度
delay(1000);
delay(100);
这段代码就是,先测距离,如果距离小于 20 厘米,舵机就转一下,模拟碰花。
第四步,组装!
把 Arduino、超声波传感器、舵机啥的都塞到那个小盒子里。舵机上连个小杆,杆对着含羞草。这步得有点耐心,线路啥的都得理顺。
第五步,测试!
插上电,把手放到超声波传感器前面,含羞草“害羞”!成!
分享点心得:
这玩意儿挺简单的,关键是要有想法。
代码可以再优化,比如加个光敏传感器,白天“羞”,晚上不“羞”。
那个小盒子一定要选好看的,毕竟是门面。
这回“羞花”实践还是挺有意思的,把科技和文化结合一下,也算是给自己找点乐子。