void Port::shiftWrite(uint8_t bitOrder, uint16_t value, uint8_t count) const { uint16_t mask = bit(LSBFIRST ? 0 : count - 1); for (uint8_t i = 0; i < count; ++i) { digiWrite(value & mask); if (bitOrder == LSBFIRST) mask <<= 1; else mask >>= 1; digiWrite2(1); digiWrite2(0); } }
void RemotePort::anaWrite(uint8_t val) const { if (portNum == 2 || portNum == 3) { bitSet(node.data.flags, portNum + 2); node.data.anaOut[portNum - 2] = val; } else digiWrite2(val >= 128); }
uint16_t Port::shiftRead(uint8_t bitOrder, uint8_t count) const { uint16_t value = 0, mask = bit(LSBFIRST ? 0 : count - 1); for (uint8_t i = 0; i < count; ++i) { digiWrite2(1); delayMicroseconds(5); if (digiRead()) value |= mask; if (bitOrder == LSBFIRST) mask <<= 1; else mask >>= 1; digiWrite2(0); delayMicroseconds(5); } return value; }
void BlinkPlug::ledOff (byte mask) { if (mask & 1) { mode(INPUT); digiWrite(1); } if (mask & 2) { mode2(INPUT); digiWrite2(1); } leds &= ~ mask; }
void BlinkPlug::ledOn (byte mask) { if (mask & 1) { digiWrite(0); mode(OUTPUT); } if (mask & 2) { digiWrite2(0); mode2(OUTPUT); } leds |= mask; }
void SHT21::clock(uint8_t x) const { delayMicroseconds(2); digiWrite2(x); delayMicroseconds(5); }