TCMenu with more tasks in TaskManager #361
Unanswered
THAWINKELS
asked this question in
Q&A
Replies: 1 comment 1 reply
-
I mean to be honest it will be nearly impossible for us to debug this for you. Some points to help you:
|
Beta Was this translation helpful? Give feedback.
1 reply
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
Hi,
In my system with an Oled display with TC menu and rotary encoder on my Arduino mega I wan't to connect an ethernet shield for modbus TCP connection.
Test without TCmenu works bun when I combine the scripts It won't work any more. The arduino crashed and screen.
I think the Taskmanager and Ethernet.begin gives the problem.
Maybe I have to add tasks? How can that be done in the TaskManager libary?
See code attached..
Thanks!
`#include "UniversalMenu_v2_menu.h"
//IO Voorzijde
#define relay4 14
#define relay3 15
#define relay2 16
#define relay1 17
// IO Achterzijde
//INPUTS
#define button1 30
#define button2 31
#define button3 32
#define button4 33
#define button5 34
#define button6 35
#define master_button1 36
#define master_button2 37
#define master_button2 38
#define extern1 39
#define extern2 40
#define extern3 41
#define extern4 42
//OUTPUTS
#define led1 A10
#define led2 A11
#define led3 A12
#define led4 A13
#define led5 A14
#define led6 A15
// Variabele Modbus
int cardnumber;
int keynumber;
int objectnumber;
// MODBUS
#include <Ethernet.h>
#include "MgsModbus.h"
#include <SPI.h>
MgsModbus mb; // Objekterzeugung
// Ethernet-Setting HEMS:
// - MAC- und IP-Adresse des HEMS-Arduino-Ethernet-Shield Nummer 11
byte mac[] = {0xB8, 0x37, 0xEB, 0x8F, 0x10, 0x72};
IPAddress ip(192, 168, 1, 72);
IPAddress gateway(192, 168, 1, 1); // Standard-Gateway HEMS
// (fuer App-Zugriff via WLAN)
IPAddress subnet(255, 255, 255, 0); // Standard-Subnetzmaske HEMS
//MENU VARIABLE
int currentMode;
void setup() {
setupMenu();
pinMode(14, OUTPUT);
pinMode(15, OUTPUT);
pinMode(16, OUTPUT);
pinMode(17, OUTPUT);
pinMode(30, INPUT);
pinMode(31, INPUT);
pinMode(32, INPUT);
pinMode(33, INPUT);
pinMode(34, INPUT);
pinMode(35, INPUT_PULLUP);
pinMode(36, INPUT);
pinMode(37, INPUT);
pinMode(38, INPUT);
pinMode(39, INPUT);
pinMode(40, INPUT);
pinMode(41, INPUT);
pinMode(42, INPUT);
pinMode(A10, OUTPUT);
pinMode(A11, OUTPUT);
pinMode(A12, OUTPUT);
pinMode(A13, OUTPUT);
pinMode(A14, OUTPUT);
pinMode(A15, OUTPUT);
Ethernet.begin(mac, ip, gateway, subnet); // Netzwerk-Objekt erzeugen
//SPI
pinMode(4, OUTPUT); //SD
pinMode(10, OUTPUT); //ETHERNET
pinMode(7, OUTPUT); //LCD
}
void UpdateValues() {
currentMode = menuMode.getCurrentValue();
}
void Relays() {
if ((menuConnectionRelay1.getCurrentValue()) != 1) {
digitalWrite(relay1, HIGH);
}
else {
digitalWrite(relay1, LOW);
}
if ((menuConnectionRelay2.getCurrentValue()) != 1) {
digitalWrite(relay2, HIGH);
}
else {
digitalWrite(relay2, LOW);
}
if ((menuConnectionRelay3.getCurrentValue()) != 1) {
digitalWrite(relay3, HIGH);
}
else {
digitalWrite(relay3, LOW);
}
if ((menuConnectionRelay4.getCurrentValue()) != 1) {
digitalWrite(relay4, HIGH);
}
else {
digitalWrite(relay4, LOW);
}
}
void Modbus() {
mb.MbData[0] = cardnumber; // Array Index 0 ist HR 1 (Modbus-Adresse 40001)
mb.MbData[1] = keynumber; // Array Index 1 ist HR 2 (Modbus-Adresse 40003)
mb.MbData[2] = objectnumber; // Array Index 2 ist HR 3 (Modbus-Adresse 40005)
cardnumber = currentMode;
keynumber = 222;
objectnumber = 345;
//Starte Modbus-Slave-Kommunikation...
mb.MbsRun();
}
int QuizSystem() {
if ((digitalRead(button6)) == 0) {
digitalWrite(led6, HIGH);
}
else {
digitalWrite(led6, LOW);
}
}
void loop() {
taskManager.runLoop();
delay(5);
UpdateValues();
taskManager.runLoop();
delay(5);
Relays();
taskManager.runLoop();
delay(5);
Modbus();
taskManager.runLoop();
delay(5);
QuizSystem();
taskManager.runLoop();
delay(5);
}`
Beta Was this translation helpful? Give feedback.
All reactions