Привет новички! Генерирую коды для вас!

Я понимаю, что есть люди, а именно новички (И я такой), которым подложи готовое

Ну лад

Я предлагаю так:

  1. Вы пишете что вам нада

  2. Я отправляю это нейросети

  3. Вы получаете правильный код и инструкцию от меня, что где и куда

Помогу чем смогу!!!

Пишите в коммы!!!

А если мне нужен код с lcd1602, 3 программных ШИМ частотой 10-20 Гц, UART для общения с sh-05(или как его, УЗ-дальномер).
Причём это всё на основе многозадачных программных таймерах с регулировкой периода от 1мс до 64с

1 лайк

Нужен драйвер и графическая библиотека, поддерживающие юникод и построчный вывод через частичное обновление для GDEM0097T61 под управлением esp32-c6 и esp-idf 5.3.

1 лайк

Можешь немного пояснить, это OLED?

Я новичок, я не разбираюсь в этих технологиях.

4 лайка

Предположим OLED…

Один из вариантов - использовать библиотеку U8g2 (U8g2lib). Эта библиотека предоставляет драйверы для многих различных графических дисплеев, включая OLED. Она поддерживает частичное обновление (частичное обновление) и юникод.

  1. Установите компонент U8g2 в Arduino IDE через Менеджер библиотек Arduino.
  2. Включите компонент в ваш код:
#include <U8g2lib.h>
#include <Wire.h>

U8G2_SSD1327_EA_W128128_2 u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE, /* clock=*/ 22, /* data=*/ 21); // GDEM0097T61

void setup(void) {
  u8g2.begin();
}

void loop(void) {
  u8g2.firstPage();
  do {
    u8g2.setFont(u8g2_font_ncenB14_tr);
    u8g2.drawStr(0, 24, "Hello, World!");
  } while (u8g2.nextPage());
  delay(1000);
}

И да, убедитесь, что вы правильно настроили контакты для подключения к вашему OLED-дисплею.
Если нада :slight_smile:, укажите нужный драйвер в конструкторе объекта U8G2_SSD1327_EA_W128128_2 если это соответствует с документацией вашего OLED-дисплея.
5. Запустите код и проверьте, отобразится ли текст (Hello World) на вашем OLED-дисплее.

Пожалуйста, помните, что адаптация кода может вносить изменения в зависимости от конфигурации вашего дисплея. Удостоверьтесь, что вы ознакомились с документацией для вашего OLED-дисплея и U8g2.

fatal error: Wire.h: No such file or directory
    6 | #include <Wire.h>

Кста, строчка:
U8G2_SSD1327_EA_W128128_2 u8g2(U8G2_R0, /* сброс=*/ U8X8_PIN_NONE, /* clock=*/ 22, /* data=*/ 21); // GDEM0097T61

НЕ ЗАБЫВАЙ ПРО НЕЁ!!!

Эта строка исходно кодирует объект u8g2 класса U8G2_SSD1327_EA_W128128_2, который представляет собой OLED-дисплей GDEM0097T61 с использованием библиотеки U8g2. Вот пояснение аргументов конструктора: cpp U8G2_SSD1327_EA_W128128_2 u8g2(U8G2_R0, /* сброс=*/ U8X8_PIN_NONE, /* clock=*/ 22, /* data=*/ 21); // GDEM0097T61 - U8G2_R0: Это параметр, указывающий на ориентацию экрана. Значение U8G2_R0 означает «обычную» ориентацию, без поворота. -

Кто разбирается в ардуино, ржут

1. Установите компонент U8g2 в Arduino IDE через Менеджер библиотек Arduino.

Сделано
Clipboard 1

Пробуй ещё раз

Для создания кода с использованием LCD1602, 3 программных ШИМ с частотой 10-20 Гц и UART для общения с УЗ-дальномером (например, SH-05), а также многозадачных программных таймеров на основе платформы Arduino, вы можете использовать библиотеку TimerOne для управления таймерами и библиотеку LiquidCrystal_I2C для работы с LCD1602. Чтобы включить UART для общения с дальномером, вы можете использовать встроенную библиотеку SoftwareSerial.

Вот пример кода, который может служить основой для вашего проекта:

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <TimerOne.h>
#include <SoftwareSerial.h>

// Пины для ШИМ
const int pwmPin1 = 9;
const int pwmPin2 = 10;
const int pwmPin3 = 11;

// Период ШИМ в миллисекундах (1000 миллисекунд = 1 секунда)
const unsigned long pwmPeriod = 100;

// Период таймера для задачи считывания дальности
const unsigned long distanceReadPeriod = 1000; // 1 секунда

// Объект для работы с LCD
LiquidCrystal_I2C lcd(0x27, 16, 2); // Используйте правильный адрес дисплея

// Объект для работы с дальномером по UART
SoftwareSerial uartSerial(2, 3); // RX, TX

void setup() {
  // Инициализация LCD
  lcd.init();
  lcd.backlight();
  lcd.setCursor(0, 0);
  lcd.print("Hello!");

  // Инициализация ШИМ
  pinMode(pwmPin1, OUTPUT);
  pinMode(pwmPin2, OUTPUT);
  pinMode(pwmPin3, OUTPUT);
  Timer1.initialize(pwmPeriod * 1000);  // переводим период в микросекунды
  Timer1.attachInterrupt(pwmFunction);

  // Инициализация UART
  uartSerial.begin(9600);
}

void loop() {
  // Ваш основной код здесь

  // Чтение дальности каждую секунду
  static unsigned long lastDistanceReadTime = 0;
  if (millis() - lastDistanceReadTime >= distanceReadPeriod) {
    readDistance();
    lastDistanceReadTime = millis();
  }
}

void pwmFunction() {
  // Ваш код для управления ШИМ
  analogWrite(pwmPin1, random(255));
  analogWrite(pwmPin2, random(255));
  analogWrite(pwmPin3, random(255));
}

void readDistance() {
  // Ваш код для чтения дальности по UART
  while (uartSerial.available() > 0) {
    char receivedChar = uartSerial.read();
    // Обработка принятых данных
  }
}

Пожалуйста, помните, что код приведен в качестве основы и требует доработки в соответствии с вашими конкретными потребностями. Убедитесь, что у вас установлены необходимые библиотеки (LiquidCrystal_I2C, TimerOne, SoftwareSerial) через менеджер библиотек Arduino перед компиляцией кода.

rkit , зачем тебе это 1го числа , рано утром ?

У среднестатистического меня вот даже сил нет троллить подобных помогаторов.

1 лайк

Комп можно-можно

Тут еще бы понять кто кого.

1 лайк

Интересный подход к программированию. Ну попробовал, результат такой же.

Пишет?