void value not ignored as it ought to be

I would prefer to use pointers since speed is an issue

Pointers are not necessarily faster than other means of data access.

In this case, you would make some minor changes:
CapacitiveSensor *cs_sensor[numberOfSensors];

for(int i = 0; i < numberOfSensors; i++)
{ // Down here where it belongs!
cs_sensor = new CapacitiveSensor(capSenseSend,sensorPin*);*
* }*
void setSensorValue()
{ // Down here where it belongs!
* for(int i = 0; i < numberOfSensors; i++)*
* { // Down here where it belongs!*
letters.setCurrentReading(cs_sensor*->capacitiveSensor(50));
_ }
}*_

PaulS:

I would prefer to use pointers since speed is an issue

Pointers are not necessarily faster than other means of data access.

In this case, you would make some minor changes:
CapacitiveSensor *cs_sensor[numberOfSensors];

for(int i = 0; i < numberOfSensors; i++)
{ // Down here where it belongs!
cs_sensor = new CapacitiveSensor(capSenseSend,sensorPin*);*
* }*
void setSensorValue()
{ // Down here where it belongs!
* for(int i = 0; i < numberOfSensors; i++)*
* { // Down here where it belongs!*
letters.setCurrentReading(cs_sensor*->capacitiveSensor(50));
_ }
}
[/quote]_

hmm this seems to throw an error that I can't find much info on: invalid conversion from 'const byte' to 'uint8_t'

for the line cs_sensor = new CapacitiveSensor(capSenseSend,sensorPin);

If Paul had that in code tags you'd see that there is a couple of array indexes there that aren't showing up. Should look like:

 for(int i = 0; i < numberOfSensors; i++)
   { // Down here where it belongs!
     cs_sensor[i] = new CapacitiveSensor(capSenseSend,sensorPin[i]);
   }

Delta_G:
If Paul had that in code tags you'd see that there is a couple of array indexes there that aren't showing up. Should look like:

 for(int i = 0; i < numberOfSensors; i++)

{ // Down here where it belongs!
    cs_sensor[i] = new CapacitiveSensor(capSenseSend,sensorPin[i]);
  }

Yes, tried this too. same error.

also tried:

 cs_sensor[i] = new CapacitiveSensor(capSenseSend,sensorPin[i]);

but this gave error: request for member 'setCurrentReading' in 'letters', which is of non-class type 'Letter [2]'

You need to post your current code, so that we can see that you made all the required changes, correctly. And so we can replicate (and solve) the problem more easily.

PaulS:
You need to post your current code, so that we can see that you made all the required changes, correctly. And so we can replicate (and solve) the problem more easily.

I did, its on the last page might have missed it, other than the changes you suggested. here it is again though just in case:

#include <CapacitiveSensor.h> 
#include "Letter.h"

const byte capSenseSend = 2;

const byte numberOfSensors = 2;
Letter letters[numberOfSensors]; // a-z

const byte sensorPin[] = { 22, 23 };
const byte ledPin[] = { 8, 9 };

//int allValues[numberOfSensors];

void setup(){
   Serial.begin(19200);
   delay(100);
   
   CapacitiveSensor *cs_sensor[numberOfSensors];
   
   for(int i = 0; i < numberOfSensors; i++){
     cs_sensor[i] = new CapacitiveSensor(capSenseSend,sensorPin);
   }
  
   // setup LEDs
   for(int i = 0; i < numberOfSensors; i++){
     pinMode(ledPin[i],OUTPUT);
     digitalWrite(ledPin[i], LOW);  
   }
   //cs_a.set_CS_AutocaL_Millis(0xFFFFFFFF); 

   setSampleSize();   
}

void loop(){  
    setSensorValue();
    checkIfButtonPressed();
    delay(100);
}

void setSampleSize(){
  for(int i = 0; i < numberOfSensors; i++){ 
    letters[i].setSampleAmount(5);
  }
}

void setSensorValue(){
  for(int i = 0; i < numberOfSensors; i++){
    letters.setCurrentReading(cs_sensor->capacitiveSensor(50));  
  }
}

void checkIfButtonPressed(){
  for(int i = 0; i < numberOfSensors; i++){ 
    letters[i].checkIfIsOn(cs_sensor[i]); 
  }
}

void fadeLedIn(int pinNumber){ 
  for(int j = 0; j <= 255; j+=10){
    analogWrite(pinNumber,j);
    delay(10);
  }  
}

void fadeLedOut(int pinNumber){ 
  for(int j = 255; j >= 0; j-=10){
    analogWrite(pinNumber,j);
    delay(10);
  }  
  digitalWrite(pinNumber, LOW); 
}

void sendSerialData(int buttonTouched){
  delay(10); Serial.print("Data,");
  delay(10); Serial.print(buttonTouched);
  delay(10); Serial.print(",");
  Serial.print("sensors : ");
  Serial.print(allValues[0]); Serial.print(" , "); Serial.print(allValues[1]); delay(10);
  Serial.print("\n");
  delay(10);
}

