collapse

* Links de Robótica

* Posts Recentes

URGENTE - display de 7 segmentos com backpack por helderjsd
[Hoje às 12:30]


Preços e fabricantes de pcb por Sérgio_Sena
[Ontem às 10:20]


Palavras Cruzadas por Njay
[Ontem às 02:24]


Isaac Asimov - I, Robot por senso
[18 de Setembro de 2017, 03:41]


Apresentação por TigPT
[17 de Setembro de 2017, 07:31]


ic SL440 da Plessey? por senso
[16 de Setembro de 2017, 13:11]


Compra Colectiva RS-Amidata por brunus
[15 de Setembro de 2017, 22:31]


Ideias para construir um quadrúpede simples por zordlyon
[15 de Setembro de 2017, 10:18]


Preparar bancada de testes por jm_araujo
[14 de Setembro de 2017, 10:24]


Mitos: mudança da ilumação tradicional p/ iluminação a LEDs? por LVirtual
[14 de Setembro de 2017, 07:46]

Autor Tópico: incomingByte + Led a piscar sem delay  (Lida 1162 vezes)

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

Offline TheDeadLives

  • Mini Robot
  • *
  • Mensagens: 398
incomingByte + Led a piscar sem delay
« em: 16 de Agosto de 2011, 15:52 »
Boas a todos, começei a desenvolver um projecto (ainda não está acabado) de um carro controlado por arduino com farois e piscas, o meu 2º projecto.

Tenho desenvolvido o código, só fiz ainda um bocado, não muito, mas tenho encontrado uns problemas, que não consegui resolver porque ainda sou muito novato nisto do arduino:

Para os piscas continuarem a piscar durante tempo ilimitado com delays o código teria que ser infinito:

Código: [Seleccione]
int Piscafrentedireito = 13;
int Piscafrenteesquerdo = 12;
int Piscatraseirodireito = 11;
int Piscatraseiroesquerdo = 10;
int incomingByte;

void setup() {
  pinMode(Piscafrentedireito, OUTPUT);
  pinMode(Piscafrenteesquerdo, OUTPUT);
  pinMode(Piscatraseirodireito, OUTPUT);
  pinMode(Piscatraseiroesquerdo, OUTPUT);
  Serial.begin(9600);
}
 
 void loop() {
  if (Serial.available() > 0) {
    incomingByte = Serial.read();
    if (incomingByte == 'q') {
    digitalWrite(Piscafrentedireito, HIGH);
    digitalWrite(Piscatraseirodireito, HIGH);
    }
    if (incomingByte == 'w') {
    digitalWrite(Piscafrentedireito, LOW);
    digitalWrite(Piscatraseirodireito, LOW);
    }
    if (incomingByte == 't') {
    digitalWrite(Piscafrentedireito, LOW);
    digitalWrite(Piscatraseirodireito, LOW);
    digitalWrite(Piscatraseiroesquerdo, LOW);
    digitalWrite(Piscafrenteesquerdo, LOW);
    }
    if (incomingByte == 'e') {
    digitalWrite(Piscatraseiroesquerdo, HIGH);
    digitalWrite(Piscafrenteesquerdo, HIGH);
    delay(500);
    digitalWrite(Piscatraseiroesquerdo, LOW);
    digitalWrite(Piscafrenteesquerdo, LOW); 
    delay(500);
    digitalWrite(Piscatraseiroesquerdo, HIGH);
    digitalWrite(Piscafrenteesquerdo, HIGH); //só um exemplo para não ficar infinito
    }
    if (incomingByte == 'r') {
    digitalWrite(Piscafrenteesquerdo, LOW);
    digitalWrite(Piscatraseiroesquerdo, LOW);
    }
  }
}


Tentei várias formas que me ocorreram, mas fracassei em todas.

Se me pudessem ajudar ficaria muito agradecidol.

Offline RLFuse

  • Mini Robot
  • *
  • Mensagens: 52
  • Prática leva à perfeição
    • Codename: Stuart Little
Re: incomingByte + Led a piscar sem delay
« Responder #1 em: 16 de Agosto de 2011, 16:10 »
Aconselho-te a veres as funções while() e do..while() no reference do arduino..servem exactamente para essas situações de fazer uma acção repetidamente..eu acho que seria melhor fazeres um função que lê-se da porta série, por exemplo,
int readS()
{
     int incomingByte;
    if(Serial.available()>0)
    {
       incomingByte = Serial.read();
    }
    return incomingByte;
}
, para testares nas condições do while ou do do..while() pq com if's fica complicado depois saires do ciclo infinito..


Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.389
  • Helpdesk do sitio
Re: incomingByte + Led a piscar sem delay
« Responder #2 em: 16 de Agosto de 2011, 17:47 »
Para os piscas o melhor é veres o exemplo blinky without delay, que te permite ter acções temporizadas sem recorrer a delays.
Avr fanboy

Offline TheDeadLives

  • Mini Robot
  • *
  • Mensagens: 398
Re: incomingByte + Led a piscar sem delay
« Responder #3 em: 16 de Agosto de 2011, 19:25 »
Para os piscas o melhor é veres o exemplo blinky without delay, que te permite ter acções temporizadas sem recorrer a delays.

Pois, mas é que se eu utilizar isso, não consigo fazer com o incomingByte, não é verdade? Eu já tentei e não consegui introduzir para quando carregar 'e' ele fazer isso, começa logo a fazer

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.389
  • Helpdesk do sitio
Re: incomingByte + Led a piscar sem delay
« Responder #4 em: 16 de Agosto de 2011, 21:51 »
Consegues sim, é tudo uma questão de programação, é só adicionar um if.
Avr fanboy

Offline TheDeadLives

  • Mini Robot
  • *
  • Mensagens: 398
Re: incomingByte + Led a piscar sem delay
« Responder #5 em: 16 de Agosto de 2011, 22:28 »
e adiciono-o aonde? Poderia por no programa que mostrei atrás e mostrar-me sff??

Agradecido