diff --git a/8_Channel_Solenoid_Driver/Arduino_Solenoid_Driver/.uno.test.only b/8_Channel_Solenoid_Driver/Arduino_Solenoid_Driver/.uno.test.only new file mode 100644 index 000000000..e69de29bb diff --git a/8_Channel_Solenoid_Driver/Arduino_Solenoid_Driver/Arduino_Solenoid_Driver.ino b/8_Channel_Solenoid_Driver/Arduino_Solenoid_Driver/Arduino_Solenoid_Driver.ino new file mode 100644 index 000000000..19640f150 --- /dev/null +++ b/8_Channel_Solenoid_Driver/Arduino_Solenoid_Driver/Arduino_Solenoid_Driver.ino @@ -0,0 +1,47 @@ +// SPDX-FileCopyrightText: 2025 Liz Clark for Adafruit Industries +// +// SPDX-License-Identifier: MIT + +#include + +#define NOID_1 0 // MCP23XXX pin LED is attached to +#define NOID_2 4 // MCP23XXX pin LED is attached to + +Adafruit_MCP23X17 mcp; + +void setup() { + Serial.begin(115200); + while (!Serial); + Serial.println("8 Channel Solenoid Driver Demo"); + if (!mcp.begin_I2C()) { + Serial.println("Couldn't find MCP23017.."); + while (1); + } + mcp.pinMode(NOID_1, OUTPUT); + mcp.pinMode(NOID_2, OUTPUT); + + Serial.println("Found MCP23017, looping..."); +} + +void loop() { + Serial.println("Solenoid 1!"); + mcp.digitalWrite(NOID_1, HIGH); + delay(500); + mcp.digitalWrite(NOID_1, LOW); + delay(500); + Serial.println("Solenoid 2!"); + mcp.digitalWrite(NOID_2, HIGH); + delay(500); + mcp.digitalWrite(NOID_2, LOW); + delay(500); + Serial.println("Together!"); + mcp.digitalWrite(NOID_1, HIGH); + mcp.digitalWrite(NOID_2, HIGH); + delay(1000); + mcp.digitalWrite(NOID_1, LOW); + mcp.digitalWrite(NOID_2, LOW); + delay(2000); + Serial.println("Repeat!"); + Serial.println(); + delay(500); +} diff --git a/8_Channel_Solenoid_Driver/CircuitPython/code.py b/8_Channel_Solenoid_Driver/CircuitPython/code.py new file mode 100644 index 000000000..84edcdeea --- /dev/null +++ b/8_Channel_Solenoid_Driver/CircuitPython/code.py @@ -0,0 +1,38 @@ +# SPDX-FileCopyrightText: 2025 Liz Clark for Adafruit Industries +# +# SPDX-License-Identifier: MIT + +import time +import board +from adafruit_mcp230xx.mcp23017 import MCP23017 + +i2c = board.STEMMA_I2C() + +mcp = MCP23017(i2c) + +noid_1 = mcp.get_pin(0) +noid_2 = mcp.get_pin(4) +noid_1.switch_to_output(value=False) +noid_2.switch_to_output(value=False) + +while True: + noid_1.value = True + print(f"Solenoid 1: {noid_1.value}, Solenoid 2: {noid_2.value}") + time.sleep(0.2) + noid_1.value = False + print(f"Solenoid 1: {noid_1.value}, Solenoid 2: {noid_2.value}") + time.sleep(0.2) + noid_2.value = True + print(f"Solenoid 1: {noid_1.value}, Solenoid 2: {noid_2.value}") + time.sleep(0.2) + noid_2.value = False + print(f"Solenoid 1: {noid_1.value}, Solenoid 2: {noid_2.value}") + time.sleep(1) + noid_1.value = True + noid_2.value = True + print(f"Solenoid 1: {noid_1.value}, Solenoid 2: {noid_2.value}") + time.sleep(1) + noid_1.value = False + noid_2.value = False + print(f"Solenoid 1: {noid_1.value}, Solenoid 2: {noid_2.value}") + time.sleep(2)