3645| 0
|
江阴1组 萌萌哒小黄人 |
今天我们给大家介绍的作品是萌萌哒小黄人,我们团队五个人有做外观的,有做程序的,有安装器械的,大家一起通力合作分工完成,,做的这个小黄人相当于一个入门级的玩偶机器人,能跑能唱能眨眼,一起来欣赏吧!
【制作步骤】 我们先是做了个带轮子的小车,可以前进或转弯灵活运动的小车,后来我们想到给他加一点创意装饰,我们看到有黄色卡纸,就想到做个小黄人。我先来说说小黄人的制作如下 1、小黄人外观是黄色卡纸制作的圆柱体形状,用双面胶围城。 2、眼睛是用彩色纸杯底,用绒丝线做了眼周的装饰。眼睛是后面连接的LED灯 3、下面用蓝色的卡纸做成的围裙作为遮挡小车以及内部元件的部分。 4、最后用彩色丝带以及彩色小球做了装饰,黄色卡纸跟黑色软纸做了手。 5、头顶部分是黄色卡纸以及黑色绒线做的头发,因为要装头顶的降温风扇,所以最后头顶部分最后所有的程序导入好测试好以后,最后完工的时候再完整安装了。 接下来说说小车底座用到的一些传感器等元器件的安装: 主板上接的输入有:环境光传感器、声音传感器 输出有:两个LED小灯作为眼睛部分,蜂鸣器模块,小风扇,两个轮子马达 主板部分输出端口,车轮电机接M1和M2,风扇马达接D11端口,D9和D10是接的灯,D8是蜂鸣器模块 输入端口A0接光敏传感器,A7接了声音传感器。 程序代码: int speakerPin = 8; int length = 15; // the number of notes char notes[] = "ccggaagffeeddc "; // a space represents a rest int beats[] = { 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2, 4 }; int tempo = 300; void playTone(int tone, int duration) { for (long i = 0; i < duration * 1000L; i += tone * 2) { digitalWrite(speakerPin, HIGH); delayMicroseconds(tone); digitalWrite(speakerPin, LOW); delayMicroseconds(tone); } } void playNote(char note, int duration) { char names[] = { 'c', 'd', 'e', 'f', 'g', 'a', 'b', 'C' }; int tones[] = { 1915, 1700, 1519, 1432, 1275, 1136, 1014, 956 }; // play the tone corresponding to the note name for (int i = 0; i < 8; i++) { if (names == note) { playTone(tones, duration); } } } void setRomeoMotor(int motorId, int speed) { int speedPin, directionPin; if (motorId == 1) { speedPin = 6; directionPin = 7; } else { if (motorId == 2) { speedPin = 5; directionPin = 4; } else { return; } } if (speed == 0) { digitalWrite(speedPin, LOW); } if (speed > 0) { digitalWrite(directionPin, HIGH); analogWrite(speedPin, speed); } else { digitalWrite(directionPin, LOW); analogWrite(speedPin, -speed); } } void setup() { pinMode( 11, OUTPUT); pinMode( 10, OUTPUT); pinMode( 9 , OUTPUT); pinMode( 8 , OUTPUT); pinMode( 7 , OUTPUT); pinMode( 6 , OUTPUT); pinMode( 5 , OUTPUT); pinMode( 4 , OUTPUT); digitalWrite(4, LOW); digitalWrite(5, LOW); digitalWrite(6, LOW); digitalWrite(7, LOW); } void loop() { int c1,c2; c1=analogRead(0); c2= analogRead(7); if (c1>800) { setRomeoMotor(1, 100); setRomeoMotor(2, 100); digitalWrite(11,HIGH); delay( 2000 ); setRomeoMotor(1, -100); setRomeoMotor(2, -100); digitalWrite(11,HIGH); delay( 2000 ); } else { setRomeoMotor(1, 0); setRomeoMotor(2, 0); digitalWrite(11,LOW); } if(c2>100) { digitalWrite(9,HIGH); delay(500); digitalWrite(9,LOW); delay(500); digitalWrite(10,HIGH); delay(500); digitalWrite(10,LOW); delay(500); digitalWrite(9,HIGH); delay(500); digitalWrite(9,LOW); delay(500); digitalWrite(10,HIGH); delay(500); digitalWrite(10,LOW); delay(500); digitalWrite(9,HIGH); delay(500); digitalWrite(9,LOW); delay(500); digitalWrite(10,HIGH); delay(500); digitalWrite(10,LOW); delay(500); for (int i = 0; i < length; i++) { if (notes == ' ') { delay(beats * tempo); // rest } else { playNote(notes, beats * tempo); } delay(tempo / 2); } digitalWrite(9,HIGH); delay(500); digitalWrite(9,LOW); delay(500); digitalWrite(10,HIGH); delay(500); digitalWrite(10,LOW); delay(500); digitalWrite(9,HIGH); delay(500); digitalWrite(9,LOW); delay(500); digitalWrite(10,HIGH); delay(500); digitalWrite(10,LOW); delay(500); digitalWrite(9,HIGH); delay(500); digitalWrite(9,LOW); delay(500); digitalWrite(10,HIGH); delay(500); digitalWrite(10,LOW); delay(500); } else { digitalWrite(9,LOW); digitalWrite(10,LOW); noTone(8); } } 流程图: 当小黄人感应到一定亮度光线时候,就可以行走,并且风扇转动降温,如果听到声音,小黄人两个眼睛轮流闪烁,闪烁完成以后小黄人开始唱歌,唱一首《小星星》的歌,直到结束。 【总结】:现在小黄人交互性还是比较欠缺不够完善,由于没有红外接收模块,所以没有用到遥控器控制,后面可以增加遥控器控制,还可以增加机械手臂,完成更加复杂的动作。 |
4.75 MB, 下载次数: 1402
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed