Arduino

针对与Arduino兼容的开源硬件和软件开发人员的问答


2
.ino Arduino Sketch是否可以直接在GCC-AVR上编译?
好的,我们都在网上看到了诸如Arduino vs C ++之类的问题,或者其他类似的问题。除通过抽象信息外,绝大多数答案甚至都不会涉及编译差异。 我的问题旨在解决在将重命名为.cpp文件或c ++的其他类似文件扩展名的.ino文件如何使用GCC-AVR进行编译时的实际差异(而非首选项)。我知道您至少必须包括Arduino头文件,但除此之外,如果使用例如GCC-AVR将.ino编译为.cpp文件,会导致编译错误。为简单起见,让我们使用经典的眨眼示例来说明差异。或者,如果您要使用更好的代码段,请务必在回答中包含该代码段,并彻底解释差异。 请不要就哪种是更好的使用方式或工具发表意见。 仅供参考。我使用Platformio进行开发,并且发现在编译过程中幕后发生了转换过程。我试图了解那里实际发生的情况,因此,当我在Arduino中编写代码时,我也理解“纯” C ++版本。 感谢您提前对我的问题进行周到的回答。

2
/ dev / ttyACM0和/ dev / ttyS0之间的区别(Linux下的Arduino IDE端口)
我使用Arduino IDE将草图上传到Arduino Uno。我的操作系统是Linux Ubuntu 14.04 LTS。Arduino IDE默认具有两个用于与Arduino Uno通信的端口: /dev/ttyACM0 /dev/ttyS0 这两个端口有什么区别? “ ACM0”和“ S0”是什么意思? OS文件夹结构中是否有配置文件描述这些端口的参数? 我知道选择/dev/ttyACM0时就可以将数据发送到Arduino Uno。但是,当我选择时它不起作用/dev/ttyS0。 我只是想更好地了解这些端口的确切含义。

4
选择无线技术以尽可能减少延迟
我正在起草一个酒吧测验项目,裁判在该项目中发出信号,多个球员按下按钮。首推的人有权给出答案。 我希望所有按钮(裁判的+ X播放器)都是无线的。由于最好的测验播放器可以在信号的10毫秒内单击一个按钮,因此,不同按钮之间的ping差异非常小非常重要。我不能让玩家大喊“我的按钮太慢了!” 另一方面,我不想使用比需要的更昂贵/更复杂的技术。 因此,最适合使用的无线技术是什么?请分享您在类似项目中的经验(或者只是理论知识:)。这是我到目前为止的研究(如果我错了,请纠正我): 蓝牙4 LE(与RFduino一样)优点:3-6ms延迟(广告),低能耗缺点:成本高,设备上按键不超过7个 Wi-fi专家:2毫秒的延迟(我刚刚对wi-fi路由器进行了ping操作),如果需要的话,还有数十个按钮缺点:成本,耗电 射频数据收发器优点:不知道,成本似乎要小缺点:同一频率上的多个按钮可能会产生很多噪音 最简单的“无线电遥控器”优点:零延迟,因为它们都是机电的,没有数据缺点:同一频率的多个按钮不起作用 那我想念什么吗?我感谢任何指导。

1
模拟1线设备
我要做的是使ATTiny IC成为1-wire总线上的从设备,并具有自己的S / N和特定功能的命令列表。 我想知道的是,是否可以使用来自arduino站点的一个线库作为从属发送数据。 例如,您可以在一个房间中有一个从属设备,其中有多种类型的传感器,它们会向主设备报告所请求的信息,或者主设备可以告诉它控制诸如百叶窗之类的东西。 问题 我是否必须监视总线并响应主机发出的请求,还要考虑普通传感器发送数据的方式?我应该以什么频率运行从站以获得最佳功能? 请注意,我不会使用寄生电源。

