130 lines
3.1 KiB
C
130 lines
3.1 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 *key;
|
|
int *value;
|
|
String description;
|
|
int defaultValue;
|
|
};
|
|
|
|
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 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
|