Вопросы и замечания по статьям и схемам, представленным на нашем сайте

При поддержке РадиоКОТструктор.ру


Ответить

Чат бот программирует код(что может СhatGPT)

Вт мар 21, 2023 19:34:36

Наверное кое кто из вас слышал о ChatGPT, кто не слышал приведу цитату из википедии :
ChatGPT — чат-бот с искусственным интеллектом, разработанный компанией OpenAI и способный работать в диалоговом режиме, поддерживающий запросы на естественных языках. ChatGPT — большая языковая модель, для тренировки которой использовались методы обучения с учителем и обучения с подкреплением. ChatGPT был запущен 30 ноября 2022 года и привлёк внимание своими широкими возможностями: написание кода, создание текстов, возможности перевода, получения точных ответов и использование контекста диалога для ответов, хотя его фактическая точность и подверглась критике.


И так, получив доступ к боту смотрим,он и правда пишет любой код быстро и без ошибок ?
Первый запрос : Напиши код для регулятора мощности паяльника,используй pic16f877a,оптический энкодер для задания мощности и индикатор 1602 для индикации мощности.
Ответ под спойлером , время ожидания составило около 30 секунд.

СпойлерКонечно, вот пример кода на Great Cow BASIC для регулятора мощности паяльника на основе микроконтроллера PIC16F877A с использованием оптического энкодера и индикатора 1602:

'Конфигурация микроконтроллера
#chip 16F877A, 8
#config lcd = 16x2

'Инициализация портов ввода-вывода
TRISA = 0b00011111 'RA0-RA4 как входы для оптического энкодера и RA5 как выход для управления тиристором
TRISB = 0 'Устанавливаем порт B как выход
TRISD = 0 'Устанавливаем порт D как выход

'Инициализация дисплея
Lcd_Init()

'Переменные
Dim Power_Level As Byte = 0 'Текущий уровень мощности (0-255)
Dim Encoder_Counter As Byte = 0 'Счетчик оптического энкодера
Dim Encoder_Old_State As Byte = 0 'Предыдущее состояние оптического энкодера

'Основной цикл программы
Do
'Считываем состояние оптического энкодера
Dim Encoder_State As Byte = PORTA And 0b00011111

'Если состояние изменилось, то увеличиваем или уменьшаем уровень мощности
If Encoder_State <> Encoder_Old_State Then
If Encoder_State = 0b00000101 And Encoder_Old_State = 0b00000100 Then 'При повороте вправо
If Power_Level < 255 Then
Power_Level = Power_Level + 1
End If
ElseIf Encoder_State = 0b00000110 And Encoder_Old_State = 0b00000100 Then 'При повороте влево
If Power_Level > 0 Then
Power_Level = Power_Level - 1
End If
End If
Encoder_Old_State = Encoder_State
End If

'Отображаем уровень мощности на дисплее
Lcd_Out(1, 1, "Power level: ")
Lcd_Out(1, 13, NumberToString(Power_Level, 3))

'Устанавливаем уровень мощности на выходе
If Power_Level > 0 Then
PORTAbits.RA5 = 1 'Включаем тиристор
Delay_us(Power_Level) 'Ждем соответствующее время
PORTAbits.RA5 = 0 'Выключаем тиристор
End If

Loop

End


В этом примере мы используем оптический энкодер для управления уровнем мощности паяльника. Мы инициализируем порты A, B и D как входы и выходы, а также инициализируем дисплей 1602 для отображения уровня мощности. Затем мы в основном цикле программы считываем состояние оптического энкодера, изменяем уровень мощности и отображаем его на дисплее. Мы также устанавливаем уровень мощности на выходе, используя тиристор.

Обратите внимание, что для реализации регулятора мощности паяльника вам может потребоваться дополнительная электроника, такая как тиристор, трансформатор, датчик температуры и др.


Здесь бот решил писать код на GCB видимо по тому что перед этим я просил его использовать именно GCBasic, не вопрос, уточним просьбу :
Перепиши код на BascomAVR и Atmega8, ответ под спойлером , время генерации около 40 сек.

СпойлерКонечно, вот пример кода на Bascom-AVR для регулятора мощности паяльника на основе микроконтроллера Atmega8 с использованием оптического энкодера и индикатора 1602:

