Tradutor

Pesquisar este blog

terça-feira, 30 de outubro de 2012

Projeto - Contador de unidades e dezenas.



   - Componentes: 2 Motores + 1 Placa ponte H + 1 Sensor Infravermelho + Fios.

   - Descrição: Conforme passa a mão na frente do sensor infravermelho o motor1(conta as unidades) gira puxando um barbante com um ponteiro mostrando na parede os números das unidades, a cada 10 passadas de mão no sensor o motor2(Contador de dezenas) gira fazendo com que suba um na dezena.


Projeto criado para fins educacionais, ou seja, ensinar unidades e dezenas para crianças de uma forma mais tecnológica.


- Código no scratch for Arduíno: Um jeito mais fácil de programar Arduíno,  também voltado para a educação infantil, uma forma de programar graficamente, simplesmente arrastando as funções.




Código:

int unidadeS = 5;
int unidadeD = 6;
int dezenaS = 10;
int dezenaD = 11;
int sensor = A0;
int velU = 120; //velocidade motor unidade
int velD = 180; //velocidade motor dezena
int contador = 0; //contador das unidades
int contadorD = 0; //contador das dezenas
int vezes = 0; //conta quantas vezes (até 2) o motor das unidades desceu (se == 2 sobe dezena)

void setup()
{
  pinMode(unidadeS,OUTPUT);
  pinMode(unidadeD,OUTPUT);
  pinMode(dezenaS,OUTPUT);
  pinMode(dezenaD,OUTPUT);
  pinMode(sensor,INPUT);
}

void loop()
{
  //Lẽ o sensor
  int sensor = analogRead(sensor);

  //se alguem passou pelo sensor
  if (sensor > 350){
    //sobe uma unidade
    analogWrite(unidadeS,velU);
    delay(350);
    analogWrite(unidadeS,0);
    contador++;
    
  //se o contador for == 5, entao desce o motor das unidades
    if(contador == 5){
      analogWrite(unidadeD,velU);
      delay(570);
      analogWrite(unidadeD,0);
      contador = 0;
      vezes++;
    }
     
   //caso as unidades chegaram 2 vezes até 5   
   if(vezes == 2){
      analogWrite(dezenaS,velD);
      delay(200);
      analogWrite(dezenaS,0);
      vezes = 0;
      contadorD++;
   }
  //se o contador da dezena for == 5 entao desce o motor das dezenas
   if (contadorD == 5){
     analogWrite(dezenaD,velD);
     delay(900);
     analogWrite(dezenaD,0);
     contadorD = 0;
   }
  //sempre que passar alguem pelo sensor, espera 1 segundo para ler o proximo (evitar ficar com a mao em cima)
    delay(1000);
  }

}