Arduino

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

4
如何从arduino迁移到物理原型
我一直在阅读有关从Arduino迁移到PCB的信息,这似乎有些令人生畏。现在,我真正想做的只是拿走我已经建立的东西,并进行一些更改,以便实际上可以为它创建一个外壳,并确保一切保持连接。 我已经附上了我的项目的照片。我想要做的是创建一个盒子,盒子里有4个按钮,旁边有LED。我可能会为按钮和LED所在的空间创建泡沫板切口。按钮和LED的布线以及arduino本身和伺服电机都需要隐藏在泡沫板下方,这是我被卡住的地方。 我该怎么做才能实质上“加长”按钮和LED的电线,并确保所有组件都固定在面包板上(特别是按钮会弹出)?有没有一种方法可以在不制造PCB的情况下进行?我了解将组件焊接到原型板上的概念,但是就切割/印刷电路或其他方面而言,这确实让我感到困惑。 我将不胜感激。如果您也发现我的接线设置有任何问题,我也希望您能从中获得学习经验。谢谢!

2
Arduino ADC参考电压(如果由电池供电)
我正在寻找可能使用其ADC监控Arduino的电池电量的方法。这非常简单明了(尤其是在使用Arduino API的情况下);但是,如果电池为Arduino供电并且外部不受控制,那么ADC参考电压是否会随电池不断下降?换句话说,即使电池电压实际上降低了,ADC值也不会始终读取相同的值(最大值)吗? 在这种情况下,测量电池电压既低效又毫无意义。

2
如何获取变量的数据类型?
我正在使用Arduino,我想知道是否有一个函数返回变量的数据类型。也就是说,我想运行如下内容: // Note: 'typeof' is a sample function that should return the data type. Serial.println(typeof(myVar));

4
pulseIn的工作是什么?
我有一个从现场找到的超声波传感器的代码。这是代码: #define trigPin 12 #define echoPin 13 void setup() { Serial.begin (9600); pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); } void loop() { int duration, distance; digitalWrite(trigPin, HIGH); delayMicroseconds(1000); digitalWrite(trigPin, LOW); duration = pulseIn(echoPin, HIGH); distance = (duration/2) / 29.1; if (distance >= 200 || distance <= 0){ Serial.println("Out of range"); } else …

2
静态分配对象内存;动态地初始化它?
我有一个对象,其构造函数被传递了一个参数。如果在编译时知道参数值,则可以静态构造对象: static FOOOBJ foo(3); (我知道这并不是真正地静态完成,即由编译器完成,但实际上是在安装过程中完成的)。 但是,如果我在编译时不知道参数值,我仍然想为对象预分配空间,但在运行时在该空间中构造对象。没有单独的.initialize()方法可以做到吗?

5
Arduino和AVR之间有什么区别/关系?
我一直以为Arduino是一个微控制器平台,但实际的微控制器是Atmel生产的AVR芯片,或其他人基于RISC ISA生产的类似产品,而Arduino通常用于指整个电路板供电通过此AVR芯片。我的理解正确吗? Arduino和AVR之间有什么区别/关系?
9 avr 

3
为什么忽略snprintf的'n'参数?
我发现我的代码n中snprintf()似乎忽略了参数。 char asdf[10]; Serial1.println(snprintf(asdf, 2, "hello")); 当我希望它能打印2时,它会打印5。发生了什么事?
8 string 

4
使库引脚映射可配置的正确方法是什么?
我正在使用一些库,这些库提供用于与特定硬件芯片进行交互的API(使这些驱动程序通过?)。但是,不同的定制板或屏蔽将使芯片映射到不同的引脚,这意味着需要针对每种情况修改库。需要修改库无法与Arduino IDE库管理器一起很好地工作。 是否存在用于公开此配置的首选/推荐模式,以便无需每次都修改库本身? 这是一个示例,其中记录了需要更改哪些部分以匹配电路板的引脚布局。
8 library  pins 

4
延迟时间); vs if(millis()-previous> time); 和漂移
经历一个老项目,我在两个Arduino Due上有代码,看起来像这样 void loop() { foo(); delay(time); } 考虑到大多数有关使用的文献,delay();我将其重新编码为 void loop() { static unsigned long PrevTime; if(millis()-PrevTime>time) { foo(); PrevTime=millis(); } } 但是,这似乎造成了以下情况:这两个设备在一段时间内会漂移,而此前它们并没有 我的问题是双重的: 为什么会if(millis()-PrevTime>time)引起更多的漂移 delay(time)呢? 有没有办法防止这种漂移而无需返回delay(time)?

