Arduino

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

1
我可以使用PROGMEM写入闪存吗?
在Arduino的文档中,我引用: http://playground.arduino.cc/Learning/Memory 注意:闪存(PROGMEM)存储器只能在程序刻录时填充。程序开始运行后,您将无法更改>闪存中的值。 并在PROGMEM说明中: http://arduino.cc/en/Reference/PROGMEM将 数据存储在闪存(程序)存储器中,而不是SRAM中。有Arduino板上可用的各种类型的内存的描述。 PROGMEM关键字是一个变量修饰符,仅应与pgmspace.h中定义的数据类型一起使用。它告诉编译器“将该信息放入闪存”,而不是通常存放在SRAM中。 那么我们可以还是不能?还是不一样?

3
如何在Arduino上使用RFID-RC522?
我正在为我的本地Makerspace进行一个项目,我们的预算有限,所以我希望在eBay上使用RFID-RC522 el'cheap'o RFID / NFC阅读器,我收到了几个基于SPI的板,它们可以工作,但是他们的代码示例是有限的。 我发现了几个不同的库,并选择了一个库:https : //github.com/ljos/MFRC522 麻烦的是,所有可用的在线代码似乎都源于人们翻译并侵入Arduino库的一些中国人的Python代码。 该代码有效,但是Mifare卡应具有4、7或10字节的UID,并且示例/库返回的是5字节的序列号。 没有文档,并且NXP数据表令人难以理解...此外,它似乎适用于大多数卡,但不适用于符合ISO 14443标准的Mastercard PayWave卡。基于MFRC500的较为昂贵的RDM880阅读器可以很好地工作,并且具有不错的库,但是成本使得无法实现。 因此,有人可以帮助我获得这个基于NXP MFRC522的单元,该单元从所有ISO 14443卡中读取UID。 #include <SPI.h> #include <MFRC522.h> #define RFID_SS 10 #define RFID_RST 5 MFRC522 rfid( RFID_SS, RFID_RST ); void setup() { SPI.begin(); Serial.begin(115200); rfid.begin(); } void loop() { byte data[MAX_LEN]; byte uid[5]; if ( rfid.requestTag( MF1_REQIDL, data …
11 rfid 

1
如何使用10-15m距离的电线(两种方式)通信Raspberry Pi和Arduino?
我正在开始一个家庭自动化的个人项目,我有一个树莓派和一个arduino Uno板。 我想传达树莓派和我的arduino,在这里我的树莓应该能够向arduino读写信号。 我认为它们之间的距离大约为10至15米。 我需要什么?我需要哪种导线或其他组件来实现我的目标?我再说一遍:我不想无线通信树莓派和arduino。 谢谢!
11 serial  uart 

1
使用电源控制微控制器来延长电池寿命?
本文介绍了一种延长电池寿命的方法:仅在需要时使用低功率控制器打开Arduino。作者指出,与使用Arduino的睡眠模式相比,此方法使用的功率要少得多。 这种方法有不利之处吗?我应该建造哪种型号?(TPS61240变体似乎使用了Circuits @ Home上不再可用的某些东西。)我不胜感激原理图或指向详细说明的链接。 背景:我正在构建一个没有电源的环境中的传感器设备。传感器应唤醒,例如。每小时阅读一次 温度传感器,可能会发送短信,然后返回睡眠状态。
11 battery 

7
Arduino新手:无焊面包板替代
我对arduino完全陌生。我使用无焊面包板创建了电路。但是很明显,连接丢失或不如焊接解决方案好。所以我想知道既然我也是电路的新手,那最简单的是什么
11 breadboard 