1
如何从软件重置Arduino
如您所知,当打开串行监视器时,Arduino IDE会重置Arduino。我也希望我的程序能够做到这一点。但是我不知道如何。 我检查了Arduino IDE的源代码(Serial.java和SerialMonitor.java),但找不到它将reset命令发送到的位置。它在哪里? 我使用C#与串行通信。
10 serial  reset 

1
将Timer3设置为CTC模式-与伺服库冲突
我想设置一个计时器,以便每秒调用一个函数800次。我正在使用预分频器为1024的Arduino Mega和Timer3。为选择预分频器,我考虑了以下步骤: CPU频率:16MHz 计时器分辨率:65536(16位) 16x10 ^ 6 /:由所选择的预分频CPU频率1024 = 15625 将其余部分除以所需的频率62500/800 = 19。 将结果+1放入OCR3寄存器。 我已使用下表设置TCCR3B的寄存器: 错误 不可能编译代码。这是编译器返回的错误: Servo \ Servo.cpp.o:在功能'__vector_32'中:C:\ Program Files(x86)\ Arduino \ libraries \ Servo / Servo.cpp:110:'__vector_32'AccelPart1_35.cpp.o:C:\的多个定义程序文件(x86)\ Arduino / AccelPart1_35.ino:457:首先在这里定义c:/程序文件(x86)/ arduino / hardware / tools / avr / bin /../ lib / gcc / avr / 4.3.2 /。 …

1
中断计数脉冲
我一直在尝试计算来自12,500 Hz方波的脉冲以触发输出。这是我到目前为止的代码。重置Arduino后,它将在25毫秒的样本中将315打印至串行。315 x 40 =12600。在我看来,它运行良好。 我唯一的问题是,仅在板复位后才返回此数字。现在,如果我将相同的代码向下移动到void loop,它会连续计数,从而给我带来不固定的回报。 我不明白我需要在循环部分中输入什么内容,因此我可以重复而准确地计算一段时间内输入引脚的切换次数,因此我可以根据存在的12,500个对输出做些什么Hz信号与否。 volatile int IRQcount; int pin = 2; int pin_irq = 0; //IRQ that matches to pin 2 void setup() { // Put your setup code here, to run once: Serial.begin (9600); attachInterrupt(pin_irq, IRQcounter, RISING); delay(25); detachInterrupt(pin); Serial.print(F("Counted = ")); Serial.println(IRQcount); } void …
10 interrupt 

3
如何从Arduino草图调用C函数?
我想知道是否有一种方法可以使用Arduino草图调用C文件中包含的函数? 我的C文件声明并定义了一个函数。为了避免将凌乱的函数定义放入我的Arduino草图中,我想直接从草图中调用该函数。 有使用Arduino和C做到这一点的标准方法吗?这是草图: #include "crc16.h"; void setup(){ } void loop(){ CalculateCRC16("<09M", 4); } 这是经过整理的C文件: #include <stdio.h> #include <stdint.h> uint16_t crctable[256] = { 0x0000, 0x1189,..... uint16_t // Returns Calculated CRC value CalculateCRC16( // Call example CalculateCRC16("<09M", 4); const void *c_ptr, // Pointer to byte array to perform CRC on size_t len) …

4
Arduino马达护罩橙色/白色引脚用法
我有一个像这样的Arduino马达护罩插入我的Mega板。 我想了解有关主板上橙色和白色别针块的更多信息。在Arduino的网站具有以下信息,但它并没有给出什么是最好的使用它们或引脚映射到数据引脚等任何解释 用于两个模拟输入(白色)的TinkerKit连接器,连接到A2和A3。 用于两个模拟输出的TinkerKit连接器(中间为橙色),连接到引脚D5和D6上的PWM输出。 用于TWI接口的TinkerKit连接器(白色,带4针),一个用于输入,另一个用于输出。 我要做的是将一个伺服器连接到板上,并希望我可以使用其中一个橙色OUT块。我没有成功找到任何这样的例子,这使我对是否可以实现存在疑问。我只是将其插入,但是我担心油炸盾牌/巨型/伺服。可能是一种非理性的恐惧,但我现在承受不起任何其他恐惧! 我不知道模块中的哪些引脚分配给了数据,vcc和out,所以如果有人知道我将不胜感激。 另外,只是因为不理解而烦人,所以TWI连接器有什么作用? 我希望这不是一个太笼统的问题,因为我真的可以使用一些答案!
10 pins  shields  motor 

