Почему лагает?

Technogrover
Offline
Зарегистрирован: 23.07.2018

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

Использую простой код:

#define SENSOR A7
#define SENSOR1 A6
#define SENSOR2 A5
#define SENSOR3 A4
#define MIN 500
#define MAX 900
uint16_t sensor;
uint16_t sensor1;
uint16_t sensor2;
uint16_t sensor3;

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

void loop() {
  sensor = analogRead(SENSOR);
  sensor = map(sensor, MIN, MAX, 0, 100);
  sensor1 = analogRead(SENSOR1);
  sensor1 = map(sensor1, MIN, MAX, 0, 100);
  sensor2 = analogRead(SENSOR2);
  sensor2 = map(sensor2, MIN, MAX, 0, 100);
  sensor3 = analogRead(SENSOR3);
  sensor3 = map(sensor3, MIN, MAX, 0, 100);
  Serial.println(sensor);
  Serial.println(sensor1);
  Serial.println(sensor2);
  Serial.println(sensor3);
  delay(500);
}

Не знаю,почему не получается картинку вставить,но при зажиме рукой начинают показываться значения больше 65540;кто-нибудь может подсказать,почему так происходит?Причем через некоторое время все возвращается в норму,но от этого не легче.Есть ошибка какая то в тексте?

 

 

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Видимо, analogRead() что-то меньше 500 читает.

Используй сначала constrain()

Technogrover
Offline
Зарегистрирован: 23.07.2018

Срасибо,дедСемен;)Подсказка по делу,так все приходит,как и надо.Надеюсь,что врать из-за того,что что-то в аналогРид приходит меньше или больше,не будет:))

Technogrover
Offline
Зарегистрирован: 23.07.2018

Или все-таки лучше значения правильно ограничивать,типа - мап(вал,мин,макс,400,900?

Kakmyc
Offline
Зарегистрирован: 15.01.2018

Или посмотреть в исходный вариант функции и тип переменной сменить

Technogrover
Offline
Зарегистрирован: 23.07.2018

Матемитику люблю,но вышеописанное не осилил:))

wdrakula
wdrakula аватар
Онлайн
Зарегистрирован: 15.03.2016

Technogrover пишет:
Матемитику люблю,но вышеописанное не осилил:))

У тебя как-то так с математикой? ;))

Как жаль, что тем, чем стало для меня
твоё существование, не стало
моё существованье для тебя.

(С) И.Бродский

b707
Онлайн
Зарегистрирован: 26.05.2017

Technogrover пишет:
Матемитику люблю,но вышеописанное не осилил:))

либо первая часть (люблю математику) либо вторая (не осилил) - вранье. ибо осиливать там нечего. обычное школьное правило пропорции. Класс этак четвертый-пятый

Если есть вероятность, что c сенсоров будут приходить значения за пределами MIN и MAX - совместно с map() рекомендуют использовать constrain()

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

b707 пишет:

Technogrover пишет:
Матемитику люблю,но вышеописанное не осилил:))

либо первая часть (люблю математику) либо вторая (не осилил) - вранье. ибо осиливать там нечего. обычное школьное правило пропорции. Класс этак четвертый-пятый

Если есть вероятность, что c сенсоров будут приходить значения за пределами MIN и MAX - совместно с map() рекомендуют использовать constrain()

См. самый первый ответ. :)

Kakmyc
Offline
Зарегистрирован: 15.01.2018

Вообще ,с какого перепугу взяты значения 500 и 900 ?
Аналоговый вход в зависимости от входящего напряжения,при дискретности 10 бит , может выдавать значения 0-1023.
Кто вам разрешил его ограничивать таким варварским способом ?

b707
Онлайн
Зарегистрирован: 26.05.2017

DetSimen пишет:

См. самый первый ответ. :)

поспешил :)

Logik
Offline
Зарегистрирован: 05.08.2014

b707 пишет:

Technogrover пишет:
Матемитику люблю,но вышеописанное не осилил:))

либо первая часть (люблю математику) либо вторая (не осилил) - вранье. ибо осиливать там нечего. обычное школьное правило пропорции. Класс этак четвертый-пятый

 

От не надо ля-ля!

6 класс, при 11 классах в школе. вчера учебник малого листал. 

Вполне мог и разлюбить уже математику. У многих любовь на дробях проходит, кто снизу, а кто сверху  решить не могут.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Technogrover пишет:
Матемитику люблю,но вышеописанное не осилил:))
Увы, не всегда любовь бывает взаимной. (особенно, если коверкать имя)

Technogrover
Offline
Зарегистрирован: 23.07.2018

Да быстро писал с телефона,дико извиняюсь за такую позорную ошибку:))Вас то,наверное,Лопиталем называют близкие?:)))

negavoid
Offline
Зарегистрирован: 09.07.2016

Под шышки самое то https://www.youtube.com/watch?v=2CNS1NmwT8Q

Technogrover
Offline
Зарегистрирован: 23.07.2018

Я далеко не программист по образованию,по этому пропорцию в коде не вижу:))
Да,все уже исправил и работает,как написал дедСемен,за что ему спасибо.
Единственное,что хочется узнать,купив себе кримпер 48бс,какие экранированные провода лучше использовать без проблем для показаний?Длина пол метра пока для них не будет проблема?А вообще,разъемы мама-мама,мама-папа на какую длину могут быть разведены?

Technogrover
Offline
Зарегистрирован: 23.07.2018

У меня любовь проходит в приложении "математические хитрости":))Советую скачать:)И не пожалеть заплатить 50р.С утра лучше кофе бодрит:)

Technogrover
Offline
Зарегистрирован: 23.07.2018

negavoid пишет:

Под шышки самое то https://www.youtube.com/watch?v=2CNS1NmwT8Q


Под хорошие только:))и медицинские шишки:)))

Technogrover
Offline
Зарегистрирован: 23.07.2018

Kakmyc пишет:
Вообще ,с какого перепугу взяты значения 500 и 900 ?
Аналоговый вход в зависимости от входящего напряжения,при дискретности 10 бит , может выдавать значения 0-1023.
Кто вам разрешил его ограничивать таким варварским способом ?

У ардуино-лаб подсмотрел в видосике:)У йардуино так вообще 330 и 660 соответственно стоят на аналогичном датчике