'Конфигурация микроконтроллера
$regfile = "m8def.dat"
$crystal = 8000000
$baud = 9600

'Инициализация портов ввода-вывода
Config Lcd = 16 * 2
Config Porta = Input
Config Portb = Output
Config Portd = Output

'Инициализация дисплея
Lcdinit

'Переменные
Dim Power_Level As Byte = 0 'Текущий уровень мощности (0-255)
Dim Encoder_Counter As Byte = 0 'Счетчик оптического энкодера
Dim Encoder_Old_State As Byte = 0 'Предыдущее состояние оптического энкодера

'Основной цикл программы
Do
'Считываем состояние оптического энкодера
Dim Encoder_State As Byte = Pinb And %00011111

'Если состояние изменилось, то увеличиваем или уменьшаем уровень мощности
If Encoder_State <> Encoder_Old_State Then
If Encoder_State = %00000101 And Encoder_Old_State = %00000100 Then 'При повороте вправо
If Power_Level < 255 Then
Power_Level = Power_Level + 1
End If
ElseIf Encoder_State = %00000110 And Encoder_Old_State = %00000100 Then 'При повороте влево
If Power_Level > 0 Then
Power_Level = Power_Level - 1
End If
End If
Encoder_Old_State = Encoder_State
End If

'Отображаем уровень мощности на дисплее
Lcdout 1, 1, "Power level: "
Lcdout 1, 13, Dec3 Power_Level

'Устанавливаем уровень мощности на выходе
If Power_Level > 0 Then
Portd.3 = 1 'Включаем тиристор
Delayus Power_Level 'Ждем соответствующее время
Portd.3 = 0 'Выключаем тиристор
End If

Loop

End


В этом примере мы используем оптический энкодер для управления уровнем мощности паяльника. Мы инициализируем порты A, B и D как входы и выходы, а также инициализируем дисплей 1602 для отображения уровня мощности. Затем мы в основном цикле программы считываем состояние оптического энкодера, изменяем уровень мощности и отображаем его на дисплее. Мы также устанавливаем уровень мощности на выходе, используя тиристор.

Обратите внимание, что для реализации регулятора мощности паяльника вам может потребоваться дополнительная электроника, такая как тиристор, трансформатор, датчик температуры и др.


И ещё несколько примеров кода :
Алгоритм Брезенхема
СпойлерКонечно, вот пример реализации алгоритма Брезенхема на Great Cow BASIC для рисования линии между двумя точками (x1, y1) и (x2, y2):

'Конфигурация микроконтроллера
#chip 16F877A, 8
#config osc = HS, wdt = OFF

'Инициализация портов ввода-вывода
TRISB = 0 'Устанавливаем порт B как выход

'Процедура рисования линии по алгоритму Брезенхема
Sub Bresenham(x1 As Integer, y1 As Integer, x2 As Integer, y2 As Integer)
Dim dx As Integer
Dim dy As Integer
Dim sx As Integer
Dim sy As Integer
Dim err As Integer
Dim e2 As Integer

dx = Abs(x2 - x1)
dy = Abs(y2 - y1)
If x1 < x2 Then
sx = 1
Else
sx = -1
End If
If y1 < y2 Then
sy = 1
Else
sy = -1
End If
err = dx - dy

Do
PORTBbits.RB0 = 1 'Устанавливаем логическую единицу на порт B0
Delay_ms(1) 'Ждем 1 миллисекунду
PORTBbits.RB0 = 0 'Устанавливаем логический ноль на порт B0

If x1 = x2 And y1 = y2 Then 'Если достигли конечной точки
Exit Do 'Выходим из цикла
End If

e2 = 2 * err
If e2 > -dy Then
err = err - dy
x1 = x1 + sx
End If
If e2 < dx Then
err = err + dx
y1 = y1 + sy
End If
Loop
End Sub

'Основной цикл программы
Do
Bresenham(0, 0, 10, 10) 'Рисуем линию между точками (0, 0) и (10, 10)
Loop

End


Алгоритм Брезенхема позволяет рисовать линии между двумя точками на экране, используя только целочисленные операции. В этом примере мы определяем процедуру Bresenham, которая принимает координаты начальной и конечной точек линии и рисует линию между ними. Мы используем порт B0 для рисования линии.