3
有人可以解释一下用来设置计时器的奇怪代码吗?
在看别人写的草图时,我偶尔会遇到一些看起来像这样的代码: TCCR1A = 0; TCCR1B = 0; TCNT1 = 34286; TCCR1B |= (1 << CS12); TIMSK1 |= (1 << TOIE1); 我所知道的是与计时/计时器有关(我认为)。我该如何解密和创建这样的代码?什么是TCCR1A,TCCR1B,TCNT1,CS12,TIMSK1,和TOIE1?

2
什么时候应该使用晶体管,MOSFET,什么时候应该使用继电器?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,以便它成为Arduino Stack Exchange 的主题。 6年前关闭。 我习惯于中继一些继电器,它们非常有用,特别是对于大负载,例如白炽灯泡或其他120V AC设备。但是,对于使用60 mA电流(对Arduino来说太多)的(并联)连接在一起的一串LED使用继电器似乎是过大的选择。另外,如果您想经常打开/关闭它或执行PWM,则它将不起作用。我听说过一些有关晶体管和MOSFET的知识,但对它们了解得很少。我什么时候应该使用每一种,我怎么知道要得到哪种类型?同样,继电器似乎比晶体管/ MOSFET更昂贵。 编辑:如何在Arduino上使用它们?

3
Node MCU v3(LoLin)是否没有内置LED?
尝试一个简单的led闪烁程序,我无法在LoLin Node MCU v3上运行内置的led。该LED_BUILTIN常数设置为引脚16 / GPIO16 / D0。 阅读了几篇文章并进行了质量检查,我认为Node MCU板应该在引脚16上有一个板载LED。但是,如果我寻址此端口,则什么也不会发生。 使用相同的代码,我可以使RX引脚2上的数据指示灯闪烁。 LoLin Node MCU v3上的内置LED是否丢失,或者板上的LED损坏了?
10 nodemcu 

6
通过SoftwareSerial端口从Arduino Uno向ESP8266发送AT命令
目标 从Arduino UNO,通过SoftwareSerial端口将AT命令发送到ESP8266并接收结果。 当前状态 我要么发送AT命令并且什么也没回来(接线方案1),要么我发送AT命令并且得到了垃圾(接线方案2)。 使用Arduino作为传递(如参考资料部分中列出的教程中所述),我可以发送AT命令。我发现我可以115200波特与ESP8266通讯。 这是运行的结果AT+GMR: AT version:0.40.0.0(Aug 8 2015 14:45:58) SDK version:1.3.0 Ai-Thinker Technology Co.,Ltd. Build:1.3.0.2 Sep 11 2015 11:48:04 接线图1 !! 我的绿线连接到Arduino Uno的引脚3,黄线连接到引脚2;不是1和0,如图所示! 接线图2 与上述相同的接线,但RX和TX接反了。绿线连接到引脚2,黄线连接到引脚3。 码 这是在Arduino Uno上运行 #include <SoftwareSerial.h> SoftwareSerial esp8266(2, 3); void setup() { // Open serial communications and wait for port to open: Serial.begin(115200); …

3
arduino-millis()
从Arduino参考复制-millis() 提示:请注意,millis的参数是无符号长整数,如果程序员尝试使用其他数据类型(例如int)进行数学运算,则可能会生成错误。 什么样的数学?与Millis一起工作时,排除了哪种其他类型的处理? 有人可以澄清这一说法和/或举一些例子吗?
10 millis  data-type 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.