diff --git a/gpio/test/gpio_test1_piface1.sh b/gpio/test/gpio_test1_piface1.sh new file mode 100755 index 0000000..5840830 --- /dev/null +++ b/gpio/test/gpio_test1_piface1.sh @@ -0,0 +1,90 @@ +#!/bin/bash + +echo -e "๐Ÿ”ง Starting relay unit test for MCP23S17@Piface unit test hw\n\n" + +# set pin 200โ€“207 as output +for i in {200..207}; do + gpio -x mcp23s17:200:0:0 mode $i out +done + +# set pin 208โ€“215 as input +for i in {208..215}; do + gpio -x mcp23s17:200:0:0 mode $i in + gpio -x mcp23s17:200:0:0 mode $i up +done + + +# Define relay output addresses and corresponding feedback input addresses +relay_addresses=(200 201 207 206) +feedback_addresses=(214 215 212 213) + +for round in {1..3}; do +echo -e "๐Ÿ”„ Round $round / 3\n" + +# Loop through each relay +for i in "${!relay_addresses[@]}"; do + out=${relay_addresses[$i]} + in=${feedback_addresses[$i]} + + echo "โžก๏ธ Relay/IO write test $((i+1)): Address $out โ†’ Feedback at $in" + + # Turn ON + gpio -x mcp23s17:200:0:0 write "$out" 1 + sleep 0.5 + feedback_on=$(gpio -x mcp23s17:200:0:0 read "$in") + + if [ "$feedback_on" -eq 0 ]; then + echo "โœ… ON Test passed: Feedback is LOW as expected." + else + echo "โŒ ON Test failed: Feedback is HIGH." + fi + + # Turn OFF + gpio -x mcp23s17:200:0:0 write "$out" 0 + sleep 0.5 + feedback_off=$(gpio -x mcp23s17:200:0:0 read "$in") + + if [ "$feedback_off" -eq 1 ]; then + echo "โœ… OFF Test passed: Feedback is HIGH as expected." + else + echo "โŒ OFF Test failed: Feedback is LOW." + fi + + echo -e "\n" + sleep 0.5 + +done + for addr in {208..211}; do + + echo "๐Ÿ”ƒ Pullup resistor test address $addr: " + gpio -x mcp23s17:200:0:0 mode "$addr" up + sleep 0.5 + feedback_on=$(gpio -x mcp23s17:200:0:0 read "$addr") + + if [ "$feedback_on" -eq 1 ]; then + echo "โœ… PULLUP Test passed: Feedback is HIGH as expected." + else + echo "โŒ PULLUP Test failed: Feedback is LOW." + fi + sleep 0.5 + + gpio -x mcp23s17:200:0:0 mode "$addr" down + sleep 0.5 + feedback_on=$(gpio -x mcp23s17:200:0:0 read "$addr") + + if [ "$feedback_on" -eq 1 ]; then + echo "โœ… PULLDOWN Test passed: Feedback is LOW as expected." + else + echo "โŒ PULLDOW Test failed: Feedback is HIGH." + fi + + echo -e "\n" + sleep 0.5 + + +done + +done + +#echo "๐Ÿงน Cleanup complete. All relays turned OFF." +