LusoRobótica - Robótica em Português

Robótica => Iniciantes => Tópico iniciado por: Raul em 03 de Fevereiro de 2010, 00:10

Título: Duvida Programação
Enviado por: Raul em 03 de Fevereiro de 2010, 00:10
Uma pergunta que pode ser estúpida.
Podemos fazer  um programa e ele correr sem usar-mos o  void loop, por exemplo que mexer num motor para ele fazer um movimento só uma vez, para fazer experiências.
Não tenho vagar para ir experimentar.

Cumprimentos
Título: Re: Duvida Programação
Enviado por: tcustodio em 03 de Fevereiro de 2010, 08:34
claro que podes, como deves saber, a função setup() é executada uma vez, antes da função loop()
Título: Re: Duvida Programação
Enviado por: microbyte em 03 de Fevereiro de 2010, 12:06
Como o tcustodio disse, podes meter o código no setup(), que só corre uma vez.
No entanto vou pôr aqui uma solução um pouco mais elaborada, mas que é capaz de dar jeito.

O código que vou pôr aqui é para executar o blink só uma vez, usando o loop().

Citar
int ledPin = 13;
boolean firstRun = true;

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

void loop()                     
{
  if(firstRun){
    digitalWrite(ledPin, HIGH);
    delay(1000);
    digitalWrite(ledPin, LOW);
    delay(1000);
    firstRun = false;
  }
  
  // Aqui podes por outro codigo, que vai estar sempre a correr
  // Se, pelo meio do código precisares de correr aquilo que está em cima
  // (neste caso, o blink), basta meteres firstRun=true; e no próximo ciclo,
  // o código é executado
}

Título: Re: Duvida Programação
Enviado por: Raul em 03 de Fevereiro de 2010, 22:16
Sim isso são duas maneiras de fazer, mas estava a dizer a seguir ao setup sem loop?
Se era possível assim?


int ledPin = 13;


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

 digitalWrite(ledPin, HIGH);
    delay(1000);
    digitalWrite(ledPin, LOW);
    delay(1000);



Cumprimentos
Título: Re: Duvida Programação
Enviado por: ricardo-reis em 03 de Fevereiro de 2010, 22:22
nop
Título: Re: Duvida Programação
Enviado por: Raul em 03 de Fevereiro de 2010, 22:42
Obrigado XD

Cumprimentos
Título: Re: Duvida Programação
Enviado por: microbyte em 04 de Fevereiro de 2010, 00:03
Sim isso são duas maneiras de fazer, mas estava a dizer a seguir ao setup sem loop?
Se era possível assim?


int ledPin = 13;


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

 digitalWrite(ledPin, HIGH);
    delay(1000);
    digitalWrite(ledPin, LOW);
    delay(1000);



Cumprimentos

A resposta é não, como o ricardo-reis disse...

A explicação é que só podes invocar funções dentro do setup() ou do loop()... De resto, fora disso, podes fazer apenas declarações: declarar funções, declarar variáveis (globais). Mas não podes invocar essas funções.

( Isto partido do pressuposto de que entendes que o digitalWrite() é uma função )
Título: Re: Duvida Programação
Enviado por: Raul em 04 de Fevereiro de 2010, 00:10
Sim eu também percebo de programação XD

Cumprimentos