Arduino Mega2560, Ethernet Shield & OV0706: "Камера не найдена"
Я хочу сделать снимок с помощью OV0706, который сохранит изображение на SD-карту. Я использую Arduino Mega2560, Ethernet Shield (с SD-слотом) и OV0706 (вот этот: http://www.aliexpress.com/item/NEW-RS232-TTL-JPEG-Digital-Serial-Camera-Module-SCB-1-with-video-out-Support-VIMICRO-VC0706/1975852463.html). Я попробовал учебник для этой камеры от Adafruit, но все еще получаю ошибку "Камера не найдена?".
Думал, что это как-то связано с назначением контактов, но если я подключу RX от OV0706 с A15 на Mega (см. рисунок), он все равно выдаст ту же ошибку.
// On Mega: камера TX подключена к контакту 69 (A15), камера RX-к контакту 3:
SoftwareSerial cameraconnection = SoftwareSerial(69, 3);
Код (важная часть):
// Это базовый скетч моментального снимка с использованием библиотеки VC0706.
// При запуске Arduino найдет камеру и SD-карту и
// затем сделайте снимок, сохранив его на SD-карту.
// Общественное достояние.
// При использовании Arduino Mega (1280, 2560 или ADK) в сочетании
// с экраном SD-карты, предназначенным для обычных Arduino
// (Uno и т. Д.), необходимо отредактировать файл библиотеки:
// библиотеки/SD/утилита/Sd2Card.h
// Ищите эту строку:
// #define MEGA_SOFT_SPI 0
// изменить на:
// #define MEGA_SOFT_SPI 1
// Это НЕ требуется при использовании интерфейса прорыва SD-карты
// непосредственно к шине SPI Mega (контакты 50-53), или при использовании
// не Мега-плата в стиле Уно.
#include <Adafruit_VC0706.h>
#include <SPI.h>
#include <SD.h>
// закомментируйте эту строку, если вы используете Arduino V23 или более раннюю версию
#include <SoftwareSerial.h>
// раскомментируйте эту строку, если вы используете Arduino V23 или более раннюю версию
// #include <NewSoftSerial.h>
// SD card chip select line varies among boards/shields:
// Adafruit SD shields and modules: pin 10
// Arduino Ethernet shield: pin 4
// Sparkfun SD shield: pin 8
// Arduino Mega w/hardware SPI: pin 53
// Teensy 2.0: pin 0
// Teensy++ 2.0: pin 20
#define chipSelect 4
// Контакты для подключения камеры настраиваются.
// С Arduino Uno и т. Д. Можно использовать большинство контактов, за исключением
// те, которые уже используются для SD-карты (от 10 до 13 плюс
// ChipSelect, если он отличается от pin 10).
// С Arduino Mega выбор немного сложнее:
// 1) Вы все еще можете использовать SoftwareSerial и подключить камеру к
// множество контактов...НО выбор ограничен. TX
// контакт от камеры (RX на Arduino и первый
// аргумент SoftwareSerial()) ДОЛЖЕН быть одним из следующих: 62, 63, 64,
// 65, 66, 67, 68, или 69. Если установлен MEGA_SOFT_SPI (и с помощью
// обычный Arduino SD shield), контакты 50, 51, 52 и 53
// также доступны. Вывод RX от камеры (TX вкл.
// Arduino, второй аргумент SoftwareSerial()) может быть любым
// pin, опять же за исключением тех, которые используются SD-картой.
// 2) Вы можете использовать любой из трех дополнительных аппаратных UART на
// Мега-плата (маркированная как RX1/TX1, RX2/TX2, RX3,TX3),
// но должна специально использовать два контакта, определенные этим
// UART; они не настраиваются. В этом случае передайте
// желаемый последовательный объект (а не SoftwareSerial
// object) в конструктор VC0706.
// Использование SoftwareSerial (Arduino 1.0+) или NewSoftSerial (Arduino 0023 & prior):
#if ARDUINO >= 100
// On Uno: camera TX connected to pin 2, camera RX to pin 3:
//SoftwareSerial cameraconnection = SoftwareSerial(2, 3);
// On Mega: camera TX connected to pin 69 (A15), camera RX to pin 3:
SoftwareSerial cameraconnection = SoftwareSerial(69, 3);
#else
NewSoftSerial cameraconnection = NewSoftSerial(2, 3);
#endif
Adafruit_VC0706 cam = Adafruit_VC0706(&cameraconnection);
// Использование аппаратного последовательного порта на Mega: camera TX conn. к RX1,
// camera RX to TX1, никакой объект SoftwareSerial не требуется:
//Adafruit_VC0706 cam = Adafruit_VC0706(&Serial1);
void setup() {
// При использовании аппаратного SPI вывод SS ДОЛЖЕН быть установлен в
// выход (даже если он не подключен или не используется). Если оставить его как
плавающий вход
// с включенным SPI, это может привести к блокировке.
#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
if(chipSelect != 53) pinMode(53, OUTPUT); // SS on Mega
#else
if(chipSelect != 10) pinMode(10, OUTPUT); // SS on Uno, etc.
#endif
#endif
Serial.begin(9600);
Serial.println("Тест моментального снимка камеры VC0706");
// посмотрите, присутствует ли карта и может ли она быть инициализирована:
if (!SD.begin(chipSelect)) {
Serial.println("Карта вышла из строя или отсутствует");
// больше ничего не делай:
return;
}
// Попробуем найти камеру
if (cam.begin()) {
Serial.println("Камера найдена:");
} else {
Serial.println("Камера не найдена?");
return;
}
Заранее спасибо.
(Фотографии: http://prntscr.com/apdvi9 )
@Y.Terz, 👍2
1 ответ
Поскольку, по крайней мере,моей камере требуется до 2 секунд для инициализации, я думаю, что
if (cam.begin()) {
Serial.println("Камера найдена:");
} else {
Serial.println("Камера не найдена?");
немедленно возвращает то, что, по его мнению, камера не найдена
попробуйте это с
unsigned long timer = millis();
Serial.println("Инициализация камеры:");
while (!cam.begin()) {
Serial.print(".");
if (millis()-timer>3000) {
Serial.println("Камера не найдена?");
break;
}
}
- Создание файла на SD-карте
- SD-карта не инициализируется
- Печать содержимого файла SD - карты на ЖК-дисплее
- RTC и SD работают отдельно, а не вместе
- Записать массив на SD
- Nextion Display не получает обновленных данных
- Использование Arduino wireless SD Shield для сохранения данных на SD-карту и отправки на ПК по беспроводной сети
- Файл не найден на SD-карте