DVT2023/231124_DVT_Gantry_Xray_funk...

122 lines
4.8 KiB
C++

#if defined(__AVR_ATmega168__) || defined(__AVR_ATmega328P__)
#define PIN_INDUCT_SWITCH 4
#define PIN_ENCODER 5
#define PIN_VARIAC_LIMIT_BACK 2
#define PIN_VARIAC_LIMIT_FOR 3
#define PIN_ARM_STOP 7
#define PIN_ARM_SPEED 9
#define PIN_ARM_DIRECT 10
#define PIN_STEPMOTOR_ABLE 8
#define PIN_STEPMOTOR_DIRECT 6
#define PIN_STEPMOTOR_CLOCK 12
#define PIN_XRAY 13
#define PIN_FILAMENT_SWITCH 11
/*
#define AnalogWrite(...) analogWrite(__VA_ARGS__);
#define AnalogWriteAttach(...);
#define AnalogWriteSetup(..);*/
#elif defined(ESP32) || defined(ARDUINO_ARCH_ESP32)
#define PIN_INDUCT_SWITCH 34
#define PIN_ENCODER 35
#define PIN_VARIAC_LIMIT_BACK 36
#define PIN_VARIAC_LIMIT_FOR 39
#define PIN_ARM_STOP 4
#define PIN_ARM_SPEED 25
#define PIN_ARM_DIRECT 18
#define PIN_STEPMOTOR_ABLE 19
#define PIN_STEPMOTOR_DIRECT 16
#define PIN_STEPMOTOR_CLOCK 17
#define PIN_XRAY 14
#define PIN_KV_SWITCH 27
#define PIN_FILAMENT_SWITCH 26
/*
* ESP32 Polyfill Lib
#define AnalogWrite(...) ledcWrite(__VA_ARGS__);
#define AnalogWriteAttach(...) ledcAttachPin(__VA_ARGS__);
#define AnalogWriteSetup(...) ledcSetup(__VA_ARGS__);*/
#endif
#define CONTROLMSG
#ifdef CONTROLMSG
#define CONTROLMSG(...) Serial.println(__VA_ARGS__)
#else
#define CONTROLMSG(...)
#endif
//#define DEBUGMSG
#ifdef DEBUGMSG
#define debugMSG(...) Serial.println(__VA_ARGS__)
#else
#define debugMSG(...)
#endif
#define SYSMSG
#ifdef SYSMSG
#define sysMSG(...) Serial.println(__VA_ARGS__)
#else
#define sysMSG(...)
#endif
#define Commands
#ifdef Commands
String commandList[13] = {"PULS",
"ANGL",
"SPCL",
"SPCC",
"RES",
"VARF",
"VARB",
"TEST",
"RXON",
"STFI",
"RXSH",
"SCAN",
};
String cmdListText[13] = {" | Drehen der Gantry auf eine variablen Encoderposition (als Parameter mit dem Befehl übergeben).",
" | Drehen der Gantry auf eine variable Winkelposition (als Parameter mit dem Befehl übergeben).",
" | Einstellen der Drehgeschwindigkeit (als Parameter mit dem Befehl übergeben) für Drehungen im Uhrzeigersinn (clockwise). Der Wert muss zwischen 0 und 255 (8 Bit) liegen.",
" | Einstellen der Drehgeschwindigkeit (als Parameter mit dem Befehl übergeben) für Drehungen gegen den Uhrzeigersinn (counter clockwise). Der Wert muss zwischen 0 und 255 (8 Bit) liegen.",
" | Ausführen der RESET-Sequenz. Dabei wird die Gantry auf eine definierte Null-Position gefahren.",
" | Verfährt den Variac um eine variable Anzahl an Schrittmotorschritten (als Parameter mit dem Befehl übergeben) vorwärts (forward).",
" | Verfährt den Variac um eine variable Anzahl an Schrittmotorschritten (als Parameter mit dem Befehl übergeben) rückwärts (backward).",
" | Führt einen Kommunikationstest durch, der prüft, ob der Arduino erfolgreich mit dem Computer kommunizieren kann.",
" | Führt einen Röntgenschuss aus. Diese Funktion steuert nur die Röhre alleine, ohne das Filament an, was bedeutet, dass diese Funktion alleine keinen gültigen (Röntgenstrahlung emittierenden) Röntgenschuss generiert.",
" | Ändert den Status (als Parameter mit dem Befehl übergeben) des Filaments. Eins (1) schaltet das Filament ein, null (0) schaltet es aus.",
" | Führt einen gültigen Röntgenschuss aus (ACHTUNG: es werden Röntgenstrahlen emittiert). Schaltet vor der Emission das Filament ein, lässt dieses vorglühen, führt einen Schuss aus und deaktiviert anschließend das Filament.",
" | Führt eine SCAN-Sequenz aus, welche die Gantry um einen variablen Winkel (als Parameter mit dem Befehl übergeben) drehen lässt und dabei nach einem bestimmten Muster (z.B. jedes fünfte Winkelgrad) einen Röntgenschuss ausführt (ACHTUNG: es werden Röntgenstrahlen emittiert). Dabei wird im Vorfeld des Scans das Filament aktiviert und im Anschluss deaktiviert."
};
#define PULS 0
#define ANGL 1
#define SPCL 2
#define SPCC 3
#define RES 4
#define VARF 5
#define VARB 6
#define TEST 7
#define RXON 8
#define STFI 9
#define RXSH 10
#define SCAN 11
#define GRP 12
#define NtClSpeed 200
#define NtCcSpeed 200
#define NtClSpeedSlow 100
#define NtCcSpeedSlow 100
#define PreHeatTime 10000
#define CoolDownTime 10000
#define XRayTime 120
#define XRayMaxTime 300
#endif