Как мне перейти на Arduino Mega?

Мне нужно использовать камеру OV7670 на моем arduino mega, и я обнаружил, что на этом сайте есть руководство по использованию камеры ov7670, но в этом руководстве используется arduino Uno. если я использую arduino Mega2560, что мне нужно сделать? мне нужно изменить их код и контактный разъем?

вот ссылка

https://www.instructables.com/ id/OV7670-Arduino-Camera-Sensor-Module-Framecapture-T/?amp_page=true

, 👍1


1 ответ


2

Да, вам придется изменить код, чтобы он соответствовал распиновке Mega.

Поскольку программа должна работать достаточно быстро, а функции Arduino digitalRead() и digitalWrite() ужасно медленны, автор программа использовала прямой доступ к порту для выполнения необработанного ввода-вывода. Например:

    //Подождите, пока vsync будет на контакте 3 (считая с 0) portD
    while(!(PIND&8));//ждем высокого уровня
    while((PIND&8));//ждем низкого уровня

Это тестовый контакт PD3 (8 соответствует 23), который на Uno цифровой 3, но на Меге цифровая 18. Тот же код может быть написан в переносимом виде:

    //Подождите, пока vsync будет на контакте 3 (считая с 0) portD
    while (digitalRead(3) == LOW);   // ждем высокого
    while (digitalRead(3) == HIGH);  // ждем минимума

но, вероятно, это было бы слишком медленно.

Обратите внимание, что здесь:

    UDR0=(PINC&15)|(PIND&240);

программа использует особое расположение выводов Uno в чтобы прочитать 8 входов только с двумя чтениями порта (4 бита на порт C и 4 бита на порт D). Вы могли бы сделать еще лучше на Меге если вы используете контакты с A8 по A15 для шины данных, а затем прочитайте весь 8-битное слово как PINK.

Могут быть некоторые другие различия между Uno и Mega, которые необходимо принимать во внимание, но сопоставление выводов — единственное, что для меня это очевидно, если быстро просмотреть код.

,

привет, Вы сказали, что «…что на Uno цифровое 3, а на Mega цифровое 18». откуда вы знаете, что на Mega стоит Digital Pin 18? и я до сих пор не понимаю, как использовать контакты с A8 по A15 и читать слово как РОЗОВЫЙ, @Ibnum Richaflor

@IbnumRichaflor: Re «_откуда вы знаете [...]_»: погуглите «распиновка Arduino Uno» и «распиновка Arduino Mega». Повторите «_используйте контакты с A8 по A15 и прочитайте слово как PINK_»: контакты A8–A15 (обозначение Arduino) — это PK0–PK7 (обозначение производителя), вместе известные как «порт K»., @Edgar Bonet