Mancata comunicazione HC12

Ciao
Non riesco a stabilire una comunicazione tra due moduli HC12 per trasmettere temperatura e umidita da un DHT22.
Anche gli esempi in rete non mi hanno molto aiutato
Ho provato questo semplice sketch come test (su due arduino) e funziona, lo uso per ricevere

/*  HC12 Send/Receive Example Program 1
    By Mark J. Hughes
    for AllAboutCircuits.com

    Connect HC12 "RXD" pin to Arduino Digital Pin 2
    Connect HC12 "TXD" pin to Arduino Digital Pin 3
    Connect HC12 "Set" pin to Arduino Digital Pin 6

    Do not power over USB.  Per datasheet,
    power HC12 with a supply of at least 100 mA with
    a 22 uF - 1000 uF reservoir capacitor.
    Upload code to two Arduinos connected to two computers.

    Transceivers must be at least several meters apart to work.
*/

#include <SoftwareSerial.h>

const byte HC12RxdPin = 2;                      // "RXD" Pin on HC12
const byte HC12TxdPin = 3;                      // "TXD" Pin on HC12
const byte HC12SetPin = 6;                      // "SET" Pin on HC12

SoftwareSerial HC12(HC12TxdPin, HC12RxdPin); // RX to HC-12 TX Pin, TX to HC-12 RX Pin

void setup()
{
  Serial.begin(9600);                       // Open serial port to computer
  HC12.begin(9600);                         // Open serial port to HC12
  Serial.println("Enter AT commands:");
 // digitalWrite(HC12SetPin, 0);
}

void loop() 
{
  while (HC12.available()) {        // If HC-12 has data
    Serial.write(HC12.read());      // Send the data to Serial monitor
  }
  while (Serial.available()) {      // If Serial monitor has data
    HC12.write(Serial.read());      // Send that data to HC-12
  }
  }

questo con il DHT per trasmettere ma non ricevo dati

/*  HC12 Send/Receive Example Program 1
    By Mark J. Hughes
    for AllAboutCircuits.com

    Connect HC12 "RXD" pin to Arduino Digital Pin 4
    Connect HC12 "TXD" pin to Arduino Digital Pin 5
    Connect HC12 "Set" pin to Arduino Digital Pin 6

    Do not power over USB.  Per datasheet,
    power HC12 with a supply of at least 100 mA with
    a 22 uF - 1000 uF reservoir capacitor.
    Upload code to two Arduinos connected to two computers.

    Transceivers must be at least several meters apart to work.
*/

#include <SoftwareSerial.h>

#include <Wire.h>       //DHT 22  (AM2302)
#include "DHT.h"        //DHT 22  (AM2302)
#define DHTPIN 4        //DHT 22  (AM2302) what pin we're connected to
float h;                //DHT 22  (AM2302)
float t;                //DHT 22  (AM2302)

#define DHTTYPE DHT22   //DHT 22  (AM2302)

DHT dht(DHTPIN, DHTTYPE);//DHT 22  (AM2302)

const byte HC12RxdPin = 2;  //HC12 "RXD" Pin on HC12
const byte HC12TxdPin = 3;  //HC12 "TXD" Pin on HC12
const byte HC12SetPin = 6;  //HC12 "SET" Pin on HC12

SoftwareSerial HC12(HC12TxdPin, HC12RxdPin); // RX nano to HC-12 TX Pin, TX nano to HC-12 RX Pin

void setup()
{
  Serial.begin(9600);                       // Open serial port to computer
  HC12.begin(9600);                         // Open serial port to HC12
 // Serial.println("Enter AT commands:");
 // digitalWrite(HC12SetPin, 0);

  dht.begin();                //DHT 22  (AM2302)

   delay(500);
}

void loop() 
{
  h = dht.readHumidity();
  t = dht.readTemperature();
  
  delay(3000);
  
  // check if returns are valid, if they are NaN (not a number) then something went wrong!
  if (isnan(t) || isnan(h))
  {
    Serial.println("Failed to read from DHT");
    //lcd.clear();

    delay(500);
 //   lcd.setCursor(0, 0);
 //   lcd.print("no data from DHT");
  }
  else
  {
    Serial.print("Humidity: ");
    Serial.print(h);
    Serial.print(" %\t");
    Serial.print("Temperature ");
    Serial.print(t);
    Serial.println(" *C");

  HC12.print(h);  
 
  }
}

grazie per ogni suggerimento

In che senso non ricevi?
Ricevi cose strane o non ricevi nulla?

non ricevo nulla

Premetto che non conosco tali moduli, ma così a colpo d’occhio, perchè in un codice utilizzi il comando HC12.write, e nell’altro codice il comando HC12.print?

Poi comunque non ho capito come sono collegati tra loro i vari moduli, avrai 2 arduino con codici diversi?

si
due arduino uno per ricevere l altro per trasmetter i valori del DHT

image

Mi pare di capire che con il codice di prova riesci a comunicare.
Quindi i moduli funzionano e sono collegati correttamente.
Quando cambi il codice sul trasmettitore non riesci più a comunicare, giusto?
So che sembra banale, ma se sei su breadboard controlla i contatti dei cavetti. A me danno spesso problemi.
Poi in effetti, come dice anche Gianluca, l’unica istruzione che cambia sembra essere la print invece della write…

riprovato a sostituire write con print, ma niente è cambiato

Aspetta… ma usi il pin 4 sia per il dht che per l’hc12?

giusta osservazione
adesso ricevo