Translate

sexta-feira, 31 de maio de 2013

Arduino - Funções random e switch

RANDOM

Essa função permite adotar um valor aleatório para uma variável, ou seja, primeiro definimos a variável com um valor, por exemplo:

int NumRand = 0;

Depois chamamos a função.

NumRand = random (1,10)

Dessa forma aleatoriamente uma valor entre 1 e 10 é definido para NumRand.




SWITCH

Essa função permite analisar o valor de uma variável, utilizado em casos que a variável pode adotar valores aleatórios, com por exemplo o NumRand descrito acima, segue abaixo um exemplo:

switch (NumRand)
{
case (1): comando 1;
break;

case (2): comando 2;
comando 3;
comando 4;
break;
.
.
.

case (10): comando N;
break;
}


Abaixo um vídeo apresenta o circuito montado em um protoboard .




Código fonte:

/*
   Arduino UNO com Atmega328P-PU

   Data: 30/05/2013

   Função: random e switch

   Elaborado por: Toni da Silva
*/

int Nrand = 0;         // define valor para a variavel com valor inteiro
int _1_ledPin = 8;     // |
int _2_ledPin = 9;     // |
int _3_ledPin = 10;   // |define nomes para os pinos
int _4_ledPin = 11;   // |
int led = 13;              // |
int entryPin = 7;        // |

void setup()           // função obrigatória
{
  pinMode(_1_ledPin,OUTPUT); //|
  pinMode(_2_ledPin,OUTPUT); //|
  pinMode(_3_ledPin,OUTPUT); //|define se o pino é entrada ou saída
  pinMode(_4_ledPin,OUTPUT); //|
  pinMode(led,OUTPUT);            //|
  pinMode(entryPin,INPUT);        //|
}
void loop()            // função obrigatória
{
  while(digitalRead(entryPin) == 1) // teste o valor lógico do pino 7
  {
    digitalWrite(13,0);            
    Nrand = random(1,5);            // inicia função random
  switch (Nrand)                         // verifica o valor de random
  {
    case(1):digitalWrite(_1_ledPin,1);
    delay(500);
    digitalWrite(_1_ledPin,0);
    break;
    case(2):digitalWrite(_2_ledPin,1);
    delay(500);
    digitalWrite(_2_ledPin,0);
    break;
    case(3):digitalWrite(_3_ledPin,1);
    delay(500);
    digitalWrite(_3_ledPin,0);
    break;
    case(4):digitalWrite(_4_ledPin,1);
    delay(500);
    digitalWrite(_4_ledPin,0);
    break;
  }
}

if(digitalRead(entryPin) == 0)
{
  digitalWrite(13,1);
}

}

Esquema de ligação simplificado: