Переделка готового скетча

Ответить
erno
Рядовой
Сообщения: 94
Зарегистрирован: 02.08.2017{, 13:09}
Репутация: 5

Переделка готового скетча

#1

Сообщение erno » 29.08.2022{, 17:50}

этот проект максимально похож на то что я хочу сделать

кнопки в проекте я хочу заменить на два датчика уровня при котором вода заполняется до верхнего датчика и выключается , а включается когда уровень воды дстигнит датчика который расположен в низу бака , это все что связанно с передатчиком . На ресивере в место лед лампы и двух реле мне нужен всего один реле для насоса , который включается или выключается в зависости от состояния датчиков уровня.
Lora Transmitter.png
#include <LoRa.h>
//int pot = A0;
const int SW1 = 3;
const int SW2 = 4;


int SyncWord = 0x22;

void setup() {
Serial.begin(9600);
pinMode(SW1,INPUT_PULLUP);
pinMode(SW2,INPUT_PULLUP);

cli(); //stop interrupts
//set timer1 interrupt at 1Hz = 1sec
TCCR1A = 0; // set entire TCCR1A register to 0
TCCR1B = 0; // same for TCCR1B
TCNT1 = 0; // initialize counter value to 0
// set compare match register for 1hz increments
OCR1A = 15624; // = (16*10^6) / (1*1024) - 1 (must be <65536)

TCCR1B |= (1 << WGM12); // turn on CTC mode
TCCR1B |= (1 << CS12) | (1 << CS10); // Set CS10 and CS12 bits for 1024 prescaler
TIMSK1 |= (1 << OCIE1A); // enable timer compare interrupt

sei(); //allow interrupts

while (!Serial);
Serial.println("LoRa Sender");
if (!LoRa.begin(433E6)) { // or 915E6, the MHz speed of yout module
Serial.println("Starting LoRa failed!");
while (1);
}

LoRa.setSpreadingFactor(12); // ranges from 6-12,default 7 see API docs
LoRa.setSignalBandwidth(62.5E3 ); // for -139dB (page - 112)
LoRa.setCodingRate4(8); // for -139dB (page - 112)
LoRa.setSyncWord(SyncWord);
/*
Serial.print("current spreading factor : ");
Serial.println(LoRa.getSpreadingFactor());
Serial.print("current bandwidth : ");
Serial.println(LoRa.getSignalBandwidth());
Serial.println("LoRa init succeeded.");
*/
}

int priviousSwitchValue1 = 1;
int priviousSwitchValue2 = 1;
int liveSwitchValue1 = 0;
int liveSwitchValue2 = 0;
bool switchPressFlag1 = false;
bool switchPressFlag2 = false;
bool gLedPin = 0;

int data = 1;

void loop() {
//static int data = 1;

liveSwitchValue1 = digitalRead(SW1);
if( (liveSwitchValue1 == 0) and (switchPressFlag1 == false) )
{
delay(50);
data = 11;
Serial.println("11");
switchPressFlag1 = true;
priviousSwitchValue1 = !priviousSwitchValue1;

LoRa.beginPacket();
LoRa.print(data);
LoRa.endPacket();
}
if( (liveSwitchValue1 == 1) and (switchPressFlag1 == true) )
{
delay(50);
data = 22;
Serial.println("22");
switchPressFlag1 = false;
LoRa.beginPacket();
LoRa.print(data);
LoRa.endPacket();
}

liveSwitchValue2 = digitalRead(SW2);
if( (liveSwitchValue2 == 0) and (switchPressFlag2 == false))
{
delay(50);
data = 33;
Serial.println("33");
switchPressFlag2 = true;
priviousSwitchValue2 = !priviousSwitchValue2;
LoRa.beginPacket();
LoRa.print(data);
LoRa.endPacket();
}
if( (liveSwitchValue2 == 1) and (switchPressFlag2 == true) )
{
delay(50);
data = 44;
Serial.println("44");
switchPressFlag2 = false;
LoRa.beginPacket();
LoRa.print(data);
LoRa.endPacket();
}


if(gLedPin == 1)
{
data = 55;
Serial.println("55");
gLedPin = 0;
LoRa.beginPacket();
LoRa.print(data);
LoRa.endPacket();
}

// LoRa.beginPacket();
// LoRa.print(data);
// LoRa.endPacket();
}

ISR(TIMER1_COMPA_vect){//timer1 interrupt 1Hz toggles pin 13 (LED)
//generates pulse wave of frequency 1Hz/2 = 0.5kHz (takes two cycles for full wave- toggle high then toggle low)
static volatile int ledFlag = 0;
if(++ledFlag >= 5)
{
gLedPin = 1;
ledFlag = 0;
}
}
Lora Receiver1.png
#include <LoRa.h>

const int LED1 = 3; // indicator LED
const int RLY1 = 4; // relay 1
const int RLY2 = 5; // relay 2

