Skip to content

Commit

Permalink
configurable trigger time by injection
Browse files Browse the repository at this point in the history
user configurable trigger time in Arduino sketch
  • Loading branch information
alexmucde committed Jul 9, 2021
1 parent 89847f4 commit 474110c
Show file tree
Hide file tree
Showing 8 changed files with 176 additions and 46 deletions.
7 changes: 7 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,7 @@ The Arduino SW understands the following commands:
* "R11\n", "R21\n", "R31\n", "R41\n" Activates Relais connected to pin D1, D2, D6 and D7 (Wemos D1 Mini) or D7, D6, D5, D2 (Wemos D1)
* "R10\n", "R20\n", "R30\n", "R40\n" Deactivates Relais connected to pin D1, D2, D6 and D7 (Wemos D1 Mini) or D7, D6, D5, D2 (Wemos D1)
* "R1T\n", "R2T\n", "R3T\n", "R4T\n" Trigger Relais connected to pin D1, D2, D6 and D7 (Wemos D1 Mini) or D7, D6, D5, D2 (Wemos D1) for 500ms
* "R1T<time in ms>\n", "R2T<time in ms>\n", "R3T<time in ms>\n", "R4T<time in ms>\n" Trigger Relais connected to pin D1, D2, D6 and D7 (Wemos D1 Mini) or D7, D6, D5, D2 (Wemos D1) for the defined time in ms

The Arduino board sends the status of Relais, when it was triggered with the button with the same command.

Expand All @@ -100,6 +101,7 @@ The Arduino board sends every second a watchdog signal "WD\n".
The commands are interpreted independent of the service id.

* <Relais name> on/off/trigger
* <Relais name> trigger <time in ms>
* <Power name> on/off
* VOLTAGE1 <value>
* VOLTAGE2 <value>
Expand Down Expand Up @@ -140,6 +142,11 @@ Github Sponsors:

## Changes

v0.0.9:

* configurable trigger time by injection
* user configurable trigger time in Arduino sketch

v0.0.8:

* added DLT injection for setting voltage
Expand Down
21 changes: 17 additions & 4 deletions arduino/WemosD1MiniRelais3Button/WemosD1MiniRelais3Button.ino
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ void loop()
break;
case WSerial::Line:
String text = serial.line();
if(text[0]=='R')
if(text.length()>=3 && text[0]=='R')
{
if(text[1]>='1' || text[1]<='5')
{
Expand All @@ -109,12 +109,25 @@ void loop()
}
else if(text[2]=='T')
{
unsigned int duration = 500;
if(text.length()>3)
{
duration = 0;
for(int num=3;num<text.length();num++)
{
if(text[num]>='0' && text[num]<='9')
{
duration = duration * 10 + (text[num]-'0');
}
}
duration += 2; // reaction time of Relais
}
if(text[1]=='1')
relais1.trigger(500);
relais1.trigger(duration);
else if(text[1]=='2')
relais2.trigger(500);
relais2.trigger(duration);
else if(text[1]=='3')
relais3.trigger(500);
relais3.trigger(duration);
}
}
}
Expand Down
23 changes: 18 additions & 5 deletions arduino/WemosD1Relais4Shield/WemosD1Relais4Shield.ino
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ void loop()
break;
case WSerial::Line:
String text = serial.line();
if(text[0]=='R')
if(text.length()>=3 && text[0]=='R')
{
if(text[1]>='1' || text[1]<='5')
{
Expand Down Expand Up @@ -98,14 +98,27 @@ void loop()
}
else if(text[2]=='T')
{
unsigned int duration = 500;
if(text.length()>3)
{
duration = 0;
for(int num=3;num<text.length();num++)
{
if(text[num]>='0' && text[num]<='9')
{
duration = duration * 10 + (text[num]-'0');
}
}
duration += 2; // reaction time of Relais
}
if(text[1]=='1')
relais1.trigger(500);
relais1.trigger(duration);
else if(text[1]=='2')
relais2.trigger(500);
relais2.trigger(duration);
else if(text[1]=='3')
relais3.trigger(500);
relais3.trigger(duration);
else if(text[1]=='4')
relais4.trigger(500);
relais4.trigger(duration);
}
}
}
Expand Down
145 changes: 120 additions & 25 deletions dialog.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -484,9 +484,14 @@ void Dialog::on_checkBoxRelais1_clicked(bool checked)

void Dialog::on_pushButtonRelais1Trigger_clicked()
{
dltRelais1.trigger(1);
relais1Trigger(500);
}

void Dialog::relais1Trigger(unsigned int duration)
{
dltRelais1.trigger(1,duration);
ui->checkBoxRelais1->setChecked(false);
dltMiniServer.sendValue2(dltRelais1.getRelaisName(1),"Trigger");
dltMiniServer.sendValue3(dltRelais1.getRelaisName(1),"Trigger",QString("%1").arg(duration));
}

void Dialog::on_checkBoxRelais2_clicked(bool checked)
Expand All @@ -505,9 +510,14 @@ void Dialog::on_checkBoxRelais2_clicked(bool checked)

void Dialog::on_pushButtonRelais2Trigger_clicked()
{
dltRelais1.trigger(2);
relais2Trigger(500);
}

void Dialog::relais2Trigger(unsigned int duration)
{
dltRelais1.trigger(2,duration);
ui->checkBoxRelais2->setChecked(false);
dltMiniServer.sendValue2(dltRelais1.getRelaisName(2),"Trigger");
dltMiniServer.sendValue3(dltRelais1.getRelaisName(2),"Trigger",QString("%1").arg(duration));
}

void Dialog::on_checkBoxRelais3_clicked(bool checked)
Expand All @@ -526,45 +536,74 @@ void Dialog::on_checkBoxRelais3_clicked(bool checked)

void Dialog::on_pushButtonRelais3Trigger_clicked()
{
dltRelais1.trigger(3);
relais3Trigger(500);
}

void Dialog::relais3Trigger(unsigned int duration)
{
dltRelais1.trigger(3,duration);
ui->checkBoxRelais3->setChecked(false);
dltMiniServer.sendValue2(dltRelais1.getRelaisName(3),"Trigger");
dltMiniServer.sendValue3(dltRelais1.getRelaisName(3),"Trigger",QString("%1").arg(duration));
}

void Dialog::on_pushButtonRelais4Trigger_clicked()
{
dltRelais2.trigger(1);
relais4Trigger(500);
}

void Dialog::relais4Trigger(unsigned int duration)
{
dltRelais2.trigger(1,duration);
ui->checkBoxRelais4->setChecked(false);
dltMiniServer.sendValue2(dltRelais2.getRelaisName(1),"Trigger");
dltMiniServer.sendValue3(dltRelais2.getRelaisName(1),"Trigger",QString("%1").arg(duration));
}

void Dialog::on_pushButtonRelais5Trigger_clicked()
{
dltRelais2.trigger(2);
relais5Trigger(500);
}

void Dialog::relais5Trigger(unsigned int duration)
{
dltRelais2.trigger(2,duration);
ui->checkBoxRelais5->setChecked(false);
dltMiniServer.sendValue2(dltRelais2.getRelaisName(2),"Trigger");
dltMiniServer.sendValue3(dltRelais2.getRelaisName(2),"Trigger",QString("%1").arg(duration));
}

void Dialog::on_pushButtonRelais6Trigger_clicked()
{
dltRelais2.trigger(3);
relais6Trigger(500);
}

void Dialog::relais6Trigger(unsigned int duration)
{
dltRelais2.trigger(3,duration);
ui->checkBoxRelais5->setChecked(false);
dltMiniServer.sendValue2(dltRelais2.getRelaisName(3),"Trigger");
dltMiniServer.sendValue3(dltRelais2.getRelaisName(3),"Trigger",QString("%1").arg(duration));
}

void Dialog::on_pushButtonRelais7Trigger_clicked()
{
dltRelais1.trigger(4);
ui->checkBoxRelais7->setChecked(false);
dltMiniServer.sendValue2(dltRelais1.getRelaisName(4),"Trigger");
relais7Trigger(500);
}

void Dialog::relais7Trigger(unsigned int duration)
{
dltRelais1.trigger(4,duration);
ui->checkBoxRelais7->setChecked(false);
dltMiniServer.sendValue3(dltRelais1.getRelaisName(4),"Trigger",QString("%1").arg(duration));
}

void Dialog::on_pushButtonRelais8Trigger_clicked()
{
dltRelais2.trigger(4);
relais8Trigger(500);
}

void Dialog::relais8Trigger(unsigned int duration)
{
dltRelais2.trigger(4,duration);
ui->checkBoxRelais8->setChecked(false);
dltMiniServer.sendValue2(dltRelais2.getRelaisName(4),"Trigger");
dltMiniServer.sendValue3(dltRelais2.getRelaisName(4),"Trigger",QString("%1").arg(duration));
}

void Dialog::on_checkBoxRelais4_clicked(bool checked)
Expand Down Expand Up @@ -861,7 +900,14 @@ void Dialog::injection(QString text)
}
else if(list[1]=="trigger")
{
on_pushButtonRelais1Trigger_clicked();
if(list.length()>2)
{
relais1Trigger(list[2].toUInt());
}
else
{
relais1Trigger(500);
}
}
}
else if(dltRelais1.getRelaisName(2) == list[0])
Expand All @@ -878,7 +924,14 @@ void Dialog::injection(QString text)
}
else if(list[1]=="trigger")
{
on_pushButtonRelais2Trigger_clicked();
if(list.length()>2)
{
relais2Trigger(list[2].toUInt());
}
else
{
relais2Trigger(500);
}
}
}
else if(dltRelais1.getRelaisName(3) == list[0])
Expand All @@ -895,7 +948,14 @@ void Dialog::injection(QString text)
}
else if(list[1]=="trigger")
{
on_pushButtonRelais3Trigger_clicked();
if(list.length()>2)
{
relais3Trigger(list[2].toUInt());
}
else
{
relais3Trigger(500);
}
}
}
else if(dltRelais1.getRelaisName(4) == list[0])
Expand All @@ -912,7 +972,14 @@ void Dialog::injection(QString text)
}
else if(list[1]=="trigger")
{
on_pushButtonRelais7Trigger_clicked();
if(list.length()>2)
{
relais7Trigger(list[2].toUInt());
}
else
{
relais7Trigger(500);
}
}
}
else if(dltRelais2.getRelaisName(1) == list[0])
Expand All @@ -929,7 +996,14 @@ void Dialog::injection(QString text)
}
else if(list[1]=="trigger")
{
on_pushButtonRelais4Trigger_clicked();
if(list.length()>2)
{
relais4Trigger(list[2].toUInt());
}
else
{
relais4Trigger(500);
}
}
}
else if(dltRelais2.getRelaisName(2) == list[0])
Expand All @@ -946,7 +1020,14 @@ void Dialog::injection(QString text)
}
else if(list[1]=="trigger")
{
on_pushButtonRelais5Trigger_clicked();
if(list.length()>2)
{
relais5Trigger(list[2].toUInt());
}
else
{
relais5Trigger(500);
}
}
}
else if(dltRelais2.getRelaisName(3) == list[0])
Expand All @@ -963,7 +1044,14 @@ void Dialog::injection(QString text)
}
else if(list[1]=="trigger")
{
on_pushButtonRelais6Trigger_clicked();
if(list.length()>2)
{
relais6Trigger(list[2].toUInt());
}
else
{
relais6Trigger(500);
}
}
}
else if(dltRelais2.getRelaisName(4) == list[0])
Expand All @@ -980,7 +1068,14 @@ void Dialog::injection(QString text)
}
else if(list[1]=="trigger")
{
on_pushButtonRelais8Trigger_clicked();
if(list.length()>2)
{
relais8Trigger(list[2].toUInt());
}
else
{
relais8Trigger(500);
}
}
}

Expand Down
9 changes: 9 additions & 0 deletions dialog.h
Original file line number Diff line number Diff line change
Expand Up @@ -101,5 +101,14 @@ private slots:
void restoreSettings();
void updateSettings();

void relais1Trigger(unsigned int duration);
void relais2Trigger(unsigned int duration);
void relais3Trigger(unsigned int duration);
void relais4Trigger(unsigned int duration);
void relais5Trigger(unsigned int duration);
void relais6Trigger(unsigned int duration);
void relais7Trigger(unsigned int duration);
void relais8Trigger(unsigned int duration);

};
#endif // DIALOG_H
13 changes: 3 additions & 10 deletions dltrelais.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -318,22 +318,15 @@ void DLTRelais::readSettings(const QString &filename,int num)
file.close();
}

void DLTRelais::trigger(int num)
void DLTRelais::trigger(int num,unsigned int duration)
{
if(!active)
return;

// trigger a Relais for 500ms
qDebug() << "DLTRelais: trigger" << num;
qDebug() << "DLTRelais: trigger" << num << duration;

if(num==1)
serialPort.write("R1T\n");
else if(num==2)
serialPort.write("R2T\n");
else if(num==3)
serialPort.write("R3T\n");
else if(num==4)
serialPort.write("R4T\n");
serialPort.write(QString("R%1T%2\n").arg(num).arg(duration).toLatin1());
}

void DLTRelais::on(int num)
Expand Down
Loading

0 comments on commit 474110c

Please sign in to comment.