#define SW_VERS "v1.0"
// TARGET
// LOLIN(WEMOS) D1 R2 & mini
// DEBUG Const
#define DEBUG true //set to true for debug output, false for no debug output
#define DEBUG_SERIAL \
if (DEBUG) Serial
// Pin assignment
#define PIN_DIR 22 //Wemos Mini D3
#define PIN_STEP 23 //Wemos Mini D4
#define PIN_HOME 18 //Wemos Mini D7
// SW Global variables
enum stateEnum {HOMING, CONNECTING};
enum stateEnum meridianState = HOMING;
enum stateEnum meridianStateOld = CONNECTING;
bool first = false;
int year = 2024;
int month = 12;
int day = 30;
int hour = 12;
int minute = 30;
int second = 0;
int timeZone = 1;
double latitude = 44.389568108417;
double longitude = 7.54786871783841;
#include "Meridiana.h"
void setup() {
Serial.begin(9600);
DEBUG_SERIAL.println("SETUP");
pinMode(PIN_DIR, OUTPUT);
pinMode(PIN_STEP, OUTPUT);
pinMode(PIN_HOME, INPUT_PULLUP);
}
void loop() {
// First evaluation for first time in new state
if (meridianStateOld != meridianState) {
first = true;
meridianStateOld = meridianState;
}
switch (meridianState) {
case HOMING:
if (first) {
first = false;
Serial.println("HOMING");
Serial.println(calcSolarElevationAzimut(year, month, day, hour, minute, second, timeZone, latitude, longitude), 10);
}
if (doHome()) {
meridianState = CONNECTING;
}
break;
case CONNECTING:
if (first) {
first = false;
Serial.println("CONNECTING");
}
break;
default:
break;
}
}