Как узнать минимальные значения с датчика

komvolt
Offline
Зарегистрирован: 12.07.2017
Когда датчик выдает значения ниже 36 по Serial бегут строки с цыфрами как сделать так чтоб выводило не несколько значений а одно и самое минимальное значение

const int analogInPin = A0; 
int sensorValue = 0;       

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

void loop() {
  sensorValue = analogRead(analogInPin);
  
if(sensorValue < 36){
  Serial.println(sensorValue);
}


  delay(4);
}

b707
Offline
Зарегистрирован: 26.05.2017

Что такое "самое минимальное значение"? Вот, например, на вашей картинке минимальное значение 31.  Выводить его? Или подождать? Вдруг дальше будет еще ниже?

Это я к тому, что вы задачу четче сформулируйте...

Например, этот скетч будет выводить значения, только если они меньше предыдущего минимума:

const int analogInPin = A0; 
int sensorValue = 100;       
int oldvalue =36;

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

void loop() {
  sensorValue = analogRead(analogInPin);
  
if(sensorValue < oldvalue){
  Serial.print("New minimal value = ");
  Serial.println(sensorValue);
  oldvalue = sensorValue;
}


  delay(200);
}

ЗЫ задержку в lopp ставьте побольше, читать сигнал так часто не нужно.

komvolt
Offline
Зарегистрирован: 12.07.2017

Если увеличиваю задержку программа не успевает распознать, нужно именно минимальное значение например: в моммент когда значение падает ниже 36 значения которые полученны надо записать и среди них найти нимимум а когда сигнал снова увеличится выше 36 вывести максимальное значение по Serial

komvolt
Offline
Зарегистрирован: 12.07.2017

Пожалуйста кто нибудь помогите мне сделать это.. я уже всю голову над этим сломал.. в общем я хочу сделать систему распознания монет.. стоит фотодиод и фототранзистор когда между ними пролетает монетка сигнал меняется если монетка больше то значения с датчика ниже все монеты определяются но мне нужно узнать какой минимальный сигнал получен с датчика в момент когда монета пролетает 

b707
Offline
Зарегистрирован: 26.05.2017

komvolt пишет:

 в моммент когда значение падает ниже 36 значения которые полученны надо записать и среди них найти нимимум а когда сигнал снова увеличится выше 36 вывести максимальное значение по Serial

Вы сами изложили почти готовый алгоритм, вот он - в момент, когда значение падает ниже 36 - записываете значение в переменную. Каждое следующее значение сравниваете с записанным, если новое меньше - запоминаете его вместо прежнего. Когда сигнал снова увеличится выше 36 вывести запомненное значение по Serial. Код попробуйте сами поправить, это не должно быть сложно.