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;
}
}
}
servoMotor2.write(180 - angulo);
delay(5);
}
Tags:
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;
}
}
}
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
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por