【Level:Beginners】Arduino播放Bad Apple参考

老****馆 UID.2871322
2017-07-23 发表

本帖最后由 老李拉面馆 于 2017-7-24 13:28 编辑

[align=center]Level:Beginners】Arduino播放Bad Apple参考[/align]
作为进阶者的您想必已将Arduino的各个基础元件以及传感器玩了个遍,PWM/SPI/I2C/UART/ADC想必也是不再困难。但是作为教程,我还是尽可能的详细。

首先我们需要具备的硬件条件有
 OLED1306 IIC通信的屏幕
 Arduino UNO单片机
 PC
我们需要的软件条件有
 Arduino IDE
 Image2LCD
 PS
 PotPlayer
注:您可能需要这些帮助
[table=50%]
[tr][td] Arduino IDE下载地址 [/td][td] https://www.arduino.cc/en/Main/Software[/td][/tr]
[tr][td] Image2LCD 下载地址 [/td][td] http://download.pchome.net/multimedia/grpconvert/download-15018.html[/td][/tr]
[tr][td] Image2LCD 注册码 [/td][td] 1F3E-1A12-3CA4-1983-7D69[/td][/tr]
[tr][td] PotPlayer&PS [/td][td] 百度搜索即可[/td][/tr]
[/table]
参考资料:[table=50%]
[tr][td] [设计报告]有屏的地方就有Bad Apple!! —— 12864版[/td][td] http://blog.csdn.net/howlclat/article/details/50668521[/td][/tr]
[tr][td] 怎样在PS中批处理图片 [/td][td] https://jingyan.baidu.com/article/14bd256e129a20bb6d2612a5.html[/td][/tr]
[/table]
接下来我们先要做的是测试Arduino屏幕显示图片
我们先打开PS,Ctrl+N新建一个宽/高为128x64的位图,如图
***附件停止解析***
前景色调成黑色,咱们来随便画点什么吧
***附件停止解析***
保存成BMP,接着打开Image2LCD
打开刚画的位图,然后取消包含图像头数据等,按图配置
***附件停止解析***
点击保存就可以保存并输出.c文件了
注:我这里就不照着画了,直接找了张现成的图,然后转成了数组
***附件停止解析***
好,图像处理完了,我们开始写Arduino 的显示程序
打开Arduino IDE
在上代码之前,先下载两个库分别是[table=50%]
[tr][td] Adafruit SSD1306 Library: [/td][td] https://github.com/adafruit/Adafruit_SSD1306
or
http://download.csdn.net/detail/ling3ye/9729179[/td][/tr]
[tr][td] Adafruit GFX Library:[/td][td] https://github.com/adafruit/Adafruit-GFX-Library
or
http://download.csdn.net/detail/ling3ye/9729180
[/td][/tr]
[/table]
下载后把解压的文件放在 Arduino 安装目录里的 "libraries"
例如:C:\Program Files (x86)\Arduino\libraries

再新建项目,粘贴如下代码

[mw_shl_code=c,true]
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
Adafruit_SSD1306 display(4);
#if (SSD1306_LCDHEIGHT != 64)
#error("Height incorrect, please fix Adafruit_SSD1306.h!");
#endif

static const PROGMEM unsigned char resource[3][1024]={{/*第一张图*/},{/*第二张图*/},{/*第三张图*/}};
void setup()
{
Serial.begin(9600);
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
}

void loop()
{
int i=0;
for(i=0;i<3;i++)
{
//Part1
display.drawBitmap(0, 0, resource, 128, 64, 1); //在坐标X0,Y0的位置开始显示图片
//128是取模软件显示的宽度
//64是取模软件显示的高度
display.display(); //把缓存的都显示
delay(1);
delay(200);
display.clearDisplay(); //清除屏幕
}
}[/mw_shl_code]

更多具体显示细节见参考资料,我就不讲更多。
然后把你生成图片的数据,填在resource二维数组里,resource[3][1024]中,3代表我有三张图,你有多少张图就改为多少,下面的for循环里i也是如此;[1024]则为图片数据(你不用改)。

程序具体思路是这样的
***附件停止解析***
由于Arduino UNO内存较小,我们无法定义变量,来接收串口发来的数组,所以很遗憾无法为大家演示,这里为大家提供参考资料,用matlab解决串口批量发送数据的问题。(见表格)

但是为了不显得太过尴尬,上面的代码里,我将图像数组存在SRAM里的,存了几幅图。大家看个ppt还是可以的(逃

最后为大家献上一个成果视频:[media=x,500,375]http://www.bilibili.com/video/av12488242/[/media]

哦对了,PS批处理教程也在表格里,dalao看看笑笑就好(逃







敬告:
为防止不可控的内容风险,本站已关闭新用户注册,新贴的发表及评论;
你现在看到的内容只是互联网用户曾经发表的言论快照,仅用于老用户留存纪念,且仅与科技行业相关,全部内容不代表本站观点及立场;
本站重新开放前已针对包括用户隐私、版权保护、信息安全、国家政策在内的各种互联网法律法规要求,执行了隐患内容的自查、屏蔽和删除;
本站目前所属个人主体,未有任何盈利安排与计划,且与原WFUN.COM所属公司不存在任何关联关系;
如果本帖内容或者相关资源侵犯到您的合法权益,或者您认为存在问题,那么请您务必点此举报或投诉!
全部回复:
bob87121520105 UID.1043628
2017-07-23 回复

有看沒有懂...

老****馆 UID.2871322
2017-07-23 回复

Quote***链接停止解析***
有看沒有懂...


。。。那你就看看最后实现效果,就知道啥情况了

dea****001 UID.103336
2017-07-27 回复

{:6_217:},这个估计得有单片机和点阵屏的基础才能看懂。

本站使用Golang构建,点击此处申请开源鄂ICP备18029942号-4联系站长投诉/举报