江阴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);
}
}
流程图:
当小黄人感应到一定亮度光线时候,就可以行走,并且风扇转动降温,如果听到声音,小黄人两个眼睛轮流闪烁,闪烁完成以后小黄人开始唱歌,唱一首《小星星》的歌,直到结束。
【总结】:现在小黄人交互性还是比较欠缺不够完善,由于没有红外接收模块,所以没有用到遥控器控制,后面可以增加遥控器控制,还可以增加机械手臂,完成更加复杂的动作。
页:
[1]