Подскажите пожалуйста, какая ошибка в программе. Нужно снимать показания с восьми датчиков и выводить на экран максимальное значение. // Подключаем стандартную библиотеку LiquidCrystal #include <LiquidCrystal.h> // Инициализируем объект-экран, передаём использованные // для подключения контакты на Arduino в порядке: // RS, E, DB5, DB6, DB7, DB8 LiquidCrystal lcd(4, 5, 10, 11, 12, 13); void setup() { lcd.begin(16, 2); lcd.print("Naibolshee znachenie"); } void loop() { int sens0 = analogRead(A0); int sens1 = analogRead(A1); int sens2 = analogRead(A2); int sens3 = analogRead(A3); int sens4 = analogRead(A4); int sens5 = analogRead(A5); int sens6 = analogRead(A6); int sens7 = analogRead(A7); if (sens0 > sens1 || sens0 > sens2 || sens0 > sens3 || sens0 > sens4 || sens0 > sens5 || sens0 > sens6 || sens0 > sens7) { lcd.setCursor(0, 1); lcd.print("sens0"); } if (sens1 > sens0 || sens1 > sens2 || sens1 > sens3 || sens1 > sens4 || sens1 > sens5 || sens1 > sens6 || sens1 > sens7) { lcd.setCursor(0, 1); lcd.print("sens1"); } if (sens2 > sens0 || sens2 > sens1 || sens2 > sens3 || sens2 > sens4 || sens2 > sens5 || sens2 > sens6 || sens2 > sens7) { lcd.setCursor(0, 1); lcd.print("sens2"); } if (sens3 > sens0 || sens3 > sens1 || sens3 > sens2 || sens3 > sens4 || sens3 > sens5 || sens3 > sens6 || sens3 > sens7) { lcd.setCursor(0, 1); lcd.print("sens3"); } if (sens4 > sens0 || sens4 > sens1 || sens4 > sens2 || sens4 > sens3 || sens4 > sens5 || sens4 > sens6 || sens4 > sens7) { lcd.setCursor(0, 1); lcd.print("sens4"); } if (sens5 > sens0 || sens5 > sens1 || sens5 > sens2 || sens5 > sens3 || sens5 > sens4 || sens5 > sens6 || sens5 > sens7) { lcd.setCursor(0, 1); lcd.print("sens5"); } if (sens6 > sens0 || sens6 > sens1 || sens6 > sens2 || sens6 > sens3 || sens6 > sens4 || sens6 > sens5 || sens6 > sens7) { lcd.setCursor(0, 1); lcd.print("sens6"); } if (sens7 > sens0 || sens7 > sens1 || sens7 > sens2 || sens7 > sens3 || sens7 > sens4 || sens7 > sens5 || sens7 > sens6) { lcd.setCursor(0, 1); lcd.print("sens7"); } delay (100); }
Ошибка ваша в этом: lcd.print("sens7"); и тут не важно значение какого сенсора вы отправляете. Дело в том что если вы заключаете что то в двойные кавычки то в функцию передается не значение переменной а просто строка sens7 например. Таким образом что бы передать в функцию значение переменной надо сделать так: lcd.print(sens7); просто убрать кавычки. А еще можно избавится от такого длиннного кода И сделать например так (тут лишь часть "по делу" , setup и include с инициализайией LCD думаю сами добавите): Код (Text): const int SENS_NUM = 8; int sens[SENS_NUM] = {0,0,0,0,0,0,0,0}; int maxValue = 0; void loop() { sens[0] = analogRead(A0); sens[1] = analogRead(A1); sens[2] = analogRead(A2); sens[3] = analogRead(A3); sens[4] = analogRead(A4); sens[5] = analogRead(A5); sens[6] = analogRead(A6); sens[7] = analogRead(A7); maxValue = 0; for(int i = 0; i < SENS_NUM; i++) { if( sens[i] > maxValue ) { maxValue = sens[i]; } } lcd.setCursor(0, 1); lcd.print(maxValue); delay(100); } P.s. Можно и считывание показаний сделать в цикле, но не стал делать.
И можно ли, в программе описанной выше, внести изменения которые позволят выводить на дисплей порядковый номер датчика?
Код (Text): int maxSens = 0; ... if( sens[i] > maxValue ) { maxValue = sens[i]; maxSens = i; } ... lcd.print(maxSens);