Передача информации в микросхему (analogRead)
Про джойстик было тут:
https://akostina76.ucoz.ru/blog/2019-01-09-5606
А это текст, который определяет, в какую сторону его наклонили:
byte ScanJoyStick()
{
byte Direction = JOYSTICK_RELEASED;
unsigned int X_Val = analogRead(JOYSTICK_X_PIN);
unsigned int Y_Val = analogRead(JOYSTICK_Y_PIN);
if ((Y_Val >= 900) && (X_Val >= 400))
{
Direction = JOYSTICK_UP_;
}
else if ((Y_Val <= 400) && (X_Val >= 400))
{
Direction = JOYSTICK_DOWN_;
}
else if ((Y_Val >= 400) && (X_Val >= 900))
{
Direction = JOYSTICK_RIGHT_;
}
else if ((Y_Val >= 400) && (X_Val <= 400))
{
Direction = JOYSTICK_LEFT_;
}
return Direction;
}
Я решила подключить джойстик отдельно и посмотреть, что он выдаёт со своих контактов при повороте туда-сюда.
Подключение питания, землю и провода с координатой X:
Если подключить вольтметр и посмотреть общее падение напряжения на светодиоде и резисторе, то выясниться, что в нейтральном положении это 1.96 вольт. Если джойстики наклонить вправо, то светодиод будет гореть намного ярче, а падение напряжения будет 3 вольта. Если наклонить влево, то яркость светодиода снизится, но почти незаметно. Будет 1.91 вольт.
Т.е передача информации явно идёт через изменение передаваемого напряжения. Отсюда:
http://arduino.ru/Reference/AnalogRead
Функция считывает значение с указанного аналогового входа. Большинство плат Arduino имеют 6 каналов (8 каналов у платы Mini и Nano, 16 у Mega) c 10-битным аналого-цифровым преобразователем (АЦП). Напряжение поданное на аналоговый вход, обычно от 0 до 5 вольт будет преобразовано в значение от 0 до 1023, это 1024 шага с разрешением 0.0049 Вольт. Разброс напряжение и шаг может быть изменен функцией analogReference().
Считывание значение с аналогового входа занимает примерно 100 микросекунд (0.0001 сек), т.е. максимальная частота считывания приблизительно 10,000 раз в секунду.
Если 5 вольтам соответствует возвращаемое значение 1023, то 3 вольтам соответствует (3*1023/5) 614 (которое не 900…), А 1.96 вольтам соответствует 401 (которое вполне подходит.
Как бы то ни было, микросхема получает какое-то напряжение из подключенного к ней модуля и переводит значение в цифру. Цифру уже можно как-то обрабатывать в программе.
|