#1 20-04-2022 14:44:08

IvanAltay
Administrator
Зарегистрирован: 03-05-2018
Сообщений: 4,586

ESP32-CAM с видевыходом VGA.

В этом примере контроллер VGA инициализируется с 8 цветами (используется 5 GPIO):

#include <stdio.h>
#include "fabgl.h"
fabgl::VGAController DisplayController;
fabgl::Canvas        canvas(&DisplayController);
fabgl::PS2Controller PS2Controller;
#define DOUBLEBUFFERING 1
void setup() {
//DisplayController.begin();
// Назначаем GPIO12 для красного, GPIO13 для зеленого, GPIO15 для синего, GPIO2 для HSync и GPIO14 для VSync
DisplayController.begin(GPIO_NUM_12, GPIO_NUM_13, GPIO_NUM_15, GPIO_NUM_2, GPIO_NUM_14);
DisplayController.setResolution(VGA_640x240_60Hz);
//DisplayController.setResolution(VGA_320x200_75Hz);
//DisplayController.setResolution( VGA_256x384_60Hz);
canvas.selectFont(&fabgl::FONT_8x8);
canvas.clear();
canvas.setPenColor(Color::Green);
canvas.setGlyphOptions(GlyphOptions().FillBackground(false).DoubleWidth(1));
canvas.drawTextFmt(350, 10,"%s",utf8rus("АБВГДЕЖЗИК"));
canvas.drawTextFmt(350, 20,"%s",utf8rus("ЛМНОПРОСТУ"));
canvas.drawTextFmt(350, 30,"%s",utf8rus("ХФШЧЩЪЫЬЭЮ"));
canvas.drawTextFmt(350, 40,"%s","QWERTYUIOP");
canvas.drawTextFmt(350, 50,"%s","ASDFGHJKL:");
canvas.drawTextFmt(350, 60,"%s","ZXCVBNM12345");
int yy=0;
for (int ii = 128; ii < 151; ii++)
  {       yy++;
    canvas.drawTextFmt(0,yy*10,"%d",ii);
    canvas.drawTextFmt(40,yy*10," - ");
    canvas.drawTextFmt(90,yy*10,"%c",ii);
  }
 yy=0;
for (int ii = 151; ii < 174; ii++)
  {      yy++;
    canvas.drawTextFmt(120,yy*10,"%d",ii);
    canvas.drawTextFmt(160,yy*10," - ");
    canvas.drawTextFmt(200,yy*10,"%c",ii);
  }
yy=0;
for (int ii = 174; ii < 197; ii++)
  {   
    yy++;
    canvas.drawTextFmt(220,yy*10,"%d",ii);
    canvas.drawTextFmt(260,yy*10," - ");
    canvas.drawTextFmt(300,yy*10,"%c",ii);
  }
}
void loop() {
}
// Начало функции обработки кириллических символов
String utf8rus(String source)
{
  int i,k;
  String target;
  unsigned char n;
  char m[2] = { '0', '\0' };
  k = source.length(); i = 0;
  while (i < k) {
    n = source[i]; i++;
    if (n >= 0xC0) {
      switch (n) {
        case 0xD0: {
          n = source[i]; i++;
          if (n == 0x81) { n = 0xA8; break; }
          if (n >= 0x90 && n <= 0xBF) n = n + 0x30;
          break;
        }
        case 0xD1: {
          n = source[i]; i++;
          if (n == 0x91) { n = 0xB8; break; }
          if (n >= 0x80 && n <= 0x8F) n = n + 0x70;
          break;
        }
      }
    }
    m[0] = n; target = target + String(m);
  }
return target;
}
// Конец функции обработки кириллических символов.

Не в сети

#2 20-04-2022 14:48:02

IvanAltay
Administrator
Зарегистрирован: 03-05-2018
Сообщений: 4,586

Re: ESP32-CAM с видевыходом VGA.

Компилируем и заливаем код для Wrover Module.

16504408380776092402558253143008.jpg

Не в сети

#3 20-04-2022 14:48:53

IvanAltay
Administrator
Зарегистрирован: 03-05-2018
Сообщений: 4,586

Re: ESP32-CAM с видевыходом VGA.

16504408923974897838160276615069.jpg

esp32cam-VGA.jpg

Не в сети

#4 20-04-2022 15:08:14

IvanAltay
Administrator
Зарегистрирован: 03-05-2018
Сообщений: 4,586

Re: ESP32-CAM с видевыходом VGA.

https://randomnerdtutorials.com/esp32-c … er-pinout/
Серийные контакты
GPIO 1иGPIO 3являются последовательными контактами (TX и RX соответственно). Поскольку ESP32-CAM не имеет встроенного программатора, вам необходимо использовать эти контакты для связи с платой и загрузки кода.
Лучший способ загрузить код в ESP32-CAM — использовать программатор FTDI .
Узнайте, как загрузить код в ESP32-CAM AI-Thinker.
Ты можешь использоватьGPIO 1иGPIO 3для подключения других периферийных устройств, таких как выходы или датчики, после загрузки кода. Однако вы не сможете открыть Serial Monitor и посмотреть, все ли в порядке с вашей настройкой.
GPIO 0
GPIO 0определяет, находится ли ESP32 в режиме прошивки или нет. Этот GPIO внутренне подключен к подтягивающему резистору 10 кОм.
Когда GPIO 0 подключен к GND, ESP32 переходит в режим прошивки, и вы можете загрузить код на плату.
GPIO 0связан сЗАЗЕМЛЕНИЕ» ESP32-CAM в режиме прошивки
Чтобы ESP32 работал «нормально», вам просто нужно отключить GPIO 0 от GND.

Не в сети

Подвал раздела

Работает на FluxBB (перевод Laravel.ru)