collapse

* Posts Recentes

Cerca eléctrica por SerraCabo
[14 de Junho de 2025, 23:26]


Alguém arranja motores? por almamater
[10 de Junho de 2025, 22:34]


Condensador 4.7uF 0603 por brunus
[09 de Junho de 2025, 15:52]


+ LASERs por dropes
[30 de Maio de 2025, 23:11]


Lenovo IdeaPad 3 Não liga por jm_araujo
[07 de Maio de 2025, 19:10]


Identificar Diodo Zenner por filjoa
[01 de Maio de 2025, 23:07]


Meu novo robô por dropes
[18 de Março de 2025, 14:51]


JBL partybox On-The-Go por almamater
[21 de Fevereiro de 2025, 23:32]


Talking Reverse Engineering with an Absolute Legend! por SerraCabo
[13 de Fevereiro de 2025, 09:56]


Motoserra Stihl 120C por brunus
[11 de Fevereiro de 2025, 16:29]

Autor Tópico: Duvida Programação  (Lida 5579 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline Raul

  • Mini Robot
  • *
  • Mensagens: 185
Duvida Programação
« 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

Offline tcustodio

  • Mini Robot
  • *
  • Mensagens: 344
  • "beware of programmers who carry a soldering iron"
    • Youtube
Re: Duvida Programação
« Responder #1 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()
Tiago Custódio,
- Não me dêem álcool se estiver um piano por perto.

Offline microbyte

  • Mini Robot
  • *
  • Mensagens: 1.322
    • http://ricardo-dias.com/
Re: Duvida Programação
« Responder #2 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
}


Offline Raul

  • Mini Robot
  • *
  • Mensagens: 185
Re: Duvida Programação
« Responder #3 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

Offline ricardo-reis

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 1.338
Re: Duvida Programação
« Responder #4 em: 03 de Fevereiro de 2010, 22:22 »
nop

Offline Raul

  • Mini Robot
  • *
  • Mensagens: 185
Re: Duvida Programação
« Responder #5 em: 03 de Fevereiro de 2010, 22:42 »
Obrigado XD

Cumprimentos

Offline microbyte

  • Mini Robot
  • *
  • Mensagens: 1.322
    • http://ricardo-dias.com/
Re: Duvida Programação
« Responder #6 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 )

Offline Raul

  • Mini Robot
  • *
  • Mensagens: 185
Re: Duvida Programação
« Responder #7 em: 04 de Fevereiro de 2010, 00:10 »
Sim eu também percebo de programação XD

Cumprimentos