Подключаю отдельно потенциометр всё нормально. Включаю передачу по I2C всё нормально. Но если передавать по I2C и вертеть потенциометром, то ближе к крайним точкам потенциометра ардуино зависает. Распаковал новую специально чтобы проверить. Ведёт себя так же.
Что можете посоветовать?
Подключаю Потенциометр 5v, A5, Gnd
код I2C стандартный:
Wire.beginTransmission(8); // Адрес устройства
Wire.write(loadTape); // Отправляем значение loadTape
Wire.write(mHome); // Отправляем значение mHome
Wire.endTransmission(); // Завершение передачи
Интересно, какой “character” вы планируете получить, если вы с мастера отправляете true и false?
А в коде и на картинке A0
Не верю. Что именно “нормально” у вас с таким кодом? Где передача значений потенциометра по I2c ?
Или, что более вероятно, на форум вы слили не свой настоящий код, а какую-то дурилку.
Это простой код c сети чуть видоизменённый. Исходный проект огромный и с трудом на Uno помещается. Разве есть смысл выкладывать гкод не отформатированный и не оптимизированный если проблема проявляется и с двумя строками кода с включенным I2C и замкнутым A0 на GND или 5V?
Ок, в том что вы верно определили средний контакт потенциометра - уверены? Или может потенциометр просто криво сделан и замыкает в крайних положениях. Возьмите DMM и прозвоните.
Это первое, что приходит в голову.
Строка кода выводит сигнал с контакта А0 каждую итерацию. Serial.println(analogRead(A0));
Если замкнуть А0 на Gnd или на 5v то вывод в порт останавливается, передача по I2C останавливается, если подождать чуть то зависает, если раньше секунды отсоединить контакт от А0 то работа продолжается.
Потенциометр точно не причём, потому что при работе I2C просто замкнув контакт А0 на Gnd или 5V дуина зависает.
Если у кого то есть возможность повторить, то интересно узнать работает ли у вас.
Возможно я чего то не знаю? Есть какой то способ проводить отладку кроме Serial.print?
Да, если закомментировать I2C то выводится информация о аналоговом входе (соедини его хоть к 5V хоть к GND). Если не трогать аналоговый вход то код I2C отрабатывает нормально.
Serial.println("Step_1");
Wire.beginTransmission(8); // Адрес устройства
Serial.println("Step_2");
Wire.write(loadTape); // Отправляем значение loadTape
Serial.println("Step_3");
Wire.write(mHome); // Отправляем значение mHome
Serial.println("Step_4");
error = Wire.endTransmission(); // Завершение передачи
Serial.println("Step_5");
Теперь понимаю что будет работать с А0. У меня в проекте к А0 и А5 подключены потенциометры. Но какой именно из двух не понятно, длинные запутанные провода, я месяца два назад собирал, уже забыл. Поэтому не концентрировал внимание А5 или А0… Теперь понятно что это был важный момент.