MCP23S17 per comandare dei relay

Altra prova rapida...

Con questo codice funzionano i famosi 8 ingressi, mentre gli altri restano fissi alcuni LOW e alcuni HIGH senza una logica apparente:

#include <SPI.h> 
#include <MCP23S17.h>

MCP switcher(0);

void setup() {
  pinMode(53, OUTPUT);
  digitalWrite (53, LOW);
  switcher.pinMode(0B0000000000000000);
}

void loop() {
  int i;
  for (i=1;i<=16;i++) {
    switcher.digitalWrite(i, LOW);
    delay(100);
  }
  delay(200);
  for (i = 1; i <=16; i++) {
    switcher.digitalWrite(i, HIGH);
    delay(100);
  }
  delay(200);
}

Con quest'altra sento delle commutazioni che non hanno niente a che vedere con ciò che c'è scritto nel programma: ho delle commutazioni sull'uscita 9 con tempi diversi da quelli scritti nello sketch e un'altra commutazione sull'uscita 7 che non so da dove arriva!!!

#include <SPI.h> 
#include <MCP23S17.h>

MCP switcher(0);

void setup() {
  pinMode(53, OUTPUT);
  digitalWrite (53, LOW);
  switcher.pinMode(0B0000000000000000);
}

void loop() {

    switcher.digitalWrite(9, HIGH);
    delay(200);
    switcher.digitalWrite(9, LOW);
    delay(500);
}

Qui addirittura ho commutazioni su 4 relè diversi:

#include <SPI.h> 
#include <MCP23S17.h>

MCP switcher(0);

void setup() {
  pinMode(53, OUTPUT);
  digitalWrite (53, LOW);
  switcher.pinMode(0B0000000000000000);
}

void loop() {

    switcher.digitalWrite(1, HIGH);
    delay(200);
    switcher.digitalWrite(1, LOW);
    delay(500);
}

Adesso ho anche sostituito i cavetti con un cavo a 4 poli schermato, ed in effetti sembra un po' meno sensibile ai disturbi del tester, delle mani, ecc.
Però non cambia il funzionamento.