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@0:a79d499cd558, 2017-06-29 (annotated)
- 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?
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 | 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********************************/ |