Ребята привет. Я в программировании 0. Подскажите пожалуйста этот код который сгенерировала ии будет работать на реальном железе? // Пины const int voltagePin = A0; // порт для установки напряжения const int currentPin = A1; // порт для установки тока const int dividerPin = A2; // порт для подключения делителя напряжения const int mosfetPin = 9; // порт для подключения полевого транзистора const int vrefPin = A3; // порт Vref const int shuntPin = A4; // порт для измерения тока через шунт // Константы const float shuntResistance = 0.1; // сопротивление шунта в Омах const float voltageDividerRatio = 20.0; // коэффициент делителя напряжения const float maxVoltage = 100.0; // максимальное устанавливаемое напряжение const float maxCurrent = 10.0; // максимальный устанавливаемый ток const float voltageStep = 0.1; // шаг установки напряжения const float currentStep = 0.1; // шаг установки тока const int pwmFrequency = 60000; // частота ШИМ сигнала const float vRef = 5.0; // опорное напряжение // Объекты LiquidCrystal_I2C lcd(0x3F, 16, 2); // инициализация LCD дисплея void setup() { // Настройка портов pinMode(mosfetPin, OUTPUT); pinMode(dividerPin, INPUT); pinMode(shuntPin, INPUT); // Настройка LCD дисплея lcd.init(); lcd.backlight(); // Настройка ШИМ сигнала TCCR1A = _BV(COM1A1) | _BV(WGM11); TCCR1B = _BV(WGM13) | _BV(WGM12) | _BV(CS10); ICR1 = F_CPU / pwmFrequency; } void loop() { // Считывание установленных значений напряжения и тока float voltage = analogRead(voltagePin) * vRef / 1023.0 * maxVoltage; float current = analogRead(currentPin) * vRef / 1023.0 * maxCurrent; // Установка напряжения if (abs(voltage - analogRead(voltagePin) * vRef / 1023.0 * maxVoltage) >= voltageStep / 2.0) { voltage = round(voltage / voltageStep) * voltageStep; if (voltage > maxVoltage) { voltage = maxVoltage; } analogWrite(mosfetPin, voltage * ICR1 / maxVoltage); } // Установка тока if (abs(current - analogRead(currentPin) * vRef / 1023.0 * maxCurrent) >= currentStep / 2.0) { current = round(current / currentStep) * currentStep; if (current > maxCurrent) { current = maxCurrent; } float shuntVoltage = current * shuntResistance; float voltageSetpoint = shuntVoltage * voltageDividerRatio; analogWrite(mosfetPin, voltageSetpoint * ICR1 / maxVoltage); } // Измерение напряжения и тока float voltageMeasured = analogRead(dividerPin) * vRef / 1023.0 * maxVoltage / voltageDividerRatio; float currentMeasured = analogRead(shuntPin) * vRef / 1023.0 / shuntResistance; // Отображение установленных и измеренных значений на LCD дисплее lcd.setCursor(0, 0); lcd.print("U:"); lcd.print(voltage, 1); lcd.print("/"); lcd.print(voltageMeasured, 1); lcd.print("V"); lcd.setCursor(0, 1); lcd.print("I:"); lcd.print(current, 1); lcd.print("/"); lcd.print(currentMeasured, 1); lcd.print("A"); } Для подключения всего оборудования нужно использовать следующие порты Arduino: 1. Порт для установки напряжения - A0 2. Порт для установки тока - A1 3. Порт для подключения делителя напряжения - A2 4. Порт для подключения полевого транзистора - D9 5. Порт Vref - A3 6. Порт SDA для подключения модуля I2C - A4 7. Порт SCL для подключения модуля I2C - A5

Комментарии: 7

  1. Vga

    вот халявщик! сам нагенерил - сам проверяй!

    • Ll2

      Коллеги, чем заменить Блютус HC05 ? Из особенностей, нужна индикация работы , как в оригинале, что светодиод моргал когда модуль

    • Dmitriy

      Я же указал что 0 в этом

      • Ll2

        А можно подробней, куда uart хотели подключать ? Отдай другому ИИ пусть проверит ,пока ИИ не захватил мир

        • Jirafivanich

          Randomnerdtutоriails загугли. Прекрасный сайт для вэтомноля У чпухи cnc3018 есть гребёнка для подключения оффлайн пульта. Там есть пины тхрх, к ним подключал есп, но с ней связь обратная тугая

          • Dmitriy

            Скармливал везде по разному пишет. В одном вообще увидел ошибку которой нету в коде. Точное сказал что нет точки в определённом месте а там она на самом деле есть. Это кто или что?

            • Jirafivanich

              Не гуглил значит

Не нашли ответ?

Вам также может быть интересно