這些對象通過引用傳遞,但是庫確實會複製它們。
你可以改變:
MuxShield _muxShieldIn;
MuxShield _muxShieldOut;
參考文獻:
MuxShield &_muxShieldIn;
MuxShield &_muxShieldOut;
但是構造將需要進行修改,所以它使用的初始化列表。
目前,它的副本在這裏:
ToggleMux::ToggleMux(MuxShield & muxShieldIn, int inRow, int inBit, MuxShield & muxShieldOut, int outRow, int outBit)
{
_muxShieldIn = muxShieldIn;
_muxShieldOut = muxShieldOut;
//...
你需要改變它看起來像這樣:
ToggleMux::ToggleMux(MuxShield & muxShieldIn, int inRow, int inBit, MuxShield & muxShieldOut, int outRow, int outBit) : _muxShieldIn(muxShieldIn), _muxShieldOut(muxShieldOut)
{
//...
而且在_shiftReg1
的MuxShield
類數組,_shiftReg2
和_shiftReg3
可以是字符,因爲它們只存儲1或0,這會將其用量減半。
或者你可以使用我的BitBool庫(從庫管理器下載),使每個只需要兩個字節。所有你需要做的(這包括你的草圖和lib後):
更改報關單:
BitBool<16> _shiftReg1, _shiftReg2 _shiftReg3;
而且初始化到:
BitBool<16> _shiftReg1 = {0};
BitBool<16> _shiftReg2 = {0};
BitBool<16> _shiftReg3 = {0};
則所有三個變量需要6個字節而不是96個。我的類被設計成像數組一樣使用,所以你不需要改變任何其他代碼。
嗨,謝謝你的迴應。您的解決方案效果很好,但我認爲shiftReg數組仍然在多路複用遮罩對象之間共享。你認爲這是可能的嗎? – Jochim
只有它們是靜態的,它們不是,所以每個MuxShield實例都有自己的集合。在早上我會進一步看看可能發生的事情。 –