Например TDA7294

Форум РадиоКот • Просмотр темы - нужна помощь в компиляции
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Пт сен 05, 2025 00:29:20

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 12 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: нужна помощь в компиляции
СообщениеДобавлено: Пн май 12, 2025 22:41:51 
Встал на лапы
Аватар пользователя

Зарегистрирован: Вт июл 09, 2013 18:23:54
Сообщений: 126
Откуда: из Болгарии
Рейтинг сообщения: 0
Привет из Болгарии.
Я не могу скомпилировать этот файл.
Можете ли вы исправить ошибки? или делать Binary file (.bin) файл
Я хочу Binary file (.bin) файл


Вложения:
sketch_may12a.rar [836 байт]
Скачиваний: 96
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: нужна помощь в компиляции
СообщениеДобавлено: Пн май 12, 2025 23:54:04 
Друг Кота
Аватар пользователя

Карма: 61
Рейтинг сообщений: 1569
Зарегистрирован: Вт окт 22, 2013 04:37:23
Сообщений: 3372
Откуда: Казань
Рейтинг сообщения: 0
mitre, в Болгарии знают слово "херня"? Так вот, Вы прислали херню, а не скетч - это не исходный код, могущий быть скомпилированным, и исправлять там просто нечего.

_________________
Платы для HLDI - установки лазерной засветки фоторезиста.
Фоторезисты Ordyl Alpha 350 и AM 140.
Жидкое олово для лужения плат (видео) - самое лучшее и только у меня.
Паяльная маска XV501T-4 и KSM-S6189 (5 цветов).
Заказ печатных плат - pcbsmac@gmail.com


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: нужна помощь в компиляции
СообщениеДобавлено: Пн май 12, 2025 23:57:49 
Опытный кот

Зарегистрирован: Вс мар 23, 2025 14:56:55
Сообщений: 700
Рейтинг сообщения: 0
интересно, в компиляторе есть сообщение об ошибке "херня" ? :)

Добавлено after 33 seconds:
Не ИИ ли генерировал этот код...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: нужна помощь в компиляции
СообщениеДобавлено: Вт май 13, 2025 09:25:53 
Друг Кота

Карма: 4
Рейтинг сообщений: 78
Зарегистрирован: Вт мар 13, 2012 12:16:13
Сообщений: 8443
Откуда: .ru
Рейтинг сообщения: 0
всё что я понял...
esp8266... nodemcuv2... Home Assistant...
Кажется, где-то уже обсуждали...
https://www.radiokot.ru/forum/viewtopic ... &start=160


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: нужна помощь в компиляции
СообщениеДобавлено: Пт июн 20, 2025 21:25:52 
Встал на лапы
Аватар пользователя

Зарегистрирован: Вт июл 09, 2013 18:23:54
Сообщений: 126
Откуда: из Болгарии
Рейтинг сообщения: 0
Где я допустил ошибку, заставив мотор вращаться только в одном направлении?


Вложения:
28BYJ-48_Stepper_Motor.rar [2.46 KiB]
Скачиваний: 39
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: нужна помощь в компиляции
СообщениеДобавлено: Сб июн 21, 2025 08:34:50 
Встал на лапы
Аватар пользователя

Зарегистрирован: Вт июл 09, 2013 18:23:54
Сообщений: 126
Откуда: из Болгарии
Рейтинг сообщения: 0
Вот как подключен двигатель


Вложения:
ESP8266-WeMos-D1-Mini-pinout-gpio.jpg [168.92 KiB]
Скачиваний: 430
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: нужна помощь в компиляции
СообщениеДобавлено: Сб июн 21, 2025 10:30:55 
Друг Кота

Карма: 4
Рейтинг сообщений: 78
Зарегистрирован: Вт мар 13, 2012 12:16:13
Сообщений: 8443
Откуда: .ru
Рейтинг сообщения: 0
двигатель мы сейчас подключаем в соседней теме...

