Arduino画圣诞树

上年圣诞节的时候,好友发了很多的圣诞树,pyq里到处都是

当然,在色彩斑斓的手机屏幕前,还坐着数不清的单身狗们

甚至有些激进分子当起了砍树先锋


刚好,期末前最后的大作业是用Arduino调用Adafruit_GFX库来画画,所以当时就想了想,还是画个简易版的圣诞树吧。

回归正题!!!

首先介绍一下Adafruit_GFX
Adafruit_GFX是一个强大的图形库,它为我们所有的LCD和OLED显示器提供了通用语法和一组图形功能。这使得我们可以在不同的图形之间转换,也可以在简单的或者是复杂的形式间进行转换。甚至是新的特性,或者是性能的改进以及故障查找都可以马上显示的彩色的图形显示器上。

具体如何在Arduino中导入这个库,就不多介绍了。

接着我们在它的库文件中加入一个新的方法——画圣诞树

首先,我们来到它的库文件夹下,找到这两个文件:
Adafruit_GFX.cpp 和 Adafruit_GFX.h

接着,我们在Adafruit_GFX.h文件中申明一条全局方法(之后在Arduino中直接调用Adafruit_GFX.h库后,可以直接使用该方法)

然后,我们在Adafruit_GFX.cpp中实现该方法:

//Draw a tree
void Adafruit_GFX::drawTree(uint16_t color){int a1_x = 64;int a1_y = 4;int b1_x = 60;int b1_y = 8;int c1_x = 68;int c1_y = 8;drawLine(a1_x , a1_y , b1_x, b1_y, color);drawLine(a1_x , a1_y , c1_x, c1_y, color);drawLine(b1_x , b1_y , c1_x, c1_y, color);int a2_x = 64;int a2_y = 8;int b2_x = 56;int b2_y = 16;int c2_x = 72;int c2_y = 16;drawLine(a2_x , a2_y , b2_x, b2_y, color);drawLine(a2_x , a2_y , c2_x, c2_y, color);drawLine(b2_x , b2_y , c2_x, c2_y, color);int a3_x = 64;int a3_y = 16;int b3_x = 50;int b3_y = 26;int c3_x = 78;int c3_y = 26;drawLine(a3_x , a3_y , b3_x, b3_y, color);drawLine(a3_x , a3_y , c3_x, c3_y, color);drawLine(b3_x , b3_y , c3_x, c3_y, color);int a4_x = 64;int a4_y = 26;int b4_x = 44;int b4_y = 40;int c4_x = 84;int c4_y = 40;drawLine(a4_x , a4_y , b4_x, b4_y, color);drawLine(a4_x , a4_y , c4_x, c4_y, color);drawLine(b4_x , b4_y , c4_x, c4_y, color);int aa_x = 60;int aa_y = 40;int bb_x = 68;int bb_y = 40;int cc_x = 60;int cc_y = 50;int dd_x = 68;int dd_y = 50;drawLine(aa_x , aa_y , cc_x, cc_y, color);drawLine(bb_x , bb_y , dd_x, dd_y, color);drawLine(cc_x , cc_y , dd_x, dd_y, color);
}

该圣诞树是采用三角形和矩形的结合,其中(a_x,a_y),(b_x,b_y),(c_x,c_y)为三角形的三个点坐标,aa,bb,cc,dd则是底部矩形的坐标。
最后在Arduino中调用实现:

#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>#define SCREEN_WIDTH  128
#define SCREEN_HEIGHT 64
#define OLED_MOSI     11
#define OLED_CLK      13
#define OLED_DC        9
#define OLED_CS       10
#define OLED_RESET     8
Adafruit_SSD1306 ssd(SCREEN_WIDTH, SCREEN_HEIGHT,OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);void setup() {if(!ssd.begin(SSD1306_SWITCHCAPVCC)) {Serial.println(F("SSD1306 allocation failed"));for(;;);}
}void loop() {ssd.clearDisplay();//画圣诞树ssd.drawTree(SSD1306_WHITE);ssd.display();delay(2000);
}

此时的OLED屏如下:

这里我花了几分钟的时间画了一个可以看出是树的圣诞树哈哈哈,当然,你们可以稍微费点时间实现更好看更花哨的圣诞树。

Arduino画圣诞树(精修版)相关推荐

  1. 简单python画圣诞树图片-圣诞节!教你用 Python 画棵圣诞树

    原标题:圣诞节!教你用 Python 画棵圣诞树 作者 | 糖甜甜甜 责编 | 胡巍巍 如何用Python画一个圣诞树呢? 最简单: 1height = 5 2 3stars = 1 4for i i ...

  2. python画圣诞树代码-圣诞节!教你用Python画棵圣诞树

    原标题:圣诞节!教你用Python画棵圣诞树 | 作者:糖糖甜甜 | 来源:经管人学数据分析(ID:DAT-2017) | 欢迎转载,请注明出处. 如何用python画一个圣诞树呢? 最简单: 1he ...

  3. 用python画圣诞树图片-节日快乐! Python画一棵圣诞树送给你

    本文实例为大家分享了Python画圣诞树的具体代码,供大家参考,具体内容如下 源代码 from turtle import * import random import time #from unit ...

  4. python turtle画圣诞树动图_圣诞节!教你用Python画棵圣诞树

    作者 | 糖甜甜甜,985高校经管研二,擅长用 Python.R.tableau 等工具结合统计学和机器学习模型做数据分析. 如何用Python画一个圣诞树呢? 最简单: 1height =5 2 3 ...

  5. 用python画圣诞树-圣诞节!教你用 Python 画棵圣诞树

    原标题:圣诞节!教你用 Python 画棵圣诞树 作者 | 糖甜甜甜 责编 | 胡巍巍 如何用Python画一个圣诞树呢? 最简单: 1height = 5 2 3stars = 1 4for i i ...

  6. python画圣诞树代码解读_使用Python画了一棵圣诞树的实例代码

    分享给大家一篇文章,教你怎样用Python画了一棵圣诞树,快来学习. 如何用Python画一个圣诞树呢? 最简单: height = 5 ​ stars = 1 for i in range(heig ...

  7. 【圣诞节限定】教你用Python画圣诞树,做个浪漫的程序员

    最近在各大社交平台看到好多圣诞树,看到大佬们画的圣诞树一个比一个精致,我也特别想尝试画一棵特别的圣诞树.下面是我画的一棵简易的圣诞树,虽然和网络上大佬们的圣诞树相比不是很精致,但是对于萌新们来说,画这 ...

  8. 用python画圣诞树的圣诞树代码

    今天给大家分享通过Pythoy用Turtle库来画圣诞树代码. Turtle库是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x.纵轴为y的坐标系原点,(0,0)位置开始 ...

  9. 用MATLAB画圣诞树的源代码

    女神要我给她画圣诞树?高情商这样画! 画圣诞树的代码都在这里啰!由于期末时间紧张,这里就不对代码做详细解释了(源代码有一定的注释)!请见谅! 第一个是水彩画滤镜: 参考了(图像滤镜算法--水彩滤镜.漫 ...

最新文章

  1. HarmonyOS 修改App的默认加载的界面
  2. 一步步玩pcDuino3--mmc下的裸机流水灯
  3. vantui框架_vue移动端优秀框架收集
  4. 苹果裁撤自动驾驶项目员工200余人
  5. 一个字符串中到底能有多少个字符? 我竟然算错了!
  6. mdp框架_强化学习:MDP(Markov Decision Process)
  7. 唐刘之辩:行业知识图谱的schema构建的难点、重点与困惑
  8. 128x64液晶驱动(添加详细)
  9. 信息安全隐忧是快递实名的“死穴”
  10. 【PA2014】【BZOJ3709】Bohater(贪心,排序)
  11. 坯子库曲面推拉教程_SU曲面建模太简单?还是网友技术太强大...
  12. R2CNN 算法笔记
  13. 工作流引擎之-activiti6使用
  14. python自动更新国内IP地址合集
  15. 数仓OLAP基础知识
  16. Error while obtaining UI hierarchy XML file: com.android.ddmlib.
  17. 高光谱图像去噪相关资源汇总(常用对比算法+数据集+评价指标)
  18. 数字抽奖小程序_如何利用小程序玩转抽奖活动?
  19. 本地Windows MIMIC III数据入库
  20. css中创建主轴方向,flex-direction

热门文章

  1. mysql和python的关系_八MySQL与Python
  2. CISCO认证体系简介
  3. iOS 百度地图开发集成使用 (转)
  4. MySQL 数据类型转换 函数 CAST()
  5. 事务_进程 ID 57_与另一个进程被死锁在 锁 资源上,并且已被选作死锁牺牲品。请重新运行该事务
  6. Teams中如何控制创建团队权限
  7. Git重磅推荐:5款强大的开源报表工具!
  8. 根据会员积分改变会员等级
  9. 蒜头君的旅游计划(DFS)
  10. 接口的基础语法和接口在开发中的作用2021-07-23java学习日记