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:
Wed Jul 05 18:45:43 2017 +0000
Revision:
1:9a99f8884c3b
Parent:
0:a79d499cd558
Fix inclus?o recursiva

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 1:9a99f8884c3b 27 #ifndef TONBOT_H
krebyy 1:9a99f8884c3b 28 #define TONBOT_H
krebyy 1:9a99f8884c3b 29
krebyy 0:a79d499cd558 30 /* Includes ------------------------------------------------------------------*/
krebyy 0:a79d499cd558 31 #include "mbed.h"
krebyy 0:a79d499cd558 32 #include "QEI.h"
krebyy 0:a79d499cd558 33
krebyy 0:a79d499cd558 34
krebyy 0:a79d499cd558 35 /* Constantes ----------------------------------------------------------------*/
krebyy 0:a79d499cd558 36 #define PAREDE_ESQUERDA 0b100
krebyy 0:a79d499cd558 37 #define PAREDE_FRONTAL 0b010
krebyy 0:a79d499cd558 38 #define PAREDE_DIREITA 0b001
krebyy 0:a79d499cd558 39 #define INFINITO 8888 /* Indica a não identificação de linha */
krebyy 0:a79d499cd558 40 #define BRANCA 0
krebyy 0:a79d499cd558 41 #define PRETA 1
krebyy 0:a79d499cd558 42 #define DEFAULT_LINHA PRETA
krebyy 0:a79d499cd558 43 #define DEFAULT_FRONTAL_TH 0.3
krebyy 0:a79d499cd558 44 #define DEFAULT_LATERAL_TH 0.3
krebyy 0:a79d499cd558 45
krebyy 0:a79d499cd558 46
krebyy 0:a79d499cd558 47 /******************************************************************************/
krebyy 0:a79d499cd558 48 /** @addtogroup Biblioteca do Robô TON-BOT
krebyy 0:a79d499cd558 49 * @{
krebyy 0:a79d499cd558 50 */
krebyy 0:a79d499cd558 51
krebyy 0:a79d499cd558 52
krebyy 0:a79d499cd558 53 /**
krebyy 0:a79d499cd558 54 * @brief Inicializa e configura os sensores do TON-BOT
krebyy 0:a79d499cd558 55 * @param cor_linha: cor da linha do seguidor de linha
krebyy 0:a79d499cd558 56 * @param frontal_th: limiar para reconhecer parede frontal ou não
krebyy 0:a79d499cd558 57 * @param lateral_th: limiar para reconhecer paredes laterais ou não
krebyy 0:a79d499cd558 58 * @return Nenhum
krebyy 0:a79d499cd558 59 */
krebyy 0:a79d499cd558 60 void initTonBot(
krebyy 0:a79d499cd558 61 int cor_linha = DEFAULT_LINHA,
krebyy 0:a79d499cd558 62 float frontal_th = DEFAULT_FRONTAL_TH,
krebyy 0:a79d499cd558 63 float lateral_th = DEFAULT_LATERAL_TH);
krebyy 0:a79d499cd558 64
krebyy 0:a79d499cd558 65
krebyy 0:a79d499cd558 66 /******************************************************************************/
krebyy 0:a79d499cd558 67 /** @defgroup Buzzer
krebyy 0:a79d499cd558 68 * @{
krebyy 0:a79d499cd558 69 */
krebyy 0:a79d499cd558 70
krebyy 0:a79d499cd558 71 /**
krebyy 0:a79d499cd558 72 * @brief Gera vários beeps, o programa fica nesta rotina enquanto os beeps
krebyy 0:a79d499cd558 73 * são gerados
krebyy 0:a79d499cd558 74 * @param vezes: Número de beeps a serem gerados
krebyy 0:a79d499cd558 75 * @param t_on: Tempo que o buzzer fica ligado [ms]
krebyy 0:a79d499cd558 76 * @param t_off: Tempo que o buzzer fica desligado [ms]
krebyy 0:a79d499cd558 77 * @return Nenhum
krebyy 0:a79d499cd558 78 */
krebyy 0:a79d499cd558 79 void beeps(uint8_t vezes, uint16_t t_on, uint16_t t_off);
krebyy 0:a79d499cd558 80
krebyy 0:a79d499cd558 81
krebyy 0:a79d499cd558 82 /**
krebyy 0:a79d499cd558 83 * @brief Gera um beep que pode ser usado durante o funcionamento do robô
krebyy 0:a79d499cd558 84 * @param duracao: Tempo do beep [ms]
krebyy 0:a79d499cd558 85 * @return Nenhum
krebyy 0:a79d499cd558 86 */
krebyy 0:a79d499cd558 87 void beep(uint16_t duracao);
krebyy 0:a79d499cd558 88
krebyy 0:a79d499cd558 89 /**
krebyy 0:a79d499cd558 90 * @}
krebyy 0:a79d499cd558 91 */
krebyy 0:a79d499cd558 92
krebyy 0:a79d499cd558 93
krebyy 0:a79d499cd558 94 /******************************************************************************/
krebyy 0:a79d499cd558 95 /** @defgroup Encoders
krebyy 0:a79d499cd558 96 * @{
krebyy 0:a79d499cd558 97 */
krebyy 0:a79d499cd558 98
krebyy 0:a79d499cd558 99 /**
krebyy 0:a79d499cd558 100 * @brief Realiza a leitura do encoder da esquerda
krebyy 0:a79d499cd558 101 * @param Nenhum
krebyy 0:a79d499cd558 102 * @return Contagem do encoder da esquerda
krebyy 0:a79d499cd558 103 */
krebyy 0:a79d499cd558 104 int32_t getEncoderEsquerda(void);
krebyy 0:a79d499cd558 105
krebyy 0:a79d499cd558 106
krebyy 0:a79d499cd558 107 /**
krebyy 0:a79d499cd558 108 * @brief Reseta a contagem do encoder da esquerda
krebyy 0:a79d499cd558 109 * @param Nenhum
krebyy 0:a79d499cd558 110 * @return Contagem do encoder da esquerda
krebyy 0:a79d499cd558 111 */
krebyy 0:a79d499cd558 112 void resetEncoderEsquerda(void);
krebyy 0:a79d499cd558 113
krebyy 0:a79d499cd558 114
krebyy 0:a79d499cd558 115 /**
krebyy 0:a79d499cd558 116 * @brief Realiza a leitura do encoder da direita
krebyy 0:a79d499cd558 117 * @param Nenhum
krebyy 0:a79d499cd558 118 * @return Contagem do encoder da direita
krebyy 0:a79d499cd558 119 */
krebyy 0:a79d499cd558 120 int32_t getEncoderDireita(void);
krebyy 0:a79d499cd558 121
krebyy 0:a79d499cd558 122
krebyy 0:a79d499cd558 123 /**
krebyy 0:a79d499cd558 124 * @brief Reseta a contagem do encoder da direita
krebyy 0:a79d499cd558 125 * @param Nenhum
krebyy 0:a79d499cd558 126 * @return Contagem do encoder da direita
krebyy 0:a79d499cd558 127 */
krebyy 0:a79d499cd558 128 void resetEncoderDireita(void);
krebyy 0:a79d499cd558 129
krebyy 0:a79d499cd558 130 /**
krebyy 0:a79d499cd558 131 * @}
krebyy 0:a79d499cd558 132 */
krebyy 0:a79d499cd558 133
krebyy 0:a79d499cd558 134
krebyy 0:a79d499cd558 135 /******************************************************************************/
krebyy 0:a79d499cd558 136 /** @defgroup Motores
krebyy 0:a79d499cd558 137 * @{
krebyy 0:a79d499cd558 138 */
krebyy 0:a79d499cd558 139
krebyy 0:a79d499cd558 140 /**
krebyy 0:a79d499cd558 141 * @brief Atualiza o PWM dos motores da esquerda e da direita
krebyy 0:a79d499cd558 142 * @param pwm_esquerda: -1.0 a 1.0
krebyy 0:a79d499cd558 143 * @param pwm_direita: -1.0 a 1.0
krebyy 0:a79d499cd558 144 * @param fast_decay: modo de acionamento (default = false -> slow decay)
krebyy 0:a79d499cd558 145 * @return Nenhum
krebyy 0:a79d499cd558 146 */
krebyy 0:a79d499cd558 147 void setMotores(float pwm_esquerda, float pwm_direita, bool fast_decay = false);
krebyy 0:a79d499cd558 148
krebyy 0:a79d499cd558 149 /**
krebyy 0:a79d499cd558 150 * @}
krebyy 0:a79d499cd558 151 */
krebyy 0:a79d499cd558 152
krebyy 0:a79d499cd558 153
krebyy 0:a79d499cd558 154 /******************************************************************************/
krebyy 0:a79d499cd558 155 /** @defgroup Sensores
krebyy 0:a79d499cd558 156 * @{
krebyy 0:a79d499cd558 157 */
krebyy 0:a79d499cd558 158
krebyy 0:a79d499cd558 159 /**
krebyy 0:a79d499cd558 160 * @brief Realiza a leitura dos sensores de parede
krebyy 0:a79d499cd558 161 * (atualiza os sensores frontais e laterais)
krebyy 0:a79d499cd558 162 * @param lf Valor proporcional a distância do sensor frontal esquerdo
krebyy 0:a79d499cd558 163 * @param l Valor proporcional a distância do sensor diagonal esquerdo
krebyy 0:a79d499cd558 164 * @param r Valor proporcional a distância do sensor diagonal direito
krebyy 0:a79d499cd558 165 * @param rf Valor proporcional a distância do sensor frontal direito
krebyy 0:a79d499cd558 166 * @return paredes: máscara de bits indicando presença (1) ou não (0)
krebyy 0:a79d499cd558 167 * de paredes. O bit mais significativo representa a parede da esquerda.
krebyy 0:a79d499cd558 168 * Ex.: 011 = presença de parede frontal e direita.
krebyy 0:a79d499cd558 169 */
krebyy 0:a79d499cd558 170 uint8_t getSensoresParede(float* lf, float* l, float* r, float* rf);
krebyy 0:a79d499cd558 171
krebyy 0:a79d499cd558 172
krebyy 0:a79d499cd558 173 /**
krebyy 0:a79d499cd558 174 * @brief Verifica os sensores de linha
krebyy 0:a79d499cd558 175 * @param Nenhum
krebyy 0:a79d499cd558 176 * @return erro: valores entre -40 e 40 (valores negativos indicam que
krebyy 0:a79d499cd558 177 * o robô precisa se deslocar para a esquerda)
krebyy 0:a79d499cd558 178 */
krebyy 0:a79d499cd558 179 int32_t getSensoresLinha();
krebyy 0:a79d499cd558 180
krebyy 1:9a99f8884c3b 181
krebyy 1:9a99f8884c3b 182 #endif /* TONBOT_H_ */
krebyy 1:9a99f8884c3b 183
krebyy 0:a79d499cd558 184 /**
krebyy 0:a79d499cd558 185 * @}
krebyy 0:a79d499cd558 186 */
krebyy 0:a79d499cd558 187
krebyy 0:a79d499cd558 188
krebyy 0:a79d499cd558 189 /************************ (C) COPYRIGHT IOTON Technology **********************/
krebyy 0:a79d499cd558 190 /***********************************END OF FILE********************************/