collapse

* Links de Robótica

* Posts Recentes

Qual tipo de soldar e temp indicados? por jm_araujo
[Hoje às 16:05]


Kicad - Modelos 3D por beirao
[Hoje às 15:47]


Eagle - a discussao do momento por Kristey
[Hoje às 14:45]


Tapete para bancada por dvdt
[Hoje às 10:09]


Ler e estudar para a roboparty por edeweld
[Hoje às 03:05]


Esquema Fonte Bancada por KammutierSpule
[Ontem às 23:15]


Fonte avariada Delta por senso
[Ontem às 20:28]


Fonte de corrente regulavel por Njay
[Ontem às 19:22]


Empresas para fabricar e assemblar PCB por Kristey
[Ontem às 16:02]


Printer 3D barata por Fifas
[20 de Janeiro de 2017, 18:00]

Autor Tópico: Duvida Programação  (Lida 1094 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.300
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