#1 2024-03-25 23:14:50

P0TR0H
Учасник
Зареєстрований: 2024-03-25
Повідомлень: 3

Допоможіть військовому((

Бажаю здоровья, шановні ардуінщики)) Хочу зробити саморобну підривну машинку на базі ардуіно, але шось не виходить. Маю АРдуіно нано - 2шт, радіомодуль Е220-900Т22D, пишу код, шоб якщо передавач буде в мережі, то на приймач піде повідомлення, і на 9 піну буде напруга (яка буде ініціювати ЕДП). Повідомлення йде, воно приходить, але перевіраючи мультиметром пін 9 та землю напруги немає(((. Допоможіть!!!!

Неактивний

#2 2024-03-25 23:17:49

P0TR0H
Учасник
Зареєстрований: 2024-03-25
Повідомлень: 3

Re: Допоможіть військовому((

#include <SoftwareSerial.h>
#include "EBYTE22.h"

#define PIN_TX 2
#define PIN_RX 3
#define PIN_M0 4
#define PIN_M1 5
#define PIN_AX 6
#define PIN_RELAY 9 // Пін, на якому ви хочете керувати напругою

#define YOUR_DESIRED_MESSAGE "TURN_ON_RELAY" // Повідомлення для включення реле

SoftwareSerial E22Serial(PIN_TX, PIN_RX, false);
EBYTE22 E22(&E22Serial, PIN_M0, PIN_M1, PIN_AX);
bool relayOn = false; // Флаг, що вказує, чи вже було включено реле

void setup() {
  Serial.begin(9600);
  E22Serial.begin(9600);
  pinMode(PIN_RELAY, OUTPUT); // Встановлюємо пін як вихід
  digitalWrite(PIN_RELAY, LOW); // Початковий стан (може бути LOW або HIGH, в залежності від потреби)
  delay(5000);
 
  if (E22.init()) {
    Serial.println("init OK");
  } else {
    Serial.println("init Error");
  }
}

void loop() {
  sendMessage(YOUR_DESIRED_MESSAGE); // Відправляємо повідомлення приймачу
  delay(5000); // Затримка перед наступним відправленням
}

void sendMessage(String message) {
  E22Serial.print(message);
  Serial.println("Sent message: " + message);
 
  // Очікуємо відповідь протягом 1 секунди
  unsigned long startTime = millis();
  while (millis() - startTime < 1000) {
    if (E22Serial.available()) {
      // Якщо отримане повідомлення співпадає з бажаним, увімкнемо реле на 2 секунди
      if (E22Serial.read() == YOUR_DESIRED_MESSAGE[0] && !relayOn) {
        digitalWrite(PIN_RELAY, HIGH);
        Serial.println("Relay turned ON for 2 seconds");
        delay(2000); // Вмикаємо реле на 2 секунди
        digitalWrite(PIN_RELAY, LOW);
        Serial.println("Relay turned OFF");
        relayOn = true; // Встановлюємо флаг, що реле вже було включено
      }
      return;
    }
  }
  Serial.println("No response received. Relay remains OFF");
}

Неактивний

#3 2024-03-26 19:18:50

renoshnik
Учасник
Зареєстрований: 2017-04-03
Повідомлень: 1,025

Re: Допоможіть військовому((

Попробуйте вместо                  digitalWrite(PIN_RELAY, HIGH);
написать                                 analogWrite(PIN_RELAY, 255)

и вместо
pinMode(PIN_RELAY, OUTPUT); // Встановлюємо пін як вихід
  digitalWrite(PIN_RELAY, LOW); // Початковий стан (може бути LOW або HIGH, в залежності від потреби)

так
pinMode(PIN_RELAY, OUTPUT); // Встановлюємо пін як вихід
  analogWrite(PIN_RELAY, 0); // Початковий стан (може бути LOW або HIGH, в залежності від потреби)

Неактивний

#4 2024-03-26 20:51:05

Honey
Учасник
З Київ
Зареєстрований: 2020-09-26
Повідомлень: 414

Re: Допоможіть військовому((

renoshnik пише:

  analogWrite(PIN_RELAY, 0);

Якщо я не помиляюсь, дана команда увімкне ШІМ з коефіцієнтом заповнення 1/256 (а параметр 255 дасть коефіцієнт заповнення 256/256 - завжди на одиничку більше, тобто за допомогою analogWrite неможливо отримати коефіцієнт заповнення 0/256)

Неактивний

#5 2024-03-26 21:28:05

г0cть
Гість

Re: Допоможіть військовому((

P0TR0H пише:

Повідомлення йде, воно приходить

Ви в цьому впевненні?

#6 2024-03-27 17:33:21

Tux
Гість

Re: Допоможіть військовому((

Як ви контролюєте прийом повідомлення? Терміналом? Логічним аналізатором? А де код приймальної сторони? Можливо проблема з приймальною стороною. Загалом перед відправкою повідовлення з передавальної сторони корисно передати певну кількість пустих байтів (від 10) значенням 0xFF, щоб приймальний радіомодуль встиг налаштуватись, надіятись що все передастся однією відпракою ключової фрази не завжди працює. Шукайте проблему в прийомній стороні, чи працює там адектватно переривання від модуля UART і чи ви встигаєте його коректно обробити щоб запустити 9 пін. Це потребує свого роду відлагодження, просто так це нажаль не працює.

Швидке повідомлення

Введіть повідомлення і натисніть Надіслати

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