Arduino nRF24L01

nRF24L01是一个Arduino 2.4G的无线扩展。注: 不是Wifi。

库: https://github.com/maniacbug/RF24

Arduino ENC28J60

ENC28J60是一个Arduino的网卡扩展。

库: https://github.com/jcw/ethercard

文档: http://jeelabs.net/pub/docs/ethercard/index.html

接线

table(table table-bordered). |_.ENC|_.Arduino| |VCC|3.3v| |GND|GND| |SCK|Pin 13| |SO|Pin 12| |SI|Pin 11| |CS|Pin 8|

Android Multiple Screens

作为一名Android应用开发程序猿,最痛苦的事莫过于在屏幕适配了,这与历史原因有关,具体就不深究了。

直到最近才搞明白dpi是怎么换算的,在开发的过程中,一个应用运行的屏幕标准应该是分辨率为320x480密度为160dpi的屏幕上,所以所有放在drawable、drawable-mdpi、values、layout、layout-normal的资源文件大小的单位就是px,1dp = 1px。比如有一张宽30px高45px的图片放置在drawable-mdpi目录下,那对应的dp单位就是30dp x 45dp。那么放在drawable-hdpi目录下的这张图片的宽应该是30*1.5px,高45*1.5px,240/160=1.5。放置在drawable-xhdpi的自然就是30*20px和45*2px,320/160=2。

但是,很多公司开发应用不会只开发Android版本的,通常是和IOS一起开发,那美工所做的图片如果给Android做四套图(ldpi、mdpi、hdpi、xhdpi)的会很大工作量,通过的做法是把IOS中的640x960分辨率下的图片拿过用,这样实际只要一套图就能够适配标准的Android手机屏幕,所谓的标准就是密度为160dpi、分辨率为320x480,密度为240dpi、分辨率为480x800等的屏幕,当然不包括平板,这类平板通常是指国内的平板,那屏幕大啊,而分辨率却小,这类不包括在内。

那么该如何得用IOS中的640x960的图片来适配呢,640x960分辨率的在Android系统中对应的应该是320dpi密度的,所以把这类图片放置在drawable-xhdpi目录下,然后在使用的时候,通常布局文件都放置在layout目录,该目录是160dpi使用的,所以我们需要把xhdpi中的图片作一个处理,就是宽高分别除以2,320/160=2。

例如一张登录按钮图片,IOS中对应的是640x960分辨率的,大小为72x64,在Android中使用时把图片放到xhdpi目录,使用的时候这样定义宽高


这样做的目标是使图片在Android自动转换的时候不会出现失真的问题,把一张图片从大往小转是不会失真的,效果保持了。36dp是通过72/2得到的,为什么除以2,是转为图片是为320dpi的屏幕设计的,但是布局文件是在layout目录的,也就是说这个布局是为160dpi的屏幕而设计的,因此需要转换成160dpi标准的密度。

当应用在240dpi密度的屏幕上运行的话,图片会被自动从160dpi转换成240dpi,也就是36*1.5dp、32*1.5dp。实际是72*0.75dp、64*0.75,图片只是作缩放,因为不存在失真的问题。

这种做法能够使图片在120、160、240、320这四种标准密度上自适应,是一种按比例自动缩放的过程。同时图片不存在失真的问题。只是如果内容过于多的情况在120密度的屏幕上看非常难看的,道理就是把一张图片从72x64缩小到了27x24。

Hello May

今天是5月1号。昨天晚上已经团购了钢铁侠的电影票,今天就10多出门去换票了,换票归来路上差点被汽车撞到,主要是因为我骑车刚好要从自行车道上超车,它却要停要路边,后面又刚好来了一辆公车,还好我速度快了一点,要不然被就撞到了,然后是骑了不远,口袋里的近视眼镜掉了下来,然后被后面来的公车辗成了翔,虽说我不常戴,但想到晚上就要看电影我就白痴了,这也太TM有点背了。

然后就是吃云南过桥米线,钱不够,只好跟老板娘说我现在就去外面取,还好带了卡。

晚上去看电影的时候,还好是IMAX屏幕够大,我这近视眼勉强刚好能够看,也就这样了,看完后从鸟巢骑自行车回建国门,时间已经是晚上11点了,也算是做了件有点疯狂的事了,为了看中国最大的IMAX屏幕的电影,骑自行车来回两小时,加上早上取票的时间,总共骑行4小时。

这个5月,希望好过一点。

Arduino Quadcopter

四轴,就是四轴飞行器,通过使用4个高速电机进行空中飞行。

这两天才发现原来有这么酷的东西,刚好手上有Arduino的板子,就想做一个,手痒痒地就在某宝上买材料了,首先我是想做一个迷你的,通过蓝牙来操控,毕竟是新手,再说专业的飞行遥控还挺贵的,就买了一块4合1的传感器集成板,有三轴陀螺仪、三轴加速度、三轴磁场、气压,板子的型号是GY-86,我打算是使用MWC这套开源的四轴程序,对GY-86是兼容的,价钱也不算贵,还买了一块HC-06从机蓝牙模块,24L01+无线模块,一块Arduino nano板,虽然已经有了一块UNO,不过即然是做迷你飞行器还是买块小点的,再说手上的这块UNO是原装的,舍不得。

  1. GY-86 10DOF MS5611 HMC5883L MPU6050
  2. Arduino nano V3.0 ATMEGA328P
  3. HC-06蓝牙模块

做四轴的准备工作

今天在网上查了一天的资料了,发现用Arduino板子做四轴的很少,多数都是直接使用328P单片机集成的,目前四轴的机架还没有买,想等GY-86传感器调试好了再买,如果是做迷你四轴的话,那应该是直接使用有刷空心杯电机,而不是使用无刷电机+电调,用空心杯电机比无刷的便宜很多,也算是适合拿来学习了,但是如果这样就有问题了,要怎么通过Arduino直接驱动空心杯电机,由于对电路不懂,就只能是Google了,后来在一些论坛上发现可以使用一种叫做场效应管的元件,具体参考:http://www.geek-workshop.com/thread-196-1-1.html。

经过参考:http://www.cooking-hacks.com/index.php/blog/diy-arduino-pro-mini-quadcopter与http://www.amobbs.com/thread-5490259-1-1.html得到使用SI2302场效应管来驱动空心杯有刷电机