viewtopic.php?f=28&t=185219&start=220


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: нужна помощь в компиляции
СообщениеДобавлено: Вс июн 22, 2025 11:59:37 
Потрогал лапой паяльник

Карма: 8
Рейтинг сообщений: 19
Зарегистрирован: Вс апр 17, 2011 09:51:26
Сообщений: 321
Откуда: Тула
Рейтинг сообщения: 4
двигатель мы сейчас подключаем в соседней теме...

viewtopic.php?f=28&t=185219&start=220



Товарищ любит слегка приврать.
Двигатель подключали не мы, а я. :)

Исходники можно посмотреть здесь https://t.me/zu_kvn/1880/2129?single

Изображение


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: нужна помощь в компиляции
СообщениеДобавлено: Вс июн 22, 2025 17:00:36 
Друг Кота

Карма: 4
Рейтинг сообщений: 78
Зарегистрирован: Вт мар 13, 2012 12:16:13
Сообщений: 8443
Откуда: .ru
Рейтинг сообщения: 0
эти Исходники не катят.
товарищ подключает шаговый двигатель.
:tea:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: нужна помощь в компиляции
СообщениеДобавлено: Вс июн 29, 2025 12:04:44 
Встал на лапы
Аватар пользователя

Зарегистрирован: Вт июл 09, 2013 18:23:54
Сообщений: 126
Откуда: из Болгарии
Рейтинг сообщения: 0
Все работало, когда я включени 2 питания один 5V для ESP8266 и еще один 5V для ULN2003 питания.
Почему должен два источника питания от 5V????


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: нужна помощь в компиляции
СообщениеДобавлено: Вс июн 29, 2025 14:01:40 
Друг Кота

Карма: 4
Рейтинг сообщений: 78
Зарегистрирован: Вт мар 13, 2012 12:16:13
Сообщений: 8443
Откуда: .ru
Рейтинг сообщения: 0
видимо сильные помехи по питанию...
или слабый источник питания... напряжение проведает.

в нормальный схемах ULN2003 питается напрямую от блока питания 5V
а ESP8266 питается от того же блока питания 5V но через стабилизатор 3,3V.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: нужна помощь в компиляции
СообщениеДобавлено: Пт авг 08, 2025 17:17:00 
Встал на лапы
Аватар пользователя

Зарегистрирован: Вт июл 09, 2013 18:23:54
Сообщений: 126
Откуда: из Болгарии
Рейтинг сообщения: 0
Пожалуйста, подскажите, как это сделать. Это код для жалюзи, и он работает как с Sinric, так и с потенциометром, но у меня возникла проблема с синхронизацией потенциометра и Sinric Pro.
Итак, когда я поворачиваю потенциометр в положение «открыть жалюзи», они открываются. Однако когда я закрываю их с помощью Sinric, как открыть их с помощью потенциометра, учитывая, что потенциометр находится в положении «открыть жалюзи»?
Код:

#include <Arduino.h>
#include <ESP8266WiFi.h>
#include <ESP8266mDNS.h>
#include <WiFiUdp.h>
#include <ArduinoOTA.h>
#include <EEPROM.h>
#include <SinricPro.h>
#include <SinricProBlinds.h>
#include <AccelStepper.h>

#include "credentials.h" // WIFI_SSID, WIFI_PASS, APP_KEY, APP_SECRET, BLINDS_ID

//#define LEFT_BLIND

#ifdef LEFT_BLIND
  #define IN1 D1
  #define IN2 D3
  #define IN3 D2
  #define IN4 D4
#else
  #define IN1 D4
  #define IN2 D2
  #define IN3 D3
  #define IN4 D1
#endif

#define BUTTON_UP_PIN   D5
#define BUTTON_DOWN_PIN D6
#define LED_PIN         D7
#define BUILTIN_LED     D0
#define POTENTIOMETER   A0

#define BAUD_RATE 115200
#define DEBOUNCE_TIME 300
#define EEPROM_SAVE_DELAY 3000
#define MAX_STEPS 500
#define MIN_STEPS 10
#define DEFAULT_STEPS 200
#define POTENTIOMETER_THRESHOLD 3
#define MAX_SPEED 800
#define ACCELERATION 500
#define POSITION_REPORT_INTERVAL 5000
#define POT_TIMEOUT 300000 // 5 минути

AccelStepper stepper(AccelStepper::FULL4WIRE, IN1, IN3, IN2, IN4);
int blindsPosition = 0;
int blindsTarget = 0;
bool powerState = true;
int stepsPerPercent = DEFAULT_STEPS;
unsigned long lastPress = 0;
bool stepsChanged = false;
unsigned long stepsChangeTime = 0;
int lastPotValue = -100;
unsigned long lastPositionReport = 0;
bool sinricProConnected = false;
bool externalControl = false;
unsigned long lastExternalControl = 0;
const unsigned long EXTERNAL_CONTROL_TIMEOUT = 10000;
int virtualPotPosition = 0;
unsigned long lastPotMoveTime = 0;

void handleButtons();
void handlePotentiometer();
void loadStepsFromEEPROM();
void saveStepsToEEPROM();
void indicateFullRotations();
void handleMovement();
void reportPosition();
void calibrateStepper();
void setupWiFi();
void setupSinricPro();
void updateSinricPosition();

bool onPowerState(const String &deviceId, bool &state) {
  powerState = state;
  if (!powerState && stepper.isRunning()) stepper.stop();
  return true;
}

bool onRangeValue(const String &deviceId, int &position) {
  externalControl = true;
  lastExternalControl = millis();
  blindsTarget = position;

  if (millis() - lastPotMoveTime > POT_TIMEOUT) {
    virtualPotPosition = position;
    lastPotValue = position;
  }
  return true;
}

bool onAdjustRangeValue(const String &deviceId, int &positionDelta) {
  externalControl = true;
  lastExternalControl = millis();
  blindsTarget += positionDelta;
  positionDelta = blindsTarget;

  if (millis() - lastPotMoveTime > POT_TIMEOUT) {
    virtualPotPosition = blindsTarget;
    lastPotValue = blindsTarget;
  }
  return true;
}

void setupWiFi() {
  Serial.begin(BAUD_RATE);
  WiFi.begin(WIFI_SSID, WIFI_PASS);
  while (WiFi.status() != WL_CONNECTED) { delay(500); }
  ArduinoOTA.setHostname("SmartBlinds");
  ArduinoOTA.begin();
}

void setupSinricPro() {
  SinricProBlinds &myBlinds = SinricPro[BLINDS_ID];
  myBlinds.onPowerState(onPowerState);
  myBlinds.onRangeValue(onRangeValue);
  myBlinds.onAdjustRangeValue(onAdjustRangeValue);
  SinricPro.onConnected([]() { sinricProConnected = true; updateSinricPosition(); });
  SinricPro.onDisconnected([]() { sinricProConnected = false; });
  SinricPro.begin(APP_KEY, APP_SECRET);
}

void setupPins() {
  pinMode(BUTTON_UP_PIN, INPUT_PULLUP);
  pinMode(BUTTON_DOWN_PIN, INPUT_PULLUP);
  pinMode(LED_PIN, OUTPUT);
  pinMode(BUILTIN_LED, OUTPUT);
  pinMode(POTENTIOMETER, INPUT);
}

void loadStepsFromEEPROM() {
  EEPROM.begin(4);
  EEPROM.get(0, stepsPerPercent);
  EEPROM.end();
  if(stepsPerPercent < MIN_STEPS || stepsPerPercent > MAX_STEPS) stepsPerPercent = DEFAULT_STEPS;
}

void saveStepsToEEPROM() {
  EEPROM.begin(4);
  EEPROM.put(0, stepsPerPercent);
  EEPROM.commit();
  EEPROM.end();
  stepsChanged = false;
}

void indicateFullRotations() {
  digitalWrite(LED_PIN, HIGH);
  delay(300);
  digitalWrite(LED_PIN, LOW);
}

void handleButtons() {
  unsigned long currentMillis = millis();
  if(currentMillis - lastPress < DEBOUNCE_TIME) return;

  if(digitalRead(BUTTON_UP_PIN) == LOW) {
    stepsPerPercent = min(stepsPerPercent + 10, MAX_STEPS);
    stepsChanged = true;
    stepsChangeTime = currentMillis;
    lastPress = currentMillis;
    indicateFullRotations();
  }
  if(digitalRead(BUTTON_DOWN_PIN) == LOW) {
    stepsPerPercent = max(stepsPerPercent - 10, MIN_STEPS);
    stepsChanged = true;
    stepsChangeTime = currentMillis;
    lastPress = currentMillis;
    indicateFullRotations();
  }
  if(stepsChanged && (currentMillis - stepsChangeTime > EEPROM_SAVE_DELAY)) saveStepsToEEPROM();
}

// FIXED POTENTIOMETER HANDLING
void handlePotentiometer() {
  static unsigned long lastPotRead = 0;
  unsigned long currentMillis = millis();
  if (currentMillis - lastPotRead < 100) return;
  lastPotRead = currentMillis;

  int potValue = analogRead(POTENTIOMETER);
  int mappedValue = map(potValue, 0, 1023, 0, 100);

  // Ако разликата е значителна или сме близо до виртуалната позиция
  if (abs(mappedValue - lastPotValue) > POTENTIOMETER_THRESHOLD) {
    lastPotMoveTime = currentMillis;
    blindsTarget = mappedValue;
    virtualPotPosition = mappedValue;
    lastPotValue = mappedValue;
  }
}

void updateSinricPosition() {
  if (!sinricProConnected) return;
  SinricProBlinds &myBlinds = SinricPro[BLINDS_ID];
  myBlinds.sendRangeValueEvent(blindsPosition);
  lastPositionReport = millis();
}

void handleMovement() {
  static long targetSteps = 0;
  static int lastReportedPosition = -1;
  if (!powerState) { if (stepper.isRunning()) stepper.stop(); return; }

  if (blindsTarget != blindsPosition) {
    targetSteps = (long)blindsTarget * stepsPerPercent;
    stepper.moveTo(targetSteps);
  }
  if (stepper.distanceToGo() != 0) stepper.run();
  else if (blindsPosition != blindsTarget) {
    blindsPosition = blindsTarget;
    if (blindsPosition != lastReportedPosition) {
      updateSinricPosition();
      lastReportedPosition = blindsPosition;
    }
  }
}

void calibrateStepper() {
  stepper.setMaxSpeed(MAX_SPEED);
  stepper.setAcceleration(ACCELERATION);
  stepper.moveTo(100 * stepsPerPercent);
  while (stepper.distanceToGo() != 0) { stepper.run(); delay(1); }
  delay(1000);
  stepper.moveTo(0);
  while (stepper.distanceToGo() != 0) { stepper.run(); delay(1); }
  stepper.setCurrentPosition(0);
  blindsPosition = 0;
  blindsTarget = 0;
}

void setup() {
  setupPins();
  loadStepsFromEEPROM();
  stepper.setMaxSpeed(MAX_SPEED);
  stepper.setAcceleration(ACCELERATION);
  setupWiFi();
  setupSinricPro();
  calibrateStepper();
}

void loop() {
  ArduinoOTA.handle();
  SinricPro.handle();
  handleButtons();
  handlePotentiometer();
  handleMovement();
  if (sinricProConnected && (millis() - lastPositionReport > POSITION_REPORT_INTERVAL)) updateSinricPosition();
}


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 12 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3


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

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y