Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Arduino中使用访问器方法传递数据 我对C++很缺乏经验,但是我需要用它来完成这个项目。我正在使用和Arduino Mega读取和记录LED阵列。我让代码连续工作,但现在我正试图通过定义自己的库和类来整理它。当我尝试使用访问器传递诸如pin码和超时之类的简单数据时,它们总是返回0。或者,当我尝试在串行端口上打印它们以进行测试时,情况似乎就是这样。这是我的密码_C++_Arduino_Accessor - Fatal编程技术网

在Arduino中使用访问器方法传递数据 我对C++很缺乏经验,但是我需要用它来完成这个项目。我正在使用和Arduino Mega读取和记录LED阵列。我让代码连续工作,但现在我正试图通过定义自己的库和类来整理它。当我尝试使用访问器传递诸如pin码和超时之类的简单数据时,它们总是返回0。或者,当我尝试在串行端口上打印它们以进行测试时,情况似乎就是这样。这是我的密码

在Arduino中使用访问器方法传递数据 我对C++很缺乏经验,但是我需要用它来完成这个项目。我正在使用和Arduino Mega读取和记录LED阵列。我让代码连续工作,但现在我正试图通过定义自己的库和类来整理它。当我尝试使用访问器传递诸如pin码和超时之类的简单数据时,它们总是返回0。或者,当我尝试在串行端口上打印它们以进行测试时,情况似乎就是这样。这是我的密码,c++,arduino,accessor,C++,Arduino,Accessor,沉淀物记录器 #ifndef SEDIMENTLOGGER_H #define SEDIMENTLOGGER_H #include "/home/marrabld/Programming/Arduino/arduino-1.0/libraries/QTRSensors/QTRSensors.h" #include <Arduino.h> #define NUM_SENSORS 8 //===============================================

沉淀物记录器

#ifndef SEDIMENTLOGGER_H
#define SEDIMENTLOGGER_H

#include "/home/marrabld/Programming/Arduino/arduino-1.0/libraries/QTRSensors/QTRSensors.h"
#include <Arduino.h>


#define NUM_SENSORS 8
//==================================================
// This header should hold 3 small classes used for :
//--------------------------------------------------
// 1. sedimentSensor
//     Dealing with sensorHardware
// 2. sedimentWriter
//     Reading and writing data
// 3. sedimentTimer
//     Reading and writing to the RTC
//--------------------------------------------------
// 
//==================================================

class sedimentSensor
{
 public:
  QTRSensorsRC sensor1;
  QTRSensorsRC sensor2;
  sedimentSensor(); //default constructor
  ~sedimentSensor();
  void  calibrateSensors();
  unsigned int *SensorValues1(){return sensorValues1;};
  unsigned int *SensorValues2(){return sensorValues2;};
  int SampleDelay(){return sampleDelay;};
  int EmitterPin1();


 private:
  // Map pins to LED numbers
  // first LED array
  int led1;
  int led2;
  int led3;
  int led4;
  int led5;
  int led6;
  int led7;
  int led8;
  int emitterPin1;
  //second Array
  int led9;
  int led10;
  int led11;
  int led12;
  int led13;
  int led14;
  int led15;
  int led16;
  int emitterPin2;

  int  timeout; // waits for 2.5 seconds for sensor outputs to go low
  long sampleDelay; // 1 second
  int numSensors;

  unsigned int sensorValues1[];
  unsigned int sensorValues2[];

};
#如果不使用沉淀物记录器#
#定义沉积学
#包括“/home/marrabld/Programming/Arduino/Arduino-1.0/libraries/QTRSensors/QTRSensors.h”
#包括
#定义NUM_传感器8
//==================================================
//此标题应包含3个小类,用于:
//--------------------------------------------------
// 1. 沉淀物传感器
//处理传感器硬件
// 2. 沉积学作家
//读写数据
// 3. 沉降计时器
//读写RTC
//--------------------------------------------------
// 
//==================================================
类沉淀物传感器
{
公众:
QTR传感器SRC传感器1;
QTR传感器SRC传感器2;
沉淀物传感器();//默认构造函数
~沉淀物传感器();
无效校准传感器();
无符号int*SensorValues1(){返回SensorValues1;};
无符号int*SensorValues2(){return SensorValues2;};
int SampleDelay(){return SampleDelay;};
int EmitterPin1();
私人:
//将管脚映射到LED编号
//第一个LED阵列
int led1;
int-led2;
int-led3;
int led4;
int led5;
int led6;
int led7;
int led8;
int-emitterPin1;
//第二阵列
int led9;
int led10;
int led11;
int led12;
int led13;
int led14;
int led15;
int led16;
int-emitterPin2;
int timeout;//等待2.5秒,传感器输出变低
长采样延迟;//1秒
整数传感器;
无符号整数传感器值1[];
无符号整数传感器值2[];
};
沉积学记录器

