Разное о выращивании табака на Алтае
Вы не вошли.
В этом примере контроллер 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;
}
// Конец функции обработки кириллических символов.
Не в сети
Не в сети
Не в сети
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.
Не в сети