ESPHOME max7219点阵时钟

Note

ESPHome中max7219digit驱动仅支持驱动点阵显示,对于7段数码管,请参考官方原文MAX7219 7-Segment Display。
本文参考自官方文档MAX7219 Digit Display

硬件连接

  • 由于与MAX7219Digit的通信是使用SPI进行此集成的,因此您需要在配置中使用带有mosi_pin的SPI总线(不需要miso_pin)。将VCC连接到3.3V(制造商建议4V以上,但3.3V似乎也可以正常工作),DIN连接到mosi_pin, CS连接到cs_pin,最后将GND连接到GND。
  • 您甚至可以通过将链中前一个芯片的DOUT连接到下一个DIN来连接多个max7219。有超过3个芯片,3.3V可能不够。

example

# Example configuration entry
spi:clk_pin: D0mosi_pin: D1display:- platform: max7219digitcs_pin: D2num_chips: 4intensity: 15lambda: |-it.print(0, 0, id(digit_font), "HELLO!");

参数说明

  • cs_pin (必须, Pin Schema): CS线连着的引脚。
  • num_chips (可选, int): 您希望用于菊花链的芯片数量。默认为4。
  • rotate_chip (可选): 旋转每个8x8芯片。有效值为0、90、180和270。默认为0。
  • scroll_enable (可选, boolean): 当内容不合适时,打开滚动模式。默认为true。
  • scroll_mode (可选): 设置滚动模式. CONTINUOUS or STOP 之一. 默认 为 CONTINUOUS。
    • CONTINUOUS: 总是滚动并且文本连续重复,您可能需要在末尾添加一些分隔。
    • STOP: 当文本结束时,它等待scroll_dwell时间,并将滚动设置回开始。
  • scroll_speed (可选, Time): 设置滚动速度。默认为250ms。
  • scroll_delay (可选, Time): 设置滚动开始前的延迟时间。默认为1秒。
  • scroll_dwell (可选, Time): 设置滚动结束后重新开始前的等待时间。这只在STOP模式下使用。默认为1秒。
  • reverse_enable (可选, boolean): 对于某些显示器,显示的顺序是颠倒的(“DCBA”)。此选项将再次将显示反转为(" ABCD ")。默认为false。
  • intensity (可选, int): MAX7219驱动输出的强度。范围从最弱的0到最亮的15。默认为15。
  • lambda (可选, lambda): 用于在MAX7219上呈现内容的lambda。有关更多信息,详情请参阅Rendering Lambda。
  • update_interval (可选, Time): 重新绘制屏幕的间隔时间。默认为1秒。
  • spi_id (可选, ID): 如果需要使用多个SPI总线,则需要手动指定SPI组件的ID。
  • id (可选, ID): 手动指定用于代码生成的ID。
  • num_chip_lines (可选, int): 如果要在多行模式下使用显示器,则设置行数,默认为1。Example.
  • chip_lines_style (可选): 多线路模式下的线路如何连接?可能的值是zigzag和snake。默认为snake。
  • flip_x (可选, boolean): 翻转屏幕上的水平轴。默认为false。

YAML文件

esphome:name: max7219-clocks-envsensorfriendly_name: max7219_clocks_envsensoresp8266:board: esp12e# Enable logging
logger:# Enable Home Assistant API
api:encryption:key: "*************************"ota:password: "****************"wifi:ssid: !secret wifi_ssidpassword: !secret wifi_password# Enable fallback hotspot (captive portal) in case wifi connection failsap:ssid: "Max7219-Clocks-Envsensor"password: "************"captive_portal:web_server:port: 80spi:clk_pin: GPIO14mosi_pin: GPIO13display:- platform: max7219digitcs_pin: GPIO15num_chips: 4scroll_enable: falseintensity: 2lambda: |-if (id(sntp_time).now().is_valid()) {auto time = id(sntp_time).now();it.printf(0, 0, id(my_pixelmix6), "%02d:%02d", time.hour, time.minute);} else {it.print(0, 0, id(my_pixelmix6), "NTP..");}it.image(24, 0, id(my_image));it.line(1, 7, 23, 7);font:- file: "fonts/pixelmix_8px.ttf"id: my_pixelmix6size: 6time:- platform: sntpid: sntp_timetimezone: Asia/Shanghaiimage:- file: "smile.png"id: my_image

效果如图

在这里插入图片描述

代码中用到的文件:
smile.png下载地址
图在下面
smile.png
图在上面
字体文件:
参考ESPHOME Fonts字体组件下载。

其他参数

反显(Screen inversion)

display:- platform: max7219digit# ...lambda: |-it.invert_on_off(true);// Print Hello at position 0 (left)it.print(0,0, id(digit_font), "Hello!");

函数it.invert_on_off(true);将反转显示。背景像素是开启的,文本像素是关闭的。it.invert_on_off(false);将显示恢复正常。在没有使用参数的情况下, it.invert_on_off();将切换从开到关或反之亦然。这将在每次更新显示时发生。这样就产生了一个闪烁的效果。背景像素仅在下一次更新时设置,在print, line等各种功能中绘制的像素直接受到invert命令的影响。