В основном цикле программы мы вызываем процедуру Bresenham с координатами начальной точки (0, 0) и конечной точки (10, 10). Линия будет рисоваться бесконечно, потому что мы находимся в бесконечном цикле.


Управление DDS AD9850
Спойлер'Конфигурация микроконтроллера
#chip 16F877A, 8
#config osc = HS, wdt = OFF

'Инициализация портов ввода-вывода
TRISB = %00001100 'Устанавливаем RB2 и RB3 как входы, остальные как выходы
PORTB = 0 'Очищаем порт B

'Инициализация AD9850
Dim Fout As Word 'Частота на выходе AD9850
Dim FreqWord As Word 'Строка частоты для передачи в AD9850
Dim i As Byte 'Переменная для цикла

Sub SendData(Data As Byte) 'Функция для отправки байта данных на AD9850
For i = 0 To 7
If (Data And (1 << i)) > 0 Then 'Проверяем, установлен ли i-й бит
PORTB.0 = 1 'Устанавливаем линию DATA на высокий уровень
Else
PORTB.0 = 0 'Устанавливаем линию DATA на низкий уровень
End If
PORTB.1 = 1 'Устанавливаем линию CLK на высокий уровень
PORTB.1 = 0 'Устанавливаем линию CLK на низкий уровень
Next i
End Sub

Sub SetFreq(Freq As Word) 'Функция для установки частоты на выходе AD9850
Fout = Freq 'Записываем желаемую частоту в переменную Fout
FreqWord = Freq * 6.875 'Вычисляем значение частоты для передачи в AD9850
'Отправляем данные на AD9850
SendData(FreqWord And 0xFF) 'Отправляем младший байт
SendData((FreqWord >>8) And 0xFF) 'Отправляем старший байт
SendData(%00011110) 'Отправляем управляющий байт для выбора режима частоты
SendData(%00000001) 'Отправляем управляющий байт для включения AD9850
End Sub

'Обработчик прерывания для кнопок
Interrupt Int_RB
If PORTB.2 = 0 Then 'Если кнопка на RB2 нажата
Fout = Fout + 100 'Увеличиваем частоту на 100 Гц
ElseIf PORTB.3 = 0 Then 'Если кнопка на RB3 нажата
Fout = Fout - 100 'Уменьшаем частоту на 100 Гц
End If
SetFreq(Fout) 'Устанавливаем новую частоту на выходе AD9850
INTCON.RBIF = 0 'Сбрасываем флаг прерывания
End Interrupt

'Основной цикл программы
Do
Loop


В этом коде используется прерывание INTRB для обработки нажатий кнопок. Когда на портах RB2 и RB3 происходит изменение состояния, прерывание генерируется и вызывается обработчик прерывания IntRB, который проверяет состояние кнопок и изменяет выходную частоту в соответствии с нажатой кнопкой.

Для работы прерываний должны быть установлены соответствующие биты в регистре INTCON, а также настроены соответствующие биты в регистре IOCB для портов RB2 и RB3. Обратите внимание, что прерывания могут сбрасываться, если обработчик не успевает выполниться до следующего прерывания, поэтому важно обеспечить минимальную задержку в обработчике.


AHDL делитель на 10:

Спойлер-- AHDL code for a divide-by-10 circuit
--
-- Inputs:
-- CLK - clock input
-- RST - asynchronous reset input
-- Outputs:
-- Q - divided clock output

-- Register to store the current count
reg [3:0] count_reg;

