媒体装置艺术设计说明1.docx
《媒体装置艺术设计说明1.docx》由会员分享,可在线阅读,更多相关《媒体装置艺术设计说明1.docx(20页珍藏版)》请在冰豆网上搜索。
媒体装置艺术设计说明1
第一章新媒体装置艺术1
1.1作品设计的意义1
1.2作品主要内容1
1.3制作方法及流程2
1.4成果2
1.5价值和影响2
1.6创新点3
第二章结论3
2.1技术层面3
2.2艺术层面3
2.3不足及展望4
谢辞4
参考文献4
附录4
源程序5
接线图..........................................................................................................................................8
第一章新媒体装置艺术
1.1作品设计的意义
这个作品是一个可以根据温度的变化,然后颜色产生变化的智能水杯。
这样就可
以准确的测出水温的范围,减少喝水的人被热水烫到的可能性。
而且彩色的灯光
也能让使用者觉得新颖,从而喜欢上喝水。
1.2作品主要内容
当水杯中水的温度在小于31摄氏度时,杯子就会发出蓝色的光。
因为这个温度
低于人体温度,所以在颜色的选择上就会使用冷色光。
当温度在32摄氏度到40
摄氏度之间的时候,杯子就会发出黄色的光。
当温度超过40摄氏度时,杯子就
会发出红色的光。
因为这时的温度,有可能会烫伤喝水的人,所以杯子会发出红
光去提醒喝水的人,要注意水的温度。
1.3制作方法及流程
这个作品使用到的元器件有:
Arduino开发板、跳线、面包板、470欧姆电阻、红色LED小灯泡、黄色LED小灯泡、蓝色LED小灯泡、lm35温度传感器。
首先,我在网上查找关于这个实验的代码,和需要用到的温度传感器。
因为实验
盒里没有温度传感器,所以我在网上购买了lm35温度传感器。
因为想将灯的闪
烁形式变成呼吸灯的形式,所以对网上查到的代码进行了修改,运用了呼吸函数。
然后就到了制作阶段,需要先将所有元器件都连接起来。
如下图1—1所示。
图1—1
当把元器件都接起来之后,就要开始对程序进行编辑。
一开始灯的闪烁形式是常
亮的状态。
但是发现在转换灯颜色的时候会有轻微的闪烁。
所以就想着将灯变成
呼吸灯的闪烁模式,这样会更加吸引使用杯子的人。
在对代码进行编辑完成之后,就要将代码传输到Arduino开发板上进行测试。
一
开始,灯的颜色没有变化,以为是程序出了问题。
后来打开端口监视器一看,原
来是水的温度没有达到要求。
因为串口监视器上,可以直观的看到温度的变化,
和当下的温度值是多少。
知道了这个问题之后,就测试成功了。
1.4成果
这个作品成果是一个会随着温度变化,随之发出不同颜色光的水杯。
这样可以有
效的方式使用者喝水的时候被开水烫伤。
对于杯子上方的圆点是想做出透光效果,
从而更加炫目。
成果图如图1-2所示。
图1-2
1.5价值和影响
对于刚上小学的孩子,他们在学校喝水的时候有可能因为着急,从而不去试一试水温再喝水。
这样就容易发生被开水烫伤的可能性。
如果用了这个杯子,看到杯子上红灯亮起来的时候,这个时候使用杯子的人就会注意到杯子里水的温度,从而可以减少被开水烫伤的可能性。
如果孩子有了这样一个智能水杯,家长也不用担心孩子容易被开水烫伤了。
1.6创新点
从外形上来说,在杯子的上方,有一些透光的小孔。
这些小孔可以更好的透出小
灯泡发出的光,这样可以让杯子更加绚丽,让使用者喜欢上用这个水杯喝水。
在
灯泡的闪烁形式上来说,是采用的呼吸灯的形式。
这样的形式比常亮的形式,更
加吸引用户。
第二章结论
2.1技术层面
这个作品是通过Arduino开发版来完成的,先在Arduino软件中编辑程序,再传
入开发板,接下来把线路连接正确。
就可以实现想要的效果了。
Arduino是一款
便捷灵活、方便上手的开源电子原型平台。
包含硬件和软件。
Arduino能通过各种各样的传感器来感知环境,通过控制灯光、马达和其他的装
置来反馈、影响环境。
板子上的微控制器可以通过Arduino的编程语言来编写程
序,编译成二进制文件,烧录进微控制器。
对Arduino的编程是利用Arduino
编程语言和Arduino开发环境来实现的。
基于Arduino的项目,可以只包含
Arduino,也可以包含Arduino和其他一些在PC上运行的软件,他们之间进行通
信来实现。
2.2艺术层面
因为制作的是一个可以测量水温的智能水杯,所以这个装置在包装上还是采用的杯子的原型。
但是这个杯子的形状是与普通水杯有区别的。
这个杯子的中间部分是突出的,这样做的目的,是想将杯子做成双层的,中间突出的部分可以将装置放入,也可以避免用户将手烫伤。
在杯子的上半部分有一些镂空的小孔,是为了让杯子的透光性更好。
给人一种不一样的设计感觉。
随着用户在喝水的同时,看着灯光的闪烁,心情也会随之愉悦一些。
在这个作品中,智能水杯是用两个透明一次性纸杯做成的。
如果直接用透明纸杯的话,会看见里面的装置,所以在做的时候,在透明纸杯的外面涂上了丙烯,这样透光性不会太好也不会太差,给人一种朦胧的感觉。
2.3不足及展望
在这个作品当中,测量温度的温度段,只有三段,如果能有更多的温度段的话,
就可以让温度测量的更加具体。
这样,可以让使用者更加了解杯子里水温的状况,
会更加方便一些。
在杯子的外形上,可以采用磨砂玻璃的,这样透光性会好,而且会有一种朦胧感。
这个作品可以在生活中,给年龄小一些的孩子,这样可以防止他们被开水烫伤的
可能性,可以让他们觉得,其实喝水也是一件很开心的事。
谢辞
在此,我要特别感谢,教这门课的胡鹏老师。
胡老师导我们如何去编写程序,并且告诉我们每句代码的含义是什么,方便我们去理解和学习。
胡老师还教会了我们如何连接电路,应该怎么去区分正负极,还有Arduino版上端口与端口之间的区别。
此外,还要感谢我身边的朋友和同学,感谢他们在制作过程中对我的指导、帮助和支持,感谢他们的宝贵建议,感谢所有关心、支持、帮助过我的良师益友。
参考文献
[1]ArduinoXX百科.[j]
[2]极客工坊.[j]
附录
源程序
#defineR_LIGHT9
#defineG_LIGHT10
#defineB_LIGHT11
//#define
是C中用来定义宏的语法
定义三个灯的
端口
#defineFADE_STEP5//
这是呼吸灯光线变强变弱的单位数
可以调节
越小,
光线的变化越细腻
#defineFADE_TIME30//30ms
intrgb_value[3];//这是一个数组,用来存储每次R/G/B_LIGHT三个灯的亮度值
voidinit_rgb_value()
{
rgb_value[0]=0;
rgb_value[1]=0;
rgb_value[2]=0;//这个函数是在setup中,把上面声明的数组,初始化一下,
都变成0
}
voidinit_rgb()
{
analogWrite(R_LIGHT,rgb_value[0]);
analogWrite(G_LIGHT,rgb_value[1]);
analogWrite(B_LIGHT,rgb_value[2]);//模拟量的写入
}
voidfade_on(intport)
{
intv;
if(port==R_LIGHT)
v=0;
elseif(port==G_LIGHT)
v=1;
elseif(port==B_LIGHT)
v=2;
for(intfadeValue=rgb_value[v];fadeValue<=0xff;fadeValue+=FADE_STEP){
analogWrite(port,fadeValue);
delay(FADE_TIME);
}
rgb_value[v]=0xff;//呼吸灯慢慢变亮
}
voidfade_off(intport)
{
intv;
if(port==R_LIGHT)
v=0;
elseif(port==G_LIGHT)
v=1;
elseif(port==B_LIGHT)
v=2;
for(intfadeValue=rgb_value[v];fadeValue>=0;fadeValue-=FADE_STEP){
analogWrite(port,fadeValue);
delay(FADE_TIME);
}
rgb_value[v]=0;//呼吸灯慢慢变暗
}
voidfade_flash(intport)//
{
fade_on(port);
fade_off(port);
不停的呼吸效果
}
voiddirect_fade_off(intport)//
{
intv;
if(port==R_LIGHT)
v=0;
elseif(port==G_LIGHT)
v=1;
elseif(port==B_LIGHT)
v=2;
呼吸函数,直接变暗
analogWrite(port,0);
rgb_value[v]=0;
}
voiddirect_fade_on(intport)//
呼吸函数
直接变暗
{
intv;
if(port==R_LIGHT)
v=0;
elseif(port==G_LIGHT)
v=1;
elseif(port==B_LIGHT)
v=2;
analogWrite(port,255);
rgb_value[v]=0xff;
}
voidturn_off(intport)//
{
direct_fade_off(port);
直接关灯函数
}
voidturn_on(intport)//
{
direct_fade_on(port);
直接开灯函数
}
voidsetup()
{
pinMode(R_LIGHT,OUTPUT);
pinMode(G_LIGHT,OUTPUT);
pinMode(B_LIGHT,OUTPUT);////3个端口初始化为OUTPUT(输出)
init_rgb_value();
init_rgb();
Serial.begin(9600);//
串口初始化,9600波特率
}
voidcheck_temp_loop()//
读温度传感器
{
intvol=analogRead(A0)*(5.0/1023.0*100);
Serial.println(vol);//
串口输出当前读取的值
if(vol<=31)
{
fade_flash(B_LIGHT);
turn_off(R_LIGHT);
turn_off(G_LIGHT);
}
elseif(vol>=32&&vol<=40)
{
turn_off(B_LIGHT);
fade_flash(G_LIGHT);
turn_off(R_LIGHT);
}
elseif(vol>=41)
{
turn_off(B_LIGHT);
turn_off(G_LIGHT);
fade_flash(R_LIGHT);
}
}
voidloop(){
check_temp_loop();//不停的运行这个函数达到不停的读取温度变化的功能
}
接线图
图5-1
图5-2