OpenAI ChatGPT

Чат-бот с искусственным интеллектом, разработанный компанией OpenAI и способный работать в диалоговом режиме

Относящиеся к программированию МК
Аватара пользователя
Vuktor
Сержант
Сообщения: 237
Зарегистрирован: 11.04.2021{, 14:44}
Репутация: 12
Имя: Vuktor

OpenAI ChatGPT

#1

Сообщение Vuktor » 05.03.2023{, 15:35}

Может кто ещё не слышал о ChatGPT. Чат-бот с искусственным интеллектом. Может писать код на разных языках программирования. Так же может объяснить уже готовый код, если его туда вставить. Как зарегистрироваться много информации в интернете. Сильно ещё не экспериментировал. Написал - "Напиши код мигания светодиодом на пин 13 для Ардуино Нано"
https://chat.openai.com/chat
gpt.jpg

Аватара пользователя
Phazz
Полковник
Сообщения: 2552
Зарегистрирован: 17.10.2016{, 15:38}
Репутация: 367
Откуда: Сургут
Имя: Анатолий

OpenAI ChatGPT

#2

Сообщение Phazz » 05.03.2023{, 16:22}

Vuktor, фу, delay. Скажите ему чтобы переделал по нормальному)

Аватара пользователя
Vuktor
Сержант
Сообщения: 237
Зарегистрирован: 11.04.2021{, 14:44}
Репутация: 12
Имя: Vuktor

OpenAI ChatGPT

#3

Сообщение Vuktor » 05.03.2023{, 16:48}

Phazz,
— Напиши код мигания светодиодом на пин 13 для Ардуино Нано, без функции delay
—Конечно! Чтобы мигание светодиодом на пин 13 происходило без использования функции delay, мы можем использовать функцию millis(), которая возвращает количество миллисекунд, прошедших с момента запуска программы.
Вот пример кода:
gpt.jpg
— "В этом коде мы используем переменную previousMillis для хранения времени последнего изменения состояния светодиода. В начале каждой итерации loop() мы получаем текущее время с помощью функции millis() и проверяем, прошло ли достаточно времени с момента последнего изменения состояния светодиода (с помощью выражения currentMillis - previousMillis >= interval). Если прошло достаточно времени, мы меняем состояние светодиода и обновляем значение previousMillis.

Таким образом, светодиод будет мигать с интервалом в 1 секунду (задается переменной interval). Если вы хотите изменить скорость мигания, просто измените значение этой переменной на нужное вам количество миллисекунд."

Отправлено спустя 5 минут 2 секунды:
Помимо писать и объяснять код, ChatGPT ещё может оптимизировать код, найти что-то или заменить

Отправлено спустя 4 минуты 15 секунд:
Phazz, Вот посложнее вопрос задал
— "Напиши программу для Ардуино подключенную к часам реального времени DS3231. Чтобы сделать часы которые будут сигнализировать время миганием светодиода. Светодиод должен мигать каждый час как изменяется час. Количество миганий должно соответствовать цифре наступившего часа. Формат времени 24 часа."
—"Конечно! Для решения этой задачи мы также можем использовать библиотеку RTClib для работы с часами реального времени DS3231.
Вот пример кода:
gpt.jpg
— "В этом коде мы используем объект rtc для получения текущего времени с помощью метода now(). Затем мы определяем количество миганий для текущего часа (с помощью переменной blinkCount) и мигаем светодиодом нужное количество раз в цикле for.

После мигания светодиода мы ждем до начала следующей минуты с помощью функции delay(). Таким образом, светодиод будет мигать каждый час в соответствии с заданными условиями. Для определения времени до начала следующей минуты мы используем формулу (60 - now.second()) * 1000, которая вычисляет количество миллисекунд до начала следующей минуты."

Ingwar
Полковник
Сообщения: 1929
Зарегистрирован: 28.10.2015{, 22:47}
Репутация: 223
Откуда: Ленобласть
Имя: Игорь

OpenAI ChatGPT

#4

Сообщение Ingwar » 05.03.2023{, 18:18}

Не, нужно не такое популярное спросить.
Например драйвер (функцию) к какому ни будь не популярному в ардуино среде АЦП...
Для пробы - ADS1262. Я смогу завтра проверить)))
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.

Аватара пользователя
Vuktor
Сержант
Сообщения: 237
Зарегистрирован: 11.04.2021{, 14:44}
Репутация: 12
Имя: Vuktor

OpenAI ChatGPT

#5

Сообщение Vuktor » 05.03.2023{, 18:33}

Ingwar, — "Напиши драйвер (функцию) к не популярному в ардуино среде АЦП...
Для ADS1262"
— "Конечно! Вот пример драйвера для работы с АЦП ADS1262 в Arduino:"

Код: Выделить всё

#include <SPI.h>

// команды ADS1262
const byte ADS1262_RESET = 0x06;
const byte ADS1262_START = 0x08;
const byte ADS1262_STOP = 0x0A;
const byte ADS1262_RDATAC = 0x10;
const byte ADS1262_SDATAC = 0x11;
const byte ADS1262_RREG = 0x20;
const byte ADS1262_WREG = 0x40;

// регистры ADS1262
const byte ADS1262_REG_MUX0 = 0x00;
const byte ADS1262_REG_SYS0 = 0x02;
const byte ADS1262_REG_ADC0 = 0x04;
const byte ADS1262_REG_ADC1 = 0x06;
const byte ADS1262_REG_IFMODE = 0x08;
const byte ADS1262_REG_OFCAL0 = 0x0A;
const byte ADS1262_REG_OFCAL1 = 0x0C;
const byte ADS1262_REG_OFCAL2 = 0x0E;
const byte ADS1262_REG_FSCAL0 = 0x10;
const byte ADS1262_REG_FSCAL1 = 0x12;
const byte ADS1262_REG_FSCAL2 = 0x14;
const byte ADS1262_REG_ID = 0x7E;
const byte ADS1262_REG_STATUS = 0x00;

SPISettings spiSettings(20000000, MSBFIRST, SPI_MODE1); // настройки SPI

void ADS1262_Init() {
  pinMode(ADS1262_START, OUTPUT);
  pinMode(ADS1262_RESET, OUTPUT);

  digitalWrite(ADS1262_START, HIGH);
  digitalWrite(ADS1262_RESET, HIGH);

  SPI.beginTransaction(spiSettings);

  digitalWrite(ADS1262_RESET, LOW);
  delay(10);
  digitalWrite(ADS1262_RESET, HIGH);
  delay(10);

  SPI.transfer(ADS1262_SDATAC);
  delay(10);

  SPI.transfer(ADS1262_WREG | ADS1262_REG_MUX0);
  SPI.transfer(0x10); // AINP = AIN0, AINN = AIN1
  SPI.transfer(0x01); // AVDD/AVSS
  SPI.transfer(0x00); // GND

  SPI.transfer(ADS1262_WREG | ADS1262_REG_ADC0);
  SPI.transfer(0x0F); // DR = 2.5 SPS
  SPI.transfer(0x08); // PGA = 1
  SPI.transfer(0x00); // BCS = disabled

  SPI.transfer(ADS1262_WREG | ADS1262_REG_ADC1);
  SPI.transfer(0x00); // CM = continuous conversion mode

  SPI.transfer(ADS1262_RREG | ADS1262_REG_ADC0);
  SPI.transfer(0xFF);
  SPI.transfer(0xFF);
  SPI.transfer(0xFF);

  SPI.transfer(ADS1262_START);

  SPI.endTransaction();
}

int32_t ADS1262_Read() {
  SPI.beginTransaction(spiSettings);

  byte data[3];
  SPI.transfer(ADS1262_RDATA);
  for (int i = 0; i < 3; i++) {
    data[i] = SPI.transfer(0x00);
  }

  SPI.endTransaction();

  int32_t value = ((int32_t)data[0] << 16) | ((

Ingwar
Полковник
Сообщения: 1929
Зарегистрирован: 28.10.2015{, 22:47}
Репутация: 223
Откуда: Ленобласть
Имя: Игорь

OpenAI ChatGPT

#6

Сообщение Ingwar » 05.03.2023{, 18:43}

Vuktor писал(а):
05.03.2023{, 18:33}
Вот пример драйвера для работы
Я конечно не фига не специалист, но последние скобки в строке 80 это нормально?

Отправлено спустя 1 минуту 55 секунд:
А так игруха прикольная. Сегодня поговорю с дочкой (в Сербии) о регистрации на ее симку))
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.

Аватара пользователя
Phazz
Полковник
Сообщения: 2552
Зарегистрирован: 17.10.2016{, 15:38}
Репутация: 367
Откуда: Сургут
Имя: Анатолий

OpenAI ChatGPT

#7

Сообщение Phazz » 05.03.2023{, 18:47}

Ingwar, есть боты в телеграмм для работы gpt

Ingwar
Полковник
Сообщения: 1929
Зарегистрирован: 28.10.2015{, 22:47}
Репутация: 223
Откуда: Ленобласть
Имя: Игорь

OpenAI ChatGPT

#8

Сообщение Ingwar » 05.03.2023{, 18:48}

Phazz писал(а):
05.03.2023{, 18:47}
есть боты в телеграмм для работы gpt
Я пробовал одно из предложений, но мне попалась какая то дичь требующая деньги. Дальше искать не стал))
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.

Аватара пользователя
Phazz
Полковник
Сообщения: 2552
Зарегистрирован: 17.10.2016{, 15:38}
Репутация: 367
Откуда: Сургут
Имя: Анатолий

OpenAI ChatGPT

#9

Сообщение Phazz » 05.03.2023{, 18:52}

Который мне попадался тоже денег просит. Но сумма символическая. Да и есть бесплатный лимит.

Ingwar
Полковник
Сообщения: 1929
Зарегистрирован: 28.10.2015{, 22:47}
Репутация: 223
Откуда: Ленобласть
Имя: Игорь

OpenAI ChatGPT

#10

Сообщение Ingwar » 05.03.2023{, 18:55}

Phazz писал(а):
05.03.2023{, 18:52}
Но сумма символическая.
На таких условиях это норм, каждый труд требует оплаты.
Результатом своих "успехов" по регистрации поделюсь, если получится получить доступ.
З.Ы. Прокомментируйте плиз вопрос о скобках.
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.

Аватара пользователя
Vuktor
Сержант
Сообщения: 237
Зарегистрирован: 11.04.2021{, 14:44}
Репутация: 12
Имя: Vuktor

OpenAI ChatGPT

#11

Сообщение Vuktor » 05.03.2023{, 18:59}

Ingwar писал(а):
05.03.2023{, 18:45}
Я конечно не фига не специалист, но последние скобки в строке 80 это нормально?
— "Объясни эту строку кода int32_t value = ((int32_t)data[0] << 16) | (("
— "Эта строка кода выполняет конвертацию полученных данных от АЦП в 32-битное целое число типа int32_t.

Для получения 32-битного значения необходимо объединить три байта данных, полученных от АЦП. Первый байт содержит старший бит (MSB), а третий байт содержит младший бит (LSB).

В этой строке кода мы сначала сдвигаем значение первого байта на 16 бит (до старшего слова), используя оператор побитового сдвига влево <<. Затем мы объединяем это значение с двумя другими байтами, используя оператор побитового ИЛИ |.

Таким образом, мы получаем 32-битное значение value, которое содержит данные, прочитанные с АЦП. Это значение может быть использовано для дальнейшей обработки или вывода на экран."

Ingwar
Полковник
Сообщения: 1929
Зарегистрирован: 28.10.2015{, 22:47}
Репутация: 223
Откуда: Ленобласть
Имя: Игорь

OpenAI ChatGPT

#12

Сообщение Ingwar » 05.03.2023{, 19:04}

Vuktor писал(а):
05.03.2023{, 18:59}
Для получения 32-битного значения необходимо объединить три байта данных, полученных от АЦП. Первый байт содержит старший бит (MSB), а третий байт содержит младший бит (LSB).

В этой строке кода мы сначала сдвигаем значение первого байта на 16 бит (до старшего слова), используя оператор побитового сдвига влево <<. Затем мы объединяем это значение с двумя другими байтами, используя оператор побитового ИЛИ |.

Таким образом, мы получаем 32-битное значение value, которое содержит данные, прочитанные с АЦП. Это значение может быть использовано для дальнейшей обработки или вывода на экран."
Это понятно, но закрывающие скобки в нормальную сторону написаны? Которые после "или" "(("
Или что это (если не скобки).

Отправлено спустя 3 минуты 40 секунд:
Может мы разные картинки видим.
У меня так
СпойлерПоказать
Безымянный.png
Безымянный.png (6.04 КБ) 1432 просмотра
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.

Аватара пользователя
Vuktor
Сержант
Сообщения: 237
Зарегистрирован: 11.04.2021{, 14:44}
Репутация: 12
Имя: Vuktor

OpenAI ChatGPT

#13

Сообщение Vuktor » 05.03.2023{, 19:13}

— написать функцию опроса значений с входов ADS1262 для ардуино
— Для опроса значений с входов ADS1262 необходимо использовать следующий алгоритм:

Отправить команду на старт преобразования данных (START/SYNC команда).
Дождаться окончания преобразования данных (можно использовать опрос готовности преобразования).
Считать полученные данные с входов ADS1262 (можно считать несколько значений сразу).
Вот пример функции опроса значений с входов ADS1262 для Arduino:

Код: Выделить всё

#include <SPI.h>

// Пины для ADS1262
const int ADS1262_CS = 10;   // Chip select
const int ADS1262_START = 9; // Start conversion

void setup() {
  Serial.begin(9600);

  // Настройка пинов
  pinMode(ADS1262_CS, OUTPUT);
  pinMode(ADS1262_START, OUTPUT);

  // Начальное значение пинов
  digitalWrite(ADS1262_CS, HIGH);
  digitalWrite(ADS1262_START, LOW);

  // Настройка SPI
  SPI.begin();
  SPI.setClockDivider(SPI_CLOCK_DIV4); // Скорость передачи 4 МГц
  SPI.setDataMode(SPI_MODE1);
  SPI.setBitOrder(MSBFIRST);
}

void loop() {
  // Отправляем команду на старт преобразования данных
  digitalWrite(ADS1262_CS, LOW);
  SPI.transfer(0x08); // START/SYNC команда
  digitalWrite(ADS1262_CS, HIGH);

  // Ждем окончания преобразования данных
  while (digitalRead(ADS1262_START) == HIGH) {
    delay(1);
  }

  // Считываем данные с входов ADS1262
  int32_t data[4]; // массив для хранения 4 значений
  digitalWrite(ADS1262_CS, LOW);
  SPI.transfer(0x12); // Режим чтения данных
  for (int i = 0; i < 4; i++) {
    data[i] = ((int32_t)SPI.transfer(0) << 16) | ((int32_t)SPI.transfer(0) << 8) | (int32_t)SPI.transfer(0);
  }
  digitalWrite(ADS1262_CS, HIGH);

  // Выводим считанные значения на Serial Monitor
  for (int i = 0; i < 4; i++) {
    Serial.print("Channel ");
    Serial.print(i);
    Serial.print(": ");
    Serial.println(data[i]);
  }

  // Задержка между опросами
  delay(1000);
}
Эта функция использует SPI для обмена данными с ADS1262 и выполняет опрос четырех значений с входов ADS1262 каждую секунду. Полученные значения выводятся на Serial Monitor. Если в вашей схеме используется другое количество входов, то вы можете изменить число значений, считываемых в массив data.
Последний раз редактировалось Vuktor 05.03.2023{, 19:20}, всего редактировалось 2 раза.

Ingwar
Полковник
Сообщения: 1929
Зарегистрирован: 28.10.2015{, 22:47}
Репутация: 223
Откуда: Ленобласть
Имя: Игорь

OpenAI ChatGPT

#14

Сообщение Ingwar » 05.03.2023{, 19:17}

Vuktor, во, теперь мне последняя строка не кажется странной))).
Спасибо, завтра проверю.
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.

Аватара пользователя
Vuktor
Сержант
Сообщения: 237
Зарегистрирован: 11.04.2021{, 14:44}
Репутация: 12
Имя: Vuktor

OpenAI ChatGPT

#15

Сообщение Vuktor » 05.03.2023{, 19:21}

Ingwar, Исправил последнее сообщение. Интернет завис не до конца сначала код скопировал

Отправлено спустя 8 минут 43 секунды:
Ingwar писал(а):
05.03.2023{, 18:45}
Сегодня поговорю с дочкой (в Сербии) о регистрации на ее симку))
Тогда по идее и ВПН должен быть Сербии. Номер регистрации должен соответствовать стране ВПН. Ну как я понял. Вроде бы.

