电子

电子 · 圈子

1421 位酷友已加入

电子圈子中包含常用的源代码、电路图、学习教程、产品样本、技术报告等干货资料,加入圈子可以上传、下载资料,也可以使用提问来寻求资料或分享你认为有价值的站外链接~

关注推荐最新

热门标签

资源

欧盟网联式自动驾驶技术路线图

欧盟网联式自动驾驶技术路线图 编制ERTRAC技术路线图的主要目的是让人们了解 各相关方 对欧洲发展网联式自动驾驶技术的观点。 技术路线图的第一部分明确了自动驾驶系统的定义和分级,以及实现更高等级自动驾驶功能所面临的挑战提出了三类车型的技术发展路线图。 网联式自动驾驶将在欧洲交通政策中扮演重要角色,这是由于网联式自动驾驶技术有助于欧洲多个目标的实现,解决多个社会问题,比如道路安全、拥堵、二氧化碳排放、社会包容性等。自驾驶可以有效提高交通系统的总体效率。 报告来源:中国智能网联汽车产业发展联盟

电子

电子·圈子   首发

张宇哲 发布了
问答

人工智能(AI)到底有多聪明?

很多人说人工智能(AI)像蠕虫一样聪明,可是蠕虫不能在道路上驾驶这卡车,为什么人工智能可以?

资源

C-V2X 产业化路径和时间表研究

C-V2X 产业化路径和时间表研究 概述 以V2X 技术为基础的汽车网联化和道路智能化是实现自动驾驶的重要支撑,能大幅度降低道路交通事故、提高交通效率、实现节能减排,近年在全球呈现出加速发展趋势。 我国C-V2X 经过几年快速发展,标准体系初步建立、产业链初具雏形、相关企业具备了较高的技术实力,已具备大规模部署及产业化的条件。 本报告聚焦基于3GPP R14 的LTE-V2X 技术,未来持续关注3GPP R15/R16 及后续演进情况,根据我国C-V2X 产业发展情况,及时更新研究内容。 主要内容 C-V2X概述 C-V2X国内发展现状 C-V2X产业化部署与技术推进 C-V2X产业化时间表 报告来源:中国智能网联汽车产业创新联盟 该报告转载自http://www.caicv.org.cn/material?cid=39

资源

带有触摸屏控制面板的开源智能家居

