gpt4 book ai didi

c++ - 对简单的 Arduino 类进行故障排除

转载 作者:行者123 更新时间:2023-11-28 03:01:42 27 4
gpt4 key购买 nike

我正在尝试让一个简单的类库为 Arduino 工作并且正在努力。

库-.h

#ifndef ADS1X15_h
#define ADS1X15_h

#include "Arduino.h"

class ADS1X15
{
protected:

public:
ADS1X15 ();
void begin(uint8_t i2cAddress);
uint8_t m_i2cAddress;
uint8_t m_test;

private:
};

#endif

库.cpp

#include "Arduino.h"
#include "ADS1X15.h"

ADS1X15::ADS1X15() {
uint8_t m_i2cAddress;
uint8_t m_test = 99;
}

void ADS1X15::begin(uint8_t i2cAddress) {
uint8_t m_i2cAddress = i2cAddress;
}

调用草图

#include <ADS1X15.h>

ADS1X15 ads;

void setup(void) {
Serial.begin(9600);
ads.begin(66);
}

void loop(void) {
Serial.print("Test1 ");
Serial.println(ads.m_i2cAddress);
Serial.print("Test2 ");
Serial.println(ads.m_test);
while (1==1) {}
}

看起来上面应该打印 99 和 66 而不是 0 和 0!?!?!

提前致谢。

最佳答案

这是不正确的:

ADS1X15::ADS1X15() {
uint8_t m_i2cAddress;
uint8_t m_test = 99;
}

它向构造函数声明了两个与您的类成员名称相匹配的局部变量。您在 ADS1X15::begin 中有类似的错误。如果您启用了警告,您应该会收到有关局部变量隐藏成员变量或类似内容的警告。

重写那些没有类型声明的,它们将更新您的类,而不是将局部变量更新到方法。

ADS1X15::ADS1X15() {
m_test = 99;
}

void ADS1X15::begin(uint8_t i2cAddress) {
m_i2cAddress = i2cAddress;
}

关于c++ - 对简单的 Arduino 类进行故障排除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20636528/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com