Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Código Biruta
- int N; // declara a variável N
- int posicao; // declara a variável posição
- int antigaPos; // valor da posicao salva
- int movimento = 0; // incremento de movimento
- //------------------------------------
- void setup()
- {
- pinMode(2, INPUT); // declara que as portas 2, 3, 4, 5, 6, 7, 8 e 9 são de entradas de dados
- pinMode(3, INPUT);
- pinMode(4, INPUT);
- pinMode(5, INPUT);
- pinMode(6, INPUT);
- pinMode(7, INPUT);
- pinMode(8, INPUT);
- pinMode(9, INPUT);
- pinMode(10, OUTPUT); // Ena do TB6600
- pinMode(11, OUTPUT); // Dir do TB6600
- pinMode(12, OUTPUT); // Pul do TB6600
- digitalWrite(2, LOW); // declara que o estado inicial das portas 2, 3, 4, 5, 6, 7, 8 e 9 é baixo, sem tensão
- digitalWrite(3, LOW); // Desliga todos PULL UP resitor
- digitalWrite(4, LOW);
- digitalWrite(5, LOW);
- digitalWrite(6, LOW);
- digitalWrite(7, LOW);
- digitalWrite(8, LOW);
- digitalWrite(9, LOW);
- Serial.begin(9600); // ativa a porta serial
- digitalWrite(10, HIGH); // permite Step motor girar
- }
- //-----------------------------------------------
- void giraStep()
- {
- if (antigaPos != posicao) // Se houve movimento do biruta
- {
- movimento = (antigaPos - posicao); // Calcula o movimento
- if (movimento < 0) // Se o movimento for negativo
- {
- digitalWrite(11, HIGH); // Definie direcao CW
- }
- if (movimento > 0) // Se movimento for positivo
- {
- digitalWrite(11, LOW); // Define direcao CCW
- }
- for ( int i = 0; i < ((abs(movimento)*10)/18); i++) // Gira qtidade de pulso pra deslocar igual calculo
- {
- digitalWrite(12, HIGH); // Pulso
- delay(10); // Tempo
- digitalWrite(12, LOW); // Sem pulso
- delay(10); // Tempo
- }
- }
- antigaPos = posicao; // Salva posicao atual
- }
- //------------------------------------------------
- void loop() {
- posicao = digitalRead(2); // faz a leitura da porta e armazena o valor na variável posição
- if ( posicao == HIGH) // se o estado da variável posição for alto ativa a condição
- {
- N = 0; // a variável N indica a direção em graus, 0 é norte.
- }
- posicao = digitalRead(3); // faz a leitura da porta e armazena o valor na variável posição
- if ( posicao == HIGH) // se o estado da variável posição for alto ativa a condição
- {
- N = 45; // a variável N indica a direção em graus, 45 é nordeste
- }
- posicao = digitalRead(4); // faz a leitura da porta e armazena o valor na variável posição
- if ( posicao == HIGH) // se o estado da variável posição for alto ativa a condição
- {
- N = 90; // a variável N indica a direção em graus, 90 é leste.
- }
- posicao = digitalRead(5); // faz a leitura da porta e armazena o valor na variável posição
- if ( posicao == HIGH) // se o estado da variável posição for alto ativa a condição
- {
- N = 135; // a variável N indica a direção em graus, 135 é sudeste
- }
- posicao = digitalRead(6); // faz a leitura da porta e armazena o valor na variável posição
- if ( posicao == HIGH) // se o estado da variável posição for alto ativa a condição
- {
- N = 180; // a variável N indica a direção em graus, 180 é sul
- }
- posicao = digitalRead(7); // faz a leitura da porta e armazena o valor na variável posição
- if ( posicao == HIGH) // se o estado da variável posição for alto ativa a condição
- {
- N = 225; // a variável N indica a direção em graus, 225 é sudoeste
- }
- posicao = digitalRead(8); // faz a leitura da porta e armazena o valor na variável posição
- if ( posicao == HIGH) // se o estado da variável posição for alto ativa a condição
- {
- N = 270; // a variável N indica a direção em graus, 270 é oeste
- }
- posicao = digitalRead(9); // faz a leitura da porta e armazena o valor na variável posição
- if ( posicao == HIGH) // se o estado da variável posição for alto ativa a condição
- {
- N = 315; // a variável N indica a direção em graus, 315 é noroeste
- }
- Serial.println(N); // imprime o valor da variável N
- delay(500); //dá um tempo de 0,5s
- giraStep();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement