用arduino和OLED制作火柴人奔跑动画

有趣火柴人奔跑动画

2.为动画创建位图

这可能是最耗时的步骤。你必须创建一组框架,这将适合128x32格式。您可以尝试从任何拖鞋剪贴片中创建它们,您可以在网上找到。

所有的框架需要是黑白的!!!

我创造了显示奔跑生物的帧,一共八张

3.连接

OLED arduino
GND GND
VCC VCC
SDA A4
SCK A5

OLED 显示屏有四个引脚,分别是:
1.SDA(数据线) SCK(时钟线) VDD(3.3V) GND
2.在UNO开发板上I2C接口,SDA对应D4,SCK对应D5
3.在MEGA2560开发板上I2C接口,SDA对应D20, SCL对应D21

3.创建位图的代码表示

①使用在线取模软件

要创建位图的代码表示,我们将使用在线工具

图像2cpp

你可以找到它去下面的网址

https://javl.github.io/image2cpp/

执行以下步骤:

  • Select Image(选择图像)部分,逐个打开帧文件
  • 通过检查图像设置部分检查上传的Image Settings(图像)是否正确
  • 如果想要具有黑色背景,并且只点亮线像素,请检查倒置图像颜色,在Background选择Black

  • Output(输出部分)

    • Code output format(代码输出格式)中指定"Arduino code ,single bitmap"
    • Identifier/Prefix(标识符/前缀)中提供动画名称,必须要英文
    • Generate code(生成按钮)
    • 保存生成的代码。它将被粘贴到arduino编译器

4.创建动画代码

①首先,我们需要引用所需的头文件

#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

前一个用于 I2C 接口,其他两个用于与 OLED 显示器配合工作

②我们需要定义显示屏的大小

#define SCREEN_WIDTH 128 // OLED 显示宽度128 in pixels
#define SCREEN_HEIGHT 64 // OLED 显示高度64 in pixels

③引用函数库,里面有宣布通过 OLED 显示连接的引脚。有了这些别针,我们宣布显示器本身

#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);

然后,您必须复制粘贴我们从Image2cpp 中获得的代码

这是一个相当长的代码,所以我不会粘贴在这里的全部。我只显示一帧

static const unsigned char Frame1 [] PROGMEM = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, 0x83, 0x80, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x01, 0xc0, 0x00, 0x00, 0x03, 0x0c, 0x40, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xe1, 0x0c, 0x60, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x1f, 0xff, 0x80, 0x20, 0x00, 0x00, 0x00, 0x01, 0xe0, 0x00, 0x01, 0xf9, 0xe0, 0x20, 0x00, 0x00, 0x00, 0x03, 0xc0, 0x00, 0x00, 0xcc, 0x78, 0x60, 0x00, 0x00, 0x03, 0xe7, 0x80, 0x00, 0x00, 0x64, 0x1f, 0xc0, 0x00, 0x00, 0x0e, 0xff, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x0e, 0x00, 0x00, 0x00, 0x33, 0xf0, 0x00, 0x00, 0x00, 0x30, 0xf8, 0x00, 0x00, 0x00, 0x18, 0x1f, 0xf0, 0x00, 0x00, 0x7f, 0xf0, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x01, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x86, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};

然后,在设置功能中,我们正在初始化 OLED 显示屏

void setup()   {Serial.begin(9600);delay(500);// by default, we'll generate the high voltage from the 3.3v line internally! (neat!)display.begin(SSD1306_SWITCHCAPVCC, 0x3C);  // initialize with the I2C addr 0x3D (for the 128x64)
}

然后,我们有循环功能,我们重播所有10帧在50ms间隔

