Skip to content

Commit eca663c

Browse files
authored
Merge pull request #3021 from adafruit/solenoid_i2c
adding 8 channel solenoid driver demos
2 parents ef00664 + f8cb964 commit eca663c

File tree

3 files changed

+85
-0
lines changed

3 files changed

+85
-0
lines changed

8_Channel_Solenoid_Driver/Arduino_Solenoid_Driver/.uno.test.only

Whitespace-only changes.
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
// SPDX-FileCopyrightText: 2025 Liz Clark for Adafruit Industries
2+
//
3+
// SPDX-License-Identifier: MIT
4+
5+
#include <Adafruit_MCP23X17.h>
6+
7+
#define NOID_1 0 // MCP23XXX pin LED is attached to
8+
#define NOID_2 4 // MCP23XXX pin LED is attached to
9+
10+
Adafruit_MCP23X17 mcp;
11+
12+
void setup() {
13+
Serial.begin(115200);
14+
while (!Serial);
15+
Serial.println("8 Channel Solenoid Driver Demo");
16+
if (!mcp.begin_I2C()) {
17+
Serial.println("Couldn't find MCP23017..");
18+
while (1);
19+
}
20+
mcp.pinMode(NOID_1, OUTPUT);
21+
mcp.pinMode(NOID_2, OUTPUT);
22+
23+
Serial.println("Found MCP23017, looping...");
24+
}
25+
26+
void loop() {
27+
Serial.println("Solenoid 1!");
28+
mcp.digitalWrite(NOID_1, HIGH);
29+
delay(500);
30+
mcp.digitalWrite(NOID_1, LOW);
31+
delay(500);
32+
Serial.println("Solenoid 2!");
33+
mcp.digitalWrite(NOID_2, HIGH);
34+
delay(500);
35+
mcp.digitalWrite(NOID_2, LOW);
36+
delay(500);
37+
Serial.println("Together!");
38+
mcp.digitalWrite(NOID_1, HIGH);
39+
mcp.digitalWrite(NOID_2, HIGH);
40+
delay(1000);
41+
mcp.digitalWrite(NOID_1, LOW);
42+
mcp.digitalWrite(NOID_2, LOW);
43+
delay(2000);
44+
Serial.println("Repeat!");
45+
Serial.println();
46+
delay(500);
47+
}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
# SPDX-FileCopyrightText: 2025 Liz Clark for Adafruit Industries
2+
#
3+
# SPDX-License-Identifier: MIT
4+
5+
import time
6+
import board
7+
from adafruit_mcp230xx.mcp23017 import MCP23017
8+
9+
i2c = board.STEMMA_I2C()
10+
11+
mcp = MCP23017(i2c)
12+
13+
noid_1 = mcp.get_pin(0)
14+
noid_2 = mcp.get_pin(4)
15+
noid_1.switch_to_output(value=False)
16+
noid_2.switch_to_output(value=False)
17+
18+
while True:
19+
noid_1.value = True
20+
print(f"Solenoid 1: {noid_1.value}, Solenoid 2: {noid_2.value}")
21+
time.sleep(0.2)
22+
noid_1.value = False
23+
print(f"Solenoid 1: {noid_1.value}, Solenoid 2: {noid_2.value}")
24+
time.sleep(0.2)
25+
noid_2.value = True
26+
print(f"Solenoid 1: {noid_1.value}, Solenoid 2: {noid_2.value}")
27+
time.sleep(0.2)
28+
noid_2.value = False
29+
print(f"Solenoid 1: {noid_1.value}, Solenoid 2: {noid_2.value}")
30+
time.sleep(1)
31+
noid_1.value = True
32+
noid_2.value = True
33+
print(f"Solenoid 1: {noid_1.value}, Solenoid 2: {noid_2.value}")
34+
time.sleep(1)
35+
noid_1.value = False
36+
noid_2.value = False
37+
print(f"Solenoid 1: {noid_1.value}, Solenoid 2: {noid_2.value}")
38+
time.sleep(2)

0 commit comments

Comments
 (0)