String inString = ""; // string to hold input
int val = 0;
int SyncWord = 0x22;

void setup() {
Serial.begin(9600);
pinMode(LED1,OUTPUT);
pinMode(RLY1,OUTPUT);
pinMode(RLY2,OUTPUT);

digitalWrite(LED1 , LOW);
digitalWrite(RLY1 , HIGH);
digitalWrite(RLY2 , HIGH);

while (!Serial);
Serial.println("LoRa Receiver");
if (!LoRa.begin(433E6)) { // or 915E6
Serial.println("Starting LoRa failed!");
while (1);
}
LoRa.setSpreadingFactor(12); // ranges from 6-12,default 7 see API docs
LoRa.setSignalBandwidth(62.5E3); // for -139dB (page - 112)
LoRa.setCodingRate4(8); // for -139dB (page - 112)
LoRa.setSyncWord(SyncWord); // ranges from 0-0xFF, default 0x12, see API docs
/*
Serial.print("current spreading factor : ");
Serial.println(LoRa.getSpreadingFactor());
Serial.print("current bandwidth : ");
Serial.println(LoRa.getSignalBandwidth());
Serial.println("LoRa init succeeded.");
*/
}
bool i=0;
int priviousValue = 0;
int liveValue = 0;

void loop() {
// try to parse packet
int packetSize = LoRa.parsePacket();
if (packetSize) {
// read packet
while (LoRa.available())
{
int inChar = LoRa.read();
inString += (char)inChar;
val = inString.toInt();
digitalWrite(LED1 , HIGH);
delay(10);
digitalWrite(LED1 , LOW);
delay(10);
}
inString = "";
LoRa.packetRssi();
}

Serial.println(val);
liveValue = val;

if(priviousValue != liveValue)
{
priviousValue = liveValue;

if(val == 11)
{
digitalWrite(RLY1 , LOW);
}

if(val == 22)
{
digitalWrite(RLY1 , HIGH);
}

if(val == 33)
{
digitalWrite(RLY2 , LOW);
}

if(val == 44)
{
digitalWrite(RLY2 , HIGH);
}
}
delay(50);
}

/*
* 1. when switch 1 is pressed turn ON RLY1 & RLY2
* 2. if
*/

Аватара пользователя
Rovki
Полковник
Сообщения: 4875
Зарегистрирован: 22.04.2016{, 17:25}
Репутация: 269
Откуда: Чехов
Имя: Анатолий
Контактная информация:

Переделка готового скетча

#2

Сообщение Rovki » 29.08.2022{, 18:14}

Похоже в наши ряды стали приходить с других форумов ,где работают с С++. :smile427:
В ФЛ прог такая задача решается на раз-два , несколько блоков
Электронщик до мозга костей и не только

erno
Рядовой
Сообщения: 94
Зарегистрирован: 02.08.2017{, 13:09}
Репутация: 5

Переделка готового скетча

#3

Сообщение erno » 29.08.2022{, 18:53}

Rovki писал(а):
29.08.2022{, 18:14}
Похоже в наши ряды стали приходить с других форумов ,где работают с С++. :smile427:
В ФЛ прог такая задача решается на раз-два , несколько блоков
Я давно из этих рядов , просто не нашел блоков для этого модуля , приходиться доделывать таким образом . А если видели блок для этого модуля то дайте мне ссылку

Аватара пользователя
ViktorPetrov
Лейтенант
Сообщения: 678
Зарегистрирован: 09.04.2018{, 23:56}
Репутация: 49
Имя: Виктор

Переделка готового скетча

#4

Сообщение ViktorPetrov » 29.08.2022{, 18:59}

erno, Внимательно читайте темы ,в которых задаете вопрос (есть ли возможность с помощью этокого блока включять и выключять реле ? ) ,там есть примеры с ответом на ваш вопрос:Блоки для LoRa. Дальняя радиосвязь. .И сами примеры:
Lora_приёмник_v3_01.flp
передатчик_v2.flp
Передатчик немного переделаете под свой проект.

erno
Рядовой
Сообщения: 94
Зарегистрирован: 02.08.2017{, 13:09}
Репутация: 5

Переделка готового скетча

#5

Сообщение erno » 03.09.2022{, 15:48}

ViktorPetrov писал(а):
29.08.2022{, 18:59}
erno, Внимательно читайте темы ,в которых задаете вопрос (есть ли возможность с помощью этокого блока включять и выключять реле ? ) ,там есть примеры с ответом на ваш вопрос:Блоки для LoRa. Дальняя радиосвязь. .И сами примеры:
Lora_приёмник_v3_01.flp
передатчик_v2.flp
Передатчик немного переделаете под свой проект.
Спасибо конечно ,но примеры у меня не рабоают даже в оригинале ,

Ответить

Вернуться в «Помогите, а то я "нимагу"»