Arduino Mega2560 / Relé, estranho!!

Hoje testei um driver com 2 reles, com pinos na porta 12 e 11.
Quando carrego o programa para o arduino com o digitalWrite(12, LOW) ele ascende o led do relé, quando é HIGH ele apaga.
Gostaria de saber se alguém sabe porquê os comandos parecem estar invertidos.
Gratos desde já.

void Setup() {

pinMode(12, OUTPUT);
pinMode(11, OUTPUT);

}

void Loop() {

digitalWrite(12, HIGH); //LUZ DO LED APAGADO (led do relé)

delay(2000);

digitalWrite(11, LOW); //LUZ DO LED LIGADO (led do relé)

}

Será que tem algo de estranho com o relé ou com o arduino?

Grato se alguém puder responder.

Isso tem a ver com a própria placa de relés que tem a "lógica invertida". Isto considerando que todas as ligações estão correctas (que também pode ser o caso).

Viva.

Tive o mesmo "problema", quando encomendei os reles para um projecto meu, so depois de os receber é que identifiquei essa mesma situação. Simplesmente existem 3 tipos de boards relays:

  • as "active hight"energiza o relay quando de um sinal "hight" -
  • as "active low" que energizam o relay quando o sinal do pin do arduino esta "low".
  • e umas com jumper para determinar se fica energizada "low" ou "hight".

Para resolver por codigo passa por aqui:

https://arduino-info.wikispaces.com/ArduinoPower

Basicamente no setup:

void setup() 
{
digitalWrite(Relay, HIGH);
pinMode(Relay, OUTPUT);
...
}

E no codigo principal para activar o relay poes o pino "low", e para desligar o relay poes o pino "hight".

luisilva e arssant, muito obrigado por responderem, não tinha conhecimento dessa lógica inversa, pensei que fosse problema com meu arduino, porque quando o comprei, alguns dos pinos do chip smd estavam com solda entre os pinos unindo-os e eu os arrumei...

Muito obrigado pela ajuda!

Abraços.