LusoRobótica - Robótica em Português

Sistemas específicos => Arduino / AVR => Tópico iniciado por: oxytech em 25 de Dezembro de 2009, 18:05

Título: Blink Led controlado pela consola
Enviado por: oxytech em 25 de Dezembro de 2009, 18:05
boa tarde!

a bastante pouco tempo comprei um arduino e ao pesquisar um pouco sobre ele encontrei este excelente fórum  ;D

vou deixar aqui o meu primeiro código, que consiste em controlar o numero de vezes que um led pisca através da consola do programa.
Código: [Seleccione]
/*

 o-o            o           o   
o   o           |           |   
|   | \ / o  o -o- o-o  o-o O--o
o   o  o  |  |  |  |-' |    |  |
 o-o  / \ o--O  o  o-o  o-o o  o
             |                   
          o--o   
         
         
  baseado em:
  *http://arduino.cc/en/Tutorial/Blink
 
 */
 
 
#include <stdlib.h> //para a função atoi


int ledPin =  13;    // led logado ao pino 13
int i=0;
char incomingByte;


void setup()   //inicia o procedimento de configuração (apenas é corrido 1x no programa)
{               
  pinMode(ledPin, OUTPUT);  //pino digital 13 como pino de saida 
  Serial.begin(9600); //inicia comunicação com a consola, a 9600bps
  Serial.println("introduza o numero de vezes que o led pisca:"); //primeira mensagem escrita na consola
}


void loop() //inicia o programa, corre repetitivamente                   
{

  if (Serial.available() > 0) // se a consola estiver com algum caracter introduzido? (neste caso nem faz falta...?)
  {

    incomingByte = Serial.read();//lê o byte introduzido na consola

    // escrita das mensagens/variaveis...
    Serial.print("caracter introduzido:");
    Serial.println(incomingByte);
    Serial.print("o led ira piscar  ");
    Serial.print( atoi(&incomingByte), DEC);// função atoi transforma o caracter num inteiro(atenção ao "&"...)
    Serial.println("  vezes...");


    for (i==0;i< atoi(&incomingByte);i++)// o led pisca o numero de vezes que foi introduzido
    {
      Serial.println();// escreve uma linha em branco na consola
      Serial.println(i+1,DEC);//escreve o numero de vezes que o led piscou ate ao momento...
      digitalWrite(ledPin, HIGH);   // liga o led
      delay(500);                  // espera 0,5 segundos
      digitalWrite(ledPin, LOW);    // desliga o led
      delay(500);                  // espera 0,5s
    }
    i=0;// variavel de contagem do ciclo for reinicializada a 0 para o proximo ciclo
    Serial.println("introduza novo numero:");
  }

}

pode ser útil para alguém, especialmente para novatos como eu.

quando tiver mais um tempinho o próximo passo será permitir mais que 9 piscadelas do led, por enquanto tem essa limitação.

se encontrarem algum erro ou algo que poderia estar melhor feito agradeço que avisem.

cumprimentos






Título: Re: Blink Led controlado pela consola
Enviado por: TigPT em 26 de Dezembro de 2009, 00:08
Não conhecia a função atoi da stdlib... costumo utilizar (incomingByte-'0') e fica o valor de 0 a 9 já que lhe subtraímos o caracter zero.

Força com os projectos ;)
Título: Re: Blink Led controlado pela consola
Enviado por: oxytech em 26 de Dezembro de 2009, 11:17
Não conhecia a função atoi da stdlib... costumo utilizar (incomingByte-'0') e fica o valor de 0 a 9 já que lhe subtraímos o caracter zero.

Força com os projectos ;)

e eu nem me passou isso pela cabeça... em termos de processamento deve ser vem mais leve  ;D

cumps