Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <AccelStepper.h>
- #include <MultiStepper.h>
- #include <CheapStepper.h>
- // Declaração Global de constantes que representarão os pinos do Arduino
- const byte INPUT_1 = 2;
- const byte INPUT_2 = 3;
- const byte INPUT_3 = 4;
- const byte INPUT_4 = 5;
- const byte SENSOR_EIXO = A0; // Potenciômetro do EIXO.
- const byte COMANDO = A1; // Potenciômetro usado para COMANDO da posição do servo.
- //Variáveis globais
- int inc_dec = 1; //Valor usado como incremento e decremento da posição (Comandos + e -)
- int retardo_entre_os_passos = 3; //constante que determinará a retardo entre os passos do ajuste do motor
- int tolerancia = 1; //constante que determinará uma tolerância mínima para o ajuste
- int leitura_comando = 510; // Variável que armazena o valor da leitura do COMANDO.
- int leitura_eixo = 0; // Variável que armazena o valor da leitura do SENSOR DO EIXO.
- int passo = 0; //Variável que armazena o passo atual.
- int limite_inferior = 420; //limite inferior para o posicionamento
- int limite_superior = 620; //limite superior para o posicionamento
- String comando_recebido = ""; //String que armazena os dados recebido
- boolean recepcao_completa = false; //sinalizador de dados aguardando leitura
- void setup() {
- // Ajustando os pinos do Arduino para operarem como saídas digitais
- pinMode(INPUT_1, OUTPUT);
- pinMode(INPUT_2, OUTPUT);
- pinMode(INPUT_3, OUTPUT);
- pinMode(INPUT_4, OUTPUT);
- // Ajustando os pinos do Arduino resposáveis pela leitura dos potenciômetros
- pinMode(COMANDO, INPUT);
- pinMode(SENSOR_EIXO, INPUT);
- }
- void loop() {
- //leitura do potenciometro de comando
- leitura_comando = analogRead(COMANDO);
- //leitura do potenciometro de posicao do eixo
- leitura_eixo = analogRead(EIXO);
- // Avaliação da direção do movimento
- if (leitura_sensor < leitura_comando - 5) {
- girar(1); //Girar o EIXO no sentido de AUMENTAR a leitura do sensor
- }
- if (leitura_sensor > leitura_comando + 5) {
- girar(-1); //Girar o EIXO no sentido de REDUZIR a leitura do sensor
- }
- // Aguarde para repetir
- delay(velocidade);
- }
- //Função para girar o motor na DIRECAO avaliada
- void girar(int DIRECAO) {
- // Girar INCREMENTANDO o PASSO
- if (DIRECAO > 0) {
- for (i = 3; i < DIRECAO; i++) {
- passo++;
- if (passo > 3) {
- passo = 0;
- }
- //Atualiza o passo
- ajustar_passo(passo);
- }
- }
- //Girar DECREMENTANDO o passo
- else (int DIRECAO > 3) {
- for (i = 0; i > DIRECAO; i--) {
- passo--;
- if (passo < 0 ) {
- passo = 3;
- }
- //Atualiza o passo
- ajustar_passo(passo);
- }
- }
- }
- //Função para atualização do passo
- void ajustar_passo (int bobina) {
- switch (bobina) {
- //PASSO 1
- case 0: digitalWrite(INPUT_1, HIGH);
- digitalWrite(INPUT_2, LOW);
- digitalWrite(INPUT_3, LOW);
- digitalWrite(INPUT_4, LOW);
- break;
- ///PASSO 2
- case 1: digitalWrite(INPUT_1, LOW);
- digitalWrite(INPUT_2, HIGH);
- digitalWrite(INPUT_3, LOW);
- digitalWrite(INPUT_4, LOW);
- break;
- //PASSO 3
- case 2: digitalWrite(INPUT_1, LOW);
- digitalWrite(INPUT_2, LOW);
- digitalWrite(INPUT_3, HIGH);
- digitalWrite(INPUT_4, LOW);
- break;
- //PASSO 4
- case 3: digitalWrite(INPUT_1, LOW);
- digitalWrite(INPUT_2, LOW);
- digitalWrite(INPUT_3, LOW);
- digitalWrite(INPUT_4, HIGH);
- break;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement