周末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 国际许可协议进行许可。