TP1:Manipuladores ====
Neste primeiro trabalho prático nos foram dadas duas opções de atuação: O primeiro projeto que definia a criação de um robô manipulador que fosse capaz de seguir um caminho predefinido, o qual a região quadriculada é o local onde a base do robô se encontraria.
Já no segundo projeto a ideia era utilizar um robô manipulador que escreveria UFMG em uma determinada seção da folha.
Nos do grupo Robolfo escolhemos seguir o primeiro projeto(Movimento por pontos definidos).
Na montagem utilizamos o kit lego, dois motores DC, canetas, pilhas e o arduino MEGA 2560 além de dois Shields, um para os motores, outro que nos auxiliaria como um tela led. A equipe decidiu construir o robô com uma base fixa que iria rotacionar um braço com a caneta posicionada em sua extremidade em uma velocidade constante, seu braço iria ter uma esteira controlada por uma junta prismática. Como primeiro passo nós construímos uma caixa de redução para a base e construímos o braço, e após algumas mudanças conseguimos criar uma estrutura básica inicial do robô.
Na programação utilizamos uma biblioteca especifica do shield do arduino Adafruit_MotorShield.h e LiquidCrystal.h, nosso código na integra esta a baixo:
**esta versão não foi a usada no final
#include <LiquidCrystal.h> #include <Adafruit_MotorShield.h> #include <Wire.h> #include "utility/Adafruit_MS_PWMServoDriver.h"
Adafruit_MotorShield AFMS = Adafruit_MotorShield();
Adafruit_DCMotor *motor1 = AFMS.getMotor(3); Adafruit_DCMotor *motor2 = AFMS.getMotor(4); //Adafruit_DCMotor *motor2 = AFMSbot.getMotor(3);
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
int k=150;
void setup(){
AFMS.begin();
lcd.begin(16, 2);
lcd.setCursor(1,0);
lcd.print("AlphaV.1");
lcd.setCursor(0,1);
lcd.print("Tecla: ");
}
void loop(){
int botao;
botao = analogRead (0); //Leitura do valor da porta analógica A0
lcd.setCursor(6,1);
if (botao < 100) {
lcd.print ("Start ");
//p1-p2
motor1->setSpeed(250);
motor1->run(BACKWARD);
delay(6000);
motor2->setSpeed(55);
motor2->run(BACKWARD);
delay(3000);
motor2->setSpeed(0);
delay(500);
motor2->setSpeed(50);
motor2->run(BACKWARD);
delay(6750);
motor1->setSpeed(0);
motor2->setSpeed(0);
delay(1000);
//p2-p3 motor1->setSpeed(250); motor1->run(BACKWARD); motor2->setSpeed(0); motor2->run(BACKWARD); delay(6050); motor2->setSpeed(50); delay(6800); motor1->setSpeed(0); motor2->setSpeed(0); delay(1000);
//p3-p4 motor1->setSpeed(250); motor1->run(BACKWARD);
motor2->setSpeed(50); motor2->run(FORWARD); delay(6000); motor2->setSpeed(0); motor2->run(BACKWARD); delay(4000); motor2->setSpeed(60); delay(4050); motor1->setSpeed(0); delay(1000); /* //p4-p5 motor1->setSpeed(250); motor1->run(FORWARD); delay(7050); motor1->setSpeed(0); delay(1000); //p5-p5/6 motor1->setSpeed(250); motor1->run(BACKWARD); delay(7050); motor1->setSpeed(0); delay(1000); //p5/6-p6 motor1->setSpeed(250); motor1->run(BACKWARD); delay(7050); motor1->setSpeed(0); delay(1000);
//p6-p7 motor1->setSpeed(250); motor1->run(BACKWARD); delay(7050); motor1->setSpeed(0); delay(1000); */
}
else if (botao < 200) {
motor1->setSpeed(250);
motor1->run(FORWARD);
}
else if (botao < 400){
motor2->setSpeed(200);
motor2->run(FORWARD);
}
else if (botao < 600){
motor1->setSpeed(0);
motor1->run(FORWARD);
motor2->setSpeed(0);
motor2->run(FORWARD);
}
else if (botao < 800){
motor1->setSpeed(200);
motor1->run(BACKWARD);
motor2->setSpeed(200);
motor2->run(BACKWARD);
}
}
—-