标签: arduino

Arduino - 如何在没有IDE的情况下获取串行数据

我正在建造一个用于脑分流的滴水监测器原型。它将监控滴注并报告我需要的任何数据。问题是我只是在构建设备。一个对 Arduino 或代码一无所知的人正在使用它。有没有一种方法或程序可以显示数据和/或将数据保存到文件中,以便人们只需插入 Arduino 而无需打扰 IDE 或任何代码?

arduino monitor

0
推荐指数
1
解决办法
7200
查看次数

使用 Arduino 自定义枚举类型声明

我在 Arduino 中使用自定义枚举类型时遇到了一些问题。

我在其他地方读到过,由于 Arduino IDE 预处理,自定义类型声明需要使用头文件。所以,我已经这样做了,但我仍然无法使用我的自定义类型。这是我的主要 arduino 文件 (beacon.ino) 中代码的相关部分

#include <beacon.h>

State state;
Run Code Online (Sandbox Code Playgroud)

在信标.h中:

typedef enum {
  menu,
  output_on,
  val_edit
} State;
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试编译时,出现以下错误:

beacon:20: error: 'State' does not name a type
Run Code Online (Sandbox Code Playgroud)

我认为我编写或包含头文件的方式有问题。但是什么?

c types avr arduino

0
推荐指数
1
解决办法
3万
查看次数

列奥纳多串行通讯

我编写了这个示例草图来测试与 Arduino Leonardo 的串行通信(在 Windows 7 上使用 Arduino IDE 1.0.5):

int delayTime = 10000;
long lastExec = 0;

void setup()
{
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
  }
}

void loop()
{
  long t = millis();
  if (t - lastExec >= delayTime) {
    if(Serial.available() > 0){
      Serial.println('Hello world');
    }  
    lastExec = t;
  }
}
Run Code Online (Sandbox Code Playgroud)

选择的串行端口似乎工作,因为草图上传正确。

但是我在串行监视器窗口中没有得到任何东西。为什么?

serial-port arduino

0
推荐指数
1
解决办法
8103
查看次数

如果带有函数的语句作为Arduino中的条件而没有()工作正常

我使用函数返回bool作为Arduino中if语句的条件:

bool conditionFunc(){
 return true;
}
void setup(){}

void loop(){
  if (conditionFunc){
  }
}
Run Code Online (Sandbox Code Playgroud)

在我看来,我应该这样做:

if (conditionFunc()){ //added ()
  doSometing;
}
Run Code Online (Sandbox Code Playgroud)

但第一个没有在验证过程中造成任何错误,并且代码工作(根据我的客户 - 我没有建立一个电路 - 这是一个简单的工作,所以我没有必要这样做).我偶然发现了它.我没有名为conditionFunc的变量.在我看来,在Arduino IDE中进行验证时应该发现错误.

我糊涂了.当我学习c ++时,我是否错过了什么,这两种解决方案都没问题?也许这是由Arduino解释c ++的方式引起的?正如我所说,我没有看到它在行动,但我不知道为什么我的客户会打算他想要正常工作的东西.至少它应该在编译期间引起问题(在Arduino IDE中验证)

c++ arduino

0
推荐指数
1
解决办法
303
查看次数

如何在 Python (Windows) 中获取 Spotify 当前播放的歌曲?

我想在 16x2 LCD 上显示 Spotify 中当前播放的歌曲。我正在考虑将 LCD 与我的 Arduino 连接,然后制作一个 Python 脚本,将 Spotify 当前播放的歌曲发送到 Arduino。

为了切入正题,我正在寻找一种在 Python 中获取 Spotify 当前播放歌曲的方法。(我使用的是 Windows 8。)我找到了一些类似 dbus 的方法,但它们要么适用于 Linux,要么适用于 Mac。

提前致谢!(抱歉英语语法不好。)

python arduino spotify python-3.x

0
推荐指数
1
解决办法
7241
查看次数

串口变速后无法连接ESP8266

经过一些反复试验,今晚我的Arduino Uno开始与ESP8266模块进行通信,最常见的接线方式是,从大尺寸外部电源为模块提供3.3V电源,直接连接3.3V TX线路和分压器从5V RX读取.

SoftwareSerial esp8266(2,3);

void setup()
{
    Serial.begin(9600);
    esp8266.begin(115200);

    char buffer[50];
    esp8266.write("AT\r\n");
    esp8266.readBytes(buffer, sizeof(buffer));
    Serial.println(buffer);

}
Run Code Online (Sandbox Code Playgroud)

在为ESP8266 < - > Arduino串行通信设置115200速度后,串行监视器上出现了一些明确的启动消息和命令响应.

Arduino串行监视器显示与ESP8266模块的通信

由于这些消息是由一些垃圾字符交错的,我试图降低通信速度.为此,我向AT+IPR=9600模块发出命令,该模块立即显示蓝色LED上的一些操作,控制台上的OK响应,最后导致相同的LED被固定.

