# data[].attributes.body
#define PWM_MOTOR1 5

#define PWM_MOTOR2 6

#define IN1 10

#define IN2 11

#define TRIG 8

#define ECHO 9

int pot_motor_1;

int pot_motor_1_invertido;

int distancia;

int pot_motor_2;

int pot_motor_2_invertido;

int estado_d10 = 0;

long medirDistancia() {

digitalWrite(TRIG, LOW);

delayMicroseconds(2);

digitalWrite(TRIG, HIGH);

delayMicroseconds(10);

digitalWrite(TRIG, LOW);

long duracao = pulseIn(ECHO, HIGH);

return duracao * 0.034 / 2;

}

void setup() {

pinMode(PWM_MOTOR1, OUTPUT);

pinMode(PWM_MOTOR2, OUTPUT);

pinMode(IN1, OUTPUT);

pinMode(IN2, OUTPUT);

pinMode(TRIG, OUTPUT);

pinMode(ECHO, INPUT);

digitalWrite(IN1, LOW);

digitalWrite(IN2, HIGH);

}

void loop() {

// Potenciômetro A0

pot_motor_1 = analogRead(A0) / 6;

// Limita entre 0 e 170

pot_motor_1 = constrain(pot_motor_1, 0, 170);

pot_motor_1_invertido = 170 - pot_motor_1;

analogWrite(PWM_MOTOR1, pot_motor_1_invertido);

delay(1300);

distancia = medirDistancia();

pot_motor_2 = distancia / 6;

pot_motor_2 = constrain(pot_motor_2, 0, 170);

if ((170 - pot_motor_2) < 0)

pot_motor_2_invertido = 0;

else

pot_motor_2_invertido = 170 - pot_motor_2;

analogWrite(PWM_MOTOR2, pot_motor_2_invertido);

delay(300);

analogWrite(PWM_MOTOR2, 0);

if (estado_d10 == 0) {

digitalWrite(IN1, HIGH);

digitalWrite(IN2, LOW);

estado_d10 = 1;

}

else {

digitalWrite(IN1, LOW);

digitalWrite(IN2, HIGH);

estado_d10 = 0;

}

}

# data[].attributes.body
// --- Definição de Pinos (Mapeamento Nativo do Arduino Duemilanove) --- const int pino_pot_A0 = A0; // Entrada do potenciómetro const int pino_motor_PWM1 = 3; // Saída PWM física (Timer 2) const int pino_motor_PWM2 = 5; // Saída PWM física (Timer 0) const int pino_seguranca_D7 = 7; // Saída digital de corte/segurança // --- Variáveis Globais de Controlo (Extraídas do XML) --- int variavel_1 = 0; int valor_var2 = 0; int var_controlo1 = 0; int var_controlo2 = 0; int pot_motor_2_invertido = 0; void setup() { // Configuração dos pinos no Duemilanove (Bloco 271) pinMode(pino_pot_A0, INPUT); pinMode(pino_motor_PWM1, OUTPUT); pinMode(pino_motor_PWM2, OUTPUT); pinMode(pino_seguranca_D7, OUTPUT); // Garante que o pino de segurança começa ativo (ligado) digitalWrite(pino_seguranca_D7, HIGH); } void loop() { // 1. Leitura analógica de A0 (0 a 1023) e divisão por 6 (Blocos 406, 282, 281) // O resultado varia de 0 a 170 (ideal para limites de servo/motores específicos) variavel_1 = analogRead(pino_pot_A0) / 6; // 2. Define o valor da segunda variável (Bloco 284) valor_var2 = variavel_1; // 3. Aplica a velocidade inicial via PWM no primeiro motor (Bloco 290) analogWrite(pino_motor_PWM1, valor_var2); // 4. Pausa de estabilização do sinal (Bloco 294) delay(100); // 5. Atualiza as variáveis internas de registo (Blocos 296 e 315) var_controlo1 = variavel_1; var_controlo2 = valor_var2; // 6. Lógica Condicional de Inversão do Motor 2 (Bloco 337) // Teste: Se o valor estiver na metade inferior (0 a 85), gira normal. // Se passar da metade (86 a 170), entra no "senão" e inverte o sentido. if (var_controlo1 <= 85) { // Bloco 343 (então) analogWrite(pino_motor_PWM2, var_controlo1); } else { // Bloco 347 (senão) -> Ativa o bloco pot_motor_2_invertido (Bloco 408) // Inverte o sinal dentro da escala máxima de 170 calculada no início pot_motor_2_invertido = 170 - var_controlo1; analogWrite(pino_motor_PWM2, pot_motor_2_invertido); } // 7. Segunda sequência de escrita e temporização (Blocos 352, 356, 358) analogWrite(pino_motor_PWM1, var_controlo2); delay(50); analogWrite(pino_motor_PWM2, var_controlo1); // 8. Lógica de Segurança / Corte de Emergência (Bloco 363) // Teste: Se o potenciómetro for zero (mínimo), desarma o pino digital de segurança if (variavel_1 > 0) { // Bloco 385 (então) -> Funcionamento normal digitalWrite(pino_seguranca_D7, HIGH); } else { // Bloco 397 (senão) -> Corta a energia do circuito externo por segurança digitalWrite(pino_seguranca_D7, LOW); } }

# data[].attributes.headline
CÓDIGO C++ ARDUINO PARA ROBÔ QUE DESENHA

# data[].attributes.subject
CÓDIGO C++ ARDUINO PARA ROBÔ QUE DESENHA

# data[].attributes.attachment_link.title
IR FORMACAO VIDEO1 (ROBO QUE DESENHA) V2 (PARTE2).mp4

# data[].attributes.attachment_link.title
IR FORMACAO VIDEO1 (ROBO QUE DESENHA) V2 (PARTE1).mp4

# data[].attributes.body
ESTE VÍDEO TEM A PROGRAMAÇÃO NOS COMENTÁRIOS.

# data[].attributes.attachment_link.authors[].name
EDUCAÇÃO DIGITAL - NAVEGANDO COM O OSAKA

# data[].attributes.attachment_link.title
Remontando e Reprogramando o Robô Andarilho

# data[].attributes.attachment_link.title
Projeto Robótica Criativa | Desafio de Construção | Kit Atto

# data[].attributes.attachment_link.authors[].name
EDUCAÇÃO DIGITAL - NAVEGANDO COM O OSAKA

# data[].attributes.attachment_link.title
Projeto Curto Circuito Robótica Criativa - Projetos Finais

# data[].attributes.body
MODELOS PRONTOS PARA MONTAR