周末DIY之神奈川冲浪里画框魔改
“神奈川冲浪里”(神奈川沖浪裏/The Greate Wave off Kanagawa)是日本浮世绘画家葛饰北斋制作的木版画,做为其富岳三十六景(冨嶽三十六景)系列作品中最著名的一幅,描绘了神奈川外海(神奈川冲)的滔天巨浪、在海浪中苦苦挣扎的渔船和远处的富士山。国内厂商ATI Studio将这幅名作制作为拼贴立体画,在摩点上众筹,看到如此国产尖儿货,哪有不动心的道理,即刻下单支持!
开箱和制作
没等多久,产品送到,开箱开箱!
包装盒(左侧)和附送的小礼物(右侧蓝色卡片),右上角是很早以前何D君送的卡片相机,做个大小比较。
盒子底部
盒子内部
这个画框的产品形态为DIY套件,也就是说包装盒里是零件和基本工具(刻刀、胶水和砂纸),需要自己组装。用手机微信扫描说明书上的二维码,关注公众号后进入网页,上面有详细步骤,制作难度不高,但比较繁琐,需时40分钟左右。
基本流程就是按说明将木零件从框架上切割下来,然后将不同颜色的纸零件一层层用胶水粘好,最后把所有零件拼插成形。制作时最好多准备几根棉签,粘贴时将挤出来的胶水尽快擦掉。
完成效果图,最下面的ATI标志贴歪了,用乐高小人掩饰一下。
感觉设计师对原作的修改很成功:整体构图变为肖像竖模式、背景云彩做了丰富、渔船做了简化、海浪立体化后的效果相当好。
这个款式在画框后面留有一个小的收纳空间,可以放一些笔之类的文具。
魔改
制作完成后,意犹未尽,决定再加点功能。正好以前做过Zippo打火机改造为番茄计器的项目,简单改改就能加上番茄计时(一种旨在提高工作效率的方法,即每次只选择一个特定的工作项目,专注持续工作25分钟,休息5分钟,然后再工作25分钟,休息5分钟,以此循环)功能,正好适合在家办公用。
材料单
- Arduino Gemma单片机
- 4PIN软驱电源线
- 彩色发光二极管
- 带开关的USB Micro充电线
- 电烙铁、焊锡、发泡胶带等工具
电路图
这次用了RGB三色(共阴极)发光二极管,LED的阴极与Gemma的GND接地端相连;要使用红色渐变亮度和明灭频率的呼吸灯效果表示工作时段,因此Gemma可输出PWM信号的D0端与LED的红色管脚焊接;用绿色固定亮度和时长的闪烁效果表示休息时段,正好接输出高低电平的D2端;蓝色管脚焊接在D1接口上,实际并未使用。
代码
Gemma的代码只针对LED颜色做了一点点修改,首先在开头部分设定0号I/O接口为LED红色管脚,2号接口为LED绿色管脚,然后在breath()和blink()两个子程序中分别向这两个不同接口输出,以控制LED灯效。
const float workTime=1500000;//work time in millisecond
const float restTime=300000;//rest time in millisecond
int ledRedPin=0;
int ledGreenPin=2;
const int breathInterval[5]={5, 4, 3, 2, 1};
float previousTime=0;
float currentTime;
void setup() {
pinMode(ledRedPin, OUTPUT);
pinMode(ledGreenPin, OUTPUT);
}
void loop(){
delay(500);
work();
rest();
}
void work() {
//active led breath mode for working time
currentTime=millis();
while((currentTime-previousTime)<=workTime) {
breath(calculateBreathLength());
currentTime=millis();
}
previousTime=currentTime;
}
void breath(int l) {
//breath led in red color
int breathI=l*1000/2/10;
for (int i=0;i<=240;i=i+24) {
analogWrite(ledRedPin, i);
delay(breathI);
}
for (int i=240;i>=0;i=i-24) {
analogWrite(ledRedPin, i);
delay(breathI);
}
}
int calculateBreathLength() {
//calculate every breath's lasting seconds
float s=(currentTime-previousTime)/workTime;
int stage;
if (s>=0.8) {
stage=4;
} else {
if (s>=0.6) {
stage=3;
} else {
if (s>=0.4) {
stage=2;
} else {
if (s>=0.2) {
stage=1;
} else {
stage=0;
}
}
}
}
return breathInterval[stage];
}
void rest() {
//active led blink mode in resting time
delay(500);
currentTime=millis();
while((currentTime-previousTime)<=restTime) {
blink();
currentTime=millis();
}
previousTime=currentTime;
}
void blink() {
//blink led in green color
digitalWrite(ledGreenPin, HIGH);
delay(1000);
digitalWrite(ledGreenPin, LOW);
delay(1000);
}
制作和使用
软驱电源线4PIN插头正适合做LED灯头,将发光二极管四个管脚剪短就可以插进去;电源线另一端拆开打散焊接在Gemma单片机的几个I/O口上;将LED灯摆放在画框正上方的空隙处,LED和线都用发泡胶固定好,电源线引向画框后侧,将Gemma贴在这里。用带开关的USB Micro充电线插在Gemma上就完成了。
打开电源开关,先进入工作时段,LED用红色呼吸效果闪烁,总时长25分钟,越接近结束时呼吸的节奏越频繁,加紧工作吧!
25分钟工作后是5分钟的休息时间,LED变为绿色,以固定时长闪烁,可以玩玩魔方、或看段新出的Star Trek: Lower Decks动画片休息一下:)
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。