Files
EggDuino/include/EggDuino.h
2026-02-22 23:10:28 +01:00

136 lines
3.3 KiB
C

#ifndef EGGDUINO_H
#define EGGDUINO_H
#include <Arduino.h>
#ifdef ESP32
#include <ESP32Servo.h>
#include <WiFi.h>
#include <WebServer.h>
#include <SPIFFS.h>
#else
#include <Servo.h>
#endif
#include <FastAccelStepper.h>
#include "SerialCommand.h"
#include "button.h"
// implemented Eggbot-Protocol-Version v13
#define initSting "EBBv13_and_above Protocol emulated by Eggduino-Firmware V1.6a"
#ifdef ESP32
// Rotational Stepper
static const int kDefaultRotDirPin = 16;
static const int kDefaultRotEnablePin = 12;
static const int kDefaultRotStepPin = 26;
#define rotMicrostep 32
static const int kDefaultRotMicrostep = rotMicrostep;
// Pen Stepper
static const int kDefaultPenStepPin = 25;
static const int kDefaultPenDirPin = 27;
static const int kDefaultPenEnablePin = 12;
#define penMicrostep 32
static const int kDefaultPenMicrostep = penMicrostep;
static const int kDefaultServoPin = 17;
#else
// Rotational Stepper
static const int kDefaultRotStepPin = 2;
static const int kDefaultRotDirPin = 5;
static const int kDefaultRotEnablePin = 8;
#define rotMicrostep 16
static const int kDefaultRotMicrostep = rotMicrostep;
// Pen Stepper
static const int kDefaultPenStepPin = 3;
static const int kDefaultPenDirPin = 6;
static const int kDefaultPenEnablePin = 8;
#define penMicrostep 16
static const int kDefaultPenMicrostep = penMicrostep;
static const int kDefaultServoPin = 4;
#endif
struct ConfigParameter {
const char *type;
const char *key;
void *value;
String description;
int defaultValue;
const char *defaultText;
bool secret;
};
extern FastAccelStepperEngine g_stepEngine;
extern FastAccelStepper *g_pStepperRotate;
extern FastAccelStepper *g_pStepperPen;
extern Servo penServo;
extern SerialCommand SCmd;
extern int g_iPenUpPos;
extern int g_iPenDownPos;
extern int g_iServoRateUp;
extern int g_iServoRateDown;
extern long g_iRotStepError;
extern long g_iPenStepError;
extern int g_iPenState;
extern uint32_t g_uiNodeCount;
extern unsigned int g_uiLayer;
extern boolean g_bPrgButtonState;
extern float fROT_STEP_CORRECTION;
extern float fPEN_STEP_CORRECTION;
extern boolean g_bMotorsEnabled;
extern int g_iRotDirPin;
extern int g_iRotEnablePin;
extern int g_iRotStepPin;
extern int g_iPenStepPin;
extern int g_iPenDirPin;
extern int g_iPenEnablePin;
extern int g_iServoPin;
extern int g_iRotMicrostep;
extern int g_iPenMicrostep;
extern String g_sHostname;
extern String g_sWifiSsid;
extern String g_sWifiPassword;
extern ConfigParameter configParameters[];
extern const size_t configParameterCount;
void makeComInterface();
void initHardware();
void moveOneStep();
void moveToDestination();
void sendAck();
void sendError();
void motorsOff();
void motorsOn();
void toggleMotors();
void doTogglePen();
void setprgButtonState();
bool parseSMArgs(uint16_t *duration, int *penStepsEBB, int *rotStepsEBB);
void prepareMove(uint16_t duration, int penStepsEBB, int rotStepsEBB);
void storePenUpPosInEE();
void storePenDownPosInEE();
void updateStepCorrectionFactors();
bool initConfigStore();
bool loadConfigFromFile();
bool saveConfigToFile();
String buildConfigJson();
bool applyConfigJson(const String &payload, String &errorMessage);
void startWebInterface();
void handleWebInterface();
void Log(const String &message);
void Log(const char *message);
String buildLogsJson(uint32_t sinceSeq);
#endif