Код для чтения ввода из нескольких аналоговых выводов на Arduino не будет отображать значения - PullRequest
0 голосов
/ 16 апреля 2020

Этот код, который я пытался создать сам, не дает желаемого результата. Я надеюсь на вывод lik "125, 567, 654, 332, 222, 123". (6 значений, разделенных знаком ",")

Если я запускаю другую программу, я получаю значения, так что в моем коде наверняка что-то неправильно или отсутствует.

#define cellPin A0
#define cellPin A1
#define cellPin A2
#define cellPin A3
#define cellPin A4
#define cellPin A5

float counts = 0;
float const pins = 6;    // No of pins from 0 to 5

int timer = 1000;

int stored_pin_values[5];
int average_reads = 20;

void setup() {
  Serial.begin(9600);           //  setup serial
}

void loop() {

  for (int x = 0; x < pins; x++) {              // counter for each pin, from 0 to 5

    for (int i = 0; i < average_reads; i++) {          // counter for each reading of the selected pin
      if (i == 0) { analogRead("cellPin A"[i]); }                      // Read pin but do not use first reading
      if (i != 0) { counts = analogRead("cellPin A"[i]) + counts; }   // read the input pin and add to sum of counts
    }
    stored_pin_values[x] = counts / (average_reads - 1);              // Calc. average of pin. -1 cus we did not use the first reading
    counts = 0;
  }

  for (int y = 0; y < pins; y++) {              // Counter for printing average value of each pin
    if (y == pins - 1) { Serial.println(stored_pin_values[y]); }    //on last pos. print "ln"
    else {
      Serial.print(stored_pin_values[y]);                          // print "average pinvalue" separated by ", "
      Serial.print(", ");
    }
  }
  delay(timer);
}

Ответы [ 2 ]

0 голосов
/ 16 апреля 2020

Рабочий код после изменения (примечание: изменено 5-контактное считывание вместо 6):

int analogPins[5]={A0,A1,A2,A3,A4}, //pins
     analogValues[5]={0,0,0,0,0}; //stores the value of analog read

float counts = 0;
float const pins = 5;    // No of pins from 0 to 4

int timer = 1000;

int stored_pin_values[5];
int average_reads = 100;

void setup() {
  Serial.begin(9600);           //  setup serial
}

void loop() {

  for (int x = 0; x < pins; x++) {              // counter for each pin, from 0 to 4

    for (int i = 0; i < average_reads; i++) {          // counter for each reading of the selected pin
      if (i == 0) { analogRead(analogPins[i]); }                      // Read pin but do not use first reading
      if (i != 0) { counts = analogRead(analogPins[i]) + counts; }   // read the input pin and add to sum of counts
    }
    stored_pin_values[x] = counts / (average_reads - 1);              // Calc. average of pin. -1 cus we did not use the first reading
    counts = 0;
  }

  for (int y = 0; y < pins; y++) {              // Counter for printing average value of each pin
    if (y == pins - 1) { Serial.println(stored_pin_values[y]); }    //on last pos. print "ln"
    else {
      Serial.print(stored_pin_values[y]);                          // print "average pinvalue" separated by ", "
      Serial.print(", ");
    }
  }
  delay(timer);
}
0 голосов
/ 16 апреля 2020

вы определили несколько значений для cellPin.
#define cellPin A0 #define cellPin A1 #define cellPin A2 #define cellPin A3 #define cellPin A4 #define cellPin A5

Я предлагаю использовать другое имя, например #define cellPin0 A0 #define cellPin1 A1 ...
На секунду вы вызываете analogRead("cellPin A"[i]), передавая строку с недопустимым оператором для аргумента: правильный метод - analogRead(int) -> int.

Пишу немного Эскиз, чтобы вдохновить вас:

int analogPins[6]={A0,A1,A2,A3,A4,A5}, //pins
     analogValues[6]={0,0,0,0,0,0}; //stores the value of analog read

void setup(){
    Serial.begin(9600); //serial communication with baud rate of 9600b/s
}


void loop(){
    for(int i=0;i<6;i++){
         analogValues[i]=analogRead(analogPins[i]);
    }
}

Я надеюсь, что это может помочь вам. Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...