4
与Unix时间戳转换
在Arduino中以毫秒为单位在日期,小时,分钟,秒之间转换为Unix时间戳的最佳方法是什么?我需要进行此转换,因为我正在使用RTC(日期,小时,分钟,秒等)并通过BLE传递Unix时间戳。 我在网上找到了一些代码片段,但尚未对其进行广泛的测试。 byte second = epoch%60; epoch /= 60; byte minute = epoch%60; epoch /= 60; byte hour = epoch%24; epoch /= 24; unsigned int years = epoch/(365*4+1)*4; epoch %= 365*4+1; unsigned int year; for (year=3; year>0; year--) { if (epoch >= days[year][0]) break; } unsigned int month; for (month=11; …
8 time  rtc  data-type 

1
在I2C中,“收到NACK”是什么意思?
我正在阅读有关I2C的信息。在此站点上: http://playground.arduino.cc/Main/WireLibraryDetailedReference#endTransmission 它说endTransmission()可以返回以下状态代码之一: 0:发送成功。 1:发送缓冲区对于twi缓冲区而言太大。这不会发生,因为在twi.h中设置的TWI缓冲区长度等于在Wire.h中设置的发送缓冲区长度。 2:地址已发送,并且收到了NACK。这是一个问题,主机应发送一个STOP条件。 3:发送数据并接收到NACK。这意味着从站不再有要发送的信息。主机可以发送STOP条件,或重复启动。4:发生另一次twi错误(例如,主机丢失总线仲裁)。 如果我没有在Arduino上连接任何东西(或者在SDA / SCL上都带有上拉电阻),我将始终处于状态2。但是,当没有任何可通信的内容时,如何接收NACK(或其他任何东西)呢?这还意味着其他吗? 这是我的示例代码 #include "Wire.h" void setup() { Serial.begin(9600); Wire.begin(); } void loop() { Wire.beginTransmission(42); Wire.write(0); byte status = Wire.endTransmission(); Serial.println(status); // always prints 2 }
8 i2c 

2
为什么模拟引脚会互相影响?
我有一个传感器,它会产生一个模拟信号。 我正在读取所有模拟数据并将其发送到我的计算机。 uint8_t sensors[] = { A0,A1,A2,A3,A4,A5,A6 }; const int len = sizeof(sensors) / sizeof(sensors[0]); void loop(void) { for (size_t i = 0; i < len; i++) { auto sensor = sensors[i]; int sensorValue = analogRead(sensor); // Convert the analogue reading (which goes from 0 - 1023) to a voltage …

5
我可以使delayMicroseconds更准确吗?
我正在尝试爆炸DMX数据,这需要4us脉冲。我正在检查结果是否运气不佳,以查看Arduino在延迟方面的表现如何……似乎非常糟糕。 我做了一个快速的小测试: unsigned long ptime; void setup() { Serial.begin(9600); } void loop() { ptime = micros(); delayMicroseconds(4); Serial.println(micros() - ptime); delay(1000); //just to keep the serial monitor from going nuts } 结果: 8 4 8 4 4 4 4 4 8 8 8 8 4 8 8 4 4 8 …

5
错误:等待Arduino 101超时-我能做什么?
我刚刚收到了Arduino 101,所以在兴奋中做了以下工作... 在它和我的Macbook Pro之间连接了USB电缆 开始Arduino IDE版本 1.6.7 写了一点代码 根据入门选择Tools | Boards | Boards Manager...并安装Intel Curie Boards 已选 Tools | Board: "Arduino 101" 已选 Tools | port: "/dev/cu.usbmodemFA141 (Arduino 101)" 已选 Sketch | Upload 我原本期待令人惊奇的事情,但我得到了错误: Starting upload script Payload: /var/folders/jr/5rmqcrqj58103d4p1f6_3sjr0000gn/T/build7c6ce067b9e8a57f9917c651ec494989.tmp/orientation.ino.bin Waiting for device... ERROR: Timed out waiting for Arduino 101. 有什么我可以做的调试的还是我错过了一步? …

1
有什么方法可以从RAM运行二进制代码吗?
我正在寻找一种便宜的单板计算机,该计算机可以用汇编语言进行编程,并使用有限的功能从PC和简单的I / O外围设备加载目标代码。 理想情况下,我希望能够在合理的时间内自己编写机器上的所有代码。我不希望这样的操作系统,因为我想要一个程序在RAM中写入一些代码,然后分支执行它。就适合于汇编编程的系统简单性而言,Arduino可能是我最好的选择,但是它具有哈佛架构,并且不允许我从RAM中执行。 多年前,我使用的是冯·诺依曼(Von Neumann)架构的8位CPU,它可以将执行分支到任何地址,无论它是映射到ROM,RAM还是其他任何地址。这就是我现在想做的。 我可能可以在RAM中编写和加载在RAM中编写的操作码解释器,但这是一个非常复杂且耗时的解决方案,除非已经存在这种虚拟机。 关于Arduino或我可能使用的其他微控制器的其他解决方法的任何建议吗? 谢谢! 皮埃尔

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.