Letters.h:

#ifndef LETTER_H
#define LETTER_H

class Letter {
  public:
    Letter();
    double getAverage(int sample);
    void setSampleAmount(int changeSampleTo);
    void setLastReading(int theLastReading);
    void setCurrentReading(int theCurrentReading);
    void checkIfisOn(int curentSensorValue[]);
    int getCurrentReading();
    int getLastReading();
    int aValue;
    int lastReading;
    int currentReading;
  private:
    int _sampleAmount;
    double _tempAverage,
           _capacitiveAverage;
    double _runningAverage[100];
};

#endif

Letter.ino:

#include "Letter.h" // "" for files within same folder as sketch...?

Letter::Letter() {
  _sampleAmount = 5;
  _tempAverage = 0;
  _capacitiveAverage = 0;  
  lastReading = 0;
  currentReading = 0;
  //long _runningAverage[_sampleAmount];
};

void Letter::setSampleAmount(int changeSampleTo){
  _sampleAmount = changeSampleTo;
}; 

void Letter::setLastReading(int theLastReading){
  lastReading = theLastReading;
}

void Letter::setCurrentReading(int theCurrentReading){
  currentReading = theCurrentReading;
}

int Letter::getLastReading(){
  return lastReading;
}

int Letter::getCurrentReading(){
  return currentReading;
}

double Letter::getAverage(int sample) {
  for(int i = 0; i < _sampleAmount; i++){
    _runningAverage[i] = sample;
  } 
  // reset _tempAverage
  _tempAverage = 0;
  // add all the samples up
  for(int i = 0; i < _sampleAmount; i++){
    _tempAverage += _runningAverage[i];
  } 
  // divide by number of samples to get average
  _capacitiveAverage =  _tempAverage/_sampleAmount;
  return _capacitiveAverage;
}


void Letter::checkIfisOn(){
  boolean firstTime = true;
  int firstRelease = 0;
  const int threshold = 55;
  int differenceReading = curentSensorValue-lastReading;
  if(differenceReading > threshold && firstTime == true){
    sendSerialData(i);
    fadeLedIn(ledPin[i]);
  if((currentReading-lastReading) < threshold){
    digitalWrite(ledPin[i], LOW); 
    fadeLedOut(ledPin[i]);}
    lastReading[i] = currentReading[i];
    firstTime = false;
  }
}

Just follow exactly what the compiler told you. The setSensorValue is missing an array index there.

Delta_G:
Just follow exactly what the compiler told you. The setSensorValue is missing an array index there.

seems to stop way before that on: cs_sensor = new CapacitiveSensor(capSenseSend,sensorPin); with error: error: invalid conversion from 'const byte*' to 'uint8_t'
I gave it an array index like so just now:
* *void setSensorValue(){  for(int i = 0; i < numberOfSensors; i++){    letters.setCurrentReading(cs_sensor[i]->capacitiveSensor(50));    } }* *
same error. thats is the problem, no idea what the error means, and can't seem to find anything on google for it :confused:

The array of pointers is local to setup(). Pretty useless there.

PaulS:
The array of pointers is local to setup(). Pretty useless there.

oh oops, seems moving the pointer outside the setup function doesn't seem to help either, same error:

#include <CapacitiveSensor.h> 
#include "Letter.h"

const byte capSenseSend = 2;

const byte numberOfSensors = 2;
Letter letters[numberOfSensors]; // a-z

const byte sensorPin[] = { 22, 23 };
const byte ledPin[] = { 8, 9 };

CapacitiveSensor *cs_sensor[numberOfSensors];
   
void setup(){
   Serial.begin(19200);
   delay(100);

   for(int i = 0; i < numberOfSensors; i++){
     cs_sensor[i] = new CapacitiveSensor(capSenseSend,sensorPin);
   }
  
   // setup LEDs
   for(int i = 0; i < numberOfSensors; i++){
     pinMode(ledPin[i],OUTPUT);
     digitalWrite(ledPin[i], LOW);  
   }

   setSampleSize();   
}

void loop(){  
    setSensorValue();
    checkIfButtonPressed();
    delay(100);
}

void setSampleSize(){
  for(int i = 0; i < numberOfSensors; i++){ 
    letters[i].setSampleAmount(5);
  }
}

void setSensorValue(){
  for(int i = 0; i < numberOfSensors; i++){
    letters.setCurrentReading(cs_sensor[i]->capacitiveSensor(50));  
  }
}

void checkIfButtonPressed(){
  for(int i = 0; i < numberOfSensors; i++){ 
    letters[i].checkIfIsOn(cs_sensor[i]); 
  }
}

void fadeLedIn(int pinNumber){ 
  for(int j = 0; j <= 255; j+=10){
    analogWrite(pinNumber,j);
    delay(10);
  }  
}

void fadeLedOut(int pinNumber){ 
  for(int j = 255; j >= 0; j-=10){
    analogWrite(pinNumber,j);
    delay(10);
  }  
  digitalWrite(pinNumber, LOW); 
}

void sendSerialData(int buttonTouched){
  delay(10); Serial.print("Data,");
  delay(10); Serial.print(buttonTouched);
  delay(10); Serial.print(",");
  Serial.print("sensors : ");
  Serial.print(allValues[0]); Serial.print(" , "); Serial.print(allValues[1]); delay(10);
  Serial.print("\n");
  delay(10);
}

earlier I mentioned I set that line with the error to: cs_sensor = new CapacitiveSensor(capSenseSend,sensorPin*);*
which seems like what it is suppose to be, however farther down I get:
error: request for member 'setCurrentReading' in 'letters', which is of non-class type 'Letter [2]'
for:
*_ <em>*letters.setCurrentReading(cs_sensor[i]->capacitiveSensor(50));*</em> _*
so I am not sure if this is correct thing to do.

Here are two more illegal conversions from byte pointer to uint8_t

void fadeLedIn(int pinNumber){ 
  for(int j = 0; j <= 255; j+=10){
    analogWrite(pinNumber,j);
    delay(10);
  }  
}

void fadeLedOut(int pinNumber){ 
  for(int j = 255; j >= 0; j-=10){
    analogWrite(pinNumber,j);
    delay(10);
  }  
  digitalWrite(pinNumber, LOW); 
}

Go through your code and fix all these. If you are going to use the array you'll need to put the index with it. Get all that fixed, and post us new code to look at.

Delta_G:
Here are two more illegal conversions from byte pointer to uint8_t

void fadeLedIn(int pinNumber){ 

for(int j = 0; j <= 255; j+=10){
    analogWrite(pinNumber,j);
    delay(10);
  } 
}

void fadeLedOut(int pinNumber){
  for(int j = 255; j >= 0; j-=10){
    analogWrite(pinNumber,j);
    delay(10);
  } 
  digitalWrite(pinNumber, LOW);
}




Go through your code and fix all these. If you are going to use the array you'll need to put the index with it. Get all that fixed, and post us new code to look at.

I would fix it if I knew what was wrong to be honest. this section of code has compiled fine in the past, not sure what would be wrong with it. I don't even know how to look up what that "illegal conversions from byte pointer to uint8_t" error is, google isn't giving me anything.

Googling for pointer and c++ gives a ton of stuff. Many many tutorials that explain what a pointer is. Once you know that it should be obvious that you can't convert one to an intended type.

But even without that, I told you how to fix it. pin numbers is an array. You're using it without an index. That won't work.

Serial.print(allValues[0]); Serial.print(" , "); Serial.print(allValues[1]); delay(10);

And I'm betting this line will give you an allValues not declared in this scope error. I don't see it declared anywhere anyway.

EDIT: Found it in the previous code, but it was commented out there.

Delta_G:
Googling for pointer and c++ gives a ton of stuff. Many many tutorials that explain what a pointer is. Once you know that it should be obvious that you can't convert one to an intended type.

But even without that, I told you how to fix it. pin numbers is an array. You're using it without an index. That won't work.

maybe I am misunderstanding but pinNumber is an int, not an array. are you looking at ledPin or sensorPin maybe? those are different and in fact an array.

Sorry, I was indeed looking at ledPin.

Delta_G:

Serial.print(allValues[0]); Serial.print(" , "); Serial.print(allValues[1]); delay(10);

And I'm betting this line will give you an allValues not declared in this scope error. I don't see it declared anywhere anyway.

EDIT: Found it in the previous code, but it was commented out there.

I am kind of fixing it as I go, probably a bad idea. Reason is I am converting this from messy functions to more Class based. Those will be replaced by the classes, but I feel like I need to get the classes working first since they are so new to me, then I can make my way down the list. Right now I cant even get the class to pass correct values. But I guess I will read more about pointers....

Oh, here it is.

for(int i = 0; i < numberOfSensors; i++){
     cs_sensor[i] = new CapacitiveSensor(capSenseSend,sensorPin);
   }

I had the problem right, but when I went looking for the one that was wrong I assumed that you had left this fixed. sensorPin IS an array and needs an index.

Post 20 you said you fixed it. Post 24 when you post new code it is still wrong.

Delta_G:
Oh, here it is.

for(int i = 0; i < numberOfSensors; i++){

cs_sensor[i] = new CapacitiveSensor(capSenseSend,sensorPin);
  }




I had the problem right, but when I went looking for the one that was wrong I assumed that you had left this fixed. sensorPin IS an array and needs an index. 

Post 20 you said you fixed it. Post 24 when you post new code it is still wrong.

oh, sorry I wasn't clear. I had fixed it to say:

 cs_sensor[i] = new CapacitiveSensor(capSenseSend,sensorPin[i]);

just didn't post the code as I should have. I wasn't sure if that change has then set the next error into place, or if it was a correct fix. It seems to have fixed it, after I realized I wasn't referencing the correct Object later in the code. I am further in now, I think rest of these errors I can handle. thanks for your patience :slight_smile: