Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed Pipetagem_automatica
Diff: joystick.h
- Revision:
- 2:bce78210ffb1
- Parent:
- 1:3dbb9b66b990
--- a/joystick.h Mon Jun 29 13:41:37 2020 +0000
+++ b/joystick.h Mon Jun 29 15:07:42 2020 +0000
@@ -1,8 +1,10 @@
#include "mbed.h"
+//Declaração das portas utilizadas
AnalogIn XAxis(PA_0);
AnalogIn YAxis(PA_1);
-InterruptIn PARA_CARAI(PC_9);
+InterruptIn Parada(PC_9);
+InterruptIn Reset(PB_2);
InterruptIn butao(PC_13);
DigitalIn ZAxis_UP(PA_8);
DigitalIn ZAxis_DOWN(PB_10);
@@ -19,14 +21,15 @@
DigitalOut Fase_M3_C(PC_6);
DigitalOut Fase_M3_D(PC_8);
DigitalOut Emergencia(PB_9);
-Serial pc(USBTX, USBRX);
Timer debounce;
-float tempo = 0.01;
-
+//Declaração das funções a serem chamadas posteriormente
void Botao_Emergencia(void);
void PAROU(void);
+void reset(void);
+//Declaração das variáveis utilizadas no decorrer do programa
+float tempo = 0.01;
int ZUP = ZAxis_UP;
int ZDOWN = ZAxis_DOWN;
int limite1 = 0;
@@ -38,6 +41,7 @@
int PosicaoUsuario[] = {0,0,0};
int estado = 1;
+//Função de acionamento do motor do eixo Z para subir a pipeta
void SubindoZ() {
if (debounce.read_ms()>200) {
Fase_M3_D = 1;
@@ -62,11 +66,12 @@
wait(tempo);
limite1 = limite1 + 1;
if (limite1 == 50) {
- PosicaoUsuario[2] = PosicaoUsuario[2] - 5;
+ PosicaoUsuario[2] = PosicaoUsuario[2] - 5; //Incremento da posição conforme passo do motor
}
}
}
+//Função de acionamento do motor do eixo Z para descer a pipeta
void DescendoZ() {
if (debounce.read_ms()>200) {
Fase_M3_A = 1;
@@ -91,13 +96,15 @@
wait(tempo);
limite2 = limite2 + 1;
if (limite2 == 50) {
- PosicaoUsuario[2] = PosicaoUsuario[2] + 5;
+ PosicaoUsuario[2] = PosicaoUsuario[2] + 5; //Incremento da posição conforme passo do motor
}
}
}
+//Função principal do programa, onde as demais funções são chamadas
void joystick(){
-
+
+ //Declaração de algumas variáveis para funcionamento da função
int X,Y;
Emergencia = 0;
Fase_M1_A = 0;
@@ -113,15 +120,18 @@
Fase_M3_C = 0;
Fase_M3_D = 0;
+ //Inicio do debounce
debounce.start();
+
+ //Declaração dos botões necessários para o bom funcionamento do programa
butao.rise(&Botao_Emergencia);
- PARA_CARAI.rise(&PAROU);
+ Parada.rise(&PAROU);
- while (estado == 1) {
+ while (estado == 1) { //Inicio do loop do código principal
+ //Leitura dos eixos do joystick
X = XAxis.read() * 1000;
Y = YAxis.read() * 1000;
- float tempo = 0.01;
if (ZAxis_UP != 0 && ZAxis_DOWN == 0) { // Quando o botão UP estiver pressionado e o botão DOWN não - Suba a pipeta - inverte o sentido de rotação do motor
SubindoZ();
@@ -185,7 +195,7 @@
wait(tempo);
limite3 = limite3 + 1;
if (limite3 == 50) {
- PosicaoUsuario[0] = PosicaoUsuario[0] - 5;
+ PosicaoUsuario[0] = PosicaoUsuario[0] - 5; //Incremento do valor posição com base no passo do motor
}
}
@@ -213,7 +223,7 @@
wait(tempo);
limite4 = limite4 + 1;
if (limite4 == 50) {
- PosicaoUsuario[0] = PosicaoUsuario[0] + 5;
+ PosicaoUsuario[0] = PosicaoUsuario[0] + 5; //Incremento do valor posição com base no passo do motor
}
}
@@ -241,7 +251,7 @@
wait(tempo);
limite5 = limite5 + 1;
if (limite5 == 50) {
- PosicaoUsuario[1] = PosicaoUsuario[1] - 5;
+ PosicaoUsuario[1] = PosicaoUsuario[1] - 5; //Incremento do valor posição com base no passo do motor
}
}
@@ -269,21 +279,26 @@
wait(tempo);
limite6 = limite6 + 1;
if (limite6 == 50) {
- PosicaoUsuario[1] = PosicaoUsuario[1] + 5;
+ PosicaoUsuario[1] = PosicaoUsuario[1] + 5; //Incremento do valor posição com base no passo do motor
}
}
}
}
+//Função de ativação do botão de emergência
void Botao_Emergencia() {
if (debounce.read_ms()>200) {
- Emergencia = 1;
+ Emergencia = 1; //Ao atualizar esta variável desligamos o módulo relê, impossibilitando a execução de qualquer movimento por parte do usuário
debounce.reset();
}
- }
-
-void PAROU() {
- estado = 0;
+ Reset.rise(reset);
}
+//Função para saída do loop da função do joystick
+void PAROU() {
+ estado = 0; //Atualiza o valor da variável "estado" de forma a sair do while
+ }
+void reset() { //Função de reset para saída do estado de emergência iniciado ao se ativar o botão de emergência
+ Emergencia = 0; //Atualização do valor da variável Emergência para que ele retorne a atividade que estava executando
+ }