看了别人写的帖子,做了一个玩微信跳一跳的程序,然后辅助自己玩游戏,然后自己手也挺痒痒的,也想做出一个来。
看论坛里面别人用继电器做的,然后由于没有继电器,所以要找一个动作的东西代替,最后由舵机来实现来,舵机上压一个重物来将它固定好。
看论坛里面别人用继电器做的,然后由于没有继电器,所以要找一个动作的东西代替,最后由舵机来实现来,舵机上压一个重物来将它固定好。
那么首先看一下成绩,是我不想玩了,室友把我给弄死了,要不然应该无限玩下去。
然后就是程序和接线了。由于水平有限,写的程序不好的地方请大家多多批评指正,然后一起互相学习,谋求进步。
舵机上固定一个棉签 ,棉签沾水湿润后通上5v电压,就可以充当触控笔了,然后固定到舵机法兰上,如下图。
具体舵机是什么,大家可以百度上搜或者到淘宝上看也可以,都可以搜到具体的图片可以看的很清楚,
包括舵机的外形结构, 注意弄明白舵机的动作,
和你想实现的运动过程:
以下是我的程序:
#include <Servo.h>
Servo myservo;
int char_to_int(char i)
{
switch(i)
{
case '0':return 0;
case '1':return 1;
case '2':return 2;
case '3':return 3;
case '4':return 4;
case '5':return 5;
case '6':return 6;
case '7':return 7;
case '8':return 8;
case '9':return 9;
default: return 0;
}
}
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(8,OUTPUT);
myservo.attach(8);
myservo.write(120);
delay(2000);
}
void loop() {
// put your main code here, to run repeatedly:
char a,b,c;
int i;
while(!Serial.available());//等待数据
if(Serial.available())
{
a=Serial.read();
delay(3);
}
if(Serial.available())
{
b=Serial.read();
delay(3);
}
if(Serial.available())
{
c=Serial.read();
delay(3);
}
if(b==NULL)
{
i=char_to_int(a);
Serial.println(i,DEC);
}
else if(c==NULL)
{
i=char_to_int(a)*10+char_to_int(b);
Serial.println(i,DEC);
}
else
{
i=char_to_int(a)*100+char_to_int(b)*10+char_to_int(c);
Serial.println(i,DEC);
}
i=i*23;
for(int j=120;j<=135;j++)
{
myservo.write(j);
delay(5);
}
delay(i);
for(int j=135;j>=120;j--)
{
myservo.write(j);
delay(5);
}
}
然后再上个视频吧:
最后就是接线的事了,其实只有一个舵机,给它通上电,由于舵机没有负载,因此用Arduino的vcc和gnd供电也可以,
然后信号线连到Arduino UNO的8号引脚。
最后说明一下量的数据,量的是两个地方的长度,单位mm,取整数就好,打开串口监视器输入数值发送出去就行:还有一点就是舵机的角度要自己找,这个角度每个人都不一样
具体的角度值怎么找可以参考我另一个帖子,串口控制舵机旋转的那个
希望大家多多批评指正,谢谢。
我的博客:www.iilala.com