2
更改Hitachi HD44780 LCD屏幕上的亮度
我正在完成一个项目-LED游戏闹钟。看到这是一个时钟,我需要一种节省电量的方法,目前我的Uno R3 +正在像政客一样吃东西。我的问题是,如何仅在Hitachi HD44780 16x2 LCD屏幕上使用软件关闭屏幕或关闭背光灯?或者如何在一个组件上设置睡眠模式?我计划将其关闭的方法是使用超声波测距仪,如果我靠近的话,它将打开屏幕。如果我说的话没有任何意义,请让我澄清一下,我有点着急。
11 arduino-uno  lcd 

3
Arduino上的高精度时序用于串行通信
我正在使用Arduino Uno通过串行端口将时间和电压信息发送到Python进行绘图。但是,连续时间戳之间的间隔时间似乎随着时间而增加,影响了我的绘图。当波特率设置为9600时尤其如此,我的初始时间差可能是1320,而在相对较短的时间后增加到16400。当此速率设置为最大115200 bps时,即使经过较长时间的发送,更改也较慢且不那么明显,从1340到1500。所有时间均以微秒为单位。 我想知道我是否可以减少或消除这种影响,以及是否不知道为什么存在。我已经阅读了有关引起这种情况的中断和延迟的内容,但是我不完全了解当前电子设备的复杂性,并且想知道: 我可以在时间上获得更高的精度吗? 是什么原因导致时间变化? 这是我目前拥有的: #include <eHealth.h> extern volatile unsigned long timer0_overflow_count; float fanalog0; int analog0; unsigned long time; byte serialByte; void setup() { Serial.begin(9600); } void loop() { while (Serial.available()>0){ serialByte=Serial.read(); if (serialByte=='S'){ while(1){ fanalog0=eHealth.getECG(); // Use the timer0 => 1 tick every 4 us time=(timer0_overflow_count << …

2
在触摸Arduino之前应该注意些什么?
在开始弄乱计算机之前,需要了解一些基本准则,例如,关闭电源并注意静电。如果我不想伤害自己和开发板,在使用Arduino开发板时应该注意哪些准则。需要触摸Arduino的三种活动以及我要问的问题: 设置导线,组件布局或面包板。 调试正在运行的安装程序。 移动,将板安装在某处。
11 safety 

2
为什么不能在PROGMEM中使用指针而不是数组?
我目前正在更改某些库,以使用闪存而不是RAM进行字符串存储,这样我就不会在项目上用完SRAM。 库中的某些字符串以这种方式声明: const char *testStringA = "ABC"; 这与我通常看到的情况不同: const char testStringB[] = "DEF"; 但是,我认为这两个在声明为const并在声明中进行初始化时是等效的。两者都在代码中正常工作。 我试图将它们移动到闪存: const prog_char *testStringC PROGMEM = "GHI"; 然后我发现这行不通。打印时正在产生gobbledegook。 但是,遵循以下更常见的模式: const prog_char testStringD[] PROGMEM = "JKL"; 工作正常。 我可以在反汇编中看到: 00000068 <testStringC>: 68: 04 01 .. 0000006a <_ZL11testStringD>: 6a: 4a 4b 4c 00 JKL. 因此很明显,指针和PROGMEM导致字符串/数组未初始化。 为什么是这样? 示例代码: #include <avr/pgmspace.h> …
11 progmem  pointer 

1
移植Arduino库涉及哪些步骤?
我想在另一个平台上使用Adafruit CC3000及其Arduino库。在这种情况下,它是Arduino引脚兼容的PSOC4 Pioneer Kit。这是一个基于ARM Cortex M0的平台。 我的问题是:我该如何移植这样的图书馆?步骤,密钥文件等是什么? 一个明显的问题是PSOC Creator无法随时支持C ++。 可以肯定的是Arduino Due板基于Atmel SAM3X8E ARM Cortex-M3 CPU。 注意:如果您认为此问题不在主题之列;请转到Arduino Meta上的此问题,以表达您对Arduino兼容设备上的问题是否适合此列表的意见。
11 library 

