Biblioteca do Robô TON-BOT (https://ioton.cc/ton-bot)

Dependents:   ton-bot_teste ton-bot_seguidor_linha ton-bot_seguidor_parede

Committer:
krebyy
Date:
Thu Jun 29 20:53:52 2017 +0000
Revision:
0:a79d499cd558
Child:
1:9a99f8884c3b
Commit inicial

Who changed what in which revision?

UserRevisionLine numberNew contents of line
krebyy 0:a79d499cd558 1 /**
krebyy 0:a79d499cd558 2 ******************************************************************************
krebyy 0:a79d499cd558 3 * @file ton-bot.h
krebyy 0:a79d499cd558 4 * @author Kleber Lima da Silva (kleber@ioton.cc)
krebyy 0:a79d499cd558 5 * @version V0.0.1
krebyy 0:a79d499cd558 6 * @date 19-Junho-2017
krebyy 0:a79d499cd558 7 * @brief Biblioteca do Robô TON-BOT (https://ioton.cc/ton-bot).
krebyy 0:a79d499cd558 8 ******************************************************************************
krebyy 0:a79d499cd558 9 * @attention
krebyy 0:a79d499cd558 10 *
krebyy 0:a79d499cd558 11 * COPYRIGHT(c) 2017 IOTON Technology
krebyy 0:a79d499cd558 12 *
krebyy 0:a79d499cd558 13 * Licensed under the Apache License, Version 2.0 (the "License");
krebyy 0:a79d499cd558 14 * you may not use this file except in compliance with the License.
krebyy 0:a79d499cd558 15 * You may obtain a copy of the License at
krebyy 0:a79d499cd558 16 *
krebyy 0:a79d499cd558 17 * http://www.apache.org/licenses/LICENSE-2.0
krebyy 0:a79d499cd558 18 *
krebyy 0:a79d499cd558 19 * Unless required by applicable law or agreed to in writing, software
krebyy 0:a79d499cd558 20 * distributed under the License is distributed on an "AS IS" BASIS,
krebyy 0:a79d499cd558 21 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
krebyy 0:a79d499cd558 22 * See the License for the specific language governing permissions and
krebyy 0:a79d499cd558 23 * limitations under the License.
krebyy 0:a79d499cd558 24 ******************************************************************************
krebyy 0:a79d499cd558 25 */
krebyy 0:a79d499cd558 26
krebyy 0:a79d499cd558 27 /* Includes ------------------------------------------------------------------*/
krebyy 0:a79d499cd558 28 #include "mbed.h"
krebyy 0:a79d499cd558 29 #include "QEI.h"
krebyy 0:a79d499cd558 30
krebyy 0:a79d499cd558 31
krebyy 0:a79d499cd558 32 /* Constantes ----------------------------------------------------------------*/
krebyy 0:a79d499cd558 33 #define PAREDE_ESQUERDA 0b100
krebyy 0:a79d499cd558 34 #define PAREDE_FRONTAL 0b010
krebyy 0:a79d499cd558 35 #define PAREDE_DIREITA 0b001
krebyy 0:a79d499cd558 36 #define INFINITO 8888 /* Indica a não identificação de linha */
krebyy 0:a79d499cd558 37 #define BRANCA 0
krebyy 0:a79d499cd558 38 #define PRETA 1
krebyy 0:a79d499cd558 39 #define DEFAULT_LINHA PRETA
krebyy 0:a79d499cd558 40 #define DEFAULT_FRONTAL_TH 0.3
krebyy 0:a79d499cd558 41 #define DEFAULT_LATERAL_TH 0.3
krebyy 0:a79d499cd558 42
krebyy 0:a79d499cd558 43
krebyy 0:a79d499cd558 44 /******************************************************************************/
krebyy 0:a79d499cd558 45 /** @addtogroup Biblioteca do Robô TON-BOT
krebyy 0:a79d499cd558 46 * @{
krebyy 0:a79d499cd558 47 */
krebyy 0:a79d499cd558 48
krebyy 0:a79d499cd558 49
krebyy 0:a79d499cd558 50 /**
krebyy 0:a79d499cd558 51 * @brief Inicializa e configura os sensores do TON-BOT
krebyy 0:a79d499cd558 52 * @param cor_linha: cor da linha do seguidor de linha
krebyy 0:a79d499cd558 53 * @param frontal_th: limiar para reconhecer parede frontal ou não
krebyy 0:a79d499cd558 54 * @param lateral_th: limiar para reconhecer paredes laterais ou não
krebyy 0:a79d499cd558 55 * @return Nenhum
krebyy 0:a79d499cd558 56 */
krebyy 0:a79d499cd558 57 void initTonBot(
krebyy 0:a79d499cd558 58 int cor_linha = DEFAULT_LINHA,
krebyy 0:a79d499cd558 59 float frontal_th = DEFAULT_FRONTAL_TH,
krebyy 0:a79d499cd558 60 float lateral_th = DEFAULT_LATERAL_TH);
krebyy 0:a79d499cd558 61
krebyy 0:a79d499cd558 62
krebyy 0:a79d499cd558 63 /******************************************************************************/
krebyy 0:a79d499cd558 64 /** @defgroup Buzzer
krebyy 0:a79d499cd558 65 * @{
krebyy 0:a79d499cd558 66 */
krebyy 0:a79d499cd558 67
krebyy 0:a79d499cd558 68 /**
krebyy 0:a79d499cd558 69 * @brief Gera vários beeps, o programa fica nesta rotina enquanto os beeps
krebyy 0:a79d499cd558 70 * são gerados
krebyy 0:a79d499cd558 71 * @param vezes: Número de beeps a serem gerados
krebyy 0:a79d499cd558 72 * @param t_on: Tempo que o buzzer fica ligado [ms]
krebyy 0:a79d499cd558 73 * @param t_off: Tempo que o buzzer fica desligado [ms]
krebyy 0:a79d499cd558 74 * @return Nenhum
krebyy 0:a79d499cd558 75 */
krebyy 0:a79d499cd558 76 void beeps(uint8_t vezes, uint16_t t_on, uint16_t t_off);
krebyy 0:a79d499cd558 77
krebyy 0:a79d499cd558 78
krebyy 0:a79d499cd558 79 /**
krebyy 0:a79d499cd558 80 * @brief Gera um beep que pode ser usado durante o funcionamento do robô
krebyy 0:a79d499cd558 81 * @param duracao: Tempo do beep [ms]
krebyy 0:a79d499cd558 82 * @return Nenhum
krebyy 0:a79d499cd558 83 */
krebyy 0:a79d499cd558 84 void beep(uint16_t duracao);
krebyy 0:a79d499cd558 85
krebyy 0:a79d499cd558 86 /**
krebyy 0:a79d499cd558 87 * @}
krebyy 0:a79d499cd558 88 */
krebyy 0:a79d499cd558 89
krebyy 0:a79d499cd558 90
krebyy 0:a79d499cd558 91 /******************************************************************************/
krebyy 0:a79d499cd558 92 /** @defgroup Encoders
krebyy 0:a79d499cd558 93 * @{
krebyy 0:a79d499cd558 94 */
krebyy 0:a79d499cd558 95
krebyy 0:a79d499cd558 96 /**
krebyy 0:a79d499cd558 97 * @brief Realiza a leitura do encoder da esquerda
krebyy 0:a79d499cd558 98 * @param Nenhum
krebyy 0:a79d499cd558 99 * @return Contagem do encoder da esquerda
krebyy 0:a79d499cd558 100 */
krebyy 0:a79d499cd558 101 int32_t getEncoderEsquerda(void);
krebyy 0:a79d499cd558 102
krebyy 0:a79d499cd558 103
krebyy 0:a79d499cd558 104 /**
krebyy 0:a79d499cd558 105 * @brief Reseta a contagem do encoder da esquerda
krebyy 0:a79d499cd558 106 * @param Nenhum
krebyy 0:a79d499cd558 107 * @return Contagem do encoder da esquerda
krebyy 0:a79d499cd558 108 */
krebyy 0:a79d499cd558 109 void resetEncoderEsquerda(void);
krebyy 0:a79d499cd558 110
krebyy 0:a79d499cd558 111
krebyy 0:a79d499cd558 112 /**
krebyy 0:a79d499cd558 113 * @brief Realiza a leitura do encoder da direita
krebyy 0:a79d499cd558 114 * @param Nenhum
krebyy 0:a79d499cd558 115 * @return Contagem do encoder da direita
krebyy 0:a79d499cd558 116 */
krebyy 0:a79d499cd558 117 int32_t getEncoderDireita(void);
krebyy 0:a79d499cd558 118
krebyy 0:a79d499cd558 119
krebyy 0:a79d499cd558 120 /**
krebyy 0:a79d499cd558 121 * @brief Reseta a contagem do encoder da direita
krebyy 0:a79d499cd558 122 * @param Nenhum
krebyy 0:a79d499cd558 123 * @return Contagem do encoder da direita
krebyy 0:a79d499cd558 124 */
krebyy 0:a79d499cd558 125 void resetEncoderDireita(void);
krebyy 0:a79d499cd558 126
krebyy 0:a79d499cd558 127 /**
krebyy 0:a79d499cd558 128 * @}
krebyy 0:a79d499cd558 129 */
krebyy 0:a79d499cd558 130
krebyy 0:a79d499cd558 131
krebyy 0:a79d499cd558 132 /******************************************************************************/
krebyy 0:a79d499cd558 133 /** @defgroup Motores
krebyy 0:a79d499cd558 134 * @{
krebyy 0:a79d499cd558 135 */
krebyy 0:a79d499cd558 136
krebyy 0:a79d499cd558 137 /**
krebyy 0:a79d499cd558 138 * @brief Atualiza o PWM dos motores da esquerda e da direita
krebyy 0:a79d499cd558 139 * @param pwm_esquerda: -1.0 a 1.0
krebyy 0:a79d499cd558 140 * @param pwm_direita: -1.0 a 1.0
krebyy 0:a79d499cd558 141 * @param fast_decay: modo de acionamento (default = false -> slow decay)
krebyy 0:a79d499cd558 142 * @return Nenhum
krebyy 0:a79d499cd558 143 */
krebyy 0:a79d499cd558 144 void setMotores(float pwm_esquerda, float pwm_direita, bool fast_decay = false);
krebyy 0:a79d499cd558 145
krebyy 0:a79d499cd558 146 /**
krebyy 0:a79d499cd558 147 * @}
krebyy 0:a79d499cd558 148 */
krebyy 0:a79d499cd558 149
krebyy 0:a79d499cd558 150
krebyy 0:a79d499cd558 151 /******************************************************************************/
krebyy 0:a79d499cd558 152 /** @defgroup Sensores
krebyy 0:a79d499cd558 153 * @{
krebyy 0:a79d499cd558 154 */
krebyy 0:a79d499cd558 155
krebyy 0:a79d499cd558 156 /**
krebyy 0:a79d499cd558 157 * @brief Realiza a leitura dos sensores de parede
krebyy 0:a79d499cd558 158 * (atualiza os sensores frontais e laterais)
krebyy 0:a79d499cd558 159 * @param lf Valor proporcional a distância do sensor frontal esquerdo
krebyy 0:a79d499cd558 160 * @param l Valor proporcional a distância do sensor diagonal esquerdo
krebyy 0:a79d499cd558 161 * @param r Valor proporcional a distância do sensor diagonal direito
krebyy 0:a79d499cd558 162 * @param rf Valor proporcional a distância do sensor frontal direito
krebyy 0:a79d499cd558 163 * @return paredes: máscara de bits indicando presença (1) ou não (0)
krebyy 0:a79d499cd558 164 * de paredes. O bit mais significativo representa a parede da esquerda.
krebyy 0:a79d499cd558 165 * Ex.: 011 = presença de parede frontal e direita.
krebyy 0:a79d499cd558 166 */
krebyy 0:a79d499cd558 167 uint8_t getSensoresParede(float* lf, float* l, float* r, float* rf);
krebyy 0:a79d499cd558 168
krebyy 0:a79d499cd558 169
krebyy 0:a79d499cd558 170 /**
krebyy 0:a79d499cd558 171 * @brief Verifica os sensores de linha
krebyy 0:a79d499cd558 172 * @param Nenhum
krebyy 0:a79d499cd558 173 * @return erro: valores entre -40 e 40 (valores negativos indicam que
krebyy 0:a79d499cd558 174 * o robô precisa se deslocar para a esquerda)
krebyy 0:a79d499cd558 175 */
krebyy 0:a79d499cd558 176 int32_t getSensoresLinha();
krebyy 0:a79d499cd558 177
krebyy 0:a79d499cd558 178 /**
krebyy 0:a79d499cd558 179 * @}
krebyy 0:a79d499cd558 180 */
krebyy 0:a79d499cd558 181
krebyy 0:a79d499cd558 182
krebyy 0:a79d499cd558 183 /************************ (C) COPYRIGHT IOTON Technology **********************/
krebyy 0:a79d499cd558 184 /***********************************END OF FILE********************************/