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 ?
Tags:
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() {}
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por