问题标签 [teensy]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
205 浏览

python - LED 条纹与 Teensy 和 Python

我目前正在开发一个项目来控制连接到连接到 Windows PC 的 Teensy 3.2 板的 LED 灯条。它在技术上基于这个项目: https ://www.pjrc.com/teensy/td_libs_OctoWS2811.html

在 vvvv 中还实现了一个项目: https ://vvvv.org/contribution/realtime-led-control-with-teensy3.xoctows2811

到目前为止,两者都工作正常。我想要做的是将movie2serial 程序(关于pjrc.com 上的项目)移植到Python。

所以我找到了这个项目: https ://github.com/agwn/movie2serial_py

它不是开箱即用的,但经过一些修改,我让它运行起来。这是我接收图像,将其转换为字节数组并将其发送到串行端口的类的代码:

它正在工作,但速度很慢(我的电脑上大约 13 FPS)。

解释代码:我正在使用 cv2 创建一个简单的动画并将图像(具有 4 x 180 像素的 numpy ndarray,因为我有 4 个 LED 条带,每个 LED 条有 180 个 LED)发送到 Teensy 实例的发送方法。send 方法将图像发送到 image2data 方法以将图像转换为字节数组,在开头放置几个字节并将整个内容发送给 Teensy。

这段代码有两个瓶颈:

  1. 写入串行端口(方法 send 中的 self.port.write)。也许它无法加速,这是可以接受的。

但更重要的是:

  1. 访问图像数组(方法 image2data 中的 image[led,pin,order[channel]])。当我将行更改为例如:

    如果 0x80 >> 位 & 255:

代码运行速度快 6-7 倍(~ 80 FPS)。顺便说一句,order[channel] 用于将颜色从 BGR 转换为 GRB。

长话短说:从图像数组中读取颜色非常慢。如何在 image2data 方法中加快将图像数组转换为字节数组的速度?

说到这里,感谢您的耐心等待 :-) 很抱歉这篇文章很长,但这是一个复杂的项目,对我来说不容易解释。我非常感谢您的帮助,也许其他人可以从中受益。

提前致谢, 艾尔

0 投票
2 回答
96 浏览

c - 为 Teensy Atmega 32u4 实施 PI 控制

我正在使用 Teensy Atmega32u4 的标准库实现 PID 控制。我的控制变量是 PWM 信号。我的过程变量是直流电机的当前角位置,它与一个 10kohm 电位器接口,其代码读取 0 到 270 度范围内的位置 ADC 输入。设定点是一个激光切割操纵杆,其手柄也连接到一个 10kohm 电位器,该电位器以与过程变量相同的方式读取角位置。

我的问题是如何实现控制方案的组成部分。积分项由下式给出:

但我不确定如何计算积分部分。我们是否需要考虑样本之间经过的时间量或仅考虑累积误差并将积分部分初始化为零,以便真正离散化?由于我使用的是 C,积分项可以只是一个全局变量吗?

我在正确的轨道上吗?

0 投票
1 回答
299 浏览

teensy - MPU 6050 加速度计发送 16 位无符号值

我正在使用 GY-521 分线板在 3.6 英寸上获取加速度计数据。据我了解,我应该期望它有带符号的(正负)值,但我得到的值是 0 到 65535。

所以这就是我得到的:

当传感器平放在桌子上时,我的 Z 轴读数约为预期的 16384。当我向任何方向旋转传感器直到 90 度时,值下降到 0。一旦我转动超过 90°,值就会跳跃高达 65500 左右,当我继续旋转时,一旦传感器倒置(所以 180°),它就会下降到 50000 左右。

所以在我看来,在旋转的前半部分,我得到了预期值,但是在下降到零后没有得到负值,而是跳转到无符号 16 位的最大值。

对于 X 和 Y 轴,我得到了类似的结果,但旋转了 90 度。因此,当传感器平放在桌面上时,两个轴的读数均为 0。当我向一个方向转动传感器时,该值在 90° 时上升到 16384,然后在 180° 后下降到 0。如果我向另一个方向转动传感器,该值会上升到 65500 左右,然后在 90° 时下降到 50000,然后在 180° 时回到 65500。

这是我使用的整个代码:

0 投票
1 回答
317 浏览

c++ - 包含时的 Platformio 链接器错误

我在 Windows 10 上使用 PlatformIO(带有 VS Code 扩展),并且正在为 Teensy 3.5 板进行编译。

我已将我的一个项目中的链接器错误减少为以下代码:

当我尝试编译和链接它时,它编译得很好,但无法链接。如果我取消注释 Serial.println(),那么它会链接并编译。

我在 platformio.ini 文件中使用以下设置:

链接失败时给出的错误是:

c:/users/zackh/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/5.4.1/../../../../arm-none -eabi/lib/armv7e-m/fpu\libc.a(lib_a-writer.o):在函数_write_r': writer.c:(.text._write_r+0x12): undefined reference to_write'collect2.exe中:错误:ld返回1退出状态

知道这里发生了什么吗?

0 投票
1 回答
151 浏览

serial-port - 串口通讯打印问题