void loop() {// Diplay Animation// Frame1display.clearDisplay();display.drawBitmap(30,0,RUN1, 80, 32, 1);display.display();delay(50);// Frame2display.clearDisplay();display.drawBitmap(30,0,RUN2, 80, 32, 1);display.display();delay(50);// Frame3display.clearDisplay();display.drawBitmap(30,0,RUN3, 80, 32, 1);display.display();delay(50);// Frame4display.clearDisplay();display.drawBitmap(30,0,RUN4, 80, 32, 1);display.display();delay(50);// Frame5display.clearDisplay();display.drawBitmap(30,0,RUN5, 80, 32, 1);display.display();delay(50);// Frame6display.clearDisplay();display.drawBitmap(30,0,RUN6, 80, 32, 1);display.display();delay(50);// Frame7display.clearDisplay();display.drawBitmap(30,0,RUN7, 80, 32, 1);display.display();delay(50);// Frame8display.clearDisplay();display.drawBitmap(30,0,RUN8, 80, 32, 1);display.display();delay(50);// Frame9display.clearDisplay();display.drawBitmap(30,0,RUN9, 80, 32, 1);display.display();delay(50); // Frame10display.clearDisplay();display.drawBitmap(30,0,RUN10, 80, 32, 1);display.display();delay(50); <br>

完成,谢谢观看,能不能给我点赞呢是

用arduino和OLED制作火柴人奔跑动画相关推荐

  1. 【180929】趣味火柴人奔跑游戏源码

    (WPF帧动画效果)火柴人在画板上前进的效果,演示了MainWindow.xaml 的交互逻辑,调用系统默认的帧进行动画, 开启一个后台线程,用来控制帧频率的刷新速度,找到系统图片存放的位置,并添加图 ...

  2. jQuery制作火柴人游戏源码

    提供代码鉴阅及源码下载 下载源码链接: 链接:https://pan.baidu.com/s/16U4C8FJk8cVwqn6Q0ciwkA 提取码:iqwg <!DOCTYPE html> ...

  3. 跑动的小火柴人(flash动画)

    本教程描绘的是完全用ActionScript做的一个火柴棍小人跑步的动画,你相信吗?完全是AS实现的.先看效果吧: 做的方法非常简单,直接把下面代码复制到第一帧,最好把帧频调到18fps.以下为引用的 ...

  4. python编写会动的火柴人_火柴人跑步怎么画 如何制作一个正在奔跑的火柴人动画形象?火柴人跑步动作怎么画...

    小编最近一直致力于制作火柴人动画,制作火柴人各种搞笑的动作.为什么会一直想要制作火柴人动画呢?因为将动画制作成GIF格式之后,再发到微信聊天上就是一个很搞笑的微信表情包啦.然后小编的朋友总说小编制作的 ...

  5. c++ vector最大值_第14章 火柴人的无尽冒险(《C和C++游戏趣味编程》配套教学视频)...

    本章我们将编写一个2D跑酷类游戏,玩家键盘控制火柴人奔跑和跳跃,躲避蝙蝠到达终点.游戏地图随机生成,随着关卡数的增加,游戏难度越来越大,效果如图所示. 首先定义Player类,实现异步输入控制和延时改 ...

  6. 2020级C语言大作业 - 火柴人打羽毛球

    分享20级同学大一上学期用C语言(及少量C++)实现的火柴人打羽毛球.由于同学们刚学了三个月的编程,实现还不够完善,工程代码.图片音乐素材可以从百度网盘下载: 链接:https://pan.baidu ...

  7. 第14章 火柴人的无尽冒险(《C和C++游戏趣味编程》配套教学视频)

    (图书介绍:童晶:<C和C++游戏趣味编程>新书预告) 本章我们将编写一个2D跑酷类游戏,玩家键盘控制火柴人奔跑和跳跃,躲避蝙蝠到达终点.游戏地图随机生成,随着关卡数的增加,游戏难度越来越 ...

  8. Silverlight中生动的火柴人动画

    Silverlight中生动的火柴人动画 nikola开发了一款可以浏览bvh动画(3DMAX中的一种动画脚本格式,可以快速方便的帮助制作人物动作的动画)Silverlight 应用. 你可以直接看到 ...

  9. 画火柴人动画的手机软件_火柴人动画制作软件(Pivot Stickfigure Animator)2.25 中文版附教程...

    火柴人游戏一直深受广大玩家喜爱,有没有人想过火柴人动画是怎么制作出来的呢?今天小编就为大家带来一款火柴人动画制作软件Pivot Stickfigures Animator,它可以帮你快速而简单的制作出 ...

最新文章

  1. 解决SpringMVC中的 Could not find acceptable represent
  2. bagging和时间序列预测_时间序列的LSTM模型预测——基于Keras
  3. django和flask用MD5加密密码
  4. jsp jdbc mysql增删改查_使用JSP+SERVLET+JDBC实现对数据库的增删改查(详细)
  5. 通过@Import注解把类注入容器的四种方式
  6. EasyUI Easyloader 加载器
  7. Freemarker 最简单的例子程序
  8. linux指令格式介绍
  9. nmap扫描器的使用
  10. html网页设计实验原理,网页设计实验报告
  11. B区考研学校排名计算机,b区(b区考研学校排名)
  12. isupper函数用法
  13. 【学习KubeEdge】
  14. 微信小程序 校园食堂订餐点餐配送系统项目app毕业设计
  15. R语言Fisher检验的workspace问题
  16. 易语言服务器端口总被占用,易语言检测端口是否被占用的代码
  17. MFC更改对话框的背景色
  18. YUV图解 (YUV444, YUV422, YUV420, YV12, NV12, NV21)
  19. 2021高考成绩查询理综各科得分,2021高考一共几科 总分多少分
  20. Knockout.js的简单使用

热门文章

  1. 医院三级医院信息系统验收标准
  2. BW项目随手记:数据源无法激活使用问题,需同步至ODP数据源
  3. java计算机毕业设计校园快递联盟系统源码+系统+mysql数据库+lw文档
  4. 二手书交易平台相关调研
  5. 网站建设学习(二)---内网穿透
  6. PyCharm和Jupyter使用对比
  7. html5 jquery paint plugin,5+最好的画板,并在画布上手动绘制JavaScript和jQuery插件
  8. RC低通滤波器的响应特性
  9. 阅文java面试_【上海阅文集团Java面试】阅文后端Java,二轮技术一轮HR-看准网
  10. 怎么在vue中发起数据请求