[DESAFIO 2] Dá pra piscar o led sem delay com um Codigo Menor ???

Olá Galera,

    Abri um tópico anterior com o desafio BLINK MINIMO, e realmente ao meu ver foi um sucesso ( veja AQUI ) !  ele foi vencido pelo grande Eduardo Silva.

    Agora o desafio é um pouco mais difícil,  o desafio é:

    É possível diminuir o blink sem o uso de delay abaixo :

unsigned long conter=0;      // declara variavel

void setup() {
pinMode(13,OUTPUT);    // indica pino do led 13 como saida
}

void loop() {
if(millis() > conter+1000){      // se o millis for maior que a variavel mais mil entra no condicional
conter=millis();    //  atribui o ultimo millis a variavel
digitalWrite(13, !digitalRead(13));     // inverte a situacao do led
}
}

E ai quem diminui o codigo ?

Exibições: 2696

Responder esta

Respostas a este tópico

Ze augusto, testei o if( (((long)(millis() / 1000)) ) == 1 ),  funcinou não.

MASSSSS....

acho que assim resolve sem sequelas

void setup() {
pinMode(13, OUTPUT);
}

void loop() {
if( (unsigned int)(millis() / 1000) / 2 %2 == digitalRead(13)){
digitalWrite(13,!digitalRead(13));}}

Mas ainda num tö satisfeito, acho que da pra reduzir mais,  nao sei como, mas a minha intuicao diz que da.

Funciona certinho, mas estou quebrando a cabeça aqui pois eu quero colocar 2 leis piscando alternadamente nessa função. Enquanto o Led1 acende, o Led2 apaga.

Boa tarde F,

qual sketch está usando?

RV

Se for pequeno pode até colar aqui, mas se tiver mais que 5 linhas, anexe-o.

RV

E esse:

#include <MsTimer2.h>
void I(void)
{ PORTB^=0b00100001;} // pisca 13 e 8 ao mesmo tempo pq meu led está no 8.
void setup() {
  MsTimer2::set(1000,I);
  MsTimer2::start();
}

void loop() {}

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço