concorde fan a écrit:Est-ce que tu t'es déjà penché sur les questions suivantes ?
- Chaque petite loupiote de confirmation (allumée ou éteinte) au dessus des afficheurs
-Elles fonctionnent en 28v, alors que les chiffres sont en 5v.
-Elles sont branchées sur un interrupteur à bascule double inverseur. pas besoin de les gérer.
-Je les remplacerai certainement par des LED , d'ailleurs je ne sais pas comment les démonter, on dirait que la douille est vissée dans le châssis
concorde fan a écrit:- Basculeur opérationnel
Oui, sans rien faire
DAns la vidéo je commence avec le côté gauche, écoute le commentaire à 30s, je bascule, c'est le même circuit de décodage qui décode le côté droit.
Maintenant, il y a un truc qui va pas marcher : il faut une vrai masse pour les commutateurs, et les cartes OC n'ont pas de vrai masse pour les entrées.
Chez moi se sont des cartes perso avec masse commune pour les sorties ET les entrées ...
J'essaie avant avec une de mes cartes IO et je verrai si je trouve une carte OC pour modifier le décodeur pour qu'il sorte avec un commun compatible OC.
L'idée et de faire un petit circuit imprimé par roue codeuse, avec d'un côté, 5 entrées et une alim 5V, de l'autre 4 sorties codées sur 4 bits donc, au format BCD (Binaire Codé Décimal, les chiffres de 0 à 9)
Ça reviendrai à 6€ pièce, et il en faudrait 4 pour 1 radio (comme la bascule fonctionne, pas besoin de doubler).
Fabien
P.S. si tu as des roues qui fonctionnent avec une autre table de vérité, je peut adapter le programme facilement, ce n'est qu'une formule à changer !
Le code ci-dessous
- Code: Tout sélectionner
/*
2to5_radio-nav.c
*/
int lu_F0( int A, int B, int C, int D, int E );
int lu_F1( int A, int B, int C, int D, int E );
int lu_F2( int A, int B, int C, int D, int E );
int lu_F3( int A, int B, int C, int D, int E );
int lu_F0( int A, int B, int C, int D, int E )
{
const unsigned int nOutAry[] =
{0XFB, 0X9F, 0XD7, 0XFF};
unsigned int nTerm=0, nX, nBit;
if( A ) nTerm |= 1<<4;
if( B ) nTerm |= 1<<3;
if( C ) nTerm |= 1<<2;
if( D ) nTerm |= 1<<1;
if( E ) nTerm |= 1;
nX = nTerm / 8;
nBit = 7 - nTerm % 8;
if( nOutAry[nX] & 1<<nBit )
return 1;
else
return 0;
}
int lu_F1( int A, int B, int C, int D, int E )
{
const unsigned int nOutAry[] =
{0XFD, 0X9F, 0X9F, 0X7F};
unsigned int nTerm=0, nX, nBit;
if( A ) nTerm |= 1<<4;
if( B ) nTerm |= 1<<3;
if( C ) nTerm |= 1<<2;
if( D ) nTerm |= 1<<1;
if( E ) nTerm |= 1;
nX = nTerm / 8;
nBit = 7 - nTerm % 8;
if( nOutAry[nX] & 1<<nBit )
return 1;
else
return 0;
}
int lu_F2( int A, int B, int C, int D, int E )
{
const unsigned int nOutAry[] =
{0XFF, 0XB7, 0X97, 0X7F};
unsigned int nTerm=0, nX, nBit;
if( A ) nTerm |= 1<<4;
if( B ) nTerm |= 1<<3;
if( C ) nTerm |= 1<<2;
if( D ) nTerm |= 1<<1;
if( E ) nTerm |= 1;
nX = nTerm / 8;
nBit = 7 - nTerm % 8;
if( nOutAry[nX] & 1<<nBit )
return 1;
else
return 0;
}
int lu_F3( int A, int B, int C, int D, int E )
{
const unsigned int nOutAry[] =
{0XE9, 0X97, 0XF7, 0X7F};
unsigned int nTerm=0, nX, nBit;
if( A ) nTerm |= 1<<4;
if( B ) nTerm |= 1<<3;
if( C ) nTerm |= 1<<2;
if( D ) nTerm |= 1<<1;
if( E ) nTerm |= 1;
nX = nTerm / 8;
nBit = 7 - nTerm % 8;
if( nOutAry[nX] & 1<<nBit )
return 1;
else
return 0;
}