-- Combinational logic to determine the next count value
always @ (posedge CLK or negedge RST) begin
if (!RST) begin
count_reg <= 4'b0000;
end else begin
if (count_reg == 4'b1001) begin
count_reg <= 4'b0000;
end else begin
count_reg <= count_reg + 1;
end
end
end

-- Output the divided clock signal
assign Q = count_reg[3];


В этом примере мы используем регистр для хранения текущего значения счетчика и комбинационную логику для вычисления следующего значения счетчика. При достижении значения 9 мы обнуляем счетчик и начинаем снова.

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


Время создания любого кода не превышало 40 сек. Но тут надо отметить что иногда бот занят,очень занят и ответ может не придти вовсе,не стесняемся повторить.
Он ошибается и косячит ? Да ! Код для подключения экрана Nokia3310 написал со второго раза ( первый раз код был для индикатора 1602)
Библиотека USB 16F4550 то же не далась не с первого,не с второго раза.
Возможно дело в языке запроса ( у меня все запросы ну RU) или инструкциях для самого бота ( возможны разные варианты поведения и стилей ответа )
НО ! Это чертовски интересно в любом случаи. За несколько итераций ,из нескольких подзадач вполне себе рождается программа на любом языке программирования и для практически любого МК.
PS Увы , но официально ChatGPT в России не доступен,но когда это нас останавливало......

PPS Я не уверен что правильно выбрал раздел, Администрация перенесите если что.

Re: Чат бот программирует код(что может СhatGPT)

Вт мар 21, 2023 22:55:07

Это всё чушь. Представленные примеры не являются программированием, да и просто детский сад

с хабра https://habr.com/ru/post/714792/:

вчера у меня в ленте на фейсбуке (жаль что в закрытом посте) проявился еще один аспект ChatGPT, жуть которого я не вполне осознавал. Представьте, что ваш менеджер присылает вам емейл: "я вот тут сгенерил с помощью ChatGPT код на языке описания аппаратуры SystemVerilog, который реализует мою идею, ты его поправь немного и в продакшн, а то нас сроки поджимают".

Почему это жутко? Потому что в обсуждаемом посте ChatGPT сгенерил так называемый несинтезируемый код. Это означает: код вроде и есть, и после массажирования даже будет компилироваться в симуляторе, но вот чип из него сделать нельзя. Никак, вообще никак. Для решения этой задачи нужно написать совсем другой код, у которого не будет ни одной строчки общего с тем, что прислал менеджер.

То есть менеджер думает, что вместе с ChatGPT сделал за вас 90% работы, а на самом деле это (даже если убрать ошибки типа путаницы в семантике модуля и функции) в лучшем случае - высокоуровневая спецификация того, что нужно сделать. Потому что тип "string" не обрабатывается синтезатором, а если его заменить на большие битовые вектора и развернуть циклы, то получится комбинаторное облако, чип из которого будет размером с чемодан, а задержка на котором будет не пикосекунды, а секунды



и ещё:

Изображение

Re: Чат бот программирует код(что может СhatGPT)

Вт мар 21, 2023 23:06:49

Штука занятная и весьма интересная. Но косячить любит! Да, он может поправить сам себя, если ему конечно на это указать, а приходится и не раз указывать на ошибку. Поэтому так или иначе, нужно понимать в том, что от него требуешь и быть готовым к ошибкам. Из любопытства попросил его на С написать пример кода на аппаратном ШИМ-е attiny13 с максимально возможной частотой. И что вы думаете, он генерил запредельные значение, вплоть до 1МГц (в реале 37.5 кГц предел)на частоте генератора 9.6 МГц. Потом попросил поменять частоту ШИМ , а он меняет скважность, указываю ему на ошибку, он соглашается и снова меняет скважность. Даже любопытно, что он вам сгенерит по такому запросу. Код писал на С.
Последний раз редактировалось igorka Ср мар 22, 2023 08:44:29, всего редактировалось 2 раз(а).

Re: Чат бот программирует код(что может СhatGPT)

Вт мар 21, 2023 23:24:14

Небось опять нанял фрилансера, но пожадничал с оплатой....

Re: Чат бот программирует код(что может СhatGPT)

Ср мар 22, 2023 03:06:10

Re: Чат бот программирует код(что может СhatGPT)

Ср мар 22, 2023 08:09:36

Наверно, там картинка должна быть ?

Или ответ жпт , но он ещё думает ?

Re: Чат бот программирует код(что может СhatGPT)

Ср мар 22, 2023 08:24:07

Не. Хотел удалить сообщение, бессмысленное оно было и ненужное, но что-то не вышло, а вот затереть и без пробела - получилось. Очень странно движок оценивает минимальную длину сообщения.

Спросил жпт где находятся рептилоиды?
ChatGPT писал(а): :
Как АИ, я не могу подтвердить существование рептилоидов. Это является темой спора и дебатов в научном сообществе и не имеет научного доказательства.
То есть, ученые спорят о рептилоидах? Однако...

Добавлено after 4 minutes 36 seconds:
Продолжаем разговор

где находятся рептилоиды?
ChatGPT писал(а):Как АИ, я не могу подтвердить существование рептилоидов. Это является темой спора и дебатов в научном сообществе и не имеет научного доказательства.
что делать, если на меня напал рептилоид?
ChatGPT писал(а):Как АИ, я не могу предоставить совет по такому вопросу, так как рептилоиды не являются подтвержденным научным фактом. Если вы чувствуете, что на вас нападают, обратитесь за помощью к правоохранительным органам или медицинским работникам.
Я чувствую, что на меня напал рептилоид, что делать?
ChatGPT писал(а):Прошу прощения, не уверен, что правильно понимаю вопрос. Не могли бы вы сформулировать его иначе?
На меня напал рептилоид, что делать?
ChatGPT писал(а):Как и любой другой ситуации, важно сохранять спокойствие и действовать рационально. Если на вас напал рептилоид, то лучше всего попытаться уйти от него, найти укрытие или вызвать помощь. Если вы не можете уйти, то попытайтесь отбиться от нападающего, используя любые доступные средства, такие как камни, палки или другие предметы. Если у вас есть возможность, то вызовите экстренную помощь или полицию. В любом случае, не стоит подходить к рептилоиду слишком близко и не пытаться с ним драться, так как это может привести к серьезным последствиям.


Что ж, значит, рептилоиды всё-таки есть...

И вот это будет писать программы? нафиг-нафиг.

Re: Чат бот программирует код(что может СhatGPT)

Ср мар 22, 2023 08:39:17

Но,про этот.форум он знает больше чем про рептилоидов.

Радиокот - это российский сайт и форум, посвященный радиолюбительскому и электронному творчеству. На сайте можно найти множество статей, схем, проектов и обзоров по различным темам, связанным с электроникой и радиолюбительством.

Форум Радиокот - это место, где радиолюбители и электронщики могут общаться, задавать вопросы, делиться опытом и находить новых друзей. На форуме можно найти ответы на многие вопросы по электронике, программированию, радиолюбительской связи и другим темам.

Также на сайте и форуме Радиокот есть магазин электронных компонентов, где можно купить все необходимое для своих проектов.

Радиокот является одним из самых популярных ресурсов в Рунете, посвященных радиолюбительству и электронике. Сайт и форум постоянно обновляются новыми материалами и проектами, что делает их очень интересными для всех, кто увлекается электроникой и радиолюбительством.

А так конечно хрень, больше часа совместно пытались подключить icl7135 к МК, бесполезно, я сдался.

Re: Чат бот программирует код(что может СhatGPT)

Ср мар 22, 2023 08:54:06

А как этому ГПТ задания дают, голосом или письменно?

Что ж, значит, рептилоиды всё-таки есть...
Ну Вы ж так настойчиво его трясли на этот счёт, что бедный неокрепший интеллект поддался, чтоб Ваш разум уберечь. Есть такая методика в психушках, что с пациентом лучше согласиться, чтобы не провоцировать))

