Декодирование порта VGA с помощью Arduino

Можно ли как-то прочитать VGA-порт видеокарты с помощью Arduino? Даже при некотором минимальном разрешении 320 x 240 и минимальной частоте кадров в секунду можно как-то преобразовать пиксели в числа (например). Кто может показать, где копать?

, 👍2


2 ответа


1

Расчет:

разрешение 320 x 240 (при условии 8 бит для 256 цветов) составляет 76 800 байт.

Предполагая частоту кадров 50, то есть 50 * 76,800 = 3,840,000 байт/с

Большинство Arduino имеют частоту 16 МГц, поэтому предполагается, что необходимы некоторые инструкции (для преобразования и выполнения чего-то). Я сомневаюсь, что вы получите такую частоту кадров.

Кроме того, вы не можете сохранить полную страницу, но в этом может и не быть необходимости.

,

1

Ваш стандартный VGA (640x480 при 60 Гц) имеет тактовую частоту пикселей 25,175 МГц. Это слишком высоко для того, чтобы Arduino мог считывать аналоговый сигнал. Он даже слишком высок для чтения в виде цифрового сигнала через компаратор (1-битный монохромный). Кроме того, у вас есть три сигнала: красный, зеленый и синий, и вы хотите дискретизировать сигнал со скоростью 75,525 Мс / с, если это делается последовательно, или 25,175 Мс / с, если это делается с тремя АЦП параллельно.

Теперь у Arduino нет никакой надежды когда-либо сделать это. Однако есть методы, которые могут быть полезны - методы, которые позволяют скромному маленькому 8-битному компьютеру, такому как ZX Spectrum и т. Д., Захватывать графику при работе всего на пару МГц (например, Videoface).

Один из самых интересных в этом сценарии называется прогрессивной разверткой (не путать с "прогрессивной разверткой", используемой в терминологии HD для обозначения противоположности чересстрочной развертке). При этом вы не пытаетесь захватить весь кадр за один раз. Вместо этого вы захватываете всего несколько пикселей из каждой строки сканирования (и даже только из нескольких строк сканирования) из каждого кадра. В последующих кадрах вы захватываете другой набор пикселей. За несколько кадров (а их может быть довольно много, учитывая объем данных, которые вам нужно будет захватить) вы получите все изображение целиком. Конечно, это бесполезно, если изображение быстро меняется, так как данные изображения, которые вы будете читать, частично изменятся при построении вашего конечного изображения, что приведет к интересным эффектам полос.

Примерно на полпути через это видео вы можете увидеть сканирование в действии и то, как движение вызывает полосование.

Так что да, технически можно захватить VGA на Arduino (возможно, с добавлением дополнительной внешней памяти), однако это очень трудно сделать, и результаты могут быть не такими, как вы на самом деле хотите.

,

на самом деле я хочу как-то конвертировать черно-белое видео, чтобы просмотреть его на светодиодной панели, например, со светодиодами 64x128. Я хочу создать что-то вроде этого https://www.youtube.com/watch?v=abPNrJshMns, @Yevgenii Shashkov