Canales sociales
Nos gusta mucho estar en contacto con nuestros lectores y saber más acerca de sus proyecto e inventos.También puedes sugerir una noticia en el blog

Mucho se está hablando últimamente sobre MBed, y en concreto sobre si será capaz de desbancar o no a la todopoderosa plataforma Arduino en un futuro.
Por ello, y debido a que creo que va a ser el juguete de estas navidades de todo geek que se precie, vamos a ver las principales diferencias que nos encontraríamos si hoy mismo dejáramos en un cajón a nuestro Arduino y enchufáramos el MBed. Vamos a dejar de un lado por una vez las características hardware de los cacharros y vamos a centrarnos en el software y nada mejor para este caso que comparar los "Hola Mundo!" de uno y del otro. También compararemos el clásico control de un servomotor, que quizás nos dé una idea más clara de los cambios. Por supuesto podéis comentarnos todo lo que se os ocurra respecto al tema.
Todo ello lo tenéis a continuación...
int ledPin = 13; // Al pin 13 porque internamente ya cuenta con un LED conectado a una resistencia de 1kΩ
void setup() {
pinMode(ledPin, OUTPUT);
// asigna el pin digital pin como output (salida)
}
void loop() {
digitalWrite(ledPin, HIGH); // enciende el LED (on)
delay(1000); // espera por un segundo
digitalWrite(ledPin, LOW); // apaga el LED (off)
delay(1000); // espera por un segundo
}
#include "mbed.h"
DigitalOut myled(LED1); //Asignación del Pin como salida. LED1 es el equivalente al famoso pin 13 de Arduino en MBed
int main(){
while(1) {
myled = 1; //Pone la patilla a nivel alto, recordad aquí son 3.3V!
wait(1); // Espera durante 1 segundo
myled = 0;
wait(1);
}
}
#include <Servo.h>
Servo miservo;
int posicion = 0; // variable que almacena la posición del servo
void setup()
{
miservo.attach(9); // asigna el objeto servo al pin 9
}
void loop()
{
for(pos = 0; pos < 180; pos += 1) // El sero camina desde la posción de 0º hasta 180º en pasos de unidad
{
miservo.write(pos);
delay(15); // espera 15ms para que el servo alcanze esa posición
}
for(pos = 180; pos>1; pos-=1) // Ahora desde 180º a 0º
{
miservo.write(pos);
delay(15);
}
}
#include "mbed.h"
#include "servo.h"
Servo myservo (p21);
int main() {
int i;
while(1) {
for(i=0 ; i<180 ; i++) {
myservo = i;
wait(0.15);
}
for(i=180 ; i > 0; i--) {
myservo = i;
wait(0.15);
}
}
}
Comentarios:
Enviado el 15/12/2009 (21:28)
He estado mirando, pero no he encontrado nada sobre la paralelización de las rutinas. Para no liarlo os explico mi preocupación.
El robotillo en cuestión tiene 2 motores continuos para las orugas, y quiero ponerle 3 o 4 servos para el brazo y demás movimientos. El problema lo veo al gestionar mas de un servo, si se esperan los 15 ms para cada uno, la tasa de refresco es insuficiente para que no pierdan fuerza los servos. por ello me gustaría saber si se puede hacer que la señal de actualización del servo corra en paralelo al programa, para que el hilo principal se pueda ocupar de seguir con el programa.
No se si es el sitio más adecuado para preguntarlo. Espero que me podáis ayudar a decidir cual podría comprarme.
Muchas gracias y enhorabuena por los artículos, que cada vez son de más calidad y utilidad. Seguid así.
Un saludo.