Questions tagged «programming»

作为Arduino的程序(或草图)的一部分设计和编写源代码的过程。有关将代码上传到Arduino板的问题,请改用[uploading]标签。

3
如何编写与makefile兼容的草图?
我想写草图,以便可以使用Arduino IDE或可以选择使用GCC和makefile来构建/上传它们。 我知道在顶部包括函数声明,但是为了使我的草图被编译器视为有效的C ++,还有其他事情要做吗? 更新1 了解Arduino IDE对.ino和.pde文件的操作很好,但是与我的问题无关,因此这不是重复的。我想知道的是“我如何编写程序,以使Arduino IDE 和 g ++ 都认为它是有效的。 此处提供的Official(?)Makefile 解释了使用Makefile 代替 IDE时的操作: # The Arduino environment does preliminary processing on a sketch before # compiling it. If you're using this makefile instead, you'll need to do # a few things differently: # # - Give your …

2
UNO R3上的第二个MCU可以用于键盘仿真吗?
接下来是Arduino Uno R3的第二个ICSP标头是什么?我想知道如何才能窃取我们的利益。 例如,是否可以将固件重写为将UNO识别为鼠标/键盘输入?是否可以在引导加载程序过程之后完成并保持上传过程不变? 鉴于有限的IO,似乎其功能可能受到限制。另外我不知道有多少代码可用。

3
如何测量arduino板的总能耗
我有一个正在处理的项目。我们已经建造了绿色的墙壁,墙壁上的植物组成 现在,我们在底部有一个泵,给所有植物浇水。有一个arduino板可以决定何时打开泵。为它供电的是太阳能电池板和风力涡轮机。我们想知道通过使用太阳能电池板和涡轮机节省了多少能源。 题: 我如何测量从当天00h00开始使用的以Wh为单位的能量?有图书馆吗?还是用Arduino无法做到这一点? 非常感谢。 清理一些东西 不,泵不是由Arduino引脚直接供油的。我们正在使用电动机护罩。 是的,电路中有一个累加器。太阳能和风能为电池充电,从而为组件供电。 我想知道所有消耗的能量,而不仅仅是泵。

3
Arduino使用millis()的计时不正确或不正确?
我一直在使用Arduino记录一些数据。在我的Arduino草图中,我还使用了该millis()函数,以便可以跟踪我正在测量的每个值的获取时间。但是,我注意到时间不正确。例如,在现实生活中,30秒只能显示为10秒(虚构示例)。 我是否正确地说Arduino延迟功能会影响使用时间millis()?换句话说,假设我有一个50ms的延迟,这是否意味着该millis()函数在该持续时间内也停止,然后在连接持续时间内继续等等?当我尝试绘制一些数据并发现经过一定时间后,数据中的峰值频率过于频繁时,我注意到了这一点。因此,我想知道这是否是造成时间不匹配的原因,如果是,那么如何解决此问题,以便保留每个采样发生的时间? 这里给出一些背景是我的草图: #include <eHealth.h> unsigned long time; // The setup routine runs once when you press reset: void setup() { Serial.begin(9600); } // The loop routine runs over and over again forever: void loop() { float ECG = eHealth.getECG(); time = millis(); Serial.print(time); Serial.print(" "); Serial.print(ECG, 5); Serial.println(""); delay(50); …

4
在循环外声明变量和在循环内声明静态变量有什么区别?
这是我可以在循环(或任何函数)之外保存变量的两种方式。 首先,我可以在循环外使用全局范围声明它: void setup() { Serial.begin(9600); } int count = 0; void loop() { Serial.println(count); count++; delay(250); } 我还可以在循环内将其声明为静态的: void setup() { Serial.begin(9600); } void loop() { static int count = 0; Serial.println(count); count++; delay(250); } 这有什么区别(如果有)?


2
使用无效的密码时会发生什么?
相关信息: 如果出现运行时错误会怎样? 这个问题类似于上面的问题,但是这是另一种情况: int pin = 999; pinMode(pin, OUTPUT); digitalWrite(pin, HIGH); 在这种情况下会发生什么?编译器可能会捕获它,但是如果您使用随机数,IDE会捕获它吗?

4
如何真正缩小草图
为了测试,我想制作一个尽可能小的草图。问题是,当我编译BareMinimum草图(具有空的设置和循环)时,Uno会得到466个字节,Leonardo会得到4,242个字节。有什么办法可以编写自己的没有额外功能的代码(即millis()和的Timer0 delay())。我还希望能够禁用Leonardo的键盘/鼠标功能。

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

2
Arduino的OOP与内联
我已经编程了一段时间了,但是我是Arduino和AVR编程的新手。我对这些微控制器进行编程的主要问题是,在面向对象的类中设计代码与在许多示例中看​​到的更传统的嵌入式编程之间是否存在重大差异? 换句话说,在Arduino / AVR控制器世界中,使用类或反之亦然可以节省内存和性能吗? 假设我们有一个Class: class SomeClass(){ private: int x; int y; public: void foo(); void bar(); } SomeClass thisClass; thisClass.foo(); thisClass.bar(); 以更内联的方式设计程序是否会提高性能或内存,例如: int x; int y; void foo(){ /*** Do something ***/}; void bar(){ /*** Do more stuff ***/}; 我尝试在Stack Exchange和Google上进行一些搜索,但找不到完全可以找到的答案,我正在寻找的最能找到的就是此Stack Exchange问​​题。 我之所以这样问,是因为我有一个项目,它需要尽可能的轻巧,而且我不清楚在这种环境下应该如何设计程序。 编辑 谢谢您的回答,这为您提供了启示。我还不太清楚一件事。 假设您正在设计一个使用u8glib的类,如下所示: class UserInterface{ private: …

3
曼彻斯特图书馆不会针对Attiny85进行编译
我正在使用Attiny85创建无线传感器。我想将数据发送到arduino uno,所以我从Spark Fun购买了315mhz rf链接套件。由于Attiny85没有TX,因此我决定使用曼彻斯特库,但是它不会在Attiny85上编译。 我遵循了此博客中的步骤:http : //mchr3k-arduino.blogspot.mx/2012/01/wireless-sensor-node-part-2.html?showComment=1338749638806#c853067277980266192 这是我正在使用的代码: #include <WProgram.h> //otherwise it says it can't find Arduino.h #include <Manchester.h> //include the library to comunicate #define TxPin 2 //the pin that is used to send data int sensorPin = 4; int ledPin = 3; int count = 50; void setup(){ pinMode …

2
将变化的电压读取到Arduino
我正在使用Arduino Nano和电流互感器(CT),试图感应流过120 V 60 Hz线路的电流。 电路图 CT 0-1 V根据其规格输出。该输出偏置AREF/2= 2.5V。 analogRead 价值观 x轴表示ADC样本的索引号,而y轴表示ADC值(0-1024)。采样率约为9 kHz。峰间差异约为1026个样本。 您希望CT产生该波形吗?为什么有些区域的值是平坦的,而不是连续变化的? 此外,如果我们看一下曲线的曲线部分,为什么Arduino 交替读取上方512和下方的值512?它读取一个高于的值512,然后是低于的值512,然后是高于的值512,依此类推。 analogRead在我的设置中,测量所需的时间为110微秒,并且波形峰值之间有1026个样本。这意味着在1秒钟内将有大约9个峰值,尽管由于我们正在感测60 Hz线路,所以我预计会有60个峰值。你从中得到什么?电路中有一个电容器,C1这有什么关系吗? 这些AnalogRead值是否适合用于计算RMS电压,从而计算出流经电线的RMS电流?这样做的最终目的是在确定流过电线的RMS电流之后计算功率使用量。 用于获取绘图值的草图 void setup() { Serial.begin(9600); } void loop() { double sensorValue = analogRead(1); Serial.println(sensorValue) } analogRead凹凸区域中的实际数据点 487 534 487 535 488 537 484 536 487 538 486 536 484 540 484 …
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.