Arduino Pro Mini and HC12 TRX

//Transmitter

#include <Adafruit_Sensor.h>
#include <Adafruit_BMP085.h>
#include <SoftwareSerial.h>
SoftwareSerial mySerial(2, 3); //RX, TX
const int buttonPin = 4;
int buttonState = 0;
float ref = 0;
int i = 0;
float filtered = 0;
float mtr;
int32_t pressure;
Adafruit_BMP085 bmp;

void setup(void)
{
  Serial.begin(9600);
  mySerial.begin(9600);
  if (!bmp.begin()) {
    Serial.println("Could not find a valid BMP085 sensor, check wiring!");
    while (1) {}
  }
  pinMode(buttonPin, INPUT);
}
void loop(void) {
  pressure = bmp.readPressure();
  if (filtered != 0) {
    filtered = filtered + 0.05 * (pressure - filtered);

  }
  else {
    filtered = pressure;          // first reading so set filtered to reading
  }
  if (ref == 0) {
    ref = filtered / 12.0;
  }
  buttonState = digitalRead(buttonPin);
  if (buttonState == LOW) {
    ref = filtered / 12.0;
  }
  mtr = ref - filtered / 12.0;
  i += 1;
  if (i >= 20) {

   // if (mySerial.available())
    {

      mySerial.write(mtr*100);
    }
    delay(500);//delay little for better serial communication
    Serial.print("mtr  ");
    Serial.println(mtr);
   // mtr = 0;
  }
}


//Receiver


//HC-12_BMP180_Altitude_for_Shaun_RX_V1working

#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <SoftwareSerial.h>
float mtr = 0;
int piezoPin = 4;
#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);
SoftwareSerial mySerial(2, 3); // RX, TX
void setup()
 {
  mySerial.begin(9600);
  Serial.begin(9600);
  pinMode(7, OUTPUT);
          digitalWrite(7, LOW);
          mySerial.print(F("AT+C001\r\n"));
          delay(100);
          digitalWrite(7, HIGH);
          display.begin(SSD1306_SWITCHCAPVCC, 0x3c);  // initialize with the I2C addr 0x3D (for the 128x64)
          noTone(piezoPin);
 }
void loop() {
  noTone(piezoPin);
  if(mySerial.available()){
  mtr = mySerial.read();//read string
  Serial.print("mtr"      );
  Serial.println(mtr);
  delay(50);
 // if (mySerial.available())
  
    display.clearDisplay();
    display.setTextSize(2);
    display.setTextColor(WHITE);
    display.setCursor(20, 1);
    display.println("Altitude");
    display.setCursor(20, 20);
    display.println("in Feet");
    display.setTextSize(2);
    display.setCursor(55, 50);
    display.println((mtr / 100) * 3.28084, 0);
    Serial.println ("Height in Feet");
    Serial.println(mtr / 100);
    display.display();
  }
  else 
  {
    (tone(piezoPin, 3000)); // tone erzeugung
    delay(2000);
    display.clearDisplay();
    display.setTextSize(2);
    display.setTextColor(WHITE);
    display.setCursor(20, 1);
    display.println("Switch");
    display.setCursor(40, 25);
    display.println("TX");
    display.setCursor(30, 50);
    display.println("ON!!!");
    display.display();
  }
  if (((mtr/100) * 3.28084 >= (400)) && ((mtr/100) * 3.28084 <= (450)))
  {
    tone(piezoPin, 3000, 200);
    delay(1000);
  }
  if ((mtr/100) * 3.28084 >= (800)) 
  {
    tone(piezoPin, 3000, 50);
    delay(200);
  }
 
  noTone(piezoPin);
}

I guess your text description has gone missing. Is it a problem or a model solution which you want to show ?

I cannot get the mySerial, mySerial write and my Serial read to work. I did get a successful TX and RX but the RX only showed a variation between 0 and 8 even when the height was stable. Could someone PLEASE put me on the right track. I know that the float mtr value, which I want to transmit is ok because I use it with an NRF24L01 and it works ok but the range is too short for me.

The softwareSerial method read() reads one byte from the input stream. The number of bytes available to be read can be determined by the available() method. A float is 4 bytes. You have to collect the bytes in a buffer and convert the buffer to a float. One way is to use union between a byte array[4] and a float.