a=a>=(240+1) ? 240 : a; //как это понять?

art100
Offline
Зарегистрирован: 09.03.2014

unsigned long a = analogRead(PINI_NPUT_A1); // то есть от 0 до 255

a = a >= (240+1) ? 240 : a; //как это понять?

Кто-нибудь может направить на путь истинный что будет в результате?

если 0 ?

если 255 ?

 

art100
Offline
Зарегистрирован: 09.03.2014

Что-то мне подсказывает, что это ограничение максимального значения 255? Или что-то не то?

a = a >= 241 ? 240 : a; //как это понять?

 

Andy
Andy аватар
Offline
Зарегистрирован: 01.01.2016

другими словами if (a>=241) a=240;

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

art100, если "а" больше или равно 241, то а=240, иначе значение "а" не меняется. Тоже можно написать более понятно:

if (a>240) {a=240;}

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

art100 пишет:

Кто-нибудь может направить на путь истинный что будет в результате?

Самый истинный путь -> http://people.toiit.sgu.ru/Sinelnikov/PT/C/Kern_Ritch.pdf

Всё остальное - компромиссы.

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

dimax пишет:

art100, если "а" больше или равно 241, то а=240, иначе значение "а" не меняется. Тоже можно написать более понятно:

if (a>240) {a=240;}

я бы добавил 

if (a>240) {a=240;}

else a=a;

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

jeka_tm пишет:

else a=a;

Глубокомысленно!

Теперь бы ещё объявить конкурс среди новичков: придумайте ситуацию в которой такая операция имеет смысл.

Профи - не лезьте с подсказками! Пусть думают :)

art100
Offline
Зарегистрирован: 09.03.2014

Спасибо всем. Я так и подумал код писан не руками, а другим местом. 

Чистил чистил 6 часов. все равно идиотизмом попахивает.

Просто получить аналоговое значение на ножке.

//--------------------------------------------------------------
inline unsigned long ADCRead1(byte pinadc){
  unsigned long a = analogRead(pinadc);
  a = a >=(LCD_OS_Y_VOLT+1) ? LCD_OS_Y_VOLT : a; //a=a>=241 ? 240 : a;
  return a;
}
//dimax предлагает if (a>240) {a=240;} исправить



Вроде прямо из учебника
int val = analogRead(0);
val = map(val, 0, 1023, 0, 255);

Спасибо всем. Переписал по встроенному хелпу и заработала

//--------------------------------------------------------------
int ADCRead1(byte pinadc){
  int val = analogRead(pinadc);
  val = map(val, 0, 240, 120, 240);
  return val;
}
//--------------------------------------------------------------

Пойду посплю что-ли.