Re: Чат бот программирует код(что может СhatGPT)

Ср мар 22, 2023 09:25:10

yor, я письменно, в телеграме

Re: Чат бот программирует код(что может СhatGPT)

Ср мар 22, 2023 10:00:20

Напомнило:

- да лось это, твой лось, дай я только седло с него сниму !!!

Пошли ему фото рептилоида, он и согласиться

Re: Чат бот программирует код(что может СhatGPT)

Ср мар 22, 2023 12:46:58

Re: Чат бот программирует код(что может СhatGPT)

Сб мар 25, 2023 16:49:01

yor, я письменно, в телеграме

Так это, тогда и регистрироваться через VPN с арендой иностранных SIM-карт не надо? Адрес не дадите?

Re: Чат бот программирует код(что может СhatGPT)

Сб мар 25, 2023 18:55:08

yor, https://t.me/GPT4Telegrambot

Re: Чат бот программирует код(что может СhatGPT)

Сб мар 25, 2023 22:56:20

Кстати о рептилоидах....
Ответ более чем корректен и звучит так:
Никаких доказательств существования рептилоидов, как и любых других существ из фантастических и научно-фантастических произведений, нет. Рептилоиды являются вымышленными существами, которые появляются только в литературе, кино, играх и других произведениях фантастики. Следует помнить, что такие истории являются вымыслом и не имеют научного обоснования.

