本帖最后由 大连林海 于 2015-11-29 10:02 编辑
很久之前 就看到陈杰老师做了一个bob,不对 ,是各个变种的,做的非常好,很诱惑人,还送了我一个。还看到小强之工做了一个小车,于是灵感一来,我············用废弃的包装纸盒也来做一个另类,话说另类就是非常丑的机器人,外观不美,设计感很差,不过是用废弃的纸盒来做的。下面不废话,直接上我的实践步奏。器材准备:
超声波*1
dfrobot uno *1
IO 扩展板*1
舵机*2
万向轮*1
剪刀、胶带、尺子等等
废纸盒
过程············
下面的包装我都不忍直视,不过动手的过程还是很快乐的
将纸盒的面板用剪刀减下来,用笔沿着超声波的轮廓画出他的直径,如下图所示,
之后用刀片将画出的轮廓给抠出来,再将超声波安装进去,下面是装进去的正面图和背面图,虽然很丑陋,不要重度拍砖,我会晕掉的·················
下一步就是找出来其他的废纸盒来做小车的轮子,因为身边没有圆规,就找到了抽屉里的透明胶带,沿着轮廓画线,画出两个轮子,之后用剪子给剪出来,呲牙咧嘴的,这里大家还是把眼睛遮住 不要看,不要脏了眼睛5555555555555555····················
接下来就是找出来舵机和连接片,先画出来中心点,讲连接片固定上去,建议用棒胶献给固定住,当时我身边没有就没有固定,之后将舵机和连接片相连,之后再轮子外侧用螺丝固定住,多机上有一个螺丝扣,很方便的,不要只用手,要用工具来完成哦
这个是安装好轮子的照片
下面就要设计好轮子的安装位置,先看大途中粗略画的两个舵机的位置,还有一个进线口设计,这样舵机的线就可以进入到车体内,
下一步安装车轮,先固定,确定位置,再用棒胶固定,比较牢固,或者可以3D打印一个结构用螺丝来固定。前轮找了一个比较大的万向轮安装在车体的前段,有点丑,不过很结实。
秀一秀,三个轮子安装后的车体 是什么样子的,我这桌面都忽略掉,只看车体就好了。
下一步就是来安装主控了,我用的是dfrobot的uno和io扩展板,将扩展板和主控相连,主控上有螺丝孔的位置,先确定位置,之后打孔,用M3螺丝将主控和车体上半部分连接,太佩服自己了,自己乱买的螺丝竟然都用上了 。吼吼如下图所示·····························看不懂就不要怪我咯
‘
下一步就是来写代码了················
超声波
- #include <NewPing.h>
- #define ECHO_PIN 8
- #define TRIG_PIN 7
- #define MAX_DISTANCE 200
- #define MIN_DISTANCE 20
-
- #define N 15
- #define SERVO_PIN_ONE 9
- #define SERVO_PIN_TWO 10
- #define SERVO_POSITION_ONE 1000
- #define SERVO_POSITION_TWO 2000
-
- int actual_distance = 0;
-
- NewPing sonar(TRIG_PIN, ECHO_PIN, MAX_DISTANCE);
-
- void setup() {
- Serial.begin(9600);
- pinMode(SERVO_PIN_ONE, OUTPUT);
- pinMode(SERVO_PIN_TWO, OUTPUT);
- Serial.begin(9600);
- }
-
- void loop() {
- actual_distance = sonar.ping_cm();
- Serial.println(actual_distance);
- if(actual_distance <= MIN_DISTANCE) {
- RightRotate();
- delay(1500);
- } else {
- Forward();
- delay(1500);
- }
- delay(100);
- }
-
- void Forward() {
- int i = 0;
- while(i < N) {
- digitalWrite(SERVO_PIN_ONE, HIGH);
- delayMicroseconds(SERVO_POSITION_ONE);
- digitalWrite(SERVO_PIN_ONE, LOW);
- digitalWrite(SERVO_PIN_TWO, HIGH);
- delayMicroseconds(SERVO_POSITION_TWO);
- digitalWrite(SERVO_PIN_TWO, LOW);
- delay(30);
- i++;
- }
- }
-
- void RightRotate() {
- int i = 0;
- while(i < N) {
- digitalWrite(SERVO_PIN_ONE, HIGH);
- digitalWrite(SERVO_PIN_TWO, HIGH);
- delayMicroseconds(SERVO_POSITION_TWO);
- digitalWrite(SERVO_PIN_TWO, LOW);
- digitalWrite(SERVO_PIN_ONE, LOW);
- delay(30);
- i++;
- }
- }
-
- /*void Backward() {
- int i = 0;
- while(i < N) {
- digitalWrite(SERVO_PIN_ONE, HIGH);
- delayMicroseconds(SERVO_POSITION_TWO);
- digitalWrite(SERVO_PIN_ONE, LOW);
- digitalWrite(SERVO_PIN_TWO, HIGH);
- delayMicroseconds(SERVO_POSITION_ONE);
- digitalWrite(SERVO_PIN_TWO, LOW);
- delay(30);
- i++;
- }
- }
-
- void LeftRotate() {
- int i = 0;
- while(i < N) {
- digitalWrite(SERVO_PIN_ONE, HIGH);
- digitalWrite(SERVO_PIN_TWO, HIGH);
- delayMicroseconds(SERVO_POSITION_ONE);
- digitalWrite(SERVO_PIN_ONE, LOW);
- digitalWrite(SERVO_PIN_TWO, LOW);
- delay(30);
- i++;
- }
- }*/
复制代码
丑丑的完成品 太难看 待我继续更新吧
|