#include "sedimentLogger.h"
#include <Arduino.h>
#include <QTRSensors.h>
//#include "/home/marrabld/Programming/Arduino/arduino-1.0/libraries/QTRSensors/QTRSensors.h"
sedimentSensor::sedimentSensor()
{
  //Constructor
  int led1 = 24;
  int led2 = 26;
  int led3 = 28;
  int led4 = 30;
  int led5 = 32;
  int led6 = 34;
  int led7 = 36;
  int led8 = 38;
  int emitterPin1 = 22;
  //second Array
  int led9 = 25;
  int led10 = 27;
  int led11 = 29;
  int led12 = 31;
  int led13 = 33;
  int led14 = 35;
  int led15 = 37;
  int led16 = 39;
  int emitterPin2 = 23;

  int  timeout = 2500; // waits for 2.5 seconds for sensor outputs to go low
  int sampleDelay = 1000; // 1 second

  QTRSensorsRC sensor1 ((unsigned char[]) {led1,led2,led3,led4,led5,led6,led7,led8},numSensors, timeout,emitterPin1);
  QTRSensorsRC sensor2 ((unsigned char[]) {led9,led10,led11,led12,led13,led14,led15,led16},numSensors,timeout,emitterPin2);

  unsigned int sensorValues1[NUM_SENSORS];
  unsigned int sensorValues2[NUM_SENSORS];
};

sedimentSensor::~sedimentSensor()
{
};

int sedimentSensor::EmitterPin1()
{return emitterPin1;};

void sedimentSensor::calibrateSensors()
{
  Serial.begin(9600);

  unsigned int _delay = 500;
  delay(_delay);
  pinMode(13,OUTPUT);
  for(int i = 0; i<400; i++)
    {
      sensor1.calibrate();
      sensor2.calibrate();
    }
  digitalWrite(13,LOW);

  //TODO WRITE MAX AND MIN VALS TO FILE
  Serial.print("Array 1 Min :: ");
  for (int i = 0; i < NUM_SENSORS; i++)
  {
    Serial.print (sensor1.calibratedMinimumOn[i]);
    Serial.print(' ');
  }
  Serial.println();
  Serial.print("Array 2 Min :: ");
  for (int i = 0;i< NUM_SENSORS; i++)
  {
    Serial.print (sensor2.calibratedMinimumOn[i]);
    Serial.print(' ');
  }

  Serial.println();
  Serial.print("array 1 Max :: ");
  // print the calibration maximum values measured when emitters were on
  for (int i = 0; i < NUM_SENSORS; i++)
  {
    Serial.print(sensor1.calibratedMaximumOn[i]);
    Serial.print(' ');
  }
  Serial.println();
  Serial.print("array 2 Max :: ");
  // print the calibration maximum values measured when emitters were on
  for (int 
  i = 0; i < NUM_SENSORS; i++)
  {
    Serial.print(sensor2.calibratedMaximumOn[i]);
    Serial.print(' ');
  }

  Serial.println();
  Serial.println();
  delay(_delay); 

};
#包括“sedimentLogger.h”
#包括
#包括
//#包括“/home/marrabld/Programming/Arduino/Arduino-1.0/libraries/QTRSensors/QTRSensors.h”
沉淀物传感器::沉淀物传感器()
{
//建造师
int-led1=24;
int-led2=26;
int-led3=28;
int-led4=30;
int-led5=32;
int-led6=34;
int-led7=36;
int-led8=38;
int emitterPin1=22;
//第二阵列
int-led9=25;
int-led10=27;
int-led11=29;
int-led12=31;
int-led13=33;
int-led14=35;
int-led15=37;
int-led16=39;
int emitterPin2=23;
int timeout=2500;//等待2.5秒,传感器输出变低
int sampleDelay=1000;//1秒
QTRSensorsRC sensor1((无符号字符[]){led1、led2、led3、led4、led5、led6、led7、led8},numSensors,timeout,emitterPin1);
QTRSensorsRC sensor2((无符号字符[]){led9、led10、led11、led12、led13、led14、led15、led16},numSensors,timeout,emitterPin2);
无符号整数传感器值1[NUM_传感器];
无符号整数传感器值2[NUM_传感器];
};
沉淀物传感器::~沉淀物传感器()
{
};
int沉淀物传感器::EmitterPin1()
{返回发射器pin1;};
孔隙沉淀物传感器::校准传感器()
{
Serial.begin(9600);
无符号整数延迟=500;
延迟;
pinMode(13,输出);

对于(int i=0;i在
sedimentSensor
构造函数中,您正在使用与成员变量相同的名称声明新的局部变量。
从中删除类型以将其转换为成员的分配。
还将
NUM_SENSORS
放在类定义的数组声明中

#include <QTRSensors.h>
#include <Arduino.h>
//#include "/home/marrabld/Programming/Arduino/arduino-1.0/libraries/QTRSensors/QTRSensors.h"
#include "sedimentLogger.h"
#include <Wire.h>
#include "/home/marrabld/Programming/Arduino/arduino-1.0/libraries/RTClib/RTClib.h"

sedimentSensor sedLog;//= sedimentSensor();

void setup()
{
  Serial.begin(9600);
  sedLog.calibrateSensors(); 
}

void loop()
{
  unsigned int position1 = sedLog.sensor1.readLine(sedLog.SensorValues1()); // guessing its passing SensorValues as 0s
  unsigned int position2 = sedLog.sensor2.readLine(sedLog.SensorValues2());

  unsigned char i;
  for (i = 0; i < NUM_SENSORS; i++)
    {
      Serial.print(sedLog.SensorValues1()[i] * 10/10001);      
      Serial.print(' ');
    }
  Serial.println(position1);
  for (i=0;i < NUM_SENSORS; i++)
    {
      Serial.print(sedLog.SensorValues2()[i]*10/1001);
      Serial.print(' ');
    }
  Serial.print("  ");
  Serial.println(position2);
  delay(sedLog.SampleDelay()); // No delay

  Serial.println(sedLog.SampleDelay()); // prints zero and shouldn't
  Serial.println(sedLog.EmitterPin1()); // prints zero and shouldn't
}