@Старик Похабыч, Можете еще разок советом помочь, пожалуйста?
Тут проблема, в которой ну никак не могу разобраться:
На пины с А0 до А6 подключены следующие штуки:
А0 - тактовая кнопка от джойстика "
C" - обычный DIY джойстик как в геймпаде на 2 оси и кнопка.
А1-А2 - оси Х\У джойстика "
A" - обычный, без кнопок. Мультиметр показывает, что он на 5кОм
А3-А4 - оси Х\У джойстика "
В" - тоже такой же.
А5-А6 - оси самого первого джойстика C. Вроде как на 10кОм
Всё подключено на проводках длиной около 20см.
Кнопка работает отлично. Также отлично работают первые два джойстика - А и Б.
Но! оси джойстика
C как-то странным образом влияют друг на друга, если выводить на монитор порта через analogRead:
Если дергаю одну ось, то вместе с ней меняются показания и на другой. И наоборот.
Сперва грешил на замыкание - перепаял, проверил - ничего...
Потом прочитал, что много analogRead вызываемых друг за другом вызывают глюки.
Ради пробы отключил analogRead на А0-А4 и оставил на 5 и 6 - тоже ничего.
По советам из интернетов пробовал делать по два замера - один отбрасывать и оставлять второй.
Также пробовал добавлять задержку в 2-5 мс.
Ничего не помогает!
Так же есть и другая проблема - значения
с джойстика С как-то не так инвертированны. Сейчас поясню:
Джойстик - это потенциометр, да? Поменял крайние ноги местами - движение инвертировалось.
На первых двух джойстиках я 5V и GND менял местами так, чтобы левое положение = 0, а правое = 1023. Низ = 0, верх = 1023.
То бишь чисто для удобства.
Тут же я пробовал менять провода местами несколько раз - ну вот вообще ничего!
Можете что подсказать, если не затруднит?
UPD Оставил только одно чтение для пробы - с А5. И всё равно они влияют друг на друга.
Вот текущий наскоро сваяный код:
void setup() {
// initialize serial communications at 9600 bps:
Serial.begin(9600);
}
void loop() {
// Serial.print(analogRead(A1));
// delay(2);
// Serial.print('\t');
// Serial.print(analogRead(A2));
// delay(2);
// Serial.print('\t');
// Serial.print(analogRead(A3));
// delay(2);
// Serial.print('\t');
// Serial.print(analogRead(A4));
// delay(2);
// Serial.print('\t');
// int a = analogRead(A5);
// delay(5);
Serial.print(analogRead(A5));
// delay(5);
// Serial.print('\t');
// a = analogRead(A6);
// delay(5);
// Serial.print(analogRead(A6));
// delay(5);
Serial.println();
delay(5);
}