Robô desenvolvido com materiais recicláveis em uma placa Arduino, com dois micro servo motores e uma placa de som KY-038. O robô reage com os olhos e a boca ao som de duas palmas.
- a) 1 Placa Arduino com cabo USB - b) 2 Micro servo motores - c) 1 Sensor som ky-038 - d) 1 Protoboard - h) 10-15 Cabos de conexão -
Corpo do Robô: 1 isopor 40x25cm ( veio num gabinete de computador)
-
Olhos: 25 cm cano PVC de 40mm para dar movimento com dois parafusos fixados para serem os olhos
-
Boca: 1 tampa de pacote de lenço umedecido do tipo abre/fecha
-
Arames firmes mas maleáveis: 1m para fixar os servo motores no isopor e para dar a movimentação dos servos aos olhos e a boca
-
3 Prendedores de roupa: as pernas separadas foram utilizadas para passar o arame e fixar os servos ao isopor
Velocidade em que os motores movimentam-se pode ser alterada nessa variável
// velocidade dos movimentos #define VEL_MOVIMENTO 30 Declaração do ângulo máximo e mínimo de movimentação dos servos. Se a movimentaçao do motor ficar presa por um ângulo inserido errado ele pode estragar ou impedir a execução correta das outras instruções uma vez que ele aguarda o movimento completo do eixo para seguir com as instruções.
// create servo objects VarSpeedServo servoOlhos; int ANG_MAX_MIN_OLHOS[] = {0, 70}; VarSpeedServo servoBoca; int ANG_MAX_MIN_BOCA[] = {20, 90}; Ao escutar 2 palmas [...]
if (((millis() - esperaPalmas) > intervaloPalmas) && (quantidadePalmas != 0)) { if (quantidadePalmas == 2) { movimentarOlhosBoca(); } delay(delayfinal); quantidadePalmas = 0; } [...] o robô vai movimentar-se 100 vezes com ângulos gerados randomicamente, dentro da faixa de limites declarada.
void movimentarOlhosBoca() { // define como verdadeiro para impedir que o ruído do motor do servo // invoque o método novamente emMovimentacao = true; for (size_t i = 0; i < 100; i++) { Serial.println(i); /* (angulo, velocidade, aguarda movimento completo para ir proxima instrucao) */ servoOlhos.write(gerarNumeroRandomico(ANG_MAX_MIN_OLHOS), VEL_MOVIMENTO, true); servoBoca.write(gerarNumeroRandomico(ANG_MAX_MIN_BOCA), VEL_MOVIMENTO, true); }; posicionarAnguloInicioServo(); delay(2000); emMovimentacao = false; } Enquanto o robô movimenta-se ele para de ouvir, para que o ruído do motor não acione novamente os movimentos.
void loop() { if (!emMovimentacao) escutarPalmas(); } - VarSpeedServo - Biblioteca com controle de velocidade dos movimentos
-
Desenvolver criatividade de crianças e adultos
-
Brinquedo infantil






