#include #include #include "base/config_service.hpp" #include "base/device_info.hpp" #include "zstm32/zstm32.hpp" #include "zsdk/modbus/modbus_block_host.hpp" #include "zsdk/pxx_pressure_sensor_driver/pxx_pressure_sensor_bus.hpp" #include "zsdk/tmc/ztmc5130.hpp" #include "zsdk/zsdk.hpp" void hardware_init(); namespace iflytop { class Hardware { public: ZGPIO m_evaporation_bin_water_sensor; // 蒸发仓水浸 ZGPIO m_device_bottom_water_sensor; // 设备底部水浸 ZSPI m_motor_spi; // SPI TMC5130 m_motor[2]; // 蠕动泵控制 ZGPIO triLight_R; ZGPIO triLight_G; ZGPIO triLight_B; ZGPIO triLight_BEEP; ModbusBlockHost m_modbusBlockHost; // PXXPressureSensorBus m_pressureSensorBus; // PXX压力传感器总线 public: static Hardware& ins() { static Hardware ins; return ins; } void init(); int32_t motorNum() { return ZARRAY_SIZE(m_motor); } TMC5130* motor(int32_t index) { if (index < ZARRAY_SIZE(m_motor)) { return &m_motor[index]; } return nullptr; } PXXPressureSensorBus* pressureSensorBus() { return &m_pressureSensorBus; } void setRGB(int32_t r, int32_t g, int32_t b, int32_t beep) { if (r > 0) triLight_R.write(1); else triLight_R.write(0); if (g > 0) triLight_G.write(1); else triLight_G.write(0); if (b > 0) triLight_B.write(1); else triLight_B.write(0); if (beep > 0) triLight_BEEP.write(1); else triLight_BEEP.write(0); } }; } // namespace iflytop