Exemplo n.º 1
0
 internal void OnDigitalPinChanged(byte pin, ArduinoDigitalValue state)
 {
     if (isDisposed)
     {
         return;
     }
     DigitalPinChanged?.Invoke(pin, state);
 }
Exemplo n.º 2
0
        /// <summary>
        /// Write to a digital pin that has been toggled to output mode with pinMode() method.
        /// </summary>
        /// <param name="pin">The digital pin to write to.</param>
        /// <param name="value">Value either Arduino.LOW or Arduino.HIGH.</param>
        public void DigitalWrite(int pin, ArduinoDigitalValue value)
        {
            int portNumber = (pin >> 3) & 0x0F;

            byte[] message = new byte[3];

            if (value == ArduinoDigitalValue.LOW)
            {
                _digitalOutputData[portNumber] &= ~(1 << (pin & 0x07));
            }
            else
            {
                _digitalOutputData[portNumber] |= (1 << (pin & 0x07));
            }

            message[0] = (byte)((int)ArduinoMultiByteCommand.DIGITAL_MESSAGE | portNumber);
            message[1] = (byte)(_digitalOutputData[portNumber] & 0x7F);
            message[2] = (byte)(_digitalOutputData[portNumber] >> 7);
            _serialPort.Write(message, 0, message.Length);
        }