Buenas a todos, estoy tratando de crear una librería para mi proyecto. Dado que la comunicación debe ser con el puerto serial, necesito poder emplear otros pines a los por defecto.
De hay mi pregunta, ¿como hago para instanciar un objeto de la clase SoftwareSerial en la librería? A esta instancia la he llamado MD49toArduino, pero soy incapaz de que el compilador me diga donde me estoy equivocando.
Os he puesto una pequeña parte de la librería, si sustituyo MD49toArduino por Serial, funciona sin ningún problema.
Espero que podáis ayudarme, saludos
MD49_Arduino.h
//Guards
#ifndef MD49_Arduino_H
#define MD49_Arduino_H
#define LIBRARY_VERSION 1.2
#include <Arduino.h>
#include <SoftwareSerial.h>
// Values of 0 being sent over serial write have to be cast as a byte so they arent misinterpreted as NULL
// This is a bug with arduino 1.0
#define CMD (byte)0x00 // MD49 command address of 0
#define GET_SPEED1 0x21
#define SET_SPEED1 0x31
#define TIME_DELAY_COMMUNICATION 5 // TIEMPO EN MILISEGUNDOS DEL DELAY
class MD49_Arduino{
public:
// Constructors
MD49_Arduino();
// Metodos Getters
int getSpeed1();
.
.
.
// Metodos Setters
void setSpeed1(int speed);
.
.
.
// Metodos auxiliares
void stop();
SoftwareSerial MD49toArduino(4,2);
};
#endif
include "Arduino.h"
#include "MD49_Arduino.h"
MD49_Arduino::MD49_Arduino(){
Md49toArduino = SoftwareSerial::SoftwareSerial MD49toArduino(4,2);
MD49toArduino.begin(38400);
}
int MD49_Arduino::getSpeed1(){
byte vel;
int velocidad;
MD49toArduino.flush();
MD49toArduino.write(CMD);
MD49toArduino.write(GET_SPEED1);
while( MD49toArduino.available() < 1 )
delay(TIME_DELAY_COMMUNICATION);
vel = MD49toArduino.read();
velocidad = (int)vel;
return velocidad;
}