Aide DigitalWrite

  • Auteur de la discussion Mcar
  • Date de début
M

Mcar

Compagnon
Bonsoir à tous,

DigitalWrite (pin,HIGH) peut il s'ecrire DigitalWrite (pin,1) ?
de la même façon
DigitalWrite (pin,LOW) est il equivalent à DigitalWrite(pin, 0)

merci pour vos reponses,
 
M

midodiy

Compagnon
Pour moi, c'est non.
Bon suffit d'essayer, voir si erreur à la compilation...
 
S

speedjf37

Compagnon
Bonsoir,

Le réponse est dans le fichier:
C:\Users\USERXXX\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6\cores\arduino\Arduino.h

Extrait:

#define HIGH 0x1
#define LOW 0x0

Il y a bien sur d'autres définitions dans ce fichier de base.

La fonction est dans ce fichier:
C:\Users\USERXXX\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6\cores\arduino\wiring_digital.c

Le code de la fonction:
On y constate que seul LOW est utilisé !

void digitalWrite(uint8_t pin, uint8_t val)
{
uint8_t timer = digitalPinToTimer(pin);
uint8_t bit = digitalPinToBitMask(pin);
uint8_t port = digitalPinToPort(pin);
volatile uint8_t *out;

if (port == NOT_A_PIN) return;

// If the pin that support PWM output, we need to turn it off
// before doing a digital write.
if (timer != NOT_ON_TIMER) turnOffPWM(timer);

out = portOutputRegister(port);

uint8_t oldSREG = SREG;
cli();

if (val == LOW) {
*out &= ~bit;
} else {
*out |= bit;
}

SREG = oldSREG;
}




Cordialement JF
 
Y

yent

Ouvrier
HIGH/LOW, TRUE/FALSE, 1/0, tout ça c'est pareil pour digitalWrite, digitalWrite(13, 42) est pareil que digitalWrite(13, 1), n'importe quoi de différent de 0 (<=255 quand même) positionne au niveau haut, 0 positionne au niveau bas.
 
M

Mcar

Compagnon
merci pour vos reponses,

voici une partie de mon programme, donc une routine qui positionne 2 pins en fonction des entrées arduino,
ces deux pins sont repris par une carte opto 12V , carte opto alimente un programme sur PC pour traitement de 4 etats (2²)

des fois ça marche, des fois ça marche pas , d'ou ma question

 
S

speedjf37

Compagnon
voici une partie de mon programme, donc une routine qui positionne 2 pins en fonction des entrées arduino,
ces deux pins sont repris par une carte opto 12V , carte opto alimente un programme sur PC pour traitement de 4 etats (2²)

des fois ça marche, des fois ça marche pas , d'ou ma question

Pas assez d'infos !!!!
 
M

Mcar

Compagnon
Bonjour à tous,

Apres vérification une borne d'alimentation du 12V sur ma carte opto était complètement desserré,
d'où mes problèmes aléatoires,

alors pour la question de depart à savoir si
DigitalWrite (pin,HIGH) peut il s'ecrire DigitalWrite (pin,1) ?
de la même façon
DigitalWrite (pin,LOW) est il equivalent à DigitalWrite(pin, 0)

je me réponds à moi même :mrgreen: , oui ça marche , c'est du pareil au même .
merci pour votre implication
 
S

speedjf37

Compagnon
Bonjour,

alors pour la question de depart à savoir si
DigitalWrite (pin,HIGH) peut il s'ecrire DigitalWrite (pin,1) ?
de la même façon
DigitalWrite (pin,LOW) est il equivalent à DigitalWrite(pin, 0)

je me réponds à moi même :mrgreen: , oui ça marche , c'est du pareil au même .

dans ma réponse au #3
#define HIGH 0x1
#define LOW 0x0
Traduction en fr:
Un "#define" est une pseudo directive , le texte qui suit sera validé et la valeur qui suit sera validée aussi.

Le compilateur remplacera toutes les occurences du texte :
HIGH par le texte 0x01
LOW par le texte 0x0

Le "#define" peut servir à de la compilation conditionnelle même sans valeur :
#ifdef LOW
// code à executer si "LOW" defini
#endif


JF
 
D

Doctor_itchy

Compagnon
ça marche MAIS , parfois ça passe pas sur certain µC :wink:

le low ou high peu aussi etre remplacer par une valeur reference (on ou off toujours ! ) qui renvoie l'etat d'une pin d'entrée ou d'une sous valeur calculée plus haut dans le code :wink:
 
Haut