Biblioteca do Robô TON-BOT (https://ioton.cc/ton-bot)
Dependents: ton-bot_teste ton-bot_seguidor_linha ton-bot_seguidor_parede
ton-bot.h@1:9a99f8884c3b, 2017-07-05 (annotated)
- 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?
User | Revision | Line number | New 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********************************/ |