我正在研究两个 MCU 特别小的(类似于 Arduino)之间的串行通信,以生成假 GPS 数据。我已经能够很好地写入 GPS 数据并从其他 MCU 读取,但如果你仔细观察,打印的数据有些模糊。最后一个值以某种方式更改,我不明白为什么这是因为 sprintf 命令或将浮点数转换为字符串或什么?

一些帮助将不胜感激。

以下是串行终端的工作代码和片段。

谢谢

结果

0 投票
1 回答
812 浏览

c++ - 青少年的#include被 Arduino 覆盖

在 Arduino C+ 中,我想在使用 32 位有符号time_t类型时避免 2038 年溢出问题,因此我想专门使用 Teensy 的Time.h(或 TimeLib.h ;我正在写Arduino 1.8.7 上 Teensy 3.5 的代码)。

但是IDE似乎忽略了Teensy的Time.h,其中time_t定义为:

我发现无论我包含什么,我使用的 time_t 类型都编译为“long int”。这段代码表明:

编译器将显示time_ t 实际上是在某个地方定义为long int

我什至尝试将 Teensy 的 Time 文件夹(https://github.com/PaulStoffregen/Time)复制到我的草图文件夹中,但这样做无济于事:

如何确保我在 Arduino 中使用无符号的 32 位 time_t?当我调用now()时,我还想要返回 unsigned long time_t的 Teensy 的now(),而不是内置的 long int time_t

提前致谢!

0 投票
1 回答
270 浏览

bash - 可以在不保存为文件的情况下键入和执行 shell 脚本吗?

我想将脚本输入到类似 heredoc 的内容中并在不先写入文件的情况下执行它。

我使用带有 SD 卡的 Teensy3.2 微控制器来自动输入一些重复性任务(如 USB 宏键盘)。

为什么?我的计算机上不允许永久文件系统更改/大容量存储设备,并且我有重复性任务,这些任务可以从 shell 脚本中受益。

但是,我发现这非常有用,我想将未修改的 shell 脚本加载到 SD 卡上并执行它们。青少年只能把它们打出来(没有大容量存储)。将它们输入文件需要将它们保存到文件系统并授予执行权限,然后才能执行并最终删除它们。

我对此并不满意。这似乎有点 hacky,我不喜欢使用“键盘宏”自动删除文件。

我已经尝试过 ssh << EOF 等... // 但不同的计算机需要不同的密码,这些密码未存储在(未修改的)脚本中,并且 ssh 会提示输入密码,并且不允许我更改此配置。

我也尝试过 exec << EOF 等...但我不明白这种行为,因为它在完成时会杀死我的外壳(这让我害怕)。

基本上我想:

只打开一个子shell并输入脚本的每一行会更好吗?如果是这样,我会:

我希望能够将脚本添加到 SD 卡,并让它们可以“即时”键入和执行,而无需更改文件系统。

0 投票
1 回答
369 浏览

arduino - 使用另一个串行将数据从 arduino 发送到处理

我需要使用另一个串行将数据从 arduino teensy 发送到处理,因为默认串行(Serial.begin(9600))已经用于大程序

我尝试阅读一些关于如何更改我想要接收的序列号的参考资料(https://processing.org/reference/libraries/serial/Serial.html),但我认为它不会改变

我希望在我的处理中重复得到“hello world”,但我真的不知道如何编写代码,所以我可以从 Serial2 而不是从 Serial 获得价值

0 投票
1 回答
643 浏览

keyboard - Teensy 3.2 上的键盘映射 Sinclair Spectrum ZX +2

我正在将Sinclair Spectrum 128 ZX +2转换为Raspberry Pi供电的计算机,并且我正在使用Teensy 3.2 USB 开发板将原始键盘与原始薄膜映射并获得普通的 USB 键盘。我不打算保留原始键映射,可能我会买一些贴纸,然后将其转换为英国键盘。

我以这种方式重复使用了原来的带状连接器:

  • 5 行 > 小针 1 到 5
  • 8 列 > 小针脚 6 至 13

在此处输入图像描述 (我在拍照后注意到断开的电缆,现在已修复)

我在网上找到了一个类似的代码(感谢 Chad Boughton),并且我尝试将其改编为 Sinclair,第一次尝试是简单地检查所有键是否都正常工作。

这里的代码:https ://gist.github.com/federicocappelli/7f61d6bc2095cbc278df12519b721435

简而言之,我创建了一个假键矩阵:

但结果不是我所期望的,例如,按下

  • 键盘打印的空格键12345678
  • u键盘打印5cs
  • 绘制键盘打印图6d4b

我希望一个按键有 1 个字符。我做错了什么?

这里是辛克莱服务手册和键盘膜的解释

键盘作为参考: 在此处输入图像描述

0 投票
1 回答
95 浏览

python - 如何暂停 python 的 for 循环,直到 Arduino 响应

我创建了一个 python 代码(Tkinter GUI),它应该通过串行通信与 Arduino 进行通信。

我有一张表需要逐列发送。但在我发送下一列之前,我需要等待 Arduino 完成对前一列的处理。

这是一个遍历表的代码:

以下是该表的创建方式: