问题标签 [mindstorms]
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.
c - 在 RobotC 中添加多头时的奇怪行为
这是我在使用 RobotC 3.62 时遇到的问题的一个示例:
这给出了 的结果heading=24464
,这不是我所期望的。
我尝试用包含 90000 的 long 替换 90000 部分,它给出了预期的结果。似乎写数字 90000 会导致某种溢出错误(90000-256^2=24464)
。这很奇怪,因为 long 应该持有 "从 -2,147,483,648 到 2,147,483,647 的整数" 。我需要以某种方式投射它吗?我不熟悉C,有人可以解释这种行为吗?谢谢!
c - 如何使用 C 语言对 LEGO Mindstorms EV3 进行编程?
首先,我是新手,我需要一点帮助!
我有一个 LEGO Mindstorms EV3 机器人,我下载了(LEGO Mindstorms EV3 家庭版)来控制 EV3。不幸的是,我在上述软件中找不到 EV3 的源代码。所以,如果有人能告诉我使您能够对 EV3 进行编程的软件的名称,请告诉我!我将不胜感激!
我还下载了(Bricxcc)软件,但它是旧版本。我找不到包含 EV3 的更新版本。
我可以用 C 语言编写 EV3 吗?或者为传感器添加一些功能?
注意:我以 leJOS 软件结束,用 java 编写代码,它更容易,并且 java 中的 EV3 砖有很多资源。祝你一切顺利!
c++ - 从 C++ 通过 USB 与 NXT 通信
有没有什么好的工具可以用 C++ 从 PC 连接到 LEGO Mindstorms NXT?我已经尝试过 NXT++(https://github.com/cmwslw/nxt-plus-plus),但它显然无效。
java - 在 lejos 基于行为的编程中使用 ev3 超声波传感器
我正在使用 ev3 超声波传感器。我正在编写基于行为的 lejos 代码。当超声波传感器检测到不超过 30 厘米的物体时,我想做一些任务。这是我的代码:
但我认为这不是正确的方法。如何以正确的方式实施它?
感谢帮助,
javascript - 乐高 Mindstorms 的 Javascript
我被分配到一个旨在使用 JavaScript 对 Lego Mindstorms 进行编程的项目。但是,我找不到很多关于在 Mindstorms 中使用 JS 的好资源。有人有吗?
另外,我真的不明白我怎么能,例如,使用 JS 使轮子转动。据我了解,我需要使用 Node.js。
image-processing - 如何将usb网络摄像头连接到ev3?
我想将 USB 网络摄像头连接到我的 EV3。可以这样做吗?
我该怎么做?如何从我的代码中访问凸轮?
我使用 Labview 进行编程
并提前感谢:)
mindstorms - LeJOS 示例程序不会构建
我已经下载了 leJOS 和 eclipse 插件。我将 NXJ_HOME 设置为 C:\Program Files\leJOS EV3,并导入示例程序。他们不建造。他们在所有导入 lejos.* 的东西上都会出错。另外,有人告诉我,当我制作自己的 leJOS 程序时,它应该自动包含 LeJOS NXT Runtime 和 classes.jar。当我这样做时,我只得到 src 文件夹,没有别的。
c# - API 扩展中的对象链与方法
因此,我正在考虑根据自己的需要扩展/调整 API。我说的是 Lego Mindstorms C# API。我正在围绕它构建自己的 API(基于适配器模式),因此我可以以更好的 OO 方式对机器人进行编程。
以下是有关 API 工作原理的链接:Lego Mindstorms EV3 C# API
但现在我被 C# API 处理砖块命令的一种非常奇怪的方式困住了。
绝对不是OO方式...
一个例子:要向砖块发送命令,您需要一个砖块实例来发送命令。但是 DirectCommand 实例与砖无关。
所以我想做的事情是让砖块和 DirectCommand 松散耦合。
这是另一个例子:执行一批命令。您必须写出所有命令,然后执行某个方法。在当前的 API 中,无法循环遍历数组并将它们添加到堆栈元素,以便稍后执行它们。
所以我想做的是:
创建一个类似 PlayTone(..) 的命令,将其添加到命令数组列表中,然后循环遍历它...
因此,如果有人可以提供帮助...我会非常高兴:)
lego - 可以对乐高 EV3 积木进行编程以获取用户输入吗?
抱歉,我对 Lego ev3 Mindstorms 完全陌生,我需要为某个主题的项目执行此操作。
我将使用 ROBOTC 语言对其进行编程,并且为了满足我的项目要求,我正在考虑允许用户使用 EV3 砖块向机器人输入输入。有可能这样做吗?如果可能的话,我该怎么做?
最后,我可以获得一些乐高 EV3 头脑风暴的 ROBOTC 编程在线指南吗?
抱歉问了这么多问题:(
任何帮助深表感谢!:) 非常感谢!:)
interrupt - Lego Mindstorm EV3 上的裸机中断处理(TexasInstruments Sitara AM1808 SoC)
对于一个大学项目,我们的项目团队想要为 Lego Mindstorm EV3 平台编写一个裸机操作系统。尽管我们进行了大量研究和测试,但我们遇到了一个无法解决的中断处理问题。
以下是平台的详细信息:
CPU:ARM926EJ-S(ARMv5 架构)
SoC:TexasInstruments Sitara AM1808
SoC 简短文档:http
:
//www.ti.com/lit/ds/symlink/am1808.pdf SoC 技术参考手册:http ://www.ti.com/lit/ug/spruh82a/spruh82a.pdf
以下是我们尝试做的事情以及我们尝试做的方式:
我们想要初始化一个定时器中断,它应该每毫秒触发一次,以获得系统滴答声。我们操作系统的各种其他组件(例如软件-I2C-管理等)都需要此刻度。由于我们的团队对裸机编程比较陌生,我们以 TexasInstruments 为例来初始化 SoC 的定时器中断和中断控制器。此示例是 StarterWare 的一部分,旨在在 AM1808 评估板上运行。由于 Lego Mindstorm EV3 使用相同的 SoC,它也应该适用于我们。请参阅以下源代码:
startup.S:我们程序的入口点(基于 TI 提供的源代码)
test.c:我们的应用程序和TI提供的初始化代码
systick.c:这里我们初始化定时器中断和中断控制器
所有其他所需的源代码文件(例如,用于控制中断控制器)都是 TI 的 StarterWare 代码的未修改版本(它提供驱动程序来控制 SoC 的各种硬件组件,如中断控制器、定时器等)。我可以在这里添加它们,但我不确定它们是否有用。我查看了它们,对我来说,这段代码似乎没有发生什么奇怪的事情。
我们使用 EV3 的 Uboot bootloader 运行我们的程序。此引导加载程序已经是默认固件的一部分。它将位于 SD 卡上的程序加载到 0xC1000000(映射到 EV3 的 RAM 的地址)并跳转程序的入口点(汇编代码中的“Entry:”)。到目前为止没有问题,代码编译并按预期执行。
这就是问题所在:
中断也按预期触发。每次执行程序时,在 c_entry() 中循环 455 个循环后,这种情况就会发生。但是一旦触发中断,程序就会停止而没有任何错误或其他东西。中断服务例程(systick.c 中的 systick_isr_C)和中断处理程序(汇编代码中的 IRQHandler 或者如果我们在 test.c 中设置我们自己的处理程序 irqHandler)都不会被调用。我们的猜测是,这个问题是由于中断向量表可能在错误的位置引起的,尽管 0xFFFF0000 是手册中描述的地址(这个地址映射到 ARM CPU 本地 RAM)。
如果我们停用 CPU 上的中断处理(使用 systick.c 中的最后一行代码 --> systick_init())并检查指示中断是手动触发的寄存器,那么一切正常。在这种情况下,我们直接触发 irqHandler 函数。我们使用以下代码执行此操作:
我们还尝试将 irqHandler 设置为所有可能中断的默认处理程序(只是为了确保没有触发其他中断)。这并没有导致任何其他结果。
不幸的是,我们目前没有 JTAG 适配器,这将允许我们在触发中断时检查寄存器(例如程序计数器)。我们预计很快就会开始,但现在我们必须在没有人的情况下工作。
有谁知道可能是什么问题,或者为什么我们的中断处理程序根本没有被调用?
我试图尽可能详细地描述这个问题,但如果我能提供任何可能有用的进一步信息,我很乐意这样做。
感谢您提前提供任何提示。