Отправлено спустя 1 час 34 минуты 23 секунды:

JonyBest
Сержант
Сообщения: 269
Зарегистрирован: 18.11.2015{, 22:42}
Репутация: 89
Откуда: Близко к Ставрополю
Имя: Евгений

OpenAI ChatGPT

#16

Сообщение JonyBest » 05.03.2023{, 21:16}

Vuktor писал(а):
05.03.2023{, 21:04}
Тогда по идее и ВПН должен быть Сербии.
Зарегистрировался без всяких ВПНов на российский ящик + купил номер за 22руб для получения кода смс. Сервис искать "openai".

Аватара пользователя
Vuktor
Сержант
Сообщения: 237
Зарегистрирован: 11.04.2021{, 14:44}
Репутация: 12
Имя: Vuktor

OpenAI ChatGPT

#17

Сообщение Vuktor » 05.03.2023{, 21:29}

JonyBest писал(а):
05.03.2023{, 21:16}
Зарегистрировался без всяких ВПНов на российский ящик + купил номер за 22руб для получения кода смс. Сервис искать "openai".
У меня без ВПН не работает. Только с ВПН, сам чат

Ingwar
Полковник
Сообщения: 1929
Зарегистрирован: 28.10.2015{, 22:47}
Репутация: 223
Откуда: Ленобласть
Имя: Игорь

OpenAI ChatGPT

#18

Сообщение Ingwar » 07.03.2023{, 06:02}

Vuktor писал(а):
05.03.2023{, 19:13}
Эта функция использует SPI для обмена данными с ADS1262 и выполняет опрос четырех значений с входов ADS1262 каждую секунду. Полученные значения выводятся на Serial Monitor. Если в вашей схеме используется другое количество входов, то вы можете изменить число значений, считываемых в массив data.
Посидел я пару часиков, потыкался...
Ну про то, что инициализация не полностью описана опущу (не все необходимые пины инициализированы). В примере вывод массива в порт, а у меня на макетка с дисплейчиком.
Вместо конструкции

Код: Выделить всё

  for (int i = 0; i < 4; i++) {
    Serial.print("Channel ");
    Serial.print(i);
    Serial.print(": ");
    Serial.println(data[i]);
  }
сделал

Код: Выделить всё

переменная для экрана = (data[4]);
пробовал и без скобок.
Значения какие то читаются, но абстрактные...
Короче подспорье наверное хорошее, но сука "на шару" (без владения вопросом) не прокатит :smile171:
Попробуйте если не трудно, запросить не с выводом в порт,а в какую нибудь переменную.

Аватара пользователя
Vuktor
Сержант
Сообщения: 237
Зарегистрирован: 11.04.2021{, 14:44}
Репутация: 12
Имя: Vuktor

OpenAI ChatGPT

#19

Сообщение Vuktor » 07.03.2023{, 08:44}

Ingwar, Напишите список конкретных вопросов. Я думаю тут надо самому вести диалог с ИИ. Только так можно к чему-то прийти. На всякий случай объясню, как зарегистрироваться.
Последний раз редактировалось Vuktor 14.04.2023{, 09:02}, всего редактировалось 1 раз.

JonyBest
Сержант
Сообщения: 269
Зарегистрирован: 18.11.2015{, 22:42}
Репутация: 89
Откуда: Близко к Ставрополю
Имя: Евгений

OpenAI ChatGPT

#20

Сообщение JonyBest » 07.03.2023{, 10:01}

Vuktor писал(а):
07.03.2023{, 08:44}
Регистрироваться нужно с ВПН, страна номера тел. должна соответствовать стране выбранной в ВПН.
Это не обязательное условие. Как пример у меня впн франции, зарегистрировал на телефон кубы.
Зарегистрировал десяток аккаунтов. Бывает на вирт номер не приходит смс. Отменяем номер и выбираем другую страну, пока не сработает. Причем система смс отправляет. Проблема с загруженностью вирт номеров.
Последний раз редактировалось JonyBest 07.03.2023{, 10:42}, всего редактировалось 1 раз.

Ответить

Вернуться в «Полезные ссылки»