Advertisement
RuiViana

Anemometro_Biruta

Oct 25th, 2017
242
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.67 KB | None | 0 0
  1. //                            Código Biruta
  2. int N;                        // declara a variável N
  3. int posicao;                  // declara a variável posição
  4. int antigaPos;                // valor da posicao salva
  5. int movimento = 0;            // incremento de movimento
  6. //------------------------------------
  7. void setup()
  8. {
  9.   pinMode(2, INPUT);          // declara que as portas 2, 3, 4, 5, 6, 7, 8 e 9 são de entradas de dados
  10.   pinMode(3, INPUT);
  11.   pinMode(4, INPUT);
  12.   pinMode(5, INPUT);
  13.   pinMode(6, INPUT);
  14.   pinMode(7, INPUT);
  15.   pinMode(8, INPUT);
  16.   pinMode(9, INPUT);
  17.  
  18.   pinMode(10, OUTPUT);        // Ena do TB6600
  19.   pinMode(11, OUTPUT);        // Dir do TB6600
  20.   pinMode(12, OUTPUT);        // Pul do TB6600
  21.  
  22.   digitalWrite(2, LOW);       // declara que o estado inicial das portas 2, 3, 4, 5, 6, 7, 8 e 9 é baixo, sem tensão
  23.   digitalWrite(3, LOW);       // Desliga todos PULL UP resitor
  24.   digitalWrite(4, LOW);
  25.   digitalWrite(5, LOW);
  26.   digitalWrite(6, LOW);
  27.   digitalWrite(7, LOW);
  28.   digitalWrite(8, LOW);
  29.   digitalWrite(9, LOW);
  30.   Serial.begin(9600);         // ativa a porta serial
  31.   digitalWrite(10, HIGH);     // permite Step motor girar
  32. }
  33. //-----------------------------------------------
  34. void giraStep()
  35. {
  36.   if (antigaPos != posicao)                 // Se houve movimento do biruta
  37.   {
  38.     movimento = (antigaPos - posicao);      // Calcula o movimento
  39.     if (movimento < 0)                      // Se o movimento for negativo
  40.     {
  41.       digitalWrite(11, HIGH);               // Definie direcao CW
  42.     }
  43.     if (movimento > 0)                      //  Se movimento for positivo
  44.     {
  45.       digitalWrite(11, LOW);                //  Define direcao CCW
  46.     }  
  47.     for ( int i = 0; i < ((abs(movimento)*10)/18); i++)  // Gira qtidade de pulso pra deslocar igual calculo
  48.     {
  49.       digitalWrite(12, HIGH);               // Pulso
  50.       delay(10);                            // Tempo
  51.       digitalWrite(12, LOW);                // Sem pulso
  52.       delay(10);                            // Tempo
  53.     }
  54.   }
  55.   antigaPos = posicao;                      // Salva posicao atual
  56. }
  57. //------------------------------------------------
  58. void loop() {
  59.  
  60.   posicao = digitalRead(2);       // faz a leitura da porta e armazena o valor na variável posição
  61.   if ( posicao == HIGH)           // se o estado da variável posição for alto ativa a condição
  62.   {
  63.     N = 0;                        // a variável N indica a direção em graus, 0 é norte.
  64.   }
  65.   posicao = digitalRead(3);       // faz a leitura da porta e armazena o valor na variável posição
  66.   if ( posicao == HIGH)           // se o estado da variável posição for alto ativa a condição
  67.   {
  68.     N = 45;                       // a variável N indica a direção em graus, 45 é nordeste
  69.   }
  70.   posicao = digitalRead(4);       // faz a leitura da porta e armazena o valor na variável posição
  71.   if ( posicao == HIGH)           // se o estado da variável posição for alto ativa a condição
  72.   {
  73.     N = 90;                       // a variável N indica a direção em graus, 90 é leste.
  74.   }
  75.   posicao = digitalRead(5);       // faz a leitura da porta e armazena o valor na variável posição
  76.   if ( posicao == HIGH)           // se o estado da variável posição for alto ativa a condição
  77.   {
  78.     N = 135;                      // a variável N indica a direção em graus, 135 é sudeste
  79.   }
  80.   posicao = digitalRead(6);       // faz a leitura da porta e armazena o valor na variável posição
  81.   if ( posicao == HIGH)           // se o estado da variável posição for alto ativa a condição
  82.   {
  83.     N = 180;                      // a variável N indica a direção em graus, 180 é sul
  84.   }
  85.   posicao = digitalRead(7);       // faz a leitura da porta e armazena o valor na variável posição
  86.   if ( posicao == HIGH)           // se o estado da variável posição for alto ativa a condição
  87.   {
  88.     N = 225;                      // a variável N indica a direção em graus, 225 é sudoeste
  89.   }
  90.   posicao = digitalRead(8);     // faz a leitura da porta e armazena o valor na variável posição
  91.   if ( posicao == HIGH)           // se o estado da variável posição for alto ativa a condição
  92.   {
  93.     N = 270;                      // a variável N indica a direção em graus, 270 é oeste
  94.   }
  95.   posicao = digitalRead(9);     // faz a leitura da porta e armazena o valor na variável posição
  96.   if ( posicao == HIGH)           // se o estado da variável posição for alto ativa a condição
  97.   {
  98.     N = 315; // a variável N indica a direção em graus, 315 é noroeste
  99.   }
  100.   Serial.println(N); // imprime o valor da variável N
  101.   delay(500); //dá um tempo de 0,5s
  102.   giraStep();
  103. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement