STAR
Cal STAR — firmware, DAQ server, and engine design
Loading...
Searching...
No Matches
solenoid.h
Go to the documentation of this file.
1// solenoid_controls.h
2// Interface for controlling solenoid valves via MCP23S17 GPIO expanders.
3
4#ifndef SOLENOID_CONTROLS_H_
5#define SOLENOID_CONTROLS_H_
6
7#include <Arduino.h>
8#include <MCP23S17.h>
9#include <SPI.h>
10#include <stddef.h>
11#include <stdint.h>
12
13namespace solenoids {
14
15// ===================== CONFIG =====================
16constexpr bool SOLENOID_ACTIVE_HIGH = true; // set to false if LOW = open
17constexpr int PYRO_CS_1 = 48;
18
19// ===================== PUBLIC ENUM =====================
20enum SolenoidID { OVP = 0, FVP, OUP, FUP, ODP, FDP, PVF, PVO };
21
22// ===================== API =====================
23
24// Initializes the MCP23S17 and configures all solenoid channels as outputs.
25void init(SPIClass& spi, int sclk, int miso, int mosi, int cs_pin,
26 uint8_t mcp_hw_addr = 0x00);
27
28// Individual solenoid controls
29void open(SolenoidID id);
30void close(SolenoidID id);
31bool isOpen(SolenoidID id);
32
33// Safety and helper utilities
34void safeAllOff();
35void pulseBlocking(SolenoidID id, uint32_t ms);
36
37// Higher-level operational macros
38void openAll();
39void closeAll();
40
41void fillTanks();
42void basePress();
43void pressKero();
44void pressLOX();
45void pressKeroLOX();
46void Pressurization();
47void ventKeroLOX();
48void openMains();
49void ventTanks();
50void ventAll();
51void Abort();
52
53} // namespace solenoids
54
55#endif // SOLENOID_CONTROLS_H_
void closeAll()
Definition solenoid.cpp:70
void ventKeroLOX()
Definition solenoid.cpp:123
void close(SolenoidID id)
Definition solenoid.cpp:46
void pressKero()
Definition solenoid.cpp:85
void Abort()
Definition solenoid.cpp:150
void Pressurization()
Definition solenoid.cpp:117
void pressLOX()
Definition solenoid.cpp:95
void fillTanks()
Definition solenoid.cpp:75
void ventAll()
Definition solenoid.cpp:142
void openAll()
Definition solenoid.cpp:65
void pressKeroLOX()
Definition solenoid.cpp:105
void open(SolenoidID id)
Definition solenoid.cpp:43
constexpr bool SOLENOID_ACTIVE_HIGH
Definition solenoid.h:16
void safeAllOff()
Definition solenoid.cpp:53
void pulseBlocking(SolenoidID id, uint32_t ms)
Definition solenoid.cpp:58
bool isOpen(SolenoidID id)
Definition solenoid.cpp:49
void init(SPIClass &spi, int sclk, int miso, int mosi, int cs_pin, uint8_t mcp_hw_addr)
Definition solenoid.cpp:31
void basePress()
Definition solenoid.cpp:81
void openMains()
Definition solenoid.cpp:130
constexpr int PYRO_CS_1
Definition solenoid.h:17
void ventTanks()
Definition solenoid.cpp:136