Go Down

Topic: ajuda com delay (Read 900 times) previous topic - next topic

rafa_mazali

pessoal fiz este programa e esta funcionando até aqui

int ldrPin = 0;
int leituraldr = 0;
int farolPin = 9;
int setaePin = 11;
int setadPin = 12;
int homecomPin = 13;
int setae = 0;
int setad = 0;
long intervalo = 30000;
void setup() {

Serial.begin(9600);
pinMode(farolPin, OUTPUT);
pinMode(setaePin, INPUT);
pinMode(setadPin, INPUT);
pinMode(homecomPin, OUTPUT);
}
void loop(){
leituraldr = analogRead(ldrPin);
setae = digitalRead(setaePin);
setad = digitalRead(setadPin);

Serial.print(leituraldr);

long tempo = millis();

if (leituraldr < 500){
  digitalWrite(farolPin, HIGH);
} else
    digitalWrite(farolPin, LOW);

if (setae == HIGH & setad == HIGH) {
digitalWrite(homecomPin, HIGH);
delay(30000)
}
else {
digitalWrite(homecomPin, LOW);
}

}

reparem onde tem um delay de 30s, eu gostaria que quando executasse aquele bloco if quando homecomPin estivesse em HIGH ele ficasse por 30s e depois apagasse, porém colocando o delay ali ele bloqueia o programa por 30s fazendo com que as outras açoes também fiquem bloqueadas e não é isso que quero,, como posso arrumar isto?

obrigado

bubulindo

existe um exemplo blink without delay...

Code: [Select]

#define TIMEOUT   30000

unsigned long on_time = 0;
unsigned char running = 0;

...

if (setae == HIGH & setad == HIGH) {
   digitalWrite(homecomPin, HIGH);
   on_time = millis();
   running = 1;
}

if (running == 1) {
   if (millis() - on_time >= TIMEOUT){ // passaram 30 segundos
      digitalWrite(homecomPin, LOW);
      running = 0;
   }
}

}


Nota que assim, só quando a condição inicial for negativa é que o programa começa a contar os 30 segundos.
Se quiseres que comece a contar logo desde que a condição passou a verdadeira, podes usar a flag running como uma detecção de flanco e evitar voltar a esse pedaço de código.

Queres explicar o que pretendes fazer com isto para podermos dar ideias melhores?
Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

rafa_mazali

bubulindo funcionou perfeitamente deste modo, muito obrigado..

aproveitando o tópico, sabe me dizer se attiny85 tem porta analógica e quantas? pretendo ligar um ldr nele, sera que funciona?

obrigado

bubulindo

Se quiseres usar o pino de reset, 3 portas analögicas. Se não o quiseres usar, 4.

Vê auqi http://www.atmel.com/Images/doc2586.pdf
Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

rafa_mazali

bubulindo me da um help aqui,,,

fiz o programa usando o pino 1 (pb5) do attiny definindo ele como output, mas só de alimentar o attiny quando o led deveria estar apagado fica um brilho beemm fraquinho nele

o que pode ser?

bubulindo

O pino 1 é o reset... e se não mudaste o fuse RSTDISBL, esse pino só serve para a funcão de reset.

Se experimentares outro pino, certamente que funciona... desde que mantenhas o pino de Reset com 5V.
Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

rafa_mazali

Como faço para alterar esse fuse? Preciso usar as 6 I/O do attiny

bubulindo

Isso é feito no processo de gravação do chip.

como estás a passar o programa para lá? E já agora, convém ver como usar o chip sem o Reset... eu nunca o fiz, logo não sei quais as consequências.
Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

rafa_mazali

Estou a usar o arduino como programmer isp

bubulindo

tenta ver como se usa um chip sem o reset... isso tem algumas implicações no processo de gravação. :\
Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

Go Up