Modification du programme de la carte Versa1

Supposons que vous vouliez transformer légèrement votre application pour disposer d'un interrupteur qui allume une LED. Dans cet exemple, la démarche pour programmer une carte nous importe beaucoup plus que la fonctionnalité, c'est à dire le contrôle d'une LED par un interrupteur. Nous présenterons plus loin des modules offrant plus de possibilités.

Remarques électriques

Un interrupteur ou une LED peuvent se brancher sur les connecteurs trois broches de la carte Fruit. Les douze connecteurs, marqués de K1 à K12, peuvent être utilisés. Ce seront des entrées (interrupteur) ou des sorties (LED) digitales ; un interrupteur, comme une LED, est allumé ou éteint. Nous allons utiliser les connecteurs K1 et K2 de la carte Fruit. Nous pouvons brancher la LED sur le connecteur K1 et l'interrupteur sur le connecteur K2 ou l'inverse. C'est l'écriture du programme qui configurera la carte et indiquera si un connecteur est une entrée digitale, une sortie digitale, ou autre chose.

Nous brancherons l'interrupteur sur le connecteur K1 et nous mettrons la LED sur le connecteur K2.

Les connecteurs trois broches correspondent à :

  • un fil de masse, correspondant à la broche la plus proche du bord de la carte ;
  • un fil d'alimentation 5V, correspondant à la broche centrale du connecteur ;.
  • un fil de signal, correspondant à la broche la plus éloignée du bord de la carte.

Tout d'abord, il faut réaliser quelques soudures. En effet, on n'alimente pas directement une LED ; elle risquerait de griller. Il faut brancher une résistance de 400 Ω à 2.2 kΩ en série avec la LED. La résistance se branche en général sur l'anode de la LED. L'autre patte de la LED, la cathode, est la patte la plus courte ; il existe aussi, sur la LED, un léger méplat pour repérer la cathode.

Sur le connecteur femelle ci-dessous, le fil noir (la masse) sera branchée sur la cathode de la LED, l'anode de la LED sera branchée à une patte de la résistance et l'autre patte de la résistance au fil de signal, le fil jaune. Le fil rouge est inutilisé.
connecteur femelle 3 broches

Pour l'interrupteur, une résistance de 10 kΩ sera branchée entre le fil rouge (5V) et le fil jaune (signal). L'interrupteur sera branché entre le fil noir (masse) et le fil jaune (signal).

On notera que les deux petites protubérances sur les bords du connecteur servent à empêcher un branchement du connecteur à l'envers.

Programmation du micro-processeur

Comme nous l'avons vu dans le premier programme, l'instruction pinModeDigitalOut(LED); associait la LED à une patte du micro-processeur, en la définissant comme sortie digitale et l'instruction digitalClear(LED); éteignait la LED.

On va donc écrire

pinModeDigitalOut(K2);
digitalClear(K2);

qui définit K2 comme sortie digitale et éteint la LED.
Ces deux instructions sont écrites dans la fonction setup().

Comme nous l'avons vu dans le premier programme, l'instruction digitalWrite(LED,1) allume la LED. Donc, l'instruction digitalWrite(K2,1) allumera K2.

De la même façon, l'instruction digitalRead(K1) lit la valeur sur l'entrée K1 et cette valeur sera 0 ou 1 selon que le contact de l'interrupteur est établi ou rompu.

On peut combiner les deux instructions et même inverser le comportement de l'interrupteur :

digitalWrite(K2, 1-digitalRead(K1));

allumera ou éteindra la LED sur le connecteur K2 en fonction de l'interrupteur. Cette instruction sera écrite dans la fonction loop() et plutôt dans la partie des instructions exécutées à intervalles réguliers. Cet intervalle étant établi à 5ms, le décalage de réaction de la LED à l'action de l'interrupteur sera imperceptible.

Avec l'éditeur de texte, modifiez les fonctions de la façon suivante :

void setup() {         
    fruitInit(); 

    pinModeDigitalOut(LED); 
    digitalClear(LED);
    delayStart(mainDelay, 5000); 

    pinModeDigitalIn(K1); 
    pinModeDigitalOut(K2); 
    digitalClear(K2);        // clear the LED 
} 

void loop() { 
    fraiseService();     

    if(delayFinished(mainDelay)) 
    { 
        delayStart(mainDelay, 5000); 
        t2 = t2 + 1;
        printf("Cs Hello ! t2=%d K1=%d\n", t2, digitalRead(K1));
        digitalWrite(K2, 1-digitalRead(K1)); 
    } 
}

Sauvegardez le document main.c.

Revenez au patch premierPatchFraise.pd.

Le nom et l'identifiant ont été donnés et ils peuvent être modifiés si cela vous semble signifiant. Mais vous pouvez les conserver s'ils restent pertinents. Nous supposons ici que le nom et l'identifiant sont pertinents et que nous désirons juste modifier le programme.

Cliquez sur utils.

utils Fruit
Cliquez sur le bouton MAKE pour demander la compilation.

Cliquez sur le bouton PROGRAM pour transférer le programme exécutable dans la mémoire du micro-processeur. La barre de défilement devient verte si le transfert s'est bien déroulé.

Votre carte Fruit a maintenant un nouveau comportement.

Utilisation de la carte Versa1

Le patch premierPatchFraise.pd n'a pas besoin d'être modifié mais vous voyez apparaître l'information de l'interrupteur dans la boîte symbole.

Un autre exemple d'utilisation de la carte Fruit est donné dans le menu "Aide" / "Navigateur d'aide Pd" puis : Fraise/fruit/examples/exampleFruit.pd.

results matching ""

    No results matching ""