Prévia do material em texto
O passo a passo da programação EDUARDOBRÍZIDA Olá, me chamo Eduardo Brízida e sou apaixonado por tecnologia, engenharia e robótica. Minhas especialidades são nas plataformas LEGO e Arduíno, tendo experiência também em outras como Microbit, PIC e ESP. Atuo como competidor em torneios universitários, sou juiz em competições como FLL, OBR e TBR, sou professor e mentor de robótica no colégio onde estudei e também já fui capitão e líder da equipe de robótica da faculdade. Coleciono inúmeras premiações, dentre elas uma internacional da FLL na Espanha e outra na Hungria, OBR e várias categorias do TBR. Meu maior objetivo é contribuir na formação de jovens por meio da tecnologia e robótica. Afinal, citando Dean Kamen, idealizador da FIRST, nós não usamos crianças para construir robôs, mas robôs para construirmos as crianças. E quero compartilhar através desse e-book um conteúdo com 5 programações do EV3 para você utilizar em competições. QUEM SOU EU @eduardobrizida https://www.instagram.com/eduardobrizida/ LEMBRE-SE SEMPRE! - DEAN KAMEN NÃO É O QUE VOCÊ FAZ - É O QUE VOCÊ ESTÁ SE TORNANDO. QUAIS PROGRAMAÇÕES VOCÊ VAI APRENDER? Bumper (Parachoque) Aceleração e Desaceleração Calibração Seguidor de Linha por luminosidade GyroTurn @eduardobrizida https://www.instagram.com/eduardobrizida/ SEGUIDOR DE LINHA POR LUMINOSIDADE O Seguidor de Linha por luminosidade é uma programação em que o seu robô irá seguir a linha. Essa programação tem uma lógica binária porque ela se baseia essencialmente em blocos de condição. Nela você utiliza 2 sensores. Um sensor é o principal, responsável por seguir a linha e o outro sensor é o auxiliar, responsável pela interrupção da programação. @eduardobrizida https://www.instagram.com/eduardobrizida/ SEGUIDOR DE LINHA POR LUMINOSIDADE MyBlock Visão Geral Esse Myblock tem 4 parâmetros. O primeiro parâmetro é responsável pela força que o seu robô terá ao seguir a linha. O segundo parâmetro é responsável pelo valor que o seu robô irá buscar seguir. Por exemplo, se o seu sensor lê preto como 0 e branco como 100 e você deseja seguir o meio da linha, você deve colocar nesse parâmetro o valor 50. Já o terceiro e quarto parâmetro são responsáveis pela definição do sensor 1 (principal) e do sensor 2 (parada). Essa é a visão geral da programação. A primeira coisa é definir os parâmetros no qual você já teria definido no MyBlock. Após a definição, vem de fato a lógica em si, onde o robô gira para um lado caso o valor esteja menor do que a variável luminosidade. Caso o valor esteja maior do que a variável luminosidade, o robô irá girar para o lado oposto. Se você reparar em cada situação, ele liga um motor e desliga o outro. Um outro nome para esse Seguidor é Seguidor Binário. BUMPER (PARACHOQUE) O Bumper é uma programação feita para identificar quando o robô bateu na parede de maneira autônoma. Para isso, a programação verifica 2 momentos: Momento A e Momento B. Se a diferença dos graus dos motores entre esses dois momentos for muito pequena é possível afirmar que o robô não se deslocou tanto e, consequentemente, ele chegou na parede. @eduardobrizida https://www.instagram.com/eduardobrizida/ Bumper (Conhecido como Parachoque) Esse Myblock tem 2 parâmetros. O primeiro parâmetro determina qual será a diferença de graus mínima para que o robô não considere que chegou na parede. O segundo parâmetro é a força que o robô irá andar. PS: O valor do parâmetro 1 depende do valor do parâmetro 2. O parâmetro 1 é dependente. Se você mudar o valor do parâmetro 2, você terá que mudar o valor do parâmetro 1. Essa é a visão geral da programação. A primeira coisa é zerar o valor de um dos motores (no caso foi o motor B). Em seguida vem a lógica que verifica os graus em 2 momentos, o Momento A e o Momento B. O Momento B é 0.3 segundos depois do Momento A. Ou seja, se em 0.3 segundos o motor B tiver girado menos do que o valor do parâmetro, eu posso afirmar que o robô chegou na parede. Se a diferença é muito pequena, consequentemente, o meu robô praticamente nem andou. Isso confirma que ele bateu na parede. MyBlock Visão Geral CALIBRAÇÃO Essa programação é responsável pela calibração do sensor de cor/luz. É muito importante que você calibre sempre que a luminosidade do local for alterada ou quando você mudar de mesa de competição. Essa programação verifica o valor máximo e o valor mínimo lido pelo sensor. Durante essa verificação, o sensor vai atualizando qual é o seu valor máximo e qual é o seu valor mínimo. No final, você terá o seu sensor calibrado de acordo com a mesa na qual você o calibrou. @eduardobrizida https://www.instagram.com/eduardobrizida/ Calibração - Parte 1 Essa programação tem 3 partes principais: A 1ª é o setup em que você reseta tanto o sensor de cor/luz mas também um dos motores (no caso do exemplo, o motor B). Em seguida você defini que o valor da variável Minimum é 100 e o valor da variável Maximum é 0 (essas variáveis vão rapidamente mudar). O importante é colocar em um valor inicial que elas com certeza irão mudar. A 2° parte é achar o valor mínimo do sensor (MyBlock Mínimo) e a 3° parte é achar o valor máximo do sensor (MyBlock Máximo). Visão Geral MyBlock - Mínimo A programação desse Myblock é simples: o robô anda por uma certa distância (no caso foi 100°) e fica reescrevendo na variável Minimum caso encontre um valor menor que a atual varíável Minimum. Por exemplo, no Momento A o robô vê um valor igual a 30 e reescreve a variável. Em seguida, no Momento B, ele vê um valor igual à 15. Consequentemente, 15 (valor lido) < 30 (variável atual). Dessa forma, a variável Minimum passará a ser 15. Ele repetirá isso por 100°. Calibração - Parte 2 Visão Geral (Novamente) MyBlock - Máximo A programação desse Myblock é parecida com o Mínimo: o robô anda por uma certa distância (no caso foi 100°) e fica reescrevendo na variável Maximum caso encontre um valor maior que a atual varíável Maximum. O exemplo continua idêntico ao do Mínimo mas a programação irá reescrever quando o valor for maior em vez de menor. 90 (valor lido) > 60 (variável) ==> 90 (Novo valor da variável Maximum). Essa programação tem 3 partes principais: A 1ª é o setup em que você reseta tanto o sensor de cor/luz mas também um dos motores (no caso do exemplo, o motor B). Em seguida você defini que o valor da variável Minimum é 100 e o valor da variável Maximum é 0 (essas variáveis vão rapidamente mudar). O importante é colocar em um valor inicial que elas com certeza irão mudar. A 2° parte é achar o valor mínimo do sensor (MyBlock Mínimo) e a 3° parte é achar o valor máximo do sensor (MyBlock Máximo). ACELERAÇÃO E DESACELERAÇÃO Essa programação tem como objetivo diminuir a inércia do seu robô e evitar que ele empine por conta de uma parada muito brusca. Para isso, o seu robô acelera e desacelera gradualmente amenizando aspectos negativos da movimentação que ele teria. @eduardobrizida https://www.instagram.com/eduardobrizida/ Esse MyBlock tem 3 parâmetros: O 1° parâmetro é responsável pela força que o seu robô irá andar (você pode andar tanto com força positiva ou negativa). O 2° parâmetro determina quantos graus você quer que o seu robô ande (não coloque graus negativos, coloque força negativa no 1° parâmetro). O 3° parâmetro controla a rapidez que o seu robô irá acelerar ou desacelerar (diminua o valor desse 3° parâmetro e o seu robô irá acelerar e desacelerar mais rapidamente). Aceleração e Desaceleração Visão Geral Essa é a visão geral da programação. Ela é dividida essencialmente em três partes: A primeira parte é o setup no qual ela escreve os parâmetros do MyBlock nas variáveis. A segunda parte é a Aceleração (metade da distância é percorrida nela). A terceira parte é a Desaceleração em que o robô percorre a outra metade da distância que falta. MyBlock Essa programação vai acrescentando 1 de força gradualmente na força do robô (depende do 3° parâmetro do MyBlock geral). Além disso, o loop checa se o robô já percorreu metade da distânciadeterminada no MyBlock geral. PS: Atenção ao bloco de valor absoluto. Esse bloco é essencial para que a programação seja universal e não dependa se o robô está andando para frente ou para trás. Aceleração e Desaceleração MyBlock - Acelerar MyBlock - Desacelerar Essa programação vai diminuindo 1 de força gradualmente na força do robô (depende do 3° parâmetro do MyBlock geral). Além disso, o loop checa se o robô já percorreu a distância determinada no MyBlock geral. PS: Atenção ao bloco de valor absoluto. Esse bloco é essencial para que a programação seja universal e não dependa se o robô está andando para frente ou para trás. GYRO TURN Essa programação tem como objetivo fazer o robô girar de forma precisa quaisquer angulações. Para isso, ele usa uma técnica chamada Controle PID, em que cada letra P, I, D é uma equação que aprimora a correção do robô e faz ele funcionar de uma maneira mais inteligente. RECOMENDAÇÃO: Veja os vídeos sobre seguidor de linha, giroscópio e controle PID no meu canal do Youtube. É importante um bom conhecimento nessas áreas para o uso desse MyBlock. @eduardobrizida https://www.youtube.com/channel/UC7TUkGXk0870e7YZCKhC2lg?view_as=subscriber https://www.instagram.com/eduardobrizida/ Esse Myblock tem 4 parâmetros: O primeiro parâmetro é a angulação que você deseja que o seu robô chegue (pode ser tanto positiva quanto negativa). O 2°, 3° e 4° parâmetro são as constantes da proporcional, integral e derivada. Caso você não tenha familiaridade com o ajuste desses parâmetros, utilize esses valores na tela (foram os parâmetros que funcionaram para o meu robô mas não é garantia que funcionará no seu). RECOMENDAÇÃO: Veja os vídeos do meu Canal do Youtube ou me mande uma mensagem nas redes sociais para eu te ajudar. Gyro Turn MyBlock https://www.youtube.com/channel/UC7TUkGXk0870e7YZCKhC2lg?view_as=subscriber Essa programação é dividida em várias partes: A primeira parte é o setup que escreve os valores definidos no MyBlock para as suas respectivas variáveis. Em seguida entra a lógica principal. A primeira etapa é descobrir o Erro (a diferença entre a referência que é o ângulo que se quer chegar subtraído do valor real). Após achar o Erro, ele é tratado nos MyBlocks da Proporcional, Integral e Derivada. Após achar as correções da Proporcional, da Integral e da Derivada (as variáveis P, I e D), são somadas essas três para encontrar a correção final. É colocado o seu valor oposto em um dos motores e o valor dela no outro motor. Para finalizar, é verificado se o valor atual é igual a angulação desejada (referência). Se for, a programação acabará. Caso isso não aconteça, o loop começará novamente fazendo toda a lógica principal. Gyro Turn Visão Geral A programação da proporcional é simples : você pega o valor do Erro e multiplica por uma constante que é chamada de constante de proporcionalidade. O resultado dessa multiplicação é a Correção da Proporcional A programação da integral é simples: Soma-se repetidamente o Erro. No começo da programação, essa variavel Int é 0, mas cada vez que o loop principal se repete vai sendo incrementado nessa variável o valor do Erro. Após o incremento do erro na variável Int, multiplica-se o resultado por uma constante chamada constante da integral. O resultado dessa multiplicação é a Correção da Integral. Gyro Turn MyBlock - Proporcional MyBlock - Integral A primeira etapa é descobrir o Erro (a diferença entre a referência que é o ângulo que se quer chegar subtraído do valor real). Após achar o Erro, ele é tratado nos MyBlocks da Proporcional, Integral e Derivada. Após achar as correções da Proporcional, da Integral e da Derivada (as variáveis P, I e D), são somadas essas três para encontrar a correção final. É colocado o seu valor oposto em um dos motores e o valor dela no outro motor. Para finalizar, é verificado se o valor atual é igual a angulação desejada (referência). Se for, a programação acabará. Caso isso não aconteça, o loop começará novamente fazendo toda a lógica principal. A programação da derivada é simples : É subtraído o erro pelo ultimo erro (o erro da iteração do loop anterior). Esse resultado é chamado de derivada que é basicamente a variação do erro. Lembre do Bumper: Momento A = LastError e Momento B = Error. Após achar a derivada, é multiplicado esse valor por uma constante chamada constante da derivada. O resultado final é a Correção da Derivada. Gyro Turn MyBlock - Derivada Visão do Loop Principal Se você quer aprender ainda mais sobre programação, eu tenho no YouTube uma playlist chamada Tutorial de Programação do EV3. Nela eu explico detalhadamente sobre os blocos de programação. Vale muito a pena conferir. Para assistir basta clicar na imagem ao lado. DICA FINAL @eduardobrizida https://www.youtube.com/watch?v=OJwLze1YqBo&list=PLeUyYUvO-CXztuPDkoy02jMlc1Z44BQhL https://www.youtube.com/watch?v=OJwLze1YqBo&list=PLeUyYUvO-CXztuPDkoy02jMlc1Z44BQhL https://www.instagram.com/eduardobrizida/ CONHEÇA O CURSO DESCOMPLICANDO A PROGRAMAÇÃO Passar a ideia de programação para a prática. Ter ferramentas para deixar sua criatividade fluir e criar suas próprias programações. Lógica de programação Uma série de programações para utilizar em seus robôs A como sair da fase de programador copiador para se tornar um programador criador. QUERO CONHECER AGORA NELE VOCÊ IRÁ APRENDER: CLIQUE ACIMA https://eduardobrizida.kpages.online/copia-1595771461 https://eduardobrizida.kpages.online/copia-1595771461 GOSTOU DO CONTEÚDO E QUER MAIS DICAS ? CONECTE-SE COMIGO! CLIQUE NOS ÍCONES ACIMA E ENTRE NESSAS PÁGINAS AGORA MESMO. SE GOSTOU, COMPARTILHE COM OS AMIGOS E ME MANDE UMA MENSAGEM. VOU ADORAR RECEBER SEU FEEDBACK. ESPERO TER AJUDADO! https://www.instagram.com/eduardobrizida/ https://www.youtube.com/channel/UC7TUkGXk0870e7YZCKhC2lg?view_as=subscriber