随后调整了串行速度上的Arduino的一侧,有esp8266.begin(9600);,但永远无法获得与模块的任何进一步的沟通. 我现在只能以任何速度看到垃圾.

模块可以升级到不同的速度吗?我尝试了很多(4800,57600,19200,回到115200等),但显示器上没有明显的响应.

您是否可以建议重新建立连接?有没有办法重置上一个命令结果?如果可以尝试任何更简单的解决方案,我宁愿避免设置固件更新.

arduino at-command baud-rate esp8266

0
推荐指数
1
解决办法
3698
查看次数

单行代码的Arduino运行时间

Arduino 运行一行代码需要多长时间?或者从模拟引脚读取模拟值?

我试过这段代码来读取模拟读取时间:

void setup() {
  Serial.begin(9600);
  t1 = micros();
  val = analogRead(pin);
  t2 = micros();
  Serial.print(t2-t1);
}
Run Code Online (Sandbox Code Playgroud)

它打印 208 微秒,但我在表单源中读到的内容是,读取模拟输入需要 100 微秒。我的代码有问题吗?

这段代码读取一行代码的执行时间:

void setup() {
  Serial.begin(9600);
  t1 = micros();
  int x = 1 + 2;
  t2 = micros();
  Serial.print(t2-t1);
}
Run Code Online (Sandbox Code Playgroud)

这显示 0 微秒。这里发生了什么?我究竟做错了什么?

c++ arduino

0
推荐指数
1
解决办法
1024
查看次数

Arduino中缺少Wiring.h

我正在使用DateTime库示例项目,但是当我尝试对其进行编译时,出现以下错误消息:

Arduino: 1.8.0 (Mac OS X), Board: "Arduino/Genuino Uno"

/Users/Luke/Documents/Arduino/libraries/DateTime/DateTime.cpp:15:20: fatal error: wiring.h: No such file or directory
 #include <wiring.h>
                    ^
compilation terminated.
exit status 1
Error compiling for board Arduino/Genuino Uno.

This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.
Run Code Online (Sandbox Code Playgroud)

请帮助,因为这太令人讨厌了!

arduino

0
推荐指数
1
解决办法
8988
查看次数

while循环运行多次并设置标志?

我无法让这个循环只运行一次.我有一个标志设置,我的理解是它将运行一次,更改flag = 1,然后不再运行但是当我执行它时,循环会一遍又一遍地运行.任何帮助表示赞赏.

编辑:我发现的问题是即使我的电压满足if语句,循环仍继续运行.

voltage = analogRead(A0); //reads in voltage from pin A0
Serial.println(voltage);

//Calibration routine
do {
  if ((voltage >= 1) && (voltage <= 10)) {
    //while the voltage is between 4.88 and 48.8 mV the calibration light will flash once
    //this ensures the voltage is above 0 and lower than the threshold for the max voltage routine
    digitalWrite(calibrationLED, HIGH);
    delay(2000);
    digitalWrite(calibrationLED, LOW);
    delay(1000);
    digitalWrite(calibrationLED, HIGH);
    delay(2000);
    Serial.println("Calibrated");
    delay(5000);
    voltageInitial = analogRead(A0);
    //stores the initial voltage to …
Run Code Online (Sandbox Code Playgroud)

c++ arduino

0
推荐指数
1
解决办法
98
查看次数

在ESP8266上的C中读取const *时崩溃

我正在创建一个系统,该系统通过SoftwareSerial从Arduino Uno读取传感器值,并通过MQTT发布它。但是,我认为所面临的问题更为笼统,我必须承认我是c语言的新手。

我正在读取数据,并将其拆分为程序顶部定义的两个const *变量。

当我读回从串行连接中解析的已保存的“数据”和“主题”变量时,我只会得到垃圾输出,通常会崩溃,从而重启设备。

它可以在read-from-serial函数中成功打印它们,但以后无法正确读取。它与数据的保存方式有关吗?我可以为变量显式分配一些内存吗?

我正在使用ESP8266(ESP07)芯片,其波特率降低且电源电压合适。它似乎运行良好且稳定。

#include <StringSplitter.h>
#include <PubSubClient.h>
#include <ESP8266WiFi.h>
#include <time.h>

//const char* ssid = "xxxx";
//const char* password =  "xxxx";
const char* ssid = "xxxx";
const char* password =  "xxxx";
const char* mqttServer = "xxxx;
const int mqttPort = xxxx;
const char* mqttUser = "xxxx";
const char* mqttPassword = "xxxx";
int timezone = 1;
int dst = 0;
Run Code Online (Sandbox Code Playgroud)

数据存储在这里:

char* data;
char* topic;
boolean newData = false;
boolean unpublishedData = false;

WiFiClient espClient;
PubSubClient client(espClient); …
Run Code Online (Sandbox Code Playgroud)

c arduino software-serial esp8266

0
推荐指数
1
解决办法
81
查看次数