Boa noite a todos!

Alguém saberia me dizer por que no ESP8266 os níveis de voltagem são invertidos?

Quando rodo o blink abaixo, o led acende no "low" e apaga no "high", enquanto que no sketch do Arduino é o inverso.

Já testei com vários ESP e também com o LED RGB, ele inverte as cores.

Teria como mudar esse comportamento?


void setup() {
  Serial.begin(9600);
  pinMode(LED_BUILTIN, OUTPUT);     
}

void loop() {
  digitalWrite(LED_BUILTIN, LOW);   
  Serial.println("low"); // Aqui o led acende
  delay(3000);                      
  digitalWrite(LED_BUILTIN, HIGH);  
  Serial.println("high"); // Aqui o led apaga
  delay(3000);                      
}

Exibições: 455

Responder esta

Respostas a este tópico

Se o LED integrado na placa, estiver em current sink, a lógica de acionamento é invertida, mas se for source é logica direta (normalmente usada).

Pensei agora, usando POG (Programação Orientada a Gambiarra), crie um define assim:

#define HI LOW

#define LO HIGH

No código, apenas faça as mudanças HIGH -> HI e LOW -> LO

Aqui funcionou...

Flavio, boa noite!

Obrigado pelas suas explicações.

Sua ideia de redefinir as constantes é interessante, pois assim posso manter a compatibilidade entre o Arduino e o ESP.

Essa inversão é um perigo.

Percebi esse comportamento, quando fui testar um led RGB.

No Arduino o sketch funcionava perfeitamente  e no ESP ele trocava as cores.  

Pensei que era um problemas da placa, mas estava enganado.

Informações do Datasheet :

ESP8286 tem 17 pinos GPIO que podem ser atribuídos a várias funções por meio de programação
dos registradores adequados.
Cada GPIO pode ser configurado com pull-up ou pull-down internos, ou definido para alta impedância,
e quando configurado como uma entrada, os dados são armazenados em registradores de software; A entrada pode também ser definida como disparo de borda ou disparo de interrupções de CPU . Em suma, os pinos de IO são bidirecionais,não-inversores e tristate o qual inclui memória intermédia de entrada e de saída com três estados entradas de controle.

" ESP8285 has 17 GPIO pins which can be assigned to various functions by programming the appropriate registers. Each GPIO can be configured with internal pull-up or pull-down, or set to high impedance, and when configured as an input, the data are stored in software registers; the input can also be set to edge-trigger or level trigger CPU interrupts. In short, the IO pads are bidirectional, non-inverting and tristate, which includes input and output buffer with tristate control inputs."

Olá Gustavo!

É por isso então que eles são chamados de GPIO (General Purpose Input/Output ), pois as portas podem ser usadas de várias formas.

  

É isso aí Gustavo, um dia ainda crio coragem para trabalhar com o ESP8286.

Um completo a informação postada pelo Flavio Hernan.

Geralmente os microcontroladores possuem maior capacidade de corrente em estado baixo do que em estado alto, dessa forma pode ser que o LED integrado esteja em current sink (confesso que não conhecia esses termos, aprendi agora) para "minimizar esforços"

Olá João Arthur!

Tem sentido, pois os ESP são consideradas placas de baixo consumo (3.3v)

RSS

Destaques

Registre-se no
Lab de Garagem
Clicando aqui

Convide um
amigo para fazer
parte

curso gratis de arduino

© 2018   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço