Ah non Mr Bernot !...A mon sens l'état logique du signal ... / ... sont à collecteur ouvert il me semble ...
Cela dit, ça serait intéressant de savoir pourquoi cet inversion pose problème ?Sur le plan niveau logique l'uln2803 est effectivement un inverseur. Un niveau logique 1 à l'entrée conduit à un niveau logique inverse en sortie.
Si l'actionneur est connecté entre le + et la sortie, il est actionné, car il est connecté en logique négative: on applique un niveau 0 à la sortie pour le mettre en marche.
Pour une non inversion, voir la série UDN2980 ...
Et pourtant, il faudra bien un jour qu'ils sachent qu'un appareil peut être mis en service soit par 5V, soit par 0V.Je ne me voyais pas perturber mes eleves de college ....qui en resteront à létat haut=ça fonctionne et letat bas = arret.
Peut-on écrire qqchose du genre:Personnellement, je préfère lever toute ambiguïté en utilisant plutôt des symboles :
MARCHE=0 ou 1 et ARRET=1 ou 0
Etat haut et état bas sont définis par la logique positive ou négative. (normalisées)Mais rien n'empêche de définir des symboles ETAT_HAUT et ETAT_BAS
ayant les valeurs respectives 0 et 1 ou 1 et 0 suivant l'électronique qui est derrière.
Et dans ce cas, vous pourrez continuer à affirmer :
état haut=ça fonctionne et etat bas = arret.
Personnellement, je préfère lever toute ambiguïté en utilisant plutôt des symboles :
MARCHE=0 ou 1 et ARRET=1 ou 0
ben oui si Arret a été défini comme 0 ou 1 et Marche a été défini comme 1 ou 0Peut-on écrire qqchose du genre:
ARRET = NOT MARCHE
J' ai mal posé ma question:Peut-on écrire qqchose du genre: ARRET = NOT MARCHE
ARRET et MARCHE seraient donc les symboles pour 2 bits différents ce qui est curieux.Si j' écris ARRET = NOT MARCHE est-ce que le fait de faire MARCHE= 1 dans le corps du programme entraine ipso facto ( sans nouvelle ligne de prog ) ARRET = 0 et Lycée de Versailles ?
ben oui, deux inversions successives, mais il faut penser que l'ULN a des sorties collecteur ouvert, dont le potentiel doit être fixé par une R de pullup sur chaque sortie du premier...Pour en revenir à #1 : et si on mettait 2 x ULN2803 l'un derrière l'autre.....?
Ben oui :J' ai mal posé ma question:
Si j' écris ARRET = NOT MARCHE est-ce que le fait de faire MARCHE= 1 dans le corps du programme entraine ipso facto ( sans nouvelle ligne de prog ) ARRET = 0 et Lycée de Versailles ?
[color=Blue]Symbol MARCHE[/color][color=DarkCyan]=[/color][color=Navy]0[/color]
[color=Blue]Symbol ARRET[/color][color=DarkCyan]=[/color][color=Navy]1[/color][color=DarkCyan]-[/color][color=Blue]MARCHE
Symbol ALLUME[/color][color=DarkCyan]=[/color][color=Navy]1[/color]
[color=Blue]Symbol ETEINT[/color][color=DarkCyan]=[/color][color=Navy]1[/color][color=DarkCyan]-[/color][color=Blue]ALLUME
Symbol RELACHE[/color][color=DarkCyan]=[/color][color=Navy]0[/color]
[color=Blue]Symbol ENFONCE[/color][color=DarkCyan]=[/color][color=Navy]1[/color][color=DarkCyan]-[/color][color=Blue]RELACHE
Symbol [/color][color=Purple]BOUTON[/color][color=DarkCyan]=[/color][color=Purple]pinC.1[/color]
[color=Blue]symbol [/color][color=Purple]VOYANT[/color][color=DarkCyan]=[/color][color=Purple]pinC.2[/color]
[color=Blue]sertxd ([/color][color=Red]"MARCHE="[/color][color=Black],#[/color][color=Blue]MARCHE[/color][color=Black],[/color][color=Red]" ARRET="[/color][color=Black],#[/color][color=Blue]ARRET[/color][color=Black],[/color][color=Navy]13[/color][color=Black],[/color][color=Navy]10[/color][color=Blue])
sertxd ([/color][color=Red]"ALLUME="[/color][color=Black],#[/color][color=Blue]ALLUME[/color][color=Black],[/color][color=Red]" ETEINT="[/color][color=Black],#[/color][color=Blue]ETEINT[/color][color=Black],[/color][color=Navy]13[/color][color=Black],[/color][color=Navy]10[/color][color=Blue])
sertxd ([/color][color=Red]"RELACHE="[/color][color=Black],#[/color][color=Blue]RELACHE[/color][color=Black],[/color][color=Red]" ENFONCE="[/color][color=Black],#[/color][color=Blue]ENFONCE[/color][color=Black],[/color][color=Navy]13[/color][color=Black],[/color][color=Navy]10[/color][color=Blue])
if [/color][color=Purple]BOUTON[/color][color=DarkCyan]=[/color][color=Blue]ENFONCE then
[/color][color=Purple]VOYANT[/color][color=DarkCyan]=[/color][color=Blue]ALLUME
else
[/color][color=Purple]VOYANT[/color][color=DarkCyan]=[/color][color=Blue]ETEINT
endif[/color]
Ben oui :
Code:[COLOR=Blue]Symbol MARCHE[/COLOR][COLOR=DarkCyan]=[/COLOR][COLOR=Navy]0[/COLOR] [COLOR=Blue]Symbol ARRET[/COLOR][COLOR=DarkCyan]=[/COLOR][COLOR=Navy]1[/COLOR][COLOR=DarkCyan]-[/COLOR][COLOR=Blue]MARCHE [/COLOR][/QUOTE] [COLOR=#000000] la question était: [QUOTE]Si j' écris ARRET = NOT MARCHE est-ce que le fait de faire MARCHE= 1 [I]dans le corps du programme entraine ipso facto ( [U]sans nouvelle ligne de prog [/U]) ARRET = 0 et Lycée de Versailles ?[/I][/QUOTE] Si on définit une constante Marche = 0 écrire [COLOR=#000000]ARRET=1-MARCHE est évidemment écrire qu'arret est egal à 1 puisque marche est remplacé par 0 par le préprocesseur.[/COLOR] mais en aucune façon , en cours de programme, si on redéfinit seulement l'un, cela modifie l'autre! Ce n'est pas en écrivant que [COLOR=#000000][COLOR=#000000]MARCHE[/COLOR][/COLOR] = 1 que [COLOR=#000000][COLOR=#000000]ARRET[/COLOR][/COLOR] va devenir = 0 De plus il est impossible de redéfinir une constante à l'intérieur du programme puisqu'elle n'existe plus en tant que symbole. [/COLOR]