Arnold bin Boon Hoo Ответов: 1

Ошибка при добавлении элемента в массив


Здравствуйте, я делаю проект arduino для управления релейным переключателем с помощью CapacitiveSensor

я обнаружил, что в моем массиве есть какая-то ошибка.

не уверен, что есть какие-то проблемы в моей настройке массива

пожалуйста совет спасибо,

Я все еще новичок в программировании на c++

Что я уже пробовал:

<pre>#include <CapacitiveSensor.h>

CapacitiveSensor _pianoTiles[] = {};

/*
   * pin2 Piezo's Ports
   * pin3 ~ pin6 Relay Switch's Ports
   */
   
  int _outputPorts[] = {2 , 3 , 4 , 5 , 6}; 

  /*
   * pin10 ~ 13 : capacitiveSensor's Ports
   */

   int _inputPorts[] = {10, 11, 12, 13};

void setup() {

  //boundRate:
  Serial.begin  (9600);

  for ( int inputPorts = 0 ; inputPorts < sizeof( _inputPorts ) - 1 ; inputPorts ++) _pianoTiles[inputPorts] = CapacitiveSensor( 9 , _inputPorts[inputPorts]);

  for ( int outputPorts = 0 ; outputPorts < sizeof( _outputPorts ) - 1 ; outputPorts ++ ) pinMode ( _outputPorts[outputPorts], OUTPUT);

}

void loop() {

  int value[]={};

  for ( int i = 0 ; i < sizeof( _pianoTiles ) - 1 ; i ++ ) value[i] = _pianoTiles[i].capacitiveSensor(30);

  if ( _pianoTiles[0] > 200 ) digitalWrite( 2 , 1 );

}



в этой строке есть ошибка :
<pre>if ( _pianoTiles[0] > 200 ) digitalWrite( 2 , 1 );


сообщение об ошибке :
Arduino: 1.8.3 Hourly Build 2017/04/14 10:33 (Windows 7), Board: "Arduino/Genuino Uno"

C:\Users\racheal\Desktop\smchProject\smchProject.ino: In function 'void loop()':

smchProject:35: error: no match for 'operator>' (operand types are 'CapacitiveSensor' and 'int')

   if ( _pianoTiles[0] > 200 ) digitalWrite( 2 , 1 );

                       ^

exit status 1
no match for 'operator>' (operand types are 'CapacitiveSensor' and 'int')

This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.

1 Ответов

Рейтинг:
2

OriginalGriff

Сообщение об ошибке довольно явное:

no match for 'operator>' (operand types are 'CapacitiveSensor' and 'int')

Так что посмотрите на код:
if ( _pianoTiles[0] > 200 ) ...

_pianoTilesобъявляется как массив CapacitiveSensor объекты:
CapacitiveSensor _pianoTiles[] = {};
А 200-это, очевидно, целое число.
Сообщение об ошибке говорит вам, что не объявлен оператор, который позволяет системе определить, какой из двух типов объектов CapacitiveSensor и integer это "самый большой".

Либо определить operator> для CapacitiveSensor это занимает целое число или сортирует, какая часть CapacitiveSensor вы хотели сравнить.


KarstenK

Я думаю, что исправление этой ошибки компилятора-не последний шаг, но полная обработка массива нуждается в редизайне. Он начинается с инициализации массива...