Сортировка данных напряжения от контакта A0 до 3 переменных (ранжированных)

У меня пока нет кода для этого, но я хотел бы получить некоторые идеи по кодированию. У меня есть направленная антенна, которая вращается с небольшой скоростью, и радиолюбитель, подключенный к антенне. У меня есть выходной порт на радио, который будет выдавать напряжение от 0 до 5 вольт для силы сигнала. У меня также есть данные о степени вращения, которые захвачены. Вопрос, который у меня есть, заключается в том, пытаюсь ли я сделать длинный оператор if then else, чтобы зафиксировать 3 самых высоких напряжения и направления в качестве переменных для последующей обработки, или есть лучший способ. Пример также может иметь большое значение.

, 👍-1

Обсуждение

вам нужно подумать о том, что вы спрашиваете .... мощность радиосигнала меняется почти непрерывно ... три самых высоких напряжения могут исходить только от одного источника, @jsotola

Это правда. Это было бы нормально, пока я не приблизился бы на своем транспортном средстве, где было бы больше разделения с микропередатчиками. Если бы 1-й, 2-й и 3-й самые высокие сигналы имели один и тот же пеленг, это было бы на самом деле бонусом, потому что я знал бы, что передатчики находятся дальше. Когда я подойду ближе, они разойдутся., @Bkukuk62

Вы знаете, как читать аналоговый вывод в скетче Arduino? Я уверен, что вы делаете. Остальная часть вашего вопроса касается общего кодирования на C ++, поэтому пройдите курс кодирования, если вы не знаете, как кодировать то, что вы хотите., @Juraj


1 ответ


0

Это требует немного больше работы, но я бы предложил использовать массивы для хранения сигнала и позиций примерно так. От (G7WJD) СРОК ИСЧЕЗ!

#define signalPin A0
#define degreePin A1
int signalStrength;
// STORE DATA IN ARRAY
// 0 [strength, direction]
// 1 [strength, direction]
// 2 [strength, direction]
int signals[3][3]; 
int degree;
bool positionSavedFlag = false;
void setup() {

}

void loop() {
 signalStrength = analogRead(signalPin);
 degree = analogRead(degreePin);
 // comapare with previous data
 for (int x = 0; x < 3; x++) {
  // have we saved data for this position before?
  if (degree == signals[x][1]) {
    // yes
    positionSavedFlag = true;
    // is it stronger than previous signal at this position
    if (signalStrength > signals[x][0]) {
      // yes so save / update it
      signals[x][0] = signalStrength;
    }
  }
 }
 // now since position not already stored , store it

 }
,

Спасибо, Брайан, это очень хорошо помогает новичку в программировании. Слава вам!, @Bkukuk62