Serial1 and HMC5883L not working

Hello, I have an application that is using my HMC5883L module with HMC5883L.h library. The problem I have is that when I do this code in the setup, the serial1 not work. Use Arduino Mega 2560

bussola = HMC5883L();
bussola.SetScale(1.3);
bussola.SetMeasurementMode(Measurement_Continuous);

Full code

#include <HMC5883L.h>
#include <Wire.h> //I2C Arduino Library
#define address 0x1E //0011110b, I2C 7bit address of HMC5883

boolean bEnviarGPS;
boolean bEnviarAzimute = false;
boolean bRecebendoDados = false;
boolean bDebug = false;
boolean bEmMovimento = false;
boolean bPararZerar = false;
/* Comunicação */
boolean stringComplete = false;
String linhaSerial = ""; 
int iCRC = 0;
char strTemp;

HMC5883L bussola;
int i; //Variável para contagem
float graus; //Variável para armazenar o valor aferido
float precisao; //Variável parar o melhorar a precisao do valor aferido

volatile int state = LOW;
int led52 = 52;

/* Direção das portas */
int direcaoMotor01a = 46;
int direcaoMotor01b = 48;
int motor01Pulso = 50;

int direcaoMotor02a = 45;
int direcaoMotor02b = 47;
int motor02Pulso = 51;

void setup()
{ 
  bEnviarGPS = false;
  Serial.begin(4800);
  Serial1.begin(4800);
  linhaSerial.reserve(200);
  
  /* Inicialização da bussóla */
  Wire.begin();  
//  bussola = HMC5883L();
//  bussola.SetScale(1.3);
//  bussola.SetMeasurementMode(Measurement_Continuous);
  
  /*
  //Put the HMC5883 IC into the correct operating mode
  Wire.beginTransmission(address); //open communication with HMC5883
  Wire.write(0x02); //select mode register
  Wire.write(0x00); //continuous measurement mode
  Wire.endTransmission();  
  /* Fim da inicialização da bussóla */  
  
  pinMode(direcaoMotor01a, OUTPUT);
  pinMode(direcaoMotor01b, OUTPUT);
  pinMode(direcaoMotor02a, OUTPUT);
  pinMode(direcaoMotor02b, OUTPUT);
  pinMode(motor01Pulso, OUTPUT);
  pinMode(motor02Pulso, OUTPUT);
  
  delay(1000);  
  digitalWrite(direcaoMotor01a, HIGH );     
  digitalWrite(direcaoMotor01b, HIGH );
  digitalWrite(direcaoMotor02a, HIGH );     
  digitalWrite(direcaoMotor02b, HIGH );      
  delay(1000);
  digitalWrite(direcaoMotor01a, LOW );     
  digitalWrite(direcaoMotor01b, LOW );
  digitalWrite(direcaoMotor02a, LOW );     
  digitalWrite(direcaoMotor02b, LOW );     
  
  /* Testes */
  pinMode(led52, OUTPUT);
  pinMode(53, OUTPUT);
  digitalWrite(led52, HIGH );
  digitalWrite(53, LOW );
  attachInterrupt(0, blink, FALLING);  
}

void loop() {  
  if (stringComplete) {
    if (bDebug)
    {
      Serial.println(linhaSerial); 
    }
    // clear the string:
    linhaSerial = "";
    stringComplete = false;
  }  
  
  if (bEnviarAzimute){
    LerAzimute();
  }
  
  digitalWrite(53, state);
}

void serialEvent1(){
  /* Enviar os dados do GPS */  
  if (bEnviarGPS) {    
    strTemp = Serial1.read();
    Serial.println(strTemp); 
  }
}

void serialEvent(){
  while (Serial.available()) {
    // Lendo o byte recebido
    char inChar = (char)Serial.read(); 
    // Adicioando a linha
    linhaSerial += inChar;       
    // Calculo do CRC
    if ((bRecebendoDados) && (inChar != '*'))
    {
      iCRC = iCRC + (int)inChar;    
    }
    
    if (linhaSerial == "$GEO")
    {
      linhaSerial = "";
      iCRC = 0;
      bRecebendoDados = true;
      Serial.println("Iniciou");      
    }    
    
    // Finalizou o envio
    if (inChar == '*') {      
      bRecebendoDados = false;
      stringComplete = true;
      
      byte resultCRC = lowByte(iCRC);
      if (resultCRC == 0x00)
        Serial.println("CRC-OK");
      else      
        Serial.println("CRC-NOK");        
        
     if (linhaSerial.indexOf("MOTOR") > 0)
     {
        Serial.println("Inicio motor");
        Serial.println(linhaSerial);
        CMDMotor(linhaSerial);
        Serial.println("Fim motor");
     }
     if (linhaSerial.indexOf("ZERAR") > 0)
     {
        Serial.println("Inicio Zerar");
        CMDZerar(linhaSerial);    
        Serial.println("Fim Zerar");
     }     
     if (linhaSerial.indexOf("EnviarGPS") > 0)
     {
       Serial.println("Enviar GPS");
       bEnviarGPS = true;  
     }
     if (linhaSerial.indexOf("PararGPS") > 0)
     {
       Serial.println("Parar GPS");
       bEnviarGPS = false;  
     }
     if (linhaSerial.indexOf("EnviarAzimute") > 0)
     {
       Serial.println("Enviar Azimute");
       bEnviarAzimute = true;  
     }
     if (linhaSerial.indexOf("PararAzimute") > 0)
     {
       Serial.println("Parar Azimute");
       bEnviarAzimute = false;  
     }     
    }
  }  
  
  /*
  loByte = lowByte(intValue);
  
  strTemp = Serial.read();   
  dados[posicao++] = strTemp;
  posicao = posicao + sizeof(strTemp) + 1; 
  
  Serial.println(posicao);
  
  if (posicao > 15)
  {
    Serial.println(dados);
    memset(dados, 0, 255);
    posicao = 0;
  }
  /*
  int i;
  for (i = 0; i < sizeof(strTemp) - 1; i = i + 1) {
    dados[posicao] = (char)strTemp[i];
    posicao++;
  }
  */
  
  //Serial.println(91);
}

/* Recebe a linha e processa os dados gerando pulsos */
void CMDMotor(String linha){
  bEmMovimento = true;
  String dados = "";
  int posicao = 0;
  
  String motor = "";
  String direcao = "";
  int pulso = 0;
  int i;
  int portaMotor = 0;
  
  /* Pegando os dados enviados */
  for (i = 0; i < linha.length() - 1; i++){            
    if ((char)linha[i] == ',') 
    {           
      if (posicao == 1)
        motor = dados;   
      if (posicao == 2)
        direcao = dados;
      if (posicao == 3)
        pulso = dados.toInt();        
        
      posicao++;      
      dados = "";
    }
    else
      dados += (char)linha[i];    
  }
  
  if (motor == "motor01")
  {
    portaMotor = motor01Pulso;
    if (direcao == "D")
    {
      digitalWrite(direcaoMotor01a, LOW );     
      digitalWrite(direcaoMotor01b, HIGH );
    }
    else if (direcao == "E")
    {
      digitalWrite(direcaoMotor01a, HIGH );     
      digitalWrite(direcaoMotor01b, LOW );
    }    
  }
  
  if (motor == "motor02")
  {
    portaMotor = motor02Pulso;        
    if (direcao == "D")
    {
      digitalWrite(direcaoMotor02a, LOW );     
      digitalWrite(direcaoMotor02b, HIGH );
    }
    else if (direcao == "E")
    {
      digitalWrite(direcaoMotor02a, HIGH );     
      digitalWrite(direcaoMotor02b, LOW );
    }      
  }  
  if (bDebug)
  {
    Serial.println(motor);
    Serial.println(direcao);
    Serial.println(pulso);
  }
  
  boolean alto = false;
  for (i = 0; i < (pulso * 2); i++){ 
      if (alto)
      {
        digitalWrite (portaMotor, LOW );        
        alto = false;        
      }
      else
      {
        digitalWrite (portaMotor, HIGH );        
        alto = true;
      }
      delay(5);
  }
  bEmMovimento = false;
  digitalWrite(direcaoMotor01a, LOW );     
  digitalWrite(direcaoMotor01b, LOW );
  digitalWrite(direcaoMotor02a, LOW );     
  digitalWrite(direcaoMotor02b, LOW );       
}

void CMDZerar(String linha){
  
}

void LerAzimute(){
  precisao = 0; //Zera a variável para uma nova leitura 
  for(i=0;i<100;i++) //Faz a leitura 100 e armazenar a somatória
  {
    //Pega os dados necessários para o cálculo da bússola digital
    MagnetometerScaled scaled = bussola.ReadScaledAxis();
    int MilliGauss_OnThe_XAxis = scaled.XAxis;
    float heading = atan2(scaled.YAxis, scaled.XAxis);
    float declinationAngle = -0.3011; //Compensação dos polos (São Paulo)
    heading += declinationAngle;
    //===========================================================
    //Converte o valor aferido para angulo
    if(heading < 0)
    {
      heading += 2*PI;
    } 
    if(heading > 2*PI)
    {
      heading -= 2*PI;
    }  
    graus = heading * 180/M_PI;
    //===================================
    precisao = precisao + graus;
    delay(1);
  }
 
  graus = precisao/100;
  Serial.print("$GEO#RespNorte,");  
  Serial.print(graus);
  Serial.print("*");

/*
  int x,y,z;
  Wire.beginTransmission(address);
  Wire.write(0x03); 
  Wire.endTransmission();

  Wire.requestFrom(address, 6);
  if(6<=Wire.available()){
    x = Wire.read()<<8; //X msb
    x |= Wire.read(); //X lsb
    z = Wire.read()<<8; //Z msb
    z |= Wire.read(); //Z lsb
    y = Wire.read()<<8; //Y msb
    y |= Wire.read(); //Y lsb
  }  

  Serial.print("$GEO#RespNorte,");
  //Serial.print("x: ");
  Serial.print(x);
  Serial.print("*");
  //Serial.print("  y: ");
  //Serial.print(y);
  //Serial.print("  z: ");
  //Serial.println(z);*/
}

void blink()
{
  state = !state;
}

Have you read the sticky note at the top of this forum? Where is the link to the library?

The library I found for this chip (i2cdevlib/Arduino/HMC5883L at master · jrowberg/i2cdevlib · GitHub) does not have a SetScale() method.

Define what "serial1 not wok" means!

Post a schematics or photo of your wiring!

Hello, In serial1 have a GPS plugged in, then I put the creation event HMC5883L, the code below has stopped working:

void serialEvent1(){
  /* Enviar os dados do GPS */  
  if (bEnviarGPS) {    
    strTemp = Serial1.read();
    Serial.println(strTemp); 
  }
}

I'm riding the back of the circuit to post

Have you tried to remove the bEnviarGPS check?

You still didn't provide a link to the library you use!

I'm riding the back of the circuit to post

I don't understand what that means.