#2 Різне » ChatGPT пишет для Arduino » 2023-04-12 20:30:51

Йожэг
відповідей: 7

Не могу не поделиться видео о том, как чат-бот пишет программы для Arduino. Сначала кажется, что он ничего не сможет, но он удивляет пониманием текста запроса и получаемым результатом.

https://youtu.be/Lw1WrubK5fk

PS: Вибачайте, що не рідною мовою, але як є.

#3 Re: Програмування Arduino » Не работает антидребезг » 2018-10-15 14:20:34

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

void setup(void) {
  buttonSetup(); // настройка кнопки
  pinMode(13, OUTPUT); // будем управлять свечением светодиода
  digitalWrite(13, HIGH); // изначально он будет включен
}

void loop(void) {
  buttonIteration(); // опрос кнопки и вызов обработчика логического события при необходимости
  delay(5); // вместо задержки тут может быть что-то более полезное, как то ввод-вывод инфрмации и расчёты
}

/*
 * Суперкнопка 14.05.2000 (c) НТУУ "КПИ", ФИВТ, АУТС, ИА71-09
 * Хотя ладно... такой же алгоритм наверняка работает в калькуляторах с резиновыми клавишами
 * и в других устройствах с ненадёжными контактами.
 * Для подстройки скорости срабатывния кнопки изменяйте BUTTON_MAX_LVL и BUTTON_MIN_LVL.
 */
#define BUTTON_PIN 7 // номер ножки для кнопки (второй контакт этой кнопки подключить на землю)
#define BUTTON_MAX_LVL 192 // верхний предел счётчика устранения дребезга, допустимые значения [128..255]
#define BUTTON_MIN_LVL 64 // нижний предел счётчика устранения дребезга, допустимые значения [0..127]
byte buttonData; // внутреннее промежуточное состояние кнопки, которое изменяется от BUTTON_MIN_LVL до BUTTON_MAX_LVL

void buttonSetup() {
  buttonData = BUTTON_MAX_LVL; // инициализация верхним значением, если подтянуто к плюсу питания
  pinMode(BUTTON_PIN, INPUT_PULLUP); // подтянуть выключенную кнопку к плюсу, обойдёмся без внешних R элементов
}

void buttonEvent(bool isButtonPressed) {
  if (isButtonPressed) {
    digitalWrite(13, HIGH); // вкл. светодиод
  } else {
    digitalWrite(13, LOW); // выкл. светодиод
  }
}

void buttonIteration() {
  if (digitalRead(BUTTON_PIN) == HIGH) { // контакта нет, напряжение подтянулось к плюсу питания
    if (buttonData < BUTTON_MAX_LVL) {
      if (++buttonData == 128) {
        buttonData = BUTTON_MAX_LVL;
        buttonEvent(true); // выдать логическое срабатывание кнопки
      }
    }
  } else { // контакт есть, напряжение погашено кнопкой до нуля
    if (buttonData > BUTTON_MIN_LVL) {
      if (--buttonData == 127) {
        buttonData = BUTTON_MIN_LVL;
        buttonEvent(false); // выдать логическое срабатывание кнопки
      }
    }
  }
}

#4 Re: Апаратні питання » Управление 220в с помощью ардуино и мосфета K3265 » 2018-09-17 16:29:05

Тут что-то по теме продаётся http://arduino.ua/prod984-rele-tverdote … t-3-36-vdc, но я бы не рекомендовал ардуинщикам играться с напряжением 220 Вольт, если в квартире нет УЗО/дифавтомата. Даже настоящие взрослые электрики парами на задания ходят, чтобы второй всегда мог спасти первого  cool

#5 Re: Різне » Помогите новичку » 2018-09-16 21:59:22

Поскольку сайт 123d.circuits.io приказал долго жить, выкладываю код сюда. См. подпрограмму transform_brightness:

#define STEP 3 // шаг изменения яркости
#define STEP_DELAY 20 // задержка (мс) при изменении яркости
#define LED_QTY 6 // количество светодиодов, подключённых к выходам с PWM
#define CYCLES_PER_MODE 7 // сколько волн яркости проходит перед сменой режима свечения
#define CYCLE_MODE_QTY 3 // количество режимов свечения
#define MAX_BRIGHT 255 // максимальная яркость свечения