需要的元件 硬件 Raspberry Pi 3型号B.× 1 树莓派触摸屏 飞利浦 hue× 1 花卉护理仪× 1 Raspberry Pi 3 & 7 英寸外壳× 1 软件 nymea nymea app Snappy Ubuntu Core Kodi 原理及流程 使用带有nymea:core和nymea:app的Raspberry Pi和7英寸触摸屏来构建带有触摸控制面板的智能家居系统。 更新: 由于最新的nymea Raspberry Pi图像具有直接集成的触摸屏UI,因此该项目描述现已过时。只需下载nymea图像,然后使用屏幕将其闪存到Raspberry Pi,即可立即使用下面所述的设置。 故事 一段时间以来,我将nymea用作我的智能家居解决方案,并在Raspberry Pi上使用nymea:core和在手机上使用nymea:app。最初,我想在手机或平板电脑上壁挂式安装,但效果不是很好。手机是为口袋而设计的,在不同环境下使用时,会引起很多小问题。一个例子是唤醒屏幕:电话通常在侧面有一个硬件按钮来打开屏幕,如果东西粘在墙上,这将是一个真正的挑战。接下来的事情是,移动操作系统不喜欢应用程序始终在信息亭模式下运行,是的,Android具有将应用程序锁定在前台的功能,但是在某些情况下,它做不到正确的事情。我在尝试时遇到了更多此类问题。虽然可能有可能获得一款Android设备来满足用例的需要,但似乎对OS的摆弄很多。因此,最终我决定寻找替代方案,最终选择了带有7英寸触摸屏面板的Raspberry Pi。 设置 在我的地方,我使用带有nymea:core的Raspberry Pi,它通过蓝牙覆盖了我家的大部分区域(包括阳台),因此蓝牙传感器处于可触及的距离之内。但是,控制面板应放置在其他容易接触和使用的位置。因此,我现在设置了2个Raspberry Pi,一个用于核心,另一个用于触摸面板前端。如果你也想构建它,则可以使用在与nymea:app相同的Raspberry Pi上运行的nymea:core进行相同的创建。为了简化本文,我将继续介绍单RPi系统。如果你想将多个触摸面板连接到同一个nymea:core,或者希望使用像我这样的分布式面板,只需在不同的Raspberry Pi上遵循:core或:app步骤,并根据需要重复。 对于联网的东西,我主要使用飞利浦Hue灯泡(还有一些其他灯泡,但这是一个全新的hackster主题:)),安装一些小米Flower Care传感器以防止柠檬树变干,然后将Kodi媒体中心连接到它(我在看电影时调暗了灯光),并在设置中加入了一堆在线服务,例如推送通知,天气服务等等。鉴于本文的重点是触摸屏控制面板,我将不介绍一般的nymea设置,而是继续设置显示器。以下是一些屏幕快照,可提供一些见解: 组装硬件 在我遇到的那种特殊情况下组装Raspberry Pi并进行展示并不困难,但有些麻烦。事实证明,如果你首先将Raspberry Pi安装在显示器的背面,然后尝试将其放入外壳,在不使用过多力的情况下将其安装起来将非常棘手。相反,我发现先插入电缆,然后将RPi放在外壳的最终位置,最后插入显示器,要容易得多。然后拧紧所有螺钉。但是,请注意,使用此外壳后,无法在SD卡安装后添加/删除它。因此,我建议你首先使用不带外壳的Raspberry Pi在SD卡上设置基本系统,如果你手边有一个,可能甚至在HDMI端口上使用常规监视器。7英寸触摸屏也应该这样做,现在将其放在Raspberry Pi旁边的桌子上。一旦你确定SD卡上的系统可以正常工作并且可以通过SSH进行访问(稍后再进行介绍),就可以将它们放在一起了。 零件清单 请注意,SD卡已经在Raspberry Pi中。 安装软件 步骤1:准备Raspberry Pi SD卡 从nymea Wiki下载nymea:core图像。准备SD卡取决于你的操作系统,但是关于如何写入SD卡映像有很多说明。我倾向于dd按照下载链接下面的nymea Wiki中所述使用,但是如果你更喜欢用户友好的东西并且在所有主要操作系统上都可以使用,则Etcher也应该可以正常工作。完成后,将SD卡插入Raspberry。 Pi并启动它。如果要使用以太网电缆,请立即插入。如果要使用WiFi,可以在iOS或Android手机上安装nymea:app并从那里设置WiFi凭据,而无需将键盘插入Raspberry Pi。为此,请使用应用程序加载屏幕中的“无线设置”菜单项。 步骤2:安装nymea:app Raspberry Pi的nymea:core映像仅预安装了nymea:core。此时,它应该已经可以在你的手机上使用了。你可以玩一些并检查一下。但是,我们对在触摸面板上运行该应用感兴趣,不是吗?:)Ubuntu Core Snap存储中有一个nymea:app桌面快照软件包。它是作为GNU / Linux桌面应用程序构建的,但是由于存在可用的armhf构建,因此也将安装在Raspberry Pi上。但是,默认情况下,它将仅安装开始菜单项。我们需要进行一些调整,才能在一体机模式下实际启动它,而无需整个桌面。nymea:core映像已预安装并启用了SSH。在手机上使用nymea:app查找网络中的Raspberry Pi并获取IP地址。找到后,使用SSH登录Raspberry Pi(将192.168.0.100替换为Raspberry Pi的IP): 登录后,安装应用 好吧,如果一切顺利的话,黑客部分就来了:) 第3步:在信息亭模式下使其自动启动 由于我们不需要整个桌面,因此我尝试了一些简单的窗口管理器,并在将lightdm与自动登录到openbox会话中使用时获得了最大的成功。因此,让我们安装lightdm和openbox: 现在编辑/etc/lightdm/lightdm.conf。我最喜欢的编辑器是nano: 转到该[Seat:*]部分并更改以下设置(也删除#该行开头的): 在其中创建具有以下内容的openbox自动启动文件~/.config/openbox/autostart: 现在创建一个systemd服务文件以自动启动lightdm。创建/etc/systemd/system/nymea-app.service内容: 使systemd加载新文件并将其添加到自动启动中: 步骤4:调整和清理 旋转屏幕: 默认情况下,外壳中的Raspberry Pi触摸屏上下颠倒旋转。你可以通过添加以下行来解决此问题/boot/config.txt 修复图形性能: nymea:app是使用Qt和QtQuick2编写的,其中大量使用了OpenGL(ES2)。由于某些原因,Raspberry Pi图像默认情况下未启用该功能,因此对于nymea:app,图形性能会有所下降。要解决此问题,请运行 转到Advanced Options→GL Driver并选择GL (Fake KMS)驱动程序。使用非伪造的KMS驱动程序并没有取得很大的成功。我认为从理论上讲它应该可以工作,但是假冒的KMS当然足够了。或者,你可以再次编辑/boot/config.txt并在最后添加以下行: 隐藏鼠标光标: 默认情况下,每当你触摸屏幕时,使用的X11服务器都会绘制一个鼠标光标。鉴于我们使用的触摸屏没有什么意义。要隐藏该内容,请/etc/lightdm/lightdm.conf再次打开并编辑以下行(删除#并在末尾附加-nocursor): 关闭显示器,而不只是将其消隐: 现在,这是最棘手的调整,但我保证这将是最后一个需要的调整:) 默认情况下,Raspberry Pi在空闲时将仅使屏幕空白。这对于常规显示器来说是有道理的,但是对于这种触摸屏型号来说,也没有多大意义。我们希望屏幕在空闲时完全关闭,而不是被点亮并只涂成黑色。屏幕电源可以通过sysfs文件打开和关闭/sys/class/backlight/rpi_backlight/bl_power。我们可以通过写入0或写入此文件来手动打开和关闭它1。为了在屏幕变黑/变黑时自动执行此操作,让我们安装xscreensaver并将其执行包装在一个脚本中,该脚本可以挂接到相应的位置: 现在创建一个包含内容的文件/usr/local/bin/xscreensaver-wrapper.sh: 并使其可执行: 接下来,再创建两个包含内容的文件/usr/local/bin/screenon.sh 和/usr/local/bin/screenoff.sh内容 使用以下命令再次使它们都可执行: 最后遗漏的是授予用户nymea执行这些sudo命令的权限,而无需输入密码。为此,请编辑/etc/sudoers,然后添加两行,如下所示(重要信息:请正确注意以正确执行此操作。弄乱sudoers文件可能会使你无法进入系统,并且需要更深入的Linux知识或刷新才能解决此问题): 再次编辑〜/ .config / openbox / autostart并将此行插入开头,以便与nymea:app一起调用xscreensaver。 步骤5:完成 重新启动并享受成果! 最后 所有需要的文件在下载区均可找到。 via: https://www.hackster.io/michael_zanetti/open-source-smart-home-with-touchscreen-control-panel-55e613

资源

Arduino点矩阵游戏机

需要的元件 Arduino UNO 锂离子电池100mAh ATmega328P微控制器 MAX7219CNG x2 2.379英寸双色点矩阵显示屏 按钮或触觉开关 x6 蜂鸣器 杜邦线 面包板 5mmLED x5 电阻10kΩ x15 电容1 µF x4 电容10pF x2 Arduino IDE 原理及流程 演示视频 贪吃蛇游戏 步骤1:简介 MAX7219CNG LED驱动器IC 按键开关 Arduino Uno用于对ATmega328P进行编程。ATmega328P是Arduino Uno板的主要微控制器。我在项目中就单独使用了它。要了解如何使用独立的ATmega328P,可以看这里“从Arduino到面包板上的微处理器”。 MAX7219CNG用于驱动点矩阵显示。MAX7219CNG是一款紧凑的串行输入/输出共阴极显示驱动器,可将微处理器连接至多达8位的7段数字LED显示器,条形图显示器或64个单独的LED。片内包括一个BCD代码B解码器,多路扫描电路,段和数字驱动器以及一个存储每个数字的8x8静态RAM。通过方便的4线串行接口(支持SPI)可以与MAX7219通信。单个数字可以寻址和更新,而无需重写整个显示。只需一个外部电阻即可设置所有LED的分段电流。该IC还包括一个150μA的低功耗关断模式,模拟和数字亮度控制,一个扫描限制寄存器,允许用户显示1至8位数字,并强制所有LED点亮的测试模式。详细信息请参见数据表。 如果你不熟悉焊接,可以按照以下说明进行操作:如何焊接-良好焊接的秘诀 Sparkfun.com指南:如何焊接-通孔焊接 在下载区下载datasheet ATmega328P数据表 MAX7219CNG数据表 步骤2:电路设计 电路原理图 该电路是使用Eagle Layout Editor设计的,并附有原理图文件。四个触觉开关S2-S5用于控制UP,DOWN,LEFT和RIGHT控制。开关S6和S7用于选项菜单和游戏选择器。S1在这里用作微控制器的复位开关。电阻R4-R9用作上拉电阻,任何值都可以是10K-100K。五个LED(LED1-LED5)用于指示游戏级别,并且连接到LED的串联电阻的值应为220ohm-330ohm。当我使用双色点矩阵显示时,我使用了两个MAX7219CNG驱动器IC。你可以使用RGB矩阵,届时将需要三个驱动器IC。两个电阻器R1和R2连接到IC,用于控制矩阵显示器的亮度。 下载区下载以下文件 电路图Eagle来源 电路图PDF 步骤3:PCB设计 PCB采用Eagle设计,并附有电路板布局。你可以设计自己的PCB或可以使用它。我设计它的目的是使用碳粉转移方法制造PCB,并使用24百万迹线尺寸。对于顶层,我使用了跳线,因为使用墨粉转移方法制作双面PCB并非易事,但你可以自己尝试。我试图让董事会尺寸适合我,但每个人都有自己的选择。 下载区下载以下文件 电路板布局PDF 步骤4:控制台编程 为了正常工作Arduino Sketch,你需要在此步骤中附加LedControl库。我上传了诺基亚手机蛇游戏的完整Arduino Sketch。你可以开发自己的游戏。要上传草图,首先将库添加到你的Arduino环境中,只需将草图上传到Arduino,从板上移除微控制器,然后将其放入游戏机即可。以后我将为控制台上传更多游戏。 下载code.zip文件夹中的程序: code.zip 步骤5:组装所有东西 完成PCB并将所有组件组装在一起。优良作法是将IC基座用于原型板,而无需将IC直接焊接到PCB板上。它消除了在焊接过程中烧毁IC的风险,并创造了一种随时移除IC而无需进行脱焊的方法。 步骤6:完成游戏机 我完成的游戏机的图像已上传。对于图片质量,我深表歉意。所有图像均由我的智能手机拍摄。 步骤7:规格 最后 所有需要的文件在下载区均可找到。 via:https://www.hackster.io/taifur/arduino-dot-matrix-game-console-d50476

资源

Arduino的64键自定义键盘矩阵

需要的元件 Arduino UNO 1N4148 –通用快速开关 x64 按动开关 x64 74HC595移位寄存器 排针 Arduino IDE 原理及流程 我目前正在开发一个带有集成键盘的项目,这带来了一个问题:如何在开发板原型中包含键盘?我不能使用USB键盘或现有的基于Arduino的键盘,因为实际项目中的键盘直接连接到处理所有其他功能的微控制器。因此,我设计了这种基于PCB的基本64键原型键盘矩阵。 该PCB不包含任何IC(集成电路)。键盘矩阵的行和列直接连接到引脚接头,以便键盘可以连接到Arduino或任何其他微控制器。它是为你的项目原型制作的完美选择,其中包括集成键盘。 我已经写了包含了详细的、经过注释的代码,以使其与任何具有足够I / O引脚可用的Arduino兼容开发板一起使用,仅需要11个引脚。键盘有64个键,包括shift,caps,ctrl,alt,fn和“ special”的修饰符。还有六个其他键可用于任何你喜欢的操作。每个单个键的功能都可以单独定义,包括激活修饰符时每个键的功能。我认为,这比现有的键盘代码明显有用,后者严重限制了你自定义按键行为的能力。 提供的代码将文本打印到串行。如果你希望文本移至其他位置,则可以轻松更改。 关于程序大小的注意事项: 我提供的代码很大,因为它不使用任何现有的库。我完全从头开始编写此代码,以实现所需的可定制性。在Arduino UNO上,这将使用9100字节(28%)的程序存储空间,而全局变量使用394字节(19%)的动态内存。 我的代码可能会更高效,并且键盘的库和草图肯定会更小,但这是我可以设计的唯一方法,可以为每个键和每个修饰符提供完全的灵活性。它还考虑了实际的键盘使用情况。例如,在启用Caps Lock的情况下,按我的代码的同时按Shift键,将按原样生成小写字母。默认情况下,在按ESC的同时按住FN键不会执行任何操作。但是该行为是完全可定制的,因此你可以根据自己的喜好进行更改。 耗材: 定制PCB 6x6x5mm触觉瞬时按钮(x64) 1N4148开关二极管(x64) 1x8排针,母或公(x2) 74HC595移位寄存器 跳线 面包板 Arduino Uno或任何Arduino兼容的微控制器开发板 步骤1:键盘矩阵的工作方式 为什么需要键盘矩阵? 此键盘有64个按键。如果要将每个按钮中的每个按钮直接连接到开发板上,则需要64个I / O引脚。这是很多引脚,比大多数开发板都可用。为了使这个数字更合理,我们可以使用键盘矩阵,该矩阵只需要数量等于键数平方根(四舍五入)的引脚即可。 设置了键盘矩阵,因此连接了行中的每个键开关,并且连接了列中的每个键开关。当我们想查看按下了哪些键时,我们“激活”第一行,然后检查每一列。如果特定的列处于活动状态,我们知道该列和第1行中的键已被按下。然后,我们停用第1行并激活第2行,然后再次检查所有列。激活所有行之后,我们只需从第一行重新开始。 我们如何扫描键盘矩阵: 因为我们正在使用微控制器,所以“激活”意味着将该行设置为LOW或HIGH。在这种情况下,我们将行设置为LOW,因为我们在列输入引脚上使用了微控制器的内置上拉电阻。如果没有上拉或下拉电阻,则输入引脚将由于接口而发生不可预测的反应,这将导致错误的按钮按下。 Arduino UNO中使用的ATmega328P微控制器没有内置的下拉电阻,只有上拉电阻。因此,我们正在使用这些。上拉电阻将每个输入引脚连接到5V,确保在按下按钮之前,它们始终读为HIGH。 通常,所有行也都设置为HIGH,这样可以防止无论是否按下按钮,列引脚都无法连接到行引脚。但是,当我们准备检查一行时,可以将该行设置为LOW 。如果按下该行中的按钮,这将为将输入引脚拉至地面提供一条路径-导致该列现在显示为LOW 。 因此,总结一下:我们将一行设置为LOW,然后检查看看哪些列引脚现在正在读取LOW。这些对应于按下的按钮。这个过程非常迅速,因此我们每秒可以扫描整个键盘很多次。我的代码将其限制为每秒200次,这样可以平衡性能,弹跳并确保抓住每个按键。 二极管,重影和n键过渡: 当按下某些按钮组合时,电路中的二极管可以防止意外按键。二极管仅允许电流沿一个方向流动,从而防止出现重影。如果我们不使用二极管,那么当电流流过相邻的开关时,按下某些键可能会导致另一个未按下的键被记录下来。这在简化的图形中得以显示,其中按下了三个相邻的键,即使没有按下,也会导致第四个角的键被注册。二极管可以防止这种情况,并启用“ n键翻转”,这意味着我们可以按任意组合按任意数量按任意键,而不会出现任何问题。 用移位寄存器保存引脚: 你们当中的精明人士可能注意到我说一个键盘矩阵需要的针脚数量等于键数目的平方根,但是我也说我的键盘设计只需要11个针脚。应该是16,对吧?不,因为我们使用的是74HC595移位寄存器。该移位寄存器使我们仅使用Arduino I / O引脚中的三个即可控制多达八个输出引脚。这三个引脚使我们可以向移位寄存器发送一个字节(八位),移位寄存器将其八个输出引脚设置为HIGH或LOW。通过将移位寄存器用于输出行引脚,我们节省了5个整个I / O引脚! “那为什么不也对输入引脚使用移位寄存器呢?” 你问。最简单的答案是输入需要使用另一种类型的移位寄存器,而我手头上没有该类型。但是,使用移位寄存器进行输入也会使我们读取列的方式复杂化,并可能导致噪声和“弹跳”问题。可以说,在这种情况下,我不需要头痛。 步骤2:PCB设计 原理图设计 现在你了解了键盘矩阵的工作原理,我的PCB设计应该很简单。我在KiCAD(抱歉,Eagle评委)中设计了PCB,并从原理图开始。我只需放置一个按钮符号和一个二极管符号,然后复制并粘贴这些符号,直到获得64个键的网格。然后,我添加了两个1x8引脚标题符号,一个用于行,一个用于列。按钮的一侧连接成列,按钮的另一侧连接成行。 下一步是为每个原理图符号分配PCB封装。KiCAD包含的足迹库具有内置的必要足迹。在设计自己的PCB时,必须非常小心,以选择正确的封装,因为这些实际上将最终出现在PCB上。有许多组件的占位面积非常相似,但间距或其他却略有不同。确保选择与你的实际组件匹配的组件。 占地面积和引脚号 请特别注意引脚号。KiCAD有一个奇怪的问题,原理图二极管符号的引脚号与封装的引脚号不匹配。这导致二极管向后,鉴于其极性,这是一个严重的问题。我没有发现那个错误,不得不扔掉了我订购的第一批PCB。为了在第二个版本中解决此问题,我必须创建一个自定义二极管封装,并交换引脚号。 PCB布局 完成原理图并分配好封装后,我转到了实际的PCB布局。电路板轮廓是在Autodesk Fusion 360中创建的,以DXF格式导出,然后导入到Edge Cuts图层的KiCAD中。之后的绝大多数工作只是简单地排列按钮,使它们的布局类似于普通键盘。 然后,所有迹线都被布线。因为实际的按钮布局与原理图中的整洁矩阵不匹配,所以该部分有些混乱,我不得不在某些地方使用过孔。通过过孔,你可以将走线从一层布线到另一层,这在使用具有很多重叠走线的2层板时非常有用。最后,我添加了填充区域,因为这是一种很好的做法。 PCB制作 设计好木板后,我只需绘制所有图层并将其添加到zip文件夹中即可。该文件夹在此处提供,可以直接上传到JLCPCB等PCB制造服务。 这是PCB Gerber文件的链接:https://drive.google.com/file/d/10YriLLtghV0Sb84Wm ... 步骤3:PCB组装 这是整个项目中最简单但最乏味的步骤。只需将所有组件焊接到位。它们都是通孔元件,易于焊接。要特别注意二极管的方向。二极管上的标记应与PCB上的标记匹配。 以我的经验,最简单的方法是用第三只手将PCB固定在位,然后将所有二极管放在第一位。然后翻转电路板并将其全部焊接,然后夹住引线。然后放置所有按钮并焊接。然后将针座焊接到位。你可以使用母头或母头,这完全取决于你。如果使用公头,然后将其放在板子下面,则正确的间距是将其直接粘贴到面包板上。 步骤4:将键盘连接到Arduino 接线看起来很复杂,但是当你注意细节时,它其实很简单。 八根跳线将从列标题直接进入以下Arduino引脚: 列1> A0 列2> A1 列3> A2 列4> A3 列5> A4 列6> A5 列7> 5 列8> 6 接下来,将74HC595移位寄存器跨过中间中断放在你的面包板上。注意芯片的方向,点表示引脚1。 查看接线图,查看5V和接地连接的位置。移位寄存器的两个引脚连接到5V,两个引脚连接到地。 仅需要三根线即可将移位寄存器连接到Arduino。他们是: Shift(时钟)11> 4 Shift(锁存)12> 3 Shift(数据)14> 2 由于某些愚蠢的原因,移位寄存器的输出引脚以违反直觉的方式排列。将那些连接到行引脚时,请特别注意移位寄存器的引脚图。他们是: 第1行> Shift(Q0)15 第2行> Shift(Q1)1 第3行> Shift(Q2)2 第4行> Shift(Q3)3 第5行> Shift(Q4)4 第6行> Shift(Q5)5 Shift 7> Shift(Q6)6 Shift 8> Shift(Q7)7 没有将任何东西连接到Arduino 0或1引脚,因为它们也用于串行端口并引起冲突。 步骤5:刷新Arduino代码 使用此处提供的代码刷新Arduino。对此没有什么特别的,只需像上任何其他Arduino项目一样上传代码即可。 代码中的所有内容都具有详细的注释,你可以阅读这些注释,因此在此不再赘述。基本上,这些引脚被设置为输入和输出。主循环仅包含一个计时器函数。每隔5毫秒,它将调用一次功能以扫描键盘。该函数调用一个单独的函数来在检查每一列之前设置移位寄存器。按下的键会将其值打印到串行。 如果要更改按下键时的打印内容,只需更改**Serial.print(“ _”);即可。**在与条件相对应的if语句中。例如,你可以设置按住FN并按N时要打印的内容。带有其他修饰符的每个其他键也是如此。 该代码中的许多键根本不执行任何操作,因为它只是打印到串行。这意味着退格键无效,因为你无法从“串行”监视器中删除-数据已被接收。但是,你可以随意使用自己喜欢的更改。 在自己的项目中使用键盘 打印到串行很不错,但这并不是键盘的重点。该键盘的目的是为更复杂的项目制作原型。这就是为什么容易更改功能的原因。例如,如果你要将打印的文本打印到OLED屏幕,则可以简单地将每个**Serial.print(替换为display.print(**或你的特定显示器所需的任何东西。)Arduino IDE的Replace All工具非常适合替换所有的一步操作。 最后 所有需要的文件在下载区均可找到。 via:https://www.hackster.io/cameroncoward/64-key-prototyping-keyboard-matrix-for-arduino-4c9531

资源

手动制作一个精确的1HZ信号源

需要的元件 Maxim Integrated DS3231M±5ppm,I2C实时时钟 74HC4020 x2 1uF,0603 x3 4.7k,0603 x1 原理及流程 我一直在寻找一个准确时钟源,但振荡器或晶体越精确,则变得越昂贵。生成1Hz时钟源的最简单方法是生成或使用32.768 kHz时钟源,因为这是一个可用的常见频率,它可以划分为1Hz。 在寻找精确的32.768 kHz TCXO时,我发现了Maxim IC的一款IC,就是他们流行的DS32xx RTC IC系列,他们专门制作了TCXO版本。从那里,我找到了这两部分:DS3231和DS3232M。它们是RTC芯片,但也具有专用的32.768 kHz输出。它们之间的两个主要区别是DS3231M的工作电压为+2.3至+5.5 V,并且需要在32.768 kHz的输出上上拉。 现在,显然,使用专用的32.768 kHz TCXO将是最好的方法,但是这样做的乐趣何在?我想看看是否可以将此RTC芯片用作独立的1Hz信号源。 DS3231M / DS3232M DS3231M和DS3232M都有专用的32.768 kHz输出引脚。唯一的区别是DS3231M需要一个外部上拉电阻(4.7k就足够了)。从这里开始,我将仅使用DS3231M。 你可能想知道为什么我会使用所有具有I2C接口的RTC芯片来创建32.768 kHz时钟源的麻烦。数据表中的详细信息将有助于回答此问题。 最重要的问题是实际使用32.768 kHz输出引脚需要采取什么步骤。答案是,只需要通过VCC供电,而不是电池。而已。让我们仔细看看。 这是引脚说明: 通过状态寄存器中的EN32KHZ位使能时,它可以在电源(VCC或电池)上工作。 该位启用和禁用32kHz输出。逻辑“ 1”表示它处于活动状态。初次上电时,将其设置为逻辑“ 1”,但前提是必须使能振荡器。 当设置为逻辑“ 0”时,使能振荡器位有效;当设置为逻辑“ 1”时,使能振荡器位禁用。如果器件由VCC供电,则该位在上电时设置为逻辑0,并且无论该位如何,振荡器始终处于开启状态 这一切意味着,只要存在上拉电阻且器件通过VCC供电,该输出引脚上就会存在32.786 kHz时钟源。 74HC4020 接下来是弄清楚我们必须除以2多少次才能从32.768 Hz达到1Hz 降至1Hz所需的时间是15次。 SN 74HC4020是14位二进制纹波计数器。纹波意味着该级中第一触发器的输出是第二状态的输入,依此类推。带出每个触发器的输出(第二和第三除外)作为输出。 其中之一将使你降至2 Hz。因此,有两种解决方法。你可以使用这些IC的第二个,将2 Hz馈入CP引脚和Q0以获取1Hz,或者使用触发器进行2分频。 我决定使用第一个4020 IC将32.768 kHz除以16.384 kHz。第二个4020用于将所有下限分频到1 Hz。原理图和布局如下所示。 测试 示意图: 布局: 3D视图: 这是组装好的PCB的外观。我忘了在上拉电阻上放一个地方,在焊接过程中将它安装在那里。这是一块很小的板子。 这是安装的上拉电阻的特写 这是示波器上的一些测量值。 我的范围在测量中没有显示足够的有效数字。如果你决定构建它并可以使用更精确的测量设备,请在屏幕截图中添加有效数字。 32.768 kHz输出 32.768 kHz 2Hz输出 2赫兹 1赫兹 1赫兹 最后 所有需要的文件在下载区均可找到。 via: https://www.hackster.io/harit-shah/not-your-typical-1hz-source-5ee441

电子

电子·圈子   首发

张宇哲 更新了
资源

智能汽车人机交互现状及发展趋势研究报告

汽车智能化、网联化趋势不断加深汽车产业数字化变革,对人、车、环境关系带来新的影响,人机交互设计已经成为智能汽车发展和创新的核心要素。围绕智能化的自动驾驶系统、车载信息娱乐系统、智能车载语音交互系统、道路状况信息系统等一系列功能将以汽车作为载体建立起一个特殊的生态系统,实现智能汽车的场景化应用和拓展。为此,本报告展开对智能汽车人机交互现状和发展趋势的研究,为未来智能汽车人机交互设计提供参考。 本报告原版来自“中国智能网联汽车产业创新联盟:智能汽车人机交互现状及发展趋势研究报告” 转载链接为http://www.caicv.org.cn/index.php/material?cid=39。

电子

电子·圈子   首发

张宇哲 更新了
资源

【实验报告】 I/O接口编程

学习串行通信原理,了解串行通信控制寄存器。 实现 I/O接口编程。

问答

车联网(IoV)和车载自组网(VANET)有什么区别?

车联网(IoV)和车载自组网(VANET)是同一种东西吗?如果不是,那他们的区别在哪里呢?

问答

解释一下ARP协议和TCP/IP协议之间的关系?

解释一下ARP协议和TCP/IP协议之间的关系?

  • 1
  • 99
  • 100
  • 101
  • 120
前往