display:- platform: max7219digit# ...lambda: |-it.invert_on_off(true);// Print Hello at position 0 (left)it.print(0,0, id(digit_font), "Hello!");it.line(0, 0, 31, 7, COLOR_OFF);

这段代码只会影响在屏幕上绘制的线条。这条线将从左上到右下擦拭像素。背景不受影响。

动态亮度(Screen intensity)

可以使用以下命令在lambda代码中“动态”设置屏幕的强度, it.intensity(0 .. 15)

display:- platform: max7219digit# ...lambda: |-it.intensity(10);

屏幕开关 (Screen ON/OFF)

可以使用以下命令在lambda代码中“动态”地打开和关闭显示:it.turn_on_off(true or false)

display:- platform: max7219digit# ...lambda: |-it.turn_on_off(true);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/20122.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

git国内下载

https://npm.taobao.org/mirrors/git-for-windows/点进去最新的最后一条 选择.exe文件点击

微信小程序之网络数据请求 wx:request的简单使用

网络数据请求 1. 网络数据请求 wx:request2. 请求格式3. 关闭request的合法检验 1. 网络数据请求 wx:request 出于安全性方面的考虑,小程序官方对数据接口的请求做出了两个限制:只能请求 HTTPS 类型的接口必须将接口的域名添加到信任列表中. 在自己的微…

数据备份与还原,(mysqldump,source)索引(index),创建视图(view)

一、备份与还原 /***************************样例表***************************/ CREATE DATABASE booksDB; use booksDB;CREATE TABLE books (bk_id INT NOT NULL PRIMARY KEY,bk_title VARCHAR(50) NOT NULL,copyright YEAR NOT NULL ); INSERT INTO books VALUES (11078…

【NLP】BERT和原理揭示

一、说明 BERT(来自transformer的双向编码器表示)是Google AI Language研究人员最近发表的一篇论文。它通过在各种NLP任务中展示最先进的结果,在机器学习社区引起了轰动,包括问答(SQuAD v1.1),自…

免费的云数据库:探索PlanetScale,划分分支的MySQL Serverless平台

最近我发现了一个非常有趣的国外MySQL Serverless平台,它叫做PlanetScale。这个平台不仅仅是一个数据库,它能像代码一样轻松地创建开发和测试环境。你可以从主库中拉出一个与之完全相同结构的development或staging数据库,并在这个环境中进行开…

机器学习实践(2.1)LightGBM分类任务

前言 LightGBM也属于Boosting集成学习模型(还有前面文章的XGBoost),LightGBM和XGBoost同为机器学习的集大成者。相比越来越流行的深度神经网络,LightGBM和XGBoost能更好的处理表格数据,并具有更强的可解释性,还具有易于调参、输入…

SIP协议学习(2)

文章目录 注册(REGISTER)1、AOR和Contact区别2、注册概述3、注册与定位服务4、注册超时处理5、注册消息6、多Contact地址处理7、下期预告 注册(REGISTER) 1、AOR和Contact区别 在学习注册之前,首先区分一下AOR和Cont…

《数学模型(第五版)》学习笔记(1) 第1章 建立数学模型 第2章 初等模型

参考数学建模论坛《数学模型(第三版)》学习笔记 http://www.madio.net/thread-146480-1-1.html 参考视频 数模视频(姜启源、谢金星) https://www.bilibili.com/video/BV1VJ411w7r3/?spm_id_from333.788.recommend_more_video.0&vd_source3ef6540f84…

MongoDB教程-5

复制是跨多个服务器同步数据的过程。复制在不同的数据库服务器上提供数据的多个副本,从而提供冗余并提高数据可用性。复制可防止数据库丢失单个服务器。复制还允许您从硬件故障和服务中断中恢复。通过增加数据拷贝,您可以将其中一个用于灾难恢复、报告或…

【STM32MP135】修复10.1寸屏显示异色问题,添加极性配置

文件路径:u-boot-stm32mp-v2021.10-stm32mp1-r1/drivers/video/stm32/stm32_ltdc.c

JavaScrpt_13 Web API 正则表达式

JavaScrpt_13 Web API 正则表达式 一、 正则表达式1. 正则基本使用2. 元字符边界符量词范围字符类 3. 替换和修饰符4. change 事件5. 判断是否有类 一、 正则表达式 正则表达式(Regular Expression)是一种字符串匹配的模式(规则)…

123.HTML5+CSS3完结_使用Netlify收取表单

Netlify也可以做表单接受: 我们启动一下 修改下表单 ● 接着在我们的网站输入并提交表单 ● 之后会有一个提示,提示我们提交成功 然后就能在Netlify接受到用户的表单 ● 当然这个表单只能接受100个,但是作为实验也够用了 到此&a…