ME AJUDA PESSOAL POR FAVOR, COMO CRIAR UM PROGRAMA PARA CONTROLAR 1 MOTOR DE PASSO, E 2 SERVOS-MOTORES, COM 1 ARDUINO E EASY-DRIVER,

BOA NOITE GALERA ALGUÉM É BOM COM PROGRAMA C ? PARA ME AJUDAR 

uma esteira separadora de caixas.

minha logica é (m1) motor de passo com rotação continua da correia da esteira, e 2 servos motores (m2) e (m3) um na frente do outro

servo 1 joga a primeira caixa que passar para direita servo 2 joga a segunda caixa que passar para esquerda a 3 caixa passa direto. mas infelizmente minha aula de programação em #C foram fracas, entao nao consegui aprender muito. gostaria de saber se alguém entenda de programa em #C poderia me ajudar. no momento achei esses dois programas 1 do motor de passo programa 2 do servo, mas nao sei como fazer a junção dos dois códigos para ter a minha logica. se alguém poder me ajudar ficarei muito muito grato.

não consegui colocar anexar a foto infelismente 

programa motor de passo

void setup() {

  pinMode(8, OUTPUT);

  pinMode(9, OUTPUT);

  digitalWrite(8, LOW);

  digitalWrite(9, LOW);

}

 void loop()

{   

    digitalWrite(9, HIGH);

    delayMicroseconds(10);

     digitalWrite(9, LOW);

   

    delayMicroseconds(300);

}

 alternativa com dois servo motores um girando no sentido contrário ao outro.

 

/*

Sketch: Este programa ira girar o eixo de um servomotor para direita ou esquerda lendo o estado de dois botoes assim identificados. Alternativa com dois servos girando em sentido contrario.

*/

 

#include <Servo.h>

 

const int botaoDireita = 2;    // identifica o pino do botao a direita

const int botaoEsquerda = 3;   // identifica o pino do botao a esquerda

const int servo1 = 4;          // identifica o pino do servomotor

const int servo2 = 5;          // identifica o pino do servomotor

 

Servo servoMotor1;             // declara um objeto tipo Servo

Servo servoMotor2;             // declara um objeto tipo Servo

 

int angulo = 90;               // controla a posicao do eixo

 

void setup() {

 pinMode(botaoDireita, INPUT);

 digitalWrite(botaoDireita, HIGH);

 

 pinMode(botaoEsquerda, INPUT);

 digitalWrite(botaoEsquerda, HIGH);

 

 servoMotor1.attach(servo1);    // conecta o motor ao pino de controle

 servoMotor1.write(angulo);     // gira o servo ate o ponto do meio

 

 servoMotor2.attach(servo2);    // conecta o motor ao pino de controle

 servoMotor2.write(angulo);     // gira o servo ate o ponto do meio

}

 

void loop() {

 if(digitalRead(botaoDireita) == LOW) {     // botao direita pressionado

  if(angulo < 180) {

   angulo = angulo + 1;

  }

 } else {

   if(digitalRead(botaoEsquerda) == LOW) {  // botao esquerda pressionado

    if(angulo > 0) {

     angulo = angulo - 1;

    }

   }

 }

 

 servoMotor1.write(angulo);

 servoMotor2.write(180 - angulo);

 delay(5);

}

Exibições: 1870

Responder esta

Respostas a este tópico

Como vai ser a detecção das caixas?

vou fazer mais simple 

vou colocando as caixas 

os dois servo motores vão ter um intervalo um do outro para girar 90 grau. para 1 caixa q passa o primeiro joga a caixa o segundo vai ta parado depois ele joga para o lado tbm 

Mais ai vc vai ter que ver qual a velocidade em que as caixas vao passar para colocar no deley o tempo certo de deslocar os servos

eu vou regular o tempo dos dois servo

os codigos que eu postei é um exemplo dos dois codigos mais estao separado 

pois eu nao sei fazer a junção dos dois 

a junçao fica assim:

#include <Servo.h>

const int botaoDireita = 2;    // identifica o pino do botao a direita

const int botaoEsquerda = 3;   // identifica o pino do botao a esquerda

const int servo1 = 4;          // identifica o pino do servomotor

const int servo2 = 5;          // identifica o pino do servomotor

 

Servo servoMotor1;             // declara um objeto tipo Servo

Servo servoMotor2;             // declara um objeto tipo Servo

 

int angulo = 90;               // controla a posicao do eixo

 

void setup() {

  pinMode(8, OUTPUT);

  pinMode(9, OUTPUT);

  digitalWrite(8, LOW);

  digitalWrite(9, LOW);

 pinMode(botaoDireita, INPUT);

 digitalWrite(botaoDireita, HIGH);

 

 pinMode(botaoEsquerda, INPUT);

 digitalWrite(botaoEsquerda, HIGH);

 

 servoMotor1.attach(servo1);    // conecta o motor ao pino de controle

 servoMotor1.write(angulo);     // gira o servo ate o ponto do meio

 

 servoMotor2.attach(servo2);    // conecta o motor ao pino de controle

 servoMotor2.write(angulo);     // gira o servo ate o ponto do meio

}

void loop()

{   

    digitalWrite(9, HIGH);

    delayMicroseconds(10);

     digitalWrite(9, LOW);

   

    delayMicroseconds(300);

 if(digitalRead(botaoDireita) == LOW) {     // botao direita pressionado

  if(angulo < 180) {

   angulo = angulo + 1;

  }

 } else {

   if(digitalRead(botaoEsquerda) == LOW) {  // botao esquerda pressionado

    if(angulo > 0) {

     angulo = angulo - 1;

    }

   }

 }

 

 servoMotor1.write(angulo);

 servoMotor2.write(180 - angulo);

 delay(5);

}

obrigado ewerton, onde entrou o motor de passo ai p rodar a esteira?

a peimeira configurção da setup e a primeira funcao do loop

fala ewerton  fiz as ligações mais apareceu erro no:

Servo servoMotor1;             // declara um objeto tipo Servo

sabe oq  pode ser p ter dado  erro fiz as ligações nos pin certo

Olha Rubens eu compilei aqui e deu certo, copia de novo.


const byte botaoSet = A1;//botão do painel

byte estadoAnteriorBotaoSet;
byte estadoAtualBotaoSet;

void setup(){
//inicializacao padrão
pinMode(botaoSet, INPUT);
}

void loop(){
unsigned long tempoFinal = millis() + 500;//determina quanto tempo o codigo ficara lendo os botoes

estadoAnteriorBotaoSet = digitalRead(botaoSet);

while(tempoFinal >= millis()){//fica lendo os "botoes" por 500 milisegundos

estadoAtualBotaoSet = digitalRead(botaoSet);
if(estadoAtualBotaoSet != estadoAnteriorBotaoSet && estadoAtualBotaoSet == LOW){//limita 1 clike a cada 500 millisegunsdos

//aqui vai os comandos para quando este botao for precionado
//exemplo
ligarEsteira(100); //ira ligar a esteira na velocidade 100
abrirServoM2(); //executa o q estiver programado no servoM2

estadoAnteriorBotaoSet = estadoAtualBotaoSet;
}

//--> aki vc pode colocar mais botoes no mesmo exquema acima.. assim evita unimeros clike inesperados

//logica dos processos / "regras de negocio"

}
//aki por exemplo vc pode desligar a esteira apenas colocando o metodo
desligarEsteira();
}//fim do loop <--

//metodos com as princimais funcoes / motores e servos

void ligarEsteira(byte v){
byte velocidade = v;
//comandos para ligar a esteira e controlar sua velocidade
//motorM1
}

void desligarEsteira(){
//comandos para parar a esteira
}

void abrirServoM2(){
//comandos para abrir servoM2
}

void fecharServoM2(){
//comandos para fechar o servoM2
}

void abrirServoM3(){
//comandos....
}

void fecharServoM3(){
//comandos....
}
//é possivel fazer mais metodos para mais funcoes dos servos

Esse é só um esqueleto de código.. falta algumas implementações...

Coloca isso no IDE Arduino e da um Ctrl+T pra organiza que fica mais fácil pra entender ;)

obrigado diego

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço