Programar mBot como Arduino

Es posible hacer ejercicios de Arduino sobre la placa de mBot con el entorno mBlock basado en Scratch. Hay dos formas de programarlo. Por ejemplo, el clásico blink sería:

Procedimiento:

  • Conecto la placa de mBot al ordenador y la enciendo. Selecciono el puerto correspondiente en CONECTAR/PUERTO SERIE.

  • Selecciono la placa ARDUINO en lugar de MBOT. Si seleccionamos la placa MBOT fallará la subida.

  • Escribo el programa y lo subo a la placa.

Esta es la traducción del programa:

#include <Arduino.h>

#include <Wire.h>

#include <SoftwareSerial.h>


double angle_rad = PI/180.0;

double angle_deg = 180.0/PI;


void setup(){

pinMode(13,OUTPUT);

}


void loop(){

digitalWrite(13,1);

_delay(1);

digitalWrite(13,0);

_delay(1);

_loop();

}


void _delay(float seconds){

long endTime = millis() + seconds * 1000;

while(millis() < endTime)_loop();

}


void _loop(){

}

La otra forma de programarlo, más interesante, es seleccionar la placa como MBOT pero utilizar las instrucciones de Arduino. El programa debe empezar con la instrucción PROGRAMA DE MBOT. En ese caso la traducción del programa es otra, puede verse debajo de la siguiente captura de pantalla.

#include <Arduino.h>

#include <Wire.h>

#include <SoftwareSerial.h>


#include <MeMCore.h>


MeDCMotor motor_9(9);

MeDCMotor motor_10(10);

void move(int direction, int speed)

{

int leftSpeed = 0;

int rightSpeed = 0;

if(direction == 1){

leftSpeed = speed;

rightSpeed = speed;

}else if(direction == 2){

leftSpeed = -speed;

rightSpeed = -speed;

}else if(direction == 3){

leftSpeed = -speed;

rightSpeed = speed;

}else if(direction == 4){

leftSpeed = speed;

rightSpeed = -speed;

}

motor_9.run((9)==M1?-(leftSpeed):(leftSpeed));

motor_10.run((10)==M1?-(rightSpeed):(rightSpeed));

}

double angle_rad = PI/180.0;

double angle_deg = 180.0/PI;


void setup(){

pinMode(13,OUTPUT);

}


void loop(){

digitalWrite(13,1);

_delay(0.1);

digitalWrite(13,0);

_delay(0.1);

_loop();

}


void _delay(float seconds){

long endTime = millis() + seconds * 1000;

while(millis() < endTime)_loop();

}


void _loop(){

}

Curiosamente, al abrir el IDE de Arduino con el botón EDITAR CON IDE DE ARDUINO cambia automáticamente la placa y el procesador a Arduino Mega:

Sin embargo, falla al cargarlo. Para que funcione bien debe elegirse simplemente la placa Arduino Uno.