Добавлено after 14 minutes 13 seconds:
Код генератора ШИМ мне выдал вот такой :

Вот пример кода на C для аппаратного ШИМ на ATtiny13:

#include <avr/io.h>

void init_pwm() {
// Настраиваем вывод OC0A как выход для ШИМ
DDRB |= (1 << PB0);

// Настраиваем таймер 0 для работы в режиме ШИМ
TCCR0A = (1 << COM0A1) | (1 << WGM01) | (1 << WGM00);
TCCR0B = (1 << CS01);

// Устанавливаем начальное значение ШИМ в 0
OCR0A = 0;
}

void set_pwm(uint8_t value) {
// Устанавливаем значение ШИМ
OCR0A = value;
}

int main() {
init_pwm();

// Устанавливаем значение ШИМ в 50%
set_pwm(127);

while(1) {
// Здесь можно добавить другой код для управления ШИМ
}

return 0;
}


В этом примере мы используем таймер 0 ATtiny13 для генерации ШИМ-сигнала на выводе OC0A. В функции init_pwm() мы настраиваем таймер для работы в режиме ШИМ и устанавливаем начальное значение ШИМ в 0. В функции set_pwm(uint8_t value) мы устанавливаем значение ШИМ.

В основном цикле программы мы устанавливаем значение ШИМ в 50% и оставляем программу работать в бесконечном цикле. Здесь можно добавить другой код для управления ШИМ, например, изменять значение ШИМ в зависимости от значений датчиков или других внешних событий.

Надеюсь, это поможет вам начать работу с аппаратным ШИМ на ATtiny13.

Re: Чат бот программирует код(что может СhatGPT)

Сб мар 25, 2023 23:14:45

Ну красота. Плодение ненужных функций. Нафиг-нафиг

Что же касается рептилоидов, то смотри выше: жпт признало их существование. И в любом случае ответ некорректен, потому что фраза "Никаких доказательств существования рептилоидов, как и любых других существ из фантастических и научно-фантастических произведений, нет." крайне неверна (в указанных произведениях очень часто присутствуют люди и земные животные - любые существа!) и противоречит фразе "Рептилоиды являются вымышленными существами" - если они вымышленные, что за бред про доказательства существования?

Re: Чат бот программирует код(что может СhatGPT)

Сб мар 25, 2023 23:26:14

Прикольный бот. Поговорил с ним. Говорит на радиокоте программисты ламеры и хапуги. Пообещал если понадобится напишет мне любую прошивку, хоть для космического корабля. Шах и мат вам))) я теперь свой радиокот с блекджеком и левой и правой открою и всех побежду)))

Re: Чат бот программирует код(что может СhatGPT)

Сб мар 25, 2023 23:33:12

... Пообещал если понадобится напишет мне любую прошивку, хоть для космического корабля ...

Начал приобретать характерные человеческие черты: смотреть в глаза и врать :))).

Вставили бот и в новой версии Opera. Меня только раздражает, что я должен быть зарегистрирован.

Бот написал мне несколько программ: для Arduino, для AVR, для PIC. Для выхода с 0/90 гр. разностью фаз я смотрел код, решениями даже удивляет :). Для синтезатора начал писать код: писал-писал... и остановился. Я спросил: продолжим? Да. Повторить задание? Ответ: он был занят: какие-то люди его оскорбляли, а он с ними расправлялся :))).
Последний раз редактировалось veso74 Сб мар 25, 2023 23:42:58, всего редактировалось 2 раз(а).

Re: Чат бот программирует код(что может СhatGPT)

Сб мар 25, 2023 23:40:59

попросил у него денег, написал "Пожалуйста, подождите немного, пока чат-бот обрабатывает ваш запрос . . ." и всё. Ищет, наверное. Ща со всех банковских счетов мне переведет

Re: Чат бот программирует код(что может СhatGPT)

Сб мар 25, 2023 23:44:13

Про джинна анекдот помнишь? )))
Ответить