Robótica Livre
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Ir para baixo
gustavocruz
gustavocruz
Mensagens : 256
Data de inscrição : 12/05/2019
Idade : 16

Exercício 5.1.7 Empty Exercício 5.1.7

Qui Jul 04, 2024 4:34 pm
/*
* CURSO DE ROBOTICA 2023
*
* Exercicio: 5.1.7
* Tema: Montar o Braço Robótico do Kit de Robotica do Estado
* Atividade: Montagem Fisica do braço e dos 4 servos do KIT
* Descrição: Seguir o manual de montagem dp KIT braço robotico e conectar no arduino e usar as teclas para selecionar os servos e movimentá-los
* Hardware: Montar o braço Robotico, conectar o servo na placa, ligar as teclas no Arduino, leds para sinalizar o ativo
* Comandos: if(), digitalRead(), servo.write(), while()
* Dica1: https://aluno.escoladigital.pr.gov.br/sites/alunos/arquivos_restritos/files/documento/2023-08/manual_braco_robotico_versao5.pdf
* Dica2: usar as teclas UP e DOWN para selecionar o servo ativo e movimentá-lo
* Dica3: Sinalizar através do led qual servo está ativo
* Dica4: Enviar para porta serial os valores doas posições dos servos
*/
#include

Servo servo1;
Servo servo2;
Servo servo3;
Servo servo4;
#define tecla 2
#define tecla1 4
#define tecla3 5
#define tecla4 3

byte variavelControle = 0; //variavel para impedir releitura de tecla
int servoIndex = 1; //variavel para selecionar os servos
byte verPosi = 0; //variavel para visualisar a posicao do servo

void setup(){
Serial.begin(9600);
pinMode(tecla, INPUT_PULLUP);
pinMode(tecla1, INPUT_PULLUP);
pinMode(tecla3, INPUT_PULLUP);
pinMode(tecla4,INPUT_PULLUP);
servo1.attach(9);
servo2.attach(10);
servo3.attach(11);
servo4.attach(12);
}

void selectServo(int servoSelecionado, int posiServo){ //crio uma função para facilitar
//seleciona o servo referente ao valor, mdifica a posição, impede que o valor passe de 180

if(servoSelecionado == 1){
servo1.write(servo1.read() + posiServo);
if(servo1.read() >= 180) servo1.write(179);
delay(5);
verPosi = 1;
}
if(servoSelecionado == 2){
servo2.write(servo2.read() + posiServo);
if(servo2.read() >= 180) servo2.write(179);
delay(5);
verPosi = 1;
}
if(servoSelecionado == 3){
servo3.write(servo3.read() + posiServo);
if(servo3.read() >= 180) servo3.write(179);
delay(5);
verPosi = 1;
}
if(servoSelecionado == 4){
servo4.write(servo4.read() + posiServo);
if(servo4.read() >= 180) servo4.write(179);
delay(5);
verPosi = 1;
}
}

void loop(){
//AO APERTAR A TECLA, UTILIZA O servoIndex PARA SELECIONAR O SERVO, PRINTA O SERVO SELECIONADO
if(!digitalRead(tecla) && variavelControle == 0){
servoIndex += 1;
if(servoIndex == 5) servoIndex = 1; //Permite que passe por todos os servos
variavelControle = 1;
Serial.print('\n');
if(servoIndex == 1) Serial.print("base = ");
if(servoIndex == 3) Serial.print("frente/tras = ");
if(servoIndex == 2) Serial.print("cima/baixo = ");
if(servoIndex == 4) Serial.print("garra = ");
}
if(!digitalRead(tecla1) && variavelControle == 0){
servoIndex -= 1;
if(servoIndex == 0) servoIndex = 4;
variavelControle = 1;
Serial.print('\n');
if(servoIndex == 1) Serial.print("base = ");
if(servoIndex == 3) Serial.print("frente/tras = ");
if(servoIndex == 2) Serial.print("cima/baixo = ");
if(servoIndex == 4) Serial.print("garra = ");
}

//ENQUANTO ESTIVER APERTANDO AS TECLAS, CHAMA A FUNÇÃO E INFORMA O VALOR QUE O SERVO IRÁ MOVER
while(!digitalRead(tecla3)) selectServo( servoIndex, 1);
while(!digitalRead(tecla4)) selectServo(servoIndex, -1);

//ASSIM QUE SOLTAR AS TECLAS, PERMITE QUE POSSA APERTAR NOVAMENTE, IMPEDINDO RELEITURA
if(digitalRead(tecla) && digitalRead(tecla1) && variavelControle == 1) variavelControle = 0;

//INFORMA A POSIÇÃO, USA O verPosi PARA QUE O VALOR NÃO FIQUE REPETINDO DE FORMA DESCONTROLADA
if(digitalRead(tecla) && digitalRead(tecla1) && verPosi == 1) {
verPosi = 0;
delay(5);
if(servoIndex == 1) Serial.println(servo1.read());
if(servoIndex == 2) Serial.println(servo2.read());
if(servoIndex == 3) Serial.println(servo3.read());
if(servoIndex == 4) Serial.println(servo4.read());
}
}
Paulo Augusto Batista
Paulo Augusto Batista
Admin
Mensagens : 5788
Data de inscrição : 11/02/2019
Idade : 53
Escola : Colegio Lindaura
https://roboticalivre.forumeiros.com

Exercício 5.1.7 Empty Re: Exercício 5.1.7

Sáb Ago 17, 2024 10:39 am
Muito bom Gustavo, testado com sucesso, nota 10.0
Ir para o topo
Permissões neste sub-fórum
Não podes responder a tópicos