Código
código Arduino
/ * * =================================================================* Programa de controle MobBob - Versão serial do software Bluetooth * por Kevin Chan (também conhecido como Cevinius) * =====================================================================* * Este programa permite que o MobBob seja controlado por meio de comandos seriais. Nesta versão do código, os comandos * são recebidos por uma porta serial de software, com pinos definidos em #define próximo ao topo. * Isso significa que você pode usar qualquer placa compatível com Arduino e conectar uma placa bluetooth aos pinos definidos para * software serial. (Ao contrário da outra versão projetada para a placa Bluno da DFRobot.) * * Este programa é longo e contém 2 componentes principais - um programa de animação servo suave e um programa analisador de comandos serial *. * * Sistema de animação * ================* O programa de animação é projetado para animar matrizes de quadros-chave servo suavemente. O código tenta fazer o seu melhor * para ser fácil de usar. * * O sistema de animação irá enfileirar apenas 1 comando. ou seja, um comando pode estar em execução * e um comando pode ser enfileirado. Se você enviar mais comandos, eles sobrescreverão o comando enfileirado. * * O sistema de animação irá, por padrão, esperar para terminar a animação atual antes de iniciar a próxima. Isso * significa que se os dados da animação terminarem com o robô em sua pose base, as coisas se juntarão suavemente. Para * apoiar isso, o sistema de animação também possui um recurso em que uma animação pode ter uma "sequência de acabamento" * para colocar o robô de volta na pose base. Este recurso é usado para as animações de avanço / retrocesso. * Essas animações têm uma sequência final que coloca o robô de volta na pose básica. * * Quando uma animação terminar de ser reproduzida, o sistema de animação emitirá uma string de resposta para a porta serial. * Isso permite que os chamadores saibam quando as animações solicitadas terminaram de ser reproduzidas. Isso é útil * para os usuários sequenciarem animações - esperando que uma termine antes de iniciar outra. * * O código de animação tem muitas variáveis para permitir que as coisas sejam ajustadas. Por exemplo. Freqüência de atualização, pinos de Arduino, etc. * * O formato de array de dados de animação também é projetado para ser fácil de editar manualmente. * * Analisador de comandos * ==============* Este sistema analisa os comandos recebidos via serial e os processa. Os comandos incluem um para definir diretamente * as posições do servo, bem como comandos para acionar animações e caminhadas predefinidas. * * Assim, o usuário que não quiser se preocupar com os detalhes da caminhada pode apenas utilizar as caminhadas / animações pré-definidas. * E os usuários que desejam controle total sobre os servos (para criar novas animações em tempo real) podem fazer isso também. * * Conforme mencionado acima, esses comandos podem ser usados interativamente a partir do Arduino Serial Monitor. Eles também podem ser * enviados usando Bluetooth LE (quando um Bluno é usado). O aplicativo de telefone enviará os comandos via Bluetooth LE para o * Bluno. * * Comandos gerais:* ----------------- * Ready / OK Check: * Status check. A resposta é retornada imediatamente para verificar se o controlador está funcionando. * * Definir servo: * tempo - tempo para interpolar os ângulos especificados, 0 irá imediatamente pular para os ângulos * quadril esquerdo - microssegundos do centro. -ve é o quadril para dentro, + ve é o quadril para fora * Pé esquerdo - microssegundos do plano. -ve é o pé para baixo, + ve é o pé para cima * quadril direito - microssegundos do centro. -ve é o quadril para dentro, + ve é o quadril para fora * RightFoot - microsegs do plano. -ve é o pé para baixo, + ve é o pé para cima * Este comando é usado para obter controle total sobre os servos. Você pode interpolar o robô de sua * pose atual para a pose especificada ao longo da duração especificada. * * Parar / Redefinir: * Para o robô após a animação atual. Pode ser usado para interromper animações definidas para loop * indefinidamente. Isso também pode ser usado para colocar o robô em sua postura básica (em pé) * * Parar Imediato: * Para o robô imediatamente, sem esperar para completar a animação atual. Isso * interrompe a animação atual do robô. Potencialmente, o robô pode estar no meio da animação * e em uma pose instável, portanto, tome cuidado ao usá-lo. * * Comandos de caminhada padrão:* ----------------------- * Avançar:, -1 significa contínuo, 0 ou nenhum parâmetro é o mesmo que 1 vez. * Retroceder:, -1 significa contínuo, 0 ou nenhum parâmetro é o mesmo que 1 vez. * Vire à esquerda:, -1 significa contínuo, 0 ou nenhum parâmetro é o mesmo que 1 vez. * Vire à direita: