ЦАП: плата говорит «Дуино»
Настоящее аналоговое напряжение и воспроизведение записанного голоса.
ШИМ только изображает промежуточное напряжение быстрым миганием. А ЦАП (цифро-аналоговый преобразователь) выдаёт настоящее постоянное напряжение. У классической ESP32 их два: на GPIO25 и GPIO26, разрядность 8 бит. У ESP32-S3 и ESP32-C3 ЦАП нет — это одна из причин выбрать классическую плату.
Лесенка напряжений
Функция dacWrite(вывод, значение) принимает число от 0 до 255: 0 — это 0 В, 255 — примерно 3,3 В. Подключите мультиметр между GPIO25 и GND и посмотрите, как напряжение растёт ступеньками.
void setup() {
Serial.begin(115200);
}
void loop() {
for (int v = 0; v <= 255; v += 64) {
dacWrite(25, v);
Serial.printf("dacWrite(25, %d) ≈ %.2f В\n", v, v * 3.3 / 255);
delay(2000);
}
}Плата говорит «Дуино»
Звук — это напряжение, которое быстро меняется. Если 8000 раз в секунду выдавать на ЦАП очередное значение из записи, получится речь качества телефонной линии. Запись слов «Магазин Дуино» мы уже перевели в нужный формат — это массив из нескольких тысяч чисел от 0 до 255. Он лежит в самом конце скетча, поэтому скетч длинный: просто нажмите «Копировать», вставьте в Arduino IDE и загрузите.
// Массив со звуком лежит в конце скетча, здесь только объявляем его,
// чтобы функции ниже знали, что он есть.
extern const uint8_t duino_sound[];
extern const uint32_t duino_sound_len;
const int DAC_PIN = 25;
const int BTN = 0; // кнопка BOOT
void playSound(const uint8_t *data, uint32_t len) {
uint32_t start = micros();
for (uint32_t i = 0; i < len; i++) {
while (micros() - start < i * 125) {} // 125 мкс = 8000 отсчётов в секунду
dacWrite(DAC_PIN, data[i]);
}
dacWrite(DAC_PIN, 128); // середина — тишина без щелчка
}
void setup() {
pinMode(BTN, INPUT_PULLUP);
dacWrite(DAC_PIN, 128);
playSound(duino_sound, duino_sound_len); // говорит при включении
}
void loop() {
if (digitalRead(BTN) == LOW) { // и по нажатию BOOT
playSound(duino_sound, duino_sound_len);
delay(300);
}
}
// Голос «Магазин Дуино»: 10626 отсчётов, 8000 в секунду (1.33 с), 128 = тишина.
// const — массив хранится во флеш-памяти и не занимает оперативную.
const uint32_t duino_sound_len = 10626;
const uint8_t duino_sound[] = {
125,126,126,127,127,127,127,127,127,127,128,128,129,129,130,131,132,133,134,135,136,136,136,135,133,131,129,127,125,123,121,120,
119,118,117,117,117,118,118,119,120,121,122,123,124,124,125,126,128,131,139,145,149,152,150,147,146,144,144,145,141,138,132,126,
121,117,115,114,113,113,113,113,114,115,116,118,120,123,125,127,128,130,130,131,132,132,133,132,131,130,129,129,127,125,124,122,
121,119,119,119,124,132,137,143,146,144,145,146,146,150,149,147,143,136,129,123,118,116,114,113,112,111,111,111,112,114,117,120,
124,126,127,128,127,128,129,130,131,131,131,130,128,127,125,123,122,121,121,121,121,127,136,141,146,149,147,147,147,147,150,150,
147,143,136,128,122,117,113,111,109,109,108,109,110,111,114,116,119,122,125,126,128,128,128,129,130,131,131,132,132,130,129,127,
125,124,123,122,122,125,133,140,144,148,146,144,144,143,145,148,147,145,141,133,126,120,115,112,110,110,110,111,113,113,114,116,
117,120,123,125,127,126,126,126,126,127,129,130,131,130,128,125,123,122,122,122,124,130,140,147,151,154,150,148,147,145,147,147,
145,142,136,128,121,115,111,109,108,109,110,112,114,114,116,117,118,122,124,125,126,125,125,125,125,127,128,129,129,128,126,124,
122,121,122,124,133,144,150,156,155,151,150,147,146,148,147,145,141,134,126,118,112,109,107,107,108,109,111,112,114,117,118,121,
124,126,128,128,127,126,125,126,127,127,128,127,124,122,119,117,117,119,128,141,149,156,159,154,153,152,150,152,151,147,144,136,
127,120,113,109,106,106,107,107,109,110,111,114,116,119,123,125,128,129,128,128,126,126,126,126,127,126,125,123,120,119,118,121,
133,142,151,157,155,153,152,150,152,153,151,149,143,134,126,117,112,108,107,107,106,107,108,108,111,113,116,120,123,126,128,128,
128,127,126,126,126,126,126,126,125,124,122,118,121,131,141,150,158,155,154,151,149,151,151,150,148,143,135,126,119,113,109,108,
107,106,107,108,108,110,112,116,119,122,125,126,126,126,124,124,124,124,125,125,126,125,124,121,123,134,143,152,158,156,154,151,
149,151,151,149,148,142,135,127,119,113,107,105,104,104,106,107,108,111,113,116,120,123,126,127,128,128,126,126,125,125,125,126,
126,125,124,122,125,136,146,153,157,155,153,150,147,147,145,143,141,137,132,127,123,117,112,107,104,103,106,110,116,120,127,132,
125,118,112,111,113,117,122,126,126,122,120,118,112,106,107,127,156,185,203,204,192,170,143,122,108,100,102,109,120,131,137,137,
130,120,112,107,108,113,118,123,124,122,118,115,115,117,122,127,131,132,131,125,119,112,107,106,106,108,124,153,180,206,208,190,
161,124,101,92,98,115,130,141,143,136,131,123,122,124,126,128,124,116,107,99,98,105,116,129,138,140,137,129,122,116,111,109,
105,104,102,102,104,130,162,195,219,212,188,150,113,96,95,108,126,137,141,136,127,126,127,134,139,135,124,108,94,89,94,107,
121,132,136,134,130,127,125,125,121,112,101,92,90,96,104,133,168,198,219,209,182,148,116,102,104,115,128,132,130,125,121,126,
136,145,148,138,121,104,91,92,102,114,126,128,127,123,122,127,131,132,125,110,96,87,89,100,110,143,177,202,217,199,169,136,
112,106,112,122,128,125,120,117,120,133,145,150,146,130,113,101,97,103,111,118,122,123,124,126,130,134,132,124,113,101,95,96,
101,104,114,148,179,206,213,189,158,128,111,113,118,122,120,111,110,116,131,147,153,148,136,119,109,106,107,110,111,112,115,122,
131,138,138,133,122,114,108,104,102,100,97,96,126,167,200,218,203,168,138,119,116,121,120,115,105,103,113,130,146,153,147,134,
122,114,114,114,111,107,106,111,122,132,138,136,130,123,119,117,113,107,97,90,89,109,156,195,216,209,175,144,128,123,127,123,
110,99,97,110,130,147,152,144,131,124,121,121,119,111,103,101,108,122,135,139,136,129,125,124,123,118,107,96,88,88,98,138,
181,206,210,186,156,140,132,131,126,111,100,96,106,125,139,144,141,133,130,130,127,121,110,99,98,106,120,131,135,133,130,128,
129,127,121,109,98,91,92,96,126,168,194,205,192,165,149,141,136,130,115,101,96,103,118,131,134,133,131,133,137,135,125,111,
99,98,107,120,129,131,129,129,131,135,132,123,111,101,97,99,97,105,139,173,196,200,180,159,151,146,142,129,108,96,96,106,
119,125,125,126,131,139,142,133,118,105,101,107,116,123,126,125,127,130,133,133,127,117,109,105,104,102,101,122,154,179,190,181,
164,158,156,151,141,122,106,101,103,111,116,115,117,123,132,140,137,127,117,112,113,118,122,123,122,122,124,127,129,127,123,118,
115,113,111,106,109,131,155,171,174,165,158,158,158,154,143,126,115,110,110,111,109,107,110,117,126,132,129,124,120,119,124,128,
128,126,123,122,124,126,126,124,122,120,120,119,116,113,119,134,147,155,154,150,150,152,153,152,145,136,128,122,118,116,112,110,
110,113,117,120,121,121,122,124,128,131,131,130,127,127,128,129,130,129,127,126,124,121,118,115,115,121,127,131,134,135,138,143,
147,149,148,146,143,140,137,134,129,124,121,119,119,119,117,116,116,117,120,122,123,123,123,124,125,126,127,128,127,126,124,122,
120,121,122,126,129,130,132,134,137,141,144,146,147,146,144,142,140,137,133,129,126,123,120,118,116,115,115,116,118,119,120,121,
121,122,123,125,126,127,127,126,125,124,124,125,126,127,129,129,129,130,131,134,138,141,144,145,146,145,144,141,138,134,130,126,
122,119,117,116,115,115,115,116,118,120,122,123,124,126,126,127,127,127,128,128,128,127,126,125,126,126,127,127,127,128,131,134,
137,141,143,144,145,145,143,140,136,132,128,125,122,120,118,117,116,117,117,118,120,121,123,124,124,125,126,127,129,130,130,129,
128,127,126,125,125,125,125,126,126,128,130,133,137,140,142,143,143,143,141,138,135,131,128,125,123,122,121,120,120,120,120,120,
120,121,121,122,123,124,125,127,128,129,129,129,129,128,127,126,125,124,124,124,126,127,129,131,134,137,139,141,142,142,141,139,
137,134,132,129,127,126,124,123,122,121,120,119,118,118,118,119,121,122,124,126,127,129,130,130,130,130,129,128,127,126,125,125,
125,126,127,128,129,131,133,135,137,138,139,140,139,138,137,135,133,131,129,128,126,124,122,121,120,119,118,118,119,120,121,123,
124,125,127,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,129,129,130,132,134,136,137,138,139,138,137,136,
134,132,130,128,124,124,124,121,119,118,118,119,119,120,121,122,123,125,126,127,127,128,130,130,129,128,128,129,129,128,127,127,
128,129,130,129,129,130,133,135,134,133,134,136,136,135,134,133,132,131,130,128,126,125,123,122,121,120,120,120,121,122,124,125,
131,136,117,104,116,138,139,122,111,123,140,145,133,126,130,135,133,126,124,129,133,133,130,129,132,135,135,133,131,132,134,134,
130,126,126,127,127,124,123,124,125,124,123,122,123,124,124,123,124,126,126,125,125,127,128,128,128,130,131,130,129,129,130,129,
128,128,129,130,130,129,130,132,133,133,132,133,133,133,132,131,131,130,129,127,126,126,126,125,124,123,123,123,123,123,123,123,
124,125,125,126,127,127,127,129,129,129,129,129,130,130,130,129,130,130,129,128,129,129,129,129,129,129,130,130,131,131,132,132,
133,132,131,130,130,130,129,127,126,126,125,124,121,122,125,124,122,124,125,128,130,130,126,125,126,128,127,125,127,129,126,125,
126,127,127,127,127,128,126,126,131,137,137,136,136,138,140,138,135,134,133,130,127,124,121,120,119,119,119,120,122,124,126,126,
129,131,130,130,131,128,128,127,124,124,125,123,123,125,125,124,124,123,122,121,122,128,135,138,139,142,146,150,150,145,141,141,
137,130,124,120,117,112,108,109,114,117,119,124,130,133,135,136,136,135,133,129,127,123,119,117,116,115,114,115,119,120,118,116,
118,120,127,144,156,155,154,160,165,161,151,141,137,132,122,112,108,105,102,100,101,109,121,127,130,138,145,145,141,138,135,133,
127,118,114,113,110,109,109,110,115,119,117,115,115,114,118,139,163,168,164,171,177,172,159,143,134,129,114,101,101,101,95,95,
102,114,127,133,136,145,151,147,141,134,130,127,120,111,109,109,107,108,110,113,117,120,118,116,115,111,115,148,177,172,167,179,
185,175,154,133,129,124,102,91,97,98,97,99,106,126,141,139,142,154,152,140,130,124,123,119,108,104,111,113,111,112,115,119,
123,119,113,110,108,105,119,163,188,176,175,192,193,173,143,122,121,112,87,82,95,99,101,107,117,139,152,148,148,154,145,129,
118,112,111,111,105,107,116,121,121,122,124,124,123,117,109,103,97,92,112,168,198,181,182,206,204,173,136,112,111,102,76,74,
98,109,109,117,132,151,161,150,141,147,139,116,102,100,103,108,109,114,128,134,130,129,131,127,118,109,100,96,89,86,107,165,
210,201,191,209,207,171,126,96,93,94,74,68,97,124,129,134,144,160,168,149,129,130,126,105,91,93,107,119,120,124,138,142,
134,127,123,119,110,100,95,94,90,88,105,157,218,219,199,209,206,169,121,85,78,84,75,73,103,134,144,150,153,162,167,146,
118,111,110,101,92,93,107,126,133,134,143,146,138,128,118,111,103,95,90,93,95,94,106,138,203,241,211,195,203,173,125,85,
65,81,89,78,100,141,157,160,159,154,158,144,110,96,103,101,96,100,112,134,144,138,145,148,137,123,111,104,102,94,87,98,
105,104,107,117,155,221,232,193,187,189,154,111,77,72,97,97,88,120,155,156,156,150,144,146,126,98,99,107,100,102,112,127,
144,144,141,148,143,124,112,106,99,97,94,97,106,110,109,112,121,162,224,221,183,185,181,146,105,79,82,103,97,96,134,157,
151,151,145,142,137,113,96,103,108,103,108,120,134,145,142,141,145,135,118,111,105,99,97,98,103,111,113,112,113,120,159,218,
215,179,181,178,144,105,82,88,109,103,101,137,158,147,145,145,137,128,108,96,106,109,104,114,127,134,142,144,143,142,129,117,
113,106,97,99,103,107,114,115,113,114,113,145,213,219,177,178,183,149,111,88,91,111,101,99,138,155,140,142,147,141,128,107,
100,109,106,102,112,126,132,138,142,144,139,130,122,115,105,100,102,105,107,113,115,116,113,111,129,192,224,184,173,188,161,121,
94,90,108,105,95,127,152,141,137,146,145,130,113,106,107,105,103,109,121,130,135,141,145,139,132,127,118,108,103,103,105,106,
111,114,118,116,111,118,172,220,189,170,191,172,130,103,97,107,101,93,124,147,135,132,147,147,132,116,113,111,102,101,110,116,
124,133,142,145,139,136,134,121,109,106,106,103,104,112,117,116,115,111,113,145,198,201,176,183,184,153,119,103,106,106,94,106,
134,136,125,137,149,139,121,118,117,107,102,107,112,118,126,138,145,140,137,139,128,114,109,109,104,102,107,115,113,112,115,114,
124,171,206,186,176,187,171,138,114,107,109,100,97,120,134,124,127,143,141,129,123,123,114,103,107,111,111,120,133,140,139,139,
142,135,121,114,113,107,103,105,112,110,108,114,113,115,145,192,198,175,186,186,154,131,116,112,107,95,107,126,117,117,135,137,
132,130,130,125,113,108,114,111,112,123,132,132,134,140,139,130,122,120,114,107,107,110,107,105,111,111,109,128,164,192,185,182,
191,173,145,133,121,110,102,100,113,116,111,121,132,129,131,135,131,122,117,117,113,109,116,125,127,130,135,138,133,127,126,122,
114,111,112,109,104,103,110,110,112,140,176,187,179,188,187,161,144,134,120,111,102,105,116,108,109,125,126,124,133,134,127,121,
121,120,113,113,121,124,124,130,135,132,128,129,127,119,117,118,113,108,105,110,108,103,128,154,170,175,180,188,174,158,148,135,
124,111,107,112,108,106,113,117,118,126,131,128,125,127,126,120,117,121,123,122,125,130,130,127,127,127,123,120,119,117,113,110,
111,108,105,117,133,154,170,171,179,179,168,159,147,136,127,115,112,111,106,106,111,112,116,124,125,124,126,127,125,123,124,125,
124,125,126,127,125,125,125,124,123,120,120,118,115,114,114,113,107,121,137,148,162,165,171,173,162,158,151,139,131,123,119,114,
108,109,110,110,114,118,120,121,124,125,125,126,126,128,127,126,128,126,124,123,122,122,121,120,120,118,117,118,118,114,114,125,
134,147,156,160,165,166,162,156,151,144,136,129,123,117,112,110,110,109,112,115,116,119,122,123,125,127,129,129,129,129,128,127,
125,122,121,121,121,120,120,120,119,119,121,118,117,128,132,142,151,151,158,159,156,154,151,148,140,134,130,122,117,114,112,110,
110,112,111,114,119,120,123,126,129,130,130,131,130,128,127,124,122,122,121,120,120,121,120,120,124,123,121,125,126,136,141,143,
151,152,153,152,150,152,144,140,138,128,123,120,116,113,110,111,112,111,115,118,120,124,127,129,131,131,131,130,128,126,123,122,
123,121,120,123,124,123,123,127,124,125,125,128,134,133,139,146,144,145,146,150,147,142,143,139,132,129,125,120,116,113,113,112,
111,113,117,118,122,125,128,130,130,131,131,129,129,127,125,125,123,123,125,123,125,127,125,126,125,125,124,126,132,134,136,141,
141,143,144,145,144,141,140,137,133,129,124,123,118,115,115,114,115,116,120,122,124,126,128,130,130,130,130,128,128,125,125,124,
123,124,124,126,126,125,127,126,125,125,126,127,130,131,134,137,136,138,139,140,140,139,139,137,134,133,130,126,123,121,119,119,
118,119,120,122,123,125,126,127,127,128,128,127,127,126,126,125,125,126,126,125,126,125,128,125,126,127,127,127,127,128,130,131,
133,136,134,136,135,135,136,133,135,135,131,132,131,128,128,125,125,125,123,125,124,124,125,124,124,126,125,126,125,125,127,124,
126,126,125,127,125,127,127,125,127,128,126,128,128,128,129,127,129,131,130,132,132,131,132,131,132,133,131,133,133,133,133,132,
132,130,130,129,128,126,126,126,125,124,125,124,123,124,124,125,123,125,125,125,126,126,128,126,124,128,128,126,128,127,129,126,
127,131,128,126,130,130,130,127,130,133,129,130,134,133,133,133,135,135,132,132,133,130,130,127,128,126,125,124,124,123,124,123,
123,124,124,124,125,126,125,125,127,127,125,127,126,128,127,127,130,127,128,129,127,128,128,130,130,129,131,130,129,132,132,132,
132,132,133,133,132,133,132,130,130,129,128,127,126,126,125,124,126,125,125,125,126,125,125,125,125,123,125,125,125,124,126,127,
125,127,127,129,127,129,130,129,129,129,130,130,129,131,130,129,130,131,130,130,131,132,131,131,131,131,131,131,129,130,129,128,
128,126,128,126,125,126,125,125,125,125,125,124,125,125,124,125,126,126,125,127,128,128,128,129,130,129,129,131,131,129,129,130,
130,128,129,130,128,127,126,129,128,126,128,128,128,129,128,130,130,128,129,131,130,128,129,130,130,127,129,129,127,126,127,128,
126,126,127,127,126,127,126,128,127,127,128,128,127,127,128,127,126,126,128,125,127,127,126,127,125,127,129,127,129,128,128,130,
128,129,130,129,130,130,130,132,130,131,133,132,132,131,131,131,129,130,129,128,128,127,126,127,125,126,126,126,125,125,125,126,
124,124,128,124,125,126,126,127,124,126,129,124,128,130,126,128,128,129,128,127,129,130,127,131,133,132,132,133,136,134,132,136,
135,131,132,132,131,128,125,128,126,121,125,124,123,123,122,126,123,122,126,125,125,125,126,127,125,126,127,126,128,126,126,128,
126,127,129,127,128,127,131,131,131,133,134,134,134,135,138,136,136,137,134,133,130,129,129,124,124,125,122,122,122,122,124,120,
122,126,122,123,127,125,126,125,127,130,124,126,130,127,125,125,127,127,124,125,131,129,129,131,132,135,131,132,138,134,133,137,
137,134,133,133,134,130,126,130,127,123,125,123,125,121,120,126,121,122,124,122,123,124,124,129,122,126,131,122,125,131,126,125,
126,130,130,122,131,137,121,131,135,128,130,130,139,134,126,139,138,129,134,136,132,128,130,135,127,124,135,125,121,130,125,123,
123,126,128,117,125,127,119,124,124,124,124,121,126,127,121,127,127,126,130,122,131,133,119,131,128,124,130,127,137,137,128,145,
139,133,144,135,138,138,130,141,129,128,134,120,126,124,119,123,117,121,121,116,124,120,120,125,123,123,128,123,127,128,119,131,
124,123,128,120,128,123,120,129,126,132,138,134,144,145,141,149,146,145,147,137,141,136,126,130,121,117,117,111,114,110,111,118,
114,119,124,122,128,129,125,132,129,130,129,125,130,123,122,122,118,120,117,120,129,126,135,143,141,151,151,150,156,149,148,146,
137,137,128,121,121,112,110,109,105,108,108,110,117,119,123,128,129,132,133,131,132,130,127,128,122,123,121,116,117,112,122,135,
125,137,152,144,150,159,155,153,152,152,143,135,135,123,116,115,107,105,104,103,107,107,113,120,121,127,130,131,133,132,132,131,
126,127,122,119,118,113,113,117,129,132,133,151,150,149,165,158,156,161,151,146,140,131,123,113,112,106,98,103,102,101,108,113,
117,123,129,132,132,135,134,131,130,127,123,121,118,112,111,115,124,131,133,146,153,152,163,163,158,161,155,149,141,131,125,113,
109,105,98,98,99,101,106,111,118,122,128,133,133,134,135,133,129,128,122,120,114,111,110,115,128,130,138,151,151,158,164,160,
163,160,153,148,136,129,119,109,107,99,97,98,97,105,108,113,123,125,132,136,134,136,135,130,128,122,121,116,110,110,111,125,
133,134,151,155,155,165,163,160,161,153,147,137,127,120,110,105,102,98,99,99,104,109,114,123,126,131,135,133,134,133,127,126,
121,117,115,111,109,116,130,132,142,158,158,160,165,161,158,157,151,141,133,125,113,108,107,102,103,106,105,107,112,118,122,125,
130,129,125,126,122,120,118,117,116,110,116,118,130,142,147,162,164,165,168,159,157,153,145,140,129,123,114,107,109,104,107,112,
108,114,114,115,121,120,123,123,119,120,117,114,116,113,117,114,115,125,135,147,157,166,171,171,168,162,154,148,141,134,125,119,
113,110,110,110,114,113,116,117,114,116,117,115,116,116,112,112,111,111,111,115,115,115,119,129,145,155,165,175,176,173,166,158,
150,141,134,128,120,117,115,113,115,118,119,117,119,117,113,115,114,111,111,109,107,107,106,109,109,111,114,113,127,145,157,168,
179,182,175,168,162,149,140,136,126,120,119,117,116,118,121,121,119,119,118,113,113,111,108,107,106,106,104,104,107,106,109,110,
113,129,147,161,175,184,184,177,168,159,146,136,133,125,120,119,119,120,120,123,122,119,118,115,111,110,108,108,106,105,105,104,
105,105,105,107,109,122,139,155,171,179,185,184,172,164,154,142,136,129,125,121,118,121,119,119,122,118,116,113,110,111,106,108,
108,105,106,105,105,105,104,107,106,118,140,154,168,179,186,185,172,164,157,144,137,130,127,122,118,122,120,118,117,116,116,109,
108,110,108,109,107,108,108,106,107,106,106,107,107,121,138,152,166,177,183,180,171,164,156,146,138,132,129,124,121,121,120,119,
115,114,112,108,107,106,108,108,107,108,109,108,108,107,107,107,110,122,141,156,167,174,179,177,168,159,151,147,140,133,131,128,
127,124,121,120,115,111,108,105,106,105,106,107,107,109,108,108,109,109,109,108,115,130,146,159,166,170,173,171,164,155,149,146,
142,137,132,129,129,127,123,117,113,110,107,106,106,106,108,109,109,110,110,110,110,110,110,111,117,129,143,154,160,163,165,164,
160,155,151,148,145,141,137,133,130,127,124,119,116,113,110,109,109,109,109,108,108,108,108,107,106,105,105,107,115,126,138,148,
156,161,164,165,165,163,160,156,152,147,142,137,132,127,123,118,114,111,108,107,105,105,104,104,104,104,103,103,103,103,105,110,
119,129,141,151,157,163,166,168,168,166,163,159,154,148,143,137,130,125,120,116,112,109,106,104,103,103,102,102,102,102,103,103,
103,104,106,113,122,133,144,152,158,164,167,169,168,166,162,158,153,147,141,135,128,123,119,115,111,108,106,104,103,102,102,102,
102,102,102,102,103,104,108,117,127,138,147,154,160,164,168,169,167,164,160,156,151,146,140,133,127,122,118,114,111,108,106,104,
103,102,102,102,102,103,104,104,104,105,110,118,129,140,148,154,160,164,167,168,166,163,159,154,150,144,139,133,127,121,117,114,
111,108,105,103,102,102,102,103,103,104,104,104,105,107,112,119,129,140,148,155,160,164,166,167,165,162,158,153,149,144,139,133,
127,122,117,114,112,108,106,103,102,102,102,103,103,103,103,104,105,107,112,120,130,141,149,156,160,164,166,167,166,162,158,153,
148,144,138,133,126,121,116,113,111,108,106,103,102,101,102,103,104,104,105,105,106,107,112,119,129,140,148,155,160,164,166,167,
166,164,160,155,149,144,138,133,127,121,117,113,111,109,106,104,101,101,101,103,104,104,105,105,106,107,111,118,126,137,146,154,
160,164,167,167,167,165,161,156,150,145,139,134,128,122,117,113,110,109,106,104,102,101,101,102,104,104,105,105,106,108,110,117,
125,135,145,152,158,162,165,167,167,165,162,157,151,145,140,134,129,123,118,114,111,109,107,106,103,102,102,103,104,105,105,105,
106,107,109,115,122,132,142,149,156,160,164,166,167,166,162,158,152,146,141,136,131,125,119,115,112,110,108,107,105,103,102,102,
104,105,106,106,106,108,109,113,119,128,138,147,153,158,161,164,165,165,163,159,154,148,143,137,132,127,122,117,113,111,109,108,
106,104,103,103,104,106,107,108,108,109,109,111,116,123,133,142,150,155,159,162,164,165,164,161,157,151,145,139,134,129,124,119,
114,112,110,109,108,106,105,103,104,105,107,108,108,109,109,110,113,118,127,135,145,152,156,160,163,165,165,163,159,154,148,142,
137,132,127,122,116,114,111,110,110,108,107,105,104,104,106,108,109,109,109,110,111,114,121,128,138,146,153,158,161,164,165,165,
162,158,153,146,140,135,129,124,120,116,113,112,111,109,108,106,105,105,106,108,109,109,109,109,110,112,116,122,130,139,147,154,
158,162,164,165,164,161,157,152,146,139,133,128,123,119,114,112,111,110,109,108,107,105,106,107,108,110,110,110,110,112,113,116,
122,128,138,146,153,158,161,164,164,164,162,157,152,145,139,133,128,123,119,115,112,111,110,109,109,107,106,105,106,109,111,112,
112,112,113,114,116,120,128,136,145,151,156,159,161,163,163,161,157,152,146,140,135,129,125,120,116,113,111,111,110,109,108,106,
106,107,109,111,112,113,113,113,114,116,119,124,131,139,148,153,157,160,161,163,161,159,155,149,143,137,132,127,123,118,114,112,
110,111,110,109,107,106,107,108,110,112,113,113,113,114,116,118,121,127,134,142,150,155,158,160,162,162,160,157,152,147,140,134,
129,125,121,117,114,112,111,111,110,109,107,106,107,109,111,113,114,114,115,116,118,120,123,127,134,142,150,155,158,159,160,160,
159,156,152,146,140,134,129,125,121,117,114,112,110,110,110,109,108,107,108,109,111,113,115,116,117,119,120,121,123,126,132,140,
147,153,155,157,157,157,157,155,151,147,141,135,131,127,123,120,116,113,111,110,110,110,109,108,109,111,112,114,116,117,119,120,
121,122,123,124,127,133,140,146,151,153,153,154,154,154,152,150,145,141,136,131,127,123,120,117,114,113,112,111,110,110,110,111,
113,114,116,117,118,120,121,122,122,123,124,126,130,136,143,147,149,150,150,152,152,152,150,146,142,137,132,128,124,119,118,120,
115,114,112,111,111,111,113,114,114,113,114,117,120,121,122,121,121,122,125,127,132,143,150,155,154,153,152,149,147,144,142,138,
134,132,128,125,121,119,119,117,117,115,113,113,112,113,114,115,116,117,120,122,125,126,126,127,126,127,126,126,126,131,143,150,
154,152,149,149,146,142,137,134,134,132,130,124,121,121,121,121,118,116,115,116,117,115,115,115,118,120,122,123,124,127,128,128,
128,127,125,123,122,121,126,137,145,150,149,149,149,148,144,138,136,134,134,131,125,122,121,122,122,120,119,118,118,118,117,116,
116,118,120,121,122,123,126,127,128,127,126,125,123,122,121,121,127,136,144,149,148,149,149,147,144,139,136,135,134,131,125,122,
121,122,123,121,120,119,119,118,116,116,116,118,120,121,122,123,125,126,126,126,125,126,126,125,124,122,124,131,140,145,147,146,
148,148,147,143,138,136,135,133,128,122,120,119,121,121,120,119,119,119,119,119,119,120,121,122,122,123,124,126,126,127,127,127,
127,127,126,125,124,124,126,131,136,139,141,142,144,145,144,142,140,138,137,134,130,125,122,121,120,120,120,119,119,120,120,121,
121,121,121,122,122,123,124,125,126,127,128,129,130,130,130,130,130,128,127,126,127,129,131,132,133,134,136,137,137,138,138,138,
137,136,133,130,127,125,124,123,122,121,121,121,121,122,122,123,123,124,124,125,125,125,125,126,126,127,127,128,128,128,127,126,
125,125,126,128,129,130,131,133,135,136,137,137,137,138,138,137,135,133,131,130,128,127,125,124,123,122,121,121,121,121,121,122,
122,123,124,125,125,126,127,127,127,127,127,127,127,127,127,127,127,127,127,128,129,131,131,132,134,135,136,137,138,138,138,137,
135,133,131,129,128,127,125,124,123,122,121,121,121,121,121,122,122,123,123,124,125,125,126,127,127,128,128,129,129,129,129,129,
129,128,128,127,127,128,128,128,129,130,132,134,135,136,137,138,138,137,136,135,133,131,129,127,125,124,122,121,120,120,119,119,
120,120,121,122,123,124,124,125,126,127,128,129,129,130,130,130,130,130,130,129,129,129,129,130,131,131,132,133,134,135,136,136,
136,136,135,133,131,129,127,126,125,123,122,120,120,119,119,120,120,121,122,123,124,125,127,128,129,130,131,131,131,131,131,131,
131,131,130,130,130,129,129,128,127,127,126,126,126,126,126,127,128,129,130,131,132,133,133,133,133,132,132,131,129,128,127,126,
125,125,124,124,124,124,124,124,124,124,125,125,126,126,127,127,128,128,128,128,128,128,128,128,127,127,127,127,128,128,128,129,
130,131,133,134,135,136,137,136,135,134,132,131,129,128,126,125,124,123,122,122,122,121,122,122,123,123,124,125,126,126,127,128,
128,129,129,129,129,129,129,129,129,128,128,127,127,127,127,127,127,127,127,128,130,131,132,134,135,136,136,136,135,134,133,132,
131,129,128,126,125,124,123,122,122,122,122,122,122,123,123,124,125,125,126,127,127,127,128,128,128,129,128,128,128,128,128,128,
128,128,128,128,128,129,129,130,132,133,134,135,136,137,136,136,134,133,132,130,129,127,126,124,123,122,122,121,121,121,121,121,
122,122,123,124,125,126,127,128,129,129,129,130,130,130,129,129,129,128,128,128,127,127,127,128,128,128,129,130,131,133,134,135,
136,136,137,136,135,134,133,131,130,128,126,125,123,122,121,121,120,120,120,120,121,122,123,124,125,126,127,128,129,129,130,130,
130,130,130,129,129,129,128,128,128,127,127,127,128,128,128,129,129,131,133,134,135,136,137,136,136,135,133,132,130,129,127,126,
124,123,122,121,121,121,120,121,121,121,122,123,124,125,127,128,128,129,130,130,130,130,130,130,130,129,129,128,128,127,127,127,
127,127,127,128,128,129,130,131,133,134,135,136,136,136,136,135,133,131,130,128,127,125,124,122,122,121,121,121,121,121,122,122,
123,124,125,126,127,128,129,129,130,130,130,130,130,129,129,129,128,128,128,127,127,127,127,127,128,128,129,130,130,131,133,134,
135,136,136,136,135,134,133,131,129,128,126,125,124,123,122,122,121,121,121,122,122,123,123,124,125,126,127,128,129,129,129,129,
129,129,129,129,129,128,128,128,128,127,127,127,127,127,128,129,129,130,131,131,132,133,134,135,135,135,135,134,133,131,130,128,
127,125,124,123,122,122,121,121,121,122,122,123,124,125,125,126,127,128,129,129,130,130,129,129,129,129,129,128,128,128,128,127,
127,127,127,127,128,128,129,129,130,130,131,132,133,134,134,135,135,135,134,133,131,129,128,127,125,124,123,123,122,122,122,122,
123,123,124,124,125,126,126,127,127,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,129,129,130,
130,130,131,131,132,133,134,134,134,134,133,132,130,129,128,126,125,125,124,123,123,123,123,123,123,124,124,124,125,125,126,126,
127,127,128,128,128,128,128,128,128,128,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,130,130,131,132,133,133,134,
133,133,132,131,130,129,127,126,125,125,124,124,123,123,123,123,123,124,124,124,125,125,126,126,127,127,128,128,128,128,129,129,
129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,130,131,132,132,133,133,133,133,132,131,130,129,128,127,
126,125,124,124,124,123,123,123,123,124,124,124,124,125,126,126,127,128,128,129,129,129,129,129,129,129,129,129,129,129,129,128,
128,128,128,128,128,128,128,128,129,129,129,129,130,131,131,132,132,133,133,132,132,131,130,129,128,127,126,126,125,125,124,124,
124,124,124,124,124,124,125,125,126,127,127,128,128,129,129,129,130,130,130,129,129,129,129,129,129,128,128,128,128,128,128,128,
128,128,128,128,128,128,129,130,131,131,132,132,132,132,132,131,130,129,128,128,127,126,126,125,125,124,124,124,124,124,124,125,
125,125,126,127,127,128,128,129,129,129,130,130,130,130,130,129,129,129,129,129,128,128,128,128,127,127,127,127,127,127,128,128,
128,128,129,129,129,130,130,131,131,131,131,131,131,130,130,129,128,128,127,126,126,125,125,125,124,124,125,125,125,126,126,127,
127,128,128,129,129,129,129,129,129,128,128,128,128,128,128,128,128,132,126,125,129,127,128,126,127,128,128,128,128,129,130,130,
130,130,130,131,131,131,130,130,131,130,131,130,127,128,127,128,127,127,127,126,124,124,125,125,124,124,123,123,123,126,127,130,
130,130,131,131,131,131,131,130,130,129,128,127,125,125,124,124,125,127,133,125,129,129,131,131,132,133,124,126,123,128,128,133,
130,133,138,137,135,130,126,129,126,122,123,125,126,124,123,126,127,128,126,127,130,130,129,126,126,129,133,132,124,123,129,134,
126,113,112,120,126,120,111,115,125,129,125,121,125,133,147,154,155,153,150,152,154,146,139,132,127,127,124,116,109,104,105,110,
113,113,115,121,128,133,134,134,135,137,137,133,128,124,122,121,120,117,116,117,120,121,121,122,125,125,124,124,124,125,131,147,
157,161,158,153,155,156,152,144,133,124,121,118,112,105,98,98,104,110,115,118,124,131,137,140,140,139,137,136,134,130,124,119,
117,115,115,116,116,118,120,122,124,125,125,125,125,124,124,127,137,153,159,159,158,155,155,153,147,143,133,125,121,115,110,106,
100,99,102,106,113,120,124,130,134,138,141,141,139,137,133,130,126,121,119,116,115,117,118,119,121,120,121,122,123,126,125,122,
121,125,141,156,160,159,154,150,153,155,153,147,135,125,120,117,113,109,102,97,99,105,112,118,121,125,129,134,139,141,141,139,
135,132,129,126,124,121,118,117,118,120,121,120,118,120,122,123,123,121,122,124,133,146,156,161,158,152,150,150,152,152,145,134,
124,116,112,110,107,103,100,101,106,113,119,125,129,131,134,137,139,141,138,133,129,127,127,125,122,121,120,119,121,121,121,120,
119,120,122,122,120,121,126,137,148,156,158,156,152,150,151,152,150,144,134,123,115,111,109,107,105,102,102,105,111,119,126,131,
132,133,134,137,139,138,134,129,127,126,125,124,124,123,122,119,120,123,123,121,120,119,118,119,122,129,139,147,153,155,153,151,
151,152,151,147,141,133,124,117,112,109,107,106,105,105,107,112,119,125,128,131,133,134,134,135,135,134,132,129,127,127,127,126,
125,124,122,122,121,120,120,119,117,116,117,121,129,137,146,153,154,153,151,150,152,152,149,143,134,124,116,111,109,108,107,105,
105,108,112,118,124,129,133,134,135,134,134,133,133,131,129,127,126,126,125,126,125,125,124,121,119,118,119,118,117,117,120,126,
133,142,150,154,156,155,153,152,151,148,144,138,129,118,110,107,106,107,107,107,108,111,117,122,128,132,134,134,134,133,132,132,
132,131,129,128,126,125,125,125,126,125,122,119,118,118,119,119,119,119,123,130,139,148,154,157,156,153,150,149,148,145,141,133,
124,115,108,105,105,106,108,110,112,114,118,123,129,133,135,136,135,133,131,130,132,132,130,127,125,124,124,125,125,122,119,116,
118,120,120,119,118,120,126,134,145,153,157,157,156,153,151,149,146,142,137,128,119,112,106,105,106,107,108,109,110,114,121,128,
131,133,134,134,134,132,131,132,132,131,129,127,125,125,124,123,123,121,118,118,119,119,118,119,119,124,130,139,149,156,158,158,
155,152,149,147,144,140,133,125,116,108,104,104,105,107,108,110,113,117,122,128,132,135,136,135,134,133,133,133,133,132,128,125,
123,123,123,124,123,119,116,115,117,119,120,118,120,126,135,145,153,158,158,157,155,152,150,147,144,138,129,119,111,105,103,104,
105,106,107,109,112,118,126,132,135,136,135,135,135,136,136,134,132,128,125,124,123,125,125,123,119,117,117,118,119,119,119,118,
122,128,137,146,154,158,159,157,154,152,150,147,143,137,127,117,109,104,103,104,104,104,104,107,112,120,127,133,136,136,135,135,
136,138,138,136,131,127,124,122,123,124,124,122,118,114,114,117,120,121,120,118,120,129,140,151,157,159,157,155,154,154,154,151,
143,133,122,112,108,106,106,104,102,99,101,106,115,125,132,135,134,133,134,137,141,143,140,133,127,124,123,123,124,123,121,118,
116,117,119,120,119,118,118,119,122,132,142,151,156,157,156,155,156,157,156,151,142,132,122,116,111,107,103,98,96,97,101,109,
116,122,125,128,132,137,142,143,142,140,137,135,132,129,126,122,119,118,118,119,119,118,117,115,116,120,121,121,123,130,140,149,
155,158,158,158,158,158,156,150,143,135,126,118,112,106,100,96,95,96,101,106,112,119,125,130,134,138,141,143,143,142,140,137,
133,129,125,122,120,119,118,117,116,115,116,117,118,120,120,120,122,128,138,147,151,154,156,158,161,162,158,152,145,137,132,125,
116,108,99,95,95,96,98,102,106,113,121,127,132,136,140,144,145,144,142,140,136,133,128,125,122,119,117,116,115,116,115,115,
116,118,121,121,121,125,132,141,150,152,155,159,160,162,161,154,149,144,137,130,121,111,105,98,95,94,94,97,103,108,115,122,
128,134,139,143,145,146,145,144,140,136,132,128,124,120,118,116,115,113,113,113,114,116,118,119,119,122,128,135,145,150,152,158,
161,162,163,160,154,150,143,136,128,118,109,103,97,94,93,93,97,102,108,115,122,128,135,140,143,146,147,146,145,141,138,134,
129,125,121,118,115,114,113,112,112,113,114,118,120,119,123,128,133,145,149,151,160,162,160,164,160,154,152,144,136,129,118,111,
104,96,94,92,92,97,101,106,115,120,127,135,139,143,147,146,147,145,141,138,134,129,126,121,117,115,113,112,112,112,114,115,
116,120,121,123,130,137,145,147,154,159,158,161,162,156,155,151,142,137,128,118,112,103,98,96,92,95,98,100,108,114,119,129,
134,137,143,145,146,146,144,141,139,135,131,126,122,119,116,114,113,112,113,114,115,117,120,122,124,128,133,143,147,148,157,156,
156,161,156,152,152,144,137,133,122,114,109,101,98,95,96,98,101,107,113,118,126,132,136,141,144,145,146,143,142,139,135,132,
128,124,121,118,115,114,112,113,114,115,117,120,121,124,126,129,136,144,145,149,156,153,155,158,151,152,150,140,137,131,121,115,
109,104,100,99,99,100,104,108,113,120,126,131,137,140,143,145,144,143,141,138,135,131,127,123,120,117,115,114,113,114,115,117,
119,123,124,126,128,131,132,140,143,143,151,150,149,154,150,147,149,143,136,134,127,119,116,110,105,103,104,102,105,109,110,117,
123,126,133,137,138,143,142,142,141,138,135,133,129,125,122,119,116,115,113,114,116,117,120,122,125,127,130,130,132,133,142,141,
140,149,145,144,152,144,143,148,139,136,135,127,120,118,112,108,108,107,105,108,111,112,119,123,125,132,135,135,139,139,138,139,
137,134,133,130,126,125,122,118,119,116,117,119,118,122,124,127,128,128,131,130,130,133,139,138,137,145,139,141,145,140,142,143,
138,137,134,129,123,122,117,112,114,111,109,113,111,114,119,121,125,130,130,134,135,135,136,135,135,134,132,130,128,126,124,123,
122,121,122,122,122,124,125,127,128,129,127,128,127,127,126,135,134,132,142,138,137,146,139,140,146,137,138,137,129,127,123,119,
116,114,115,112,114,114,114,119,120,123,128,128,131,132,133,134,133,134,133,132,133,129,129,128,125,126,123,124,124,123,124,124,
124,126,124,127,123,125,124,121,128,135,133,135,145,138,142,149,141,144,148,139,139,137,129,125,122,117,112,114,112,110,114,112,
114,119,120,124,128,130,131,133,135,133,135,136,132,134,133,128,130,128,125,126,124,123,123,123,122,122,124,122,124,125,121,122,
125,121,131,138,131,143,145,139,149,147,142,149,144,140,139,135,127,121,121,113,110,114,108,110,113,110,116,119,121,125,130,131,
132,135,137,133,137,136,132,134,131,127,129,125,122,125,123,121,123,122,121,124,123,123,125,124,124,123,126,122,132,140,131,145,
145,139,150,148,141,148,143,138,138,133,124,121,120,111,111,114,109,111,114,111,117,121,123,127,132,132,132,137,136,132,138,133,
131,134,128,126,128,124,122,125,122,122,123,123,123,123,126,123,126,126,124,123,126,122,136,138,131,149,143,139,153,143,141,150,
139,139,137,130,124,119,119,110,112,114,108,113,115,112,121,121,124,129,130,132,133,133,135,131,134,133,129,132,128,126,128,124,
124,126,123,125,124,124,125,123,126,123,124,124,122,121,122,123,137,134,135,151,142,145,154,143,145,149,140,138,136,130,120,121,
116,108,114,111,109,115,113,115,120,121,126,128,131,130,131,132,131,129,133,131,131,133,131,130,130,129,128,128,127,126,125,123,
122,121,122,121,121,121,122,120,122,122,135,140,136,153,149,146,155,145,144,147,139,137,133,129,120,116,117,109,112,115,111,116,
116,115,120,120,125,126,128,130,127,128,129,125,131,131,131,135,134,134,134,132,131,129,129,127,125,124,121,120,120,119,119,119,
120,117,121,121,126,143,136,147,155,145,154,151,143,146,143,139,133,131,124,115,120,112,111,117,113,115,117,115,118,119,123,123,
125,127,123,126,127,125,129,131,133,135,136,136,136,135,132,131,130,127,126,124,120,120,119,118,118,119,119,119,120,120,124,131,
143,141,151,156,148,154,149,142,146,140,137,132,127,124,115,117,115,112,118,115,116,117,114,119,117,121,122,121,125,122,125,128,
125,133,133,135,139,136,139,136,134,134,130,128,126,123,121,118,118,118,117,121,119,120,122,119,123,124,132,147,142,152,158,148,
153,148,142,143,138,136,129,128,123,116,120,115,115,118,115,117,114,115,116,115,119,118,120,122,123,127,127,133,134,136,141,137,
139,138,135,134,131,129,126,125,123,119,119,119,118,122,119,120,120,119,118,119,123,131,145,144,152,158,151,151,150,144,142,139,
137,129,128,124,117,119,116,116,118,115,116,114,113,115,113,116,118,119,123,124,127,130,133,137,139,140,140,139,138,135,133,131,
129,127,125,122,120,119,118,120,119,119,119,118,118,118,118,121,129,145,144,150,159,153,152,150,146,145,138,138,133,125,125,119,
119,118,117,120,115,115,115,112,113,113,116,117,118,123,124,126,131,133,137,138,139,140,138,137,135,132,131,129,127,125,123,121,
120,119,120,120,120,120,119,119,117,117,120,123,133,146,148,151,156,154,151,146,145,145,138,135,132,128,123,118,119,118,116,116,
115,113,111,111,114,114,116,119,121,123,126,129,133,135,137,139,139,137,136,136,135,132,131,130,128,126,124,124,123,121,121,121,
121,120,119,119,119,119,120,122,126,135,144,145,147,148,147,147,144,142,142,141,137,133,129,127,124,121,119,117,116,113,112,112,
114,115,116,118,121,123,125,127,129,132,134,134,134,134,134,134,133,133,133,132,131,129,128,127,126,124,123,121,120,119,118,118,
118,119,119,120,123,127,135,141,143,145,146,147,148,148,147,147,144,140,135,130,126,123,121,118,116,114,112,111,111,112,114,115,
116,118,119,122,124,127,130,132,134,134,135,136,137,137,137,136,134,132,130,128,126,124,122,121,120,119,118,118,118,119,120,121,
124,127,132,139,142,145,146,146,148,148,147,146,144,140,135,130,126,123,121,119,117,115,113,112,112,112,114,115,116,118,119,122,
124,127,130,132,134,135,135,136,137,137,136,135,133,131,129,127,125,123,122,121,120,119,119,119,120,121,122,123,125,128,133,139,
141,143,145,145,146,146,145,145,142,139,135,130,127,124,122,120,117,115,113,113,112,113,114,115,117,118,120,123,125,128,130,132,
134,135,135,136,136,136,136,135,133,131,129,127,125,123,122,121,120,120,119,119,120,120,121,123,124,127,133,138,141,143,144,144,
146,146,146,146,143,140,136,131,128,124,122,120,118,116,113,112,112,112,113,115,116,118,119,122,124,127,129,131,133,135,136,136,
137,137,137,136,135,133,131,128,126,124,122,121,120,119,118,118,118,119,120,121,123,125,130,136,140,142,144,145,146,147,147,146,
144,141,138,133,130,126,123,121,119,117,115,113,112,112,113,114,115,117,119,121,123,125,127,130,132,134,136,136,137,137,137,136,
135,134,131,129,127,125,123,121,121,120,119,119,119,119,120,121,123,125,127,130,136,140,142,143,144,145,146,146,145,143,140,137,
133,129,126,123,121,119,117,115,114,113,113,114,115,116,117,119,121,124,126,128,131,133,134,136,136,136,137,136,136,135,133,131,
129,127,125,123,121,121,120,119,119,119,120,121,122,123,125,127,129,134,139,141,143,144,144,145,145,144,143,140,138,134,130,127,
123,121,119,117,116,114,113,113,113,115,116,118,119,121,123,125,128,130,132,134,135,136,136,136,136,136,135,134,133,131,129,127,
125,123,121,120,119,119,119,119,120,121,122,123,124,126,129,134,138,141,143,143,144,145,144,144,143,140,138,134,131,128,124,121,
119,118,117,115,114,113,114,115,116,118,120,121,124,126,128,129,131,132,134,135,136,135,135,135,134,133,132,130,128,126,125,123,
122,121,121,120,120,121,121,122,122,123,124,127,131,136,140,142,143,142,143,144,143,142,140,137,134,131,129,125,123,120,119,118,
117,116,115,115,115,117,119,120,121,123,124,126,128,130,131,134,135,135,135,136,136,134,131,130,131,131,126,123,122,122,122,119,
118,120,122,123,120,120,122,125,129,134,145,151,151,147,141,141,141,137,134,132,132,133,130,127,122,121,120,118,116,114,114,115,
116,118,119,122,124,125,127,129,131,132,133,134,136,136,134,134,134,134,133,129,128,127,126,123,120,120,120,120,120,118,119,121,
122,121,122,125,127,129,134,150,157,154,148,141,141,138,132,132,133,137,133,127,125,122,122,117,113,115,114,115,113,115,119,121,
124,124,126,129,129,132,133,134,136,134,134,133,133,134,132,131,129,127,124,121,122,122,120,120,119,122,123,121,121,121,124,127,
126,129,130,136,152,157,152,146,140,140,137,130,130,133,136,133,127,126,123,121,115,112,114,115,114,114,117,121,122,121,124,127,
130,129,130,133,134,134,133,134,136,135,134,133,131,129,127,125,123,122,121,121,121,121,120,121,121,122,123,123,125,128,129,129,
134,143,155,156,146,141,139,138,132,129,133,136,134,128,125,125,122,116,112,113,115,114,113,116,120,123,122,122,127,129,129,130,
132,135,135,133,134,136,136,134,131,131,130,128,125,122,121,121,120,120,121,122,123,122,122,123,122,124,127,130,133,136,141,153,
155,147,142,138,138,134,130,133,135,133,128,124,125,121,116,114,114,116,114,114,117,120,122,122,124,128,129,129,130,131,134,136,
134,134,135,134,133,131,130,129,127,125,122,122,121,120,121,121,122,122,121,123,124,124,126,128,131,131,133,138,149,153,147,144,
140,138,135,129,132,135,133,129,126,126,123,117,114,115,116,114,114,117,120,121,121,123,126,128,128,129,132,134,134,134,133,134,
134,134,132,132,131,128,125,123,122,123,122,121,122,123,123,121,121,123,124,126,127,130,132,132,135,140,150,154,145,140,137,136,
133,127,130,134,133,129,124,124,122,117,114,114,116,116,114,117,120,123,123,123,127,129,130,129,130,134,134,134,133,134,135,134,
133,131,130,128,125,123,122,122,123,122,122,123,122,122,122,124,125,126,126,128,130,133,137,144,152,148,143,139,136,134,131,130,
134,133,131,127,125,125,120,117,117,117,117,115,116,119,121,122,123,125,128,128,128,129,132,132,133,133,133,133,133,132,131,130,
128,126,124,123,123,123,123,123,123,123,123,123,124,125,126,128,130,132,132,133,135,141,148,144,140,138,136,136,130,129,133,133,
130,125,125,125,121,118,117,119,119,116,117,120,123,123,122,125,127,128,128,128,131,132,132,131,131,133,132,131,130,130,129,127,
124,124,124,125,124,125,126,126,125,124,125,126,127,128,131,132,133,134,135,141,147,143,138,134,133,133,129,127,130,131,130,125,
123,124,122,120,117,118,120,119,119,120,122,124,123,125,127,129,130,128,130,132,132,132,131,133,133,132,130,129,128,127,125,124,
124,125,125,125,125,125,124,125,126,126,128,129,130,130,131,134,137,142,142,139,137,134,132,131,130,131,131,130,128,127,126,123,
121,120,120,120,118,119,120,122,123,123,125,126,127,128,128,130,130,130,131,131,131,131,131,131,129,128,127,127,126,125,125,126,
127,127,126,126,126,126,127,128,130,131,132,133,133,133,138,139,136,135,134,134,131,128,128,130,131,129,125,125,124,123,120,119,
121,122,122,121,122,124,125,124,124,126,128,128,128,129,130,131,129,129,130,131,130,128,128,128,128,126,126,127,129,128,127,126,
127,128,129,129,129,131,132,133,133,135,136,135,133,133,132,132,130,129,130,130,128,126,125,125,124,123,123,123,123,123,123,123,
123,124,124,125,125,126,127,127,128,128,129,129,129,129,128,128,128,129,129,128,128,128,129,130,129,129,129,130,130,130,130,131,
131,132,133,133,133,133,133,132,131,130,130,129,128,128,127,126,126,124,124,123,123,122,122,123,123,124,124,124,126,126,126,126,
127,128,129,129,130,130,130,129,128,129,129,129,128,128,129,128,128,127,128,129,129,129,128,129,130,130,130,130,131,132,133,133,
132,131,131,130,130,129,129,129,128,126,126,126,125,124,123,124,124,125,124,124,124,125,125,125,126,127,128,128,128,128,128,129,
129,128,129,129,129,129,129,129,129,128,128,127,128,129,129,130,130,129,129,129,129,130,130,130,131,131,130,131,131,131,130,129,
129,129,129,128,128,127,127,126,126,126,126,126,125,125,125,125,126,126,126,126,126,126,127,127,127,128,128,128,128,129,129,129,
128,129,129,129,129,129,129,129,128,128,128,129,129,129,129,129,129,129,129,129,129,130,130,129,129,129,130,130,129,129,128,128,
128,128,127,127,127,127,126,126,126,126,126,126,126,126,126,126,126,126,127,128,128,128,128,128,127,128,128,128,129,129,129,129,
129,128,128,128,129,129,129,129,128,128,128,128,129,129,129,129,129,129,129,129,129,129,129,129,130,129,129,128,128,128,128,127,
127,127
};Как подключить звук
- Активные колонки (компьютерные, с питанием) — лучший вариант. Вход колонок соедините с GPIO25 через конденсатор 1–10 мкФ (в наборе электролитических конденсаторов есть 1; 2,2; 4,7 и 10 мкФ — подойдёт любой, лучше 10 мкФ; плюс — к GPIO25), землю — с GND платы. Начните с малой громкости.
- Усилитель + динамик — то же самое, только вход усилителя вместо колонок.
- Наушники и динамик напрямую к выводу подключать нельзя: ЦАП не рассчитан на такой ток, звук будет еле слышен, а вывод может пострадать.
Свой звук. Любую запись можно перевести в такой массив двумя командами (нужны ffmpeg и xxd):ffmpeg -i zvuk.mp3 -ac 1 -ar 8000 -f u8 zvuk.rawxxd -i zvuk.raw > zvuk.h
Содержимое фигурных скобок из zvuk.h вставьте вместо чисел в массиве duino_sound, а число из строки zvuk_raw_len — в duino_sound_len. Во флеш-память влезет около 2 минут звука.
Это самый простой способ вывода звука. Для музыки хорошего качества у ESP32 есть цифровой звуковой интерфейс I2S и модули вроде MAX98357.