3
Arduino的可清洗,可穿戴技术
问题:如何准备带有嵌入式电子设备的衣物以进行洗涤? 背景:有许多针对“可穿戴技术”的Arduino开发板/克隆。(例如,Lilypad。)具有LED发光图案,麦克风,GPS或其他电路的可穿戴技术是一个有趣的概念,但是水和电往往不会混合在一起。 为了准备可穿戴技术进行清洗,我假设人们可以将大型电路拆除。但是,不可避免地,某些电子设备或多或少会永久地固定在衣服上。可以对这些电子设备(例如缝入的Arduino Lilypad)进行什么处理(使其安全)?
11 safety 

8
在哪里可以找到所有可用Arduino库的中央存储库?
目前; 当我使用一些新硬件开始新的Arduino项目时,我要做的第一件事是寻找能够为该硬件带来Arduino支持的第三方库。 我看的第一个地方是: Arduino游乐场 的GitHub 谷歌 通常,我找不到支持库,也找不到位于不同位置,文档级别不同,测试级别不同的几个不同的库(很少找到一个)。 找到所需的库后(有时我需要尝试几个库),将其下载到Arduino库文件夹中,使用它后我就忘了。 我发现此过程很麻烦: 手动搜索有多种可能的选择,但记录并不总是很好 手动下载并安装到Arduino库 进程中没有版本控制(库的所有版本都具有相同的名称,因此无法在Arduino库文件夹中共存)。 我希望有一个包含arduino所有可用库的中央存储库,其中包括: 说明(支持的硬件,支持的板) 源代码 文件资料 版本 还有一个在项目构建时访问此存储库的工具(Arduino IDE或外部)。 A类Maven的实际上是Arduino的。 我曾经在Arduino论坛上看到过几次讨论,但似乎没有成功: Arduino库普查和存储库 Arduino库下载器 Arduino库下载器(2) 还有其他选择可以使某些东西可用(来自社区还是个人,为什么不可以)?
11 library 


2
如何将浮点数转换为char *?
在电气工程堆栈交换上问了这个问题,并直接在这里进行: 自我解释;我将如何将浮点数转换为char *?我有一些代码,其中的浮动“电阻”不断更新。我希望能够将变量“结果”更新为“电阻”的值。如果有帮助,以下是一些代码: const char * result = ""; float resistance = 2.5; result = resistance; //This bit (obviously) doesn't work 谢谢你的帮助!
11 arduino-uno  c++  c  float 

5
如何永久更改ESP8266(12e)的波特率?
重要:请勿使用AT+IPR=9600!(请参阅更新) 我有一个ESP8266 12E模块,通讯速率为115,200波特。由于我将其与具有SoftwareSerial的Arduino Nano一起使用,因此情况变得混乱。因此,我发现应该降低ESP模块的波特率。 我找到了有关此操作的链接。 我想知道 这是永久性的更改吗?还是在每次模块通电后都需要执行此操作? 我可以通过SoftSerial从Arduino发送命令来达到相同的目的吗?好吧,我想这不是因为我尝试过而我总是在AT+CIOBAUD=9600或上遇到错误AT+IPR=9600。 我在某处读到,在较新的ESP8266固件版本中,波特率默认为9,600。任何人都可以确认这一点,如果可以,那么更新该较新的固件是否更好? 模块的供应商: Ai-Thinker Technology Co.,Ltd. 我认为该固件的当前版本为0.3.0。如果我发送, AT+GMR我得到: sending AT+GMR response: ?AT¥TJÕ¨H(Q�²•ÉÍ¥½¹é‚r¢‚r‚r‚BÕ��Â’‚ŠªŠ¢Ò¢ªÒªÂJm SDK versioo:0.3.0 Ai�½½ ‚Šj 再次由于波特率太高而产生一些垃圾。 有关该模块的其他信息: sending AT+RST response: ?AT+RST OK WRT "%M <99CT ets Jan 8 2013,rst catse:2, boot lode:(3,7) load 0x40100000ntail 4 chksum 0x89 ld tail 4 chm3 tail …

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.