Go Down

Topic: Problema con definicion y creación de objeto con parametros (Solucionado) (Read 1 time) previous topic - next topic

Dukatus

Hola a todos:

E creado una librería para manejar mi LCD serie, pero como la voy a usar con un Arduino Mega2560 quiero que funcione en los pin 18 y 19 por lo que utilizo la librería SoftwareSerial para ello ya que el Serial no permite definir los pin.
El problema es que la SoftwareSerial se le pasa como parámetros los pines al construirlo (declararlos) y después de probar muchas formas el ID solo me permite declararlo asín:

LCD128x64.h
Code: [Select]

class LCD128x64Class
{
    int vDelay;
  private:
    SoftwareSerial Pant( uint8_t receivePin, uint8_t transmitPin );     
  public:
    LCD128x64Class( uint8_t receivePin, uint8_t transmitPin );
    void SetDelay( int valor );
    void Cls();
    void Borrar(byte desde_x, byte desde_y, byte hasta_x, byte hasta_y);
    void Pixel(byte x, byte y, byte modo);
    void GotoXY(byte x, byte y);
    void Write(char* st);
    void WriteXY(char* st, byte x, byte y, byte modo);
    void Rectangulo(byte x1, byte y1, byte x2, byte y2, byte fill, byte modo);
    void Circulo(byte CentroX, byte CentroY, byte Radio, byte modo);
    void Linea(int x1, int y1, int x2, int y2, int z);
    void Brillo(byte luz);
};


LCD128x64.cpp
Code: [Select]

#include "SoftwareSerial.h"
#include "LCD128x64.h"

LCD128x64Class::LCD128x64Class( uint8_t receivePin, uint8_t transmitPin )
{
  vDelay = 0;
  SoftwareSerial Pant( receivePin, transmitPin );
  Pant.begin( 115200 ); //por defecto el LCD trabaja a estos bps
}

void LCD128x64Class::Cls()
{
  Pant.print(0x7C,BYTE);
  Pant.print(0x00,BYTE);
}


el problema es que de esta forma no me reconoce el objeto "Pant" en los metodos (por ejemplo "LCD128x64Class::Cls()").

Tiene alguien alguna idea de que va el tema.

Gracias y Saludos

Dukatus

Bueno ya que no sale nadie, conocéis alguna librería que contenga el objeto de otra librería y se cree con parámetros.

Es para ver como se crea en el C de Arduino.

Por cierto, sabéis alguno en que C se programa en Arduino y si esta documentada sus limitaciones.

Gracias saludos

ToloBCN

Me parece que de esta manera declaras dos veces.

Se me ocurre que declares un puntero al objecto y utilizes el puntero al objeto:

Code: [Select]
class xx
{
  private:
    SofwareSerial *pPant;
};

.....()
{
  SoftwareSerial Pant( receivePin, transmitPin );
  pPant = &Pant;
  ....
}

....()
{
  pPant->print(
  ....
}


No lo he provado ...

chiva


Dukatus

#4
Jul 22, 2011, 02:16 am Last Edit: Jul 22, 2011, 08:20 am by Dukatus Reason: 1
Saludos:

ToloBCN:
    Lo e probado y no funciona, gracias de todas forma intentare algunas variantes de tu idea.

chiva:
   El problema es ese que quiero utilizar uno de los otros puertos y objeto Serie y no le e encontrado la forma de cambiar el puerto y al SoftwareSerial si lo trae.


Saludos y gracias.

Dukatus

SOLUCIONADO

La cosa no era definir el puerto que trabajar el Serial, pues ya existe un Serial1, Serial2 y Serial3 para los demás puertos.

Metedura de pata por mi parte.


Saludos y gracias.

Go Up