const byte led_pins[LED_QTY] = {3, 5, 6, 9, 10, 11}; // соответствие выводов с ШИМ номерам светодиодов
byte led_brightness[LED_QTY]; // яркость
int brightness_step[LED_QTY]; // шаг изменения яркости
byte cycle_mode = 0;
int cycle_counter = 0;
bool cycle_state = false;

void setup() {
  for (int i = 0; i < LED_QTY; i++) {
    pinMode(led_pins[i], OUTPUT); // переключить все PWM выводы на выход
    brightness_step[i] = STEP;
    led_brightness[i] = (i + 1) * MAX_BRIGHT / LED_QTY;
  }
  pinMode(13, OUTPUT); // встроенный светодиод
}

byte transform_brightness(byte b) {
  long t = (long(b) + 1) * b >> 8; // попытка линеаризовать воспринимаемую яркость
  if (cycle_mode == 1 && t == 0) t = 1;
  return byte(t);
}

void apply_brightness() {
  for (int i = 0; i < LED_QTY; i++) {
    analogWrite(led_pins[i], transform_brightness(led_brightness[i]));   
  }
  if (led_brightness[LED_QTY - 1] > MAX_BRIGHT / 2) {
    if (!cycle_state) {
      cycle_state = true;
      on_cycle_change();
    }
    digitalWrite(13, HIGH); // вкл. встроенный LED
  } else {
    cycle_state = false;
    digitalWrite(13, LOW); // выкл. встроенный LED
  }
}

void got_max_brightness(int &brght, int &stp) {
  switch (cycle_mode) {
    case 0: brght = MAX_BRIGHT; stp = -stp; break;
    case 1: brght = 0; stp = STEP; break;
    case 2: brght = MAX_BRIGHT; stp = -STEP; break;
  }  
}

void got_min_brightness(int &brght, int &stp) {
  switch (cycle_mode) {
    case 0: brght = 0; stp = -stp; break;
    case 1: brght = 0; stp = STEP; break;
    case 2: brght = MAX_BRIGHT; stp = -STEP; break;
  }  
}

void calculate_brightness() {
  int new_brightness;
  for (int i = 0; i < LED_QTY; i++) {
    new_brightness = led_brightness[i] + brightness_step[i];
    if (new_brightness > MAX_BRIGHT) {
      got_max_brightness(new_brightness, brightness_step[i]);
    } else if (new_brightness < 0) {
      got_min_brightness(new_brightness, brightness_step[i]);
    }
    led_brightness[i] = (byte) new_brightness;
  }
}

void on_cycle_change() {
  if (cycle_counter++ > CYCLES_PER_MODE) {
    cycle_counter = 0;
    cycle_mode++;
    if (cycle_mode >= CYCLE_MODE_QTY) {
      cycle_mode = 0;
    }
  }
}

void loop()  {
  apply_brightness();
  calculate_brightness();
  delay(STEP_DELAY);
}

j8m8krL.jpg

#6 Re: Різне » Помогите новичку » 2018-09-16 21:10:46

https://m.youtube.com/watch?v=M9hls9FVa3U

PS: Не подключайте много светодиодов напрямую к Arduino и не пытайтесь одновременно их включить, иначе можете сжечь микроконтроллер.

#7 Re: Програмування Arduino » Как по условию открыть приложение ехе, или хотя бы ссылку в браузере? » 2018-07-13 17:19:45

Вариант №2:
На компьютере запущен HTTP сервер Apache, Arduino по условию дёргает через GET на нём определённый адрес типа http://192.168.0.2/a/, можно даже параметры передать. В папке "a" сидит index.*, который на самом деле не статичный файл, а выполняемый скрипт или простейший CGI-модуль, который сделает всё, что нужно. Я на Delphi давным-давно так делал, правда под Windows дело было.

#8 Re: Програмування Arduino » Как по условию открыть приложение ехе, или хотя бы ссылку в браузере? » 2018-07-13 17:12:53

Nesamodelkin пише:

Как по условию открыть приложение ехе, или хотя бы ссылку в браузере?

1. Срабатывает "условие" на Arduino.
2. К Arduino подключён через усилитель или просто через ограничивающий резистор ИК-светодиод, который излучает сигнал с нужной командой.
3. На компьютере установлена плата ТВ-тюнера с функцией запуска настраиваемых приложений по команде с ИК-пульта, которая запускает батник или любой другой скрипт. Подойдёт любой девайс для управления компьютером по ИК.
4. Батник/скрипт творит любое чудо на компьютере.

#9 Re: Програмування Arduino » Відображення символів на LCD » 2018-02-11 23:03:20

Если текст переносится по строкам, то это символы CR и LF с кодами 13 и 10 (0D и 0A в шестнадцатиричном формате). Windows использует их парами, тогда как Linux'у и прочим хватает одного из них (гуглите). А экранчик Ардуинки может их просто отображать, а не выполнять.

По остальному надо документацию читать, если ничего не помогает)

#10 Re: Різне » Среда программирования » 2018-01-27 20:56:11

Если в меню Инструменты в пункте Порт выбирать нечего, то и загружать прошивку некуда. Виноваты могут быть не вставшие как надо драйвера. Или даже забаненные китайские микросхемы клоны USB-COM преобразователей в официальных драйверах -- даже такие чудеса бывали.
Если портов видно несколько, то самое простое - это перебрать их по очереди, пытаясь отправить туда прошивку smile

Читаю, что китайцы умудрились сделать своё "furduino", которое не запитывается по USB. Что ж, выключенное устройство конечно в системе не появится, его сначала запитать надо дополнительными проводами.

#11 Re: Проекты » Уменьшить потребление тока » 2018-01-27 20:20:33

Загуглил "arduino wake up on serial" и нашёл статью http://playground.arduino.cc/Learning/ArduinoSleepCode и обсуждение, где получилось понизить ток потребления до микроамперных значений https://arduino.stackexchange.com/questions/13167/put-atmega328-in-very-deep-sleep-and-listen-to-serial , там есть ссылка на очень полезную статью с измерениями и советами http://www.gammon.com.au/forum/?id=11497

#12 Re: Проекты » Координаты » 2018-01-27 18:23:35

Макс пише:

Собираем робота,
для работы нужно определять его координаты в помещении.

На полу наклейки с баркодами, робот их читает и не теряется. Забавно. https://youtu.be/cLVCGEmkJs0?t=29

#13 Re: Апаратні питання » Arduino uno Проблема при температуре -2 » 2018-01-27 18:00:02

Если был бы уж совсем мороз, то мог бы замёрзнуть источник питания.

#14 Re: Програмування Arduino » Тестовый скетч для RFID модуля RDM6300 125кГц » 2018-01-27 17:51:42

Карточка-пропуск с работы в "идеальных" условиях начинает срабатывать с расстояния 6 см. Маленькие брелки-токены (на фото выше) срабатывают, как я уже писал, с 3 см. Жёлтый брелок я брал на местном сайте http://arduino.ua/prod281-RFID_brelok, остальные я не выбирал, мне их дали.

#15 Re: Програмування Arduino » Тестовый скетч для RFID модуля RDM6300 125кГц » 2018-01-27 00:55:43

oberon пише:

Вопрос к тем кто уже пользовался данным модулем. Соответствует чувствительность (15см) заявленной производителем?

Не 15 см, а 15 мм точно работает. По крайней мере с комплектной антенной. Предел дальности срабатывания моего модуля -- 3 см с копейками. Домофон подъезда срабатывает ещё хуже smile

oberon пише:

Будет срабатывать считыватель через металическую пластину, если да, то насколько упадет чувствительность(до скольки см)?

Через тонкую медь на стеклотекстолите не работает, через стальную крышку от коробки конфет тоже не хочет от слова совсем. Зато через ДСП столешницы и пластик -- без проблем. Тестовый стенд на фото:

vVGOaoY.jpg

#16 Re: Програмування Arduino » Тестовый скетч для RFID модуля RDM6300 125кГц » 2018-01-14 12:00:06

kost286 пише:

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

Покажите примеры надписей на карточке и от считывателя.

Переданный код в шестнадцатеричном формате: 2C 0077 55A2. Если разбить его на три группы, то получим: 2C, 0077 (десятичное значение 119), 55A2 (десятичное значение 21922), что соответствует номеру на RFID карте 119,21922.

Это же число, напечатаное на карте в десятичной форме – 0007820706, соответствует 7755A2 (HEX). Константа 2C передается всеми картами этой системы – идентификатор RFID системы. Именно указанное число в десятичной форме (0007820706) потребуется нам для эмуляции RFID ключа.

Последние данные, передаваемые картой – это контрольная сумма, которая позволит убедиться, что все данные были получены.

Это цитата из http://www.rlocman.ru/shem/schematics.html?di=113001


PS: На Arduino даже можно сделать RFID метку с нужным кодом: https://toschprod.wordpress.com/2013/08/05/rfid-spoofer/

#17 Re: Проекты » Опять вопрос по GSM модулю. » 2016-02-15 23:38:37

gachok пише:

Может GSM модуль отправлять смс на определенные номера телефонов с кодом, например ошибки в системе.

Да хоть рекламу курсов английского:

https://www.arduino.cc/en/Tutorial/GSMExamplesSendSMS
https://forum.arduino.cc/index.php?topic=362390.0

#18 Re: Апаратні питання » Возможно ли отремонтировать arduino uno » 2016-02-14 14:39:27

С автомобилями нужен особый подход. Купили много-много лет тому назад GPS-ку с блоком питания 9...35 Вольт, поставили в машину. Блок питания сгорел через неделю. Заменили по гарантии - сгорел. GPS-ка -- туристическая, а не автомобильная. Оказывается, автомобильные имеют утроенную защиту по питанию.

#19 Re: Проекты » Арт-проект на 50 LED. Потрібні поради. » 2016-02-14 14:31:08

ShuRa пише:

якими акумуляторами можна його заживити. Бюджет на акумулятори - до 100грн за штуку.

Мало денег. Но можно взять на OLX по 40 грн китайских аккумов "18650". На них написана ёмкость 8800 мАч, реально там в 10 раз меньше, но это не беда :-)

#20 Re: Проекты » Арт-проект на 50 LED. Потрібні поради. » 2016-02-14 14:21:20

ShuRa пише:

чи знайти IR-датчик з реле, яке буде включати ардуіно?

Тільки якщо увімкнене реле своєю котушкою не буде споживати струму більше, аніж сама Ардуіно.

#21 Re: Програмування Arduino » Управление реле через arduino, Ethernet Shield W5100 и кнопки » 2016-02-13 00:48:59

В предыдущем скетче для другого сетевого модуля определение того, какая ссылка была нажата, сделано так:

    if (strstr((char *)Ethernet::buffer + pos, "GET /?ON") != 0) {
      setRelayState(true);
    } else if(strstr((char *)Ethernet::buffer + pos, "GET /?OFF") != 0) {

Т.е. просто ищем в буфере приёма запрос с "/?ON" или "/?OFF". А в этом новом скетче где определение ссылки адреса с командой внутри?

#22 Re: Апаратні питання » Вопрос по лок битам (Fuse) Atmega168 » 2016-02-10 12:21:12

Доступ к внутренней энергонезависимой памяти микроконтроллера ограничивается:
* внешним программаторам -- битами блокировки LB1 и LB2;
* внутреннему программному коду (бутлоадеру или прикладной программе) -- битами блокировки BLB01, BLB02, BLB11 и BLB12.

Если запретить читать флэшку внутренней программе, но не запрещать программатору, то программатором прочитать можно будет.

#23 Re: Проекты » Самодельный частотник » 2016-02-10 11:54:05

Павел72 пише:

А ничего что в работе двигателя принимает участие только одна обмотка ??? Вторая которая с кандером нужна только для запуска. Для подтверждения включите только ту обмотку, которая с конденсатором, и крутаните вал рукой wink Городите огород....

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

#24 Re: Апаратні питання » Подключение MOSFET напрямую и через ЦАП. Как правильно? » 2016-02-08 19:30:52

NoName пише:

а с хлорным железом "не дружу"

Сделал так пару мелких плат, но даже не знал, насколько оно вредное. Но сейчас же придумали травить кухонной химией: "в 100 мл аптечной 3% перекиси водорода растворяется 30 г лимонной кислоты и 5 г поваренной соли. Этого раствора должно хватить для травления 100 см2 меди, толщиной 35мкм."

#25 Re: Апаратні питання » Как подключить? » 2016-02-07 01:11:33

К этом дисплею http://arduino-ua.com/prod1178-oled-displei-modyl есть комментарий, который предлагает скачать примеры и библиотеку тут: https://github.com/adafruit/Adafruit_SSD1306

Примеров к этому датчику температуры http://arduino-ua.com/prod190-Datchik_t … ri_DS18B20 в инете море, даже "схема" подключения прямо на картинках магазина. В архиве примеры есть и библиотека http://arduino-project.net/DallasTemperature.rar . Или вот статья http://www.hobbytronics.co.uk/ds18b20-arduino

Підвал форуму