Arduino Yun et dialogue SPI pose problème

Bonjour a tous,

Pour un de mes projet, j’ai besoin de contrôler plusieurs relais (32 au total : 2 cartes de 16 relais), pour cela je me suis créer mes propres cartes avec 16 relais + un MCP23S17 + 2 ULN2803 sur chacune des cartes. Je dialogue avec les MCP23S17 via une interface ISP (MISO, SCLK, CS, MOSI…). Tout cela fonctionne très bien avec un arduino UNO connecté sur les pattes 10,11,12,13 de celui ci.

Mon problème, j’aimerais remplacer mon arduino UNO par un arduino YUN et la… ca ne fonctionne plus…
Je sais qu’avec l’arduino YUN je ne peux pas me servir des même pattes qu’avec le UNO car la liaison SPI n’est pas déporté sur les pattes 10,11,12,13, j’utilise donc le connecteur 6 broches prévu a cet effet.

Je connecte donc les MCP23S17 sur le connecteur 6 Broches MISO,MOSI,SCLK et… CS? Il n’est pas présent sur le connecteur 6Broches… Je le connecte ou sur le YUN? J’ai vu sur certain forum qu’il était présent au niveau de la les RX mais comment je me connecte dessus? Je soude directement au niveau de la led? Pas évident… Sur d’autre forum je vois que certain le connecte patte 10 et le contrôle dans leur programme (Mise à LOW → Transfert de donnée → remise à HIGH) j’ai testé ca ne fonctionne pas chez moi…

1er question: Ou connecter la patte CS sur le YUN?
2ème question: Faut t’il ajouter des lignes dans le code pour que cela fonctionne avec le YUN?

Je vous joint mon code de commande qui fonctionne sur le UNO mais pas sur le YUN… Je précise, j’envoie les codes d’état des relais au YUN via le port USB avec un soft développé en LabVIEW.

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

// Définition des adresses des PCF8574
MCP carteA(1); // Adressage de la carteA à 1
MCP carteB(2); // Adressage de la carteB à 2

//Déclaration des variables
char D1;
char D2;

void setup()
{
Serial.begin(9600);
SPI.begin(); // Initialisation du port SPI
carteA.pinMode(0x0000); // Mettre les 8 bits du portA de la carteA en sortie
carteB.pinMode(0x0000); // Mettre les 8 bits du portB de la carteA en sortie

// Test d’initialisation des relais
carteA.digitalWrite(0xFFFF); // Mise à 1 toute les sortie de la carte A
carteB.digitalWrite(0xFFFF); // Mise à 1 toute les sortie de la carte B
delay(1000);
carteA.digitalWrite(0x0000); // Mise à 0 toute les sortie de la carte A
carteB.digitalWrite(0x0000); // Mise à 0 toute les sortie de la carte B
}

void loop()
{

while (Serial.available())
{
char c = Serial.read(); // on lit le 1er caractère recu qui désigne la carte (carteA ou carteB)

switch (c)
{
case ‘A’:
Serial.println(“TEST”);
break;

case ‘B’:
D1 = Serial.read(); // on lit le 2ème caractère recu qui désigne la configuration du PortA
D2 = Serial.read(); // on lit le 3ème caractère recu qui désigne la configuration du PortB
carteA.byteWrite(0x12, D1); //écriture sur GPIOA carte A
Serial.println(D1);
carteA.byteWrite(0x13, D2); //écriture sur GPIOB carte A
Serial.println(D2);
Serial.println(“Envoi sur la carte A terminé”);
delay(100);
break;

case ‘C’:
D1 = Serial.read(); // on lit le 2ème caractère recu qui désigne la configuration du PortA
D2 = Serial.read(); // on lit le 3ème caractère recu qui désigne la configuration du PortB
carteB.byteWrite(0x12, D1); //écriture sur GPIOA carte B
carteB.byteWrite(0x13, D2); //écriture sur GPIOB carte B
Serial.println(“Envoi sur la carte B terminé”);
delay(100);
break;
}
delay(100);
}
}

Par avance je vous remercie de votre aide. Ca ne fait pas très longtemps que j’ai découvert ces petites cartes pleine de potentiel donc je ne maitrise pas du tout le sujet…

Salut,

CS peut-être n'importe quel pin digital