Help with hr-sr04 and jsn-sr04t


Hi to all, Im working in my terrarium control project. I want measure the water pump level, using this sketch:

Cayenne Ethernet Example
This sketch connects to the Cayenne server using an Arduino Ethernet Shield W5100
and runs the main communication loop.

The Cayenne Library is required to run this sketch. If you have not already done so you can install it from the Arduino IDE Library Manager.

1. Set the token variable to match the Arduino token from the Dashboard.
2. Compile and upload this sketch.

For Cayenne Dashboard widgets using digital or analog pins this sketch will automatically
send data on those pins to the Cayenne server. If the widgets use Virtual Pins, data
should be sent to those pins using virtualWrites. Examples for sending and receiving
Virtual Pin data are under the Basics folder.

//#define CAYENNE_DEBUG         // Uncomment to show debug messages
#define CAYENNE_PRINT Serial  // Comment this out to disable prints and save space
#include <CayenneEthernet.h>

#define echoPin 7 // Echo Pin
#define trigPin 8 // Trigger Pin
#define LEDPin 9 // LED 
#define VIRTUAL_PIN V3

// Cayenne authentication token. This should be obtained from the Cayenne Dashboard.
char token[] = "xbitpta40p";

int maximumRange = 200; // Maximum range needed
int minimumRange = 0; // Minimum range needed
long duration, distance; // Duration used to calculate distance

void setup()
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  pinMode(LEDPin, OUTPUT); // Use LED indicator (if required)

void loop()

  digitalWrite(trigPin, LOW); 

 digitalWrite(trigPin, HIGH);
 digitalWrite(trigPin, LOW);
 duration = pulseIn(echoPin, HIGH);
 //Calculate the distance (in cm) based on the speed of sound.
 distance = duration/58.2;
 if (distance >= maximumRange || distance <= minimumRange){
 /* Send a negative number to computer and Turn LED ON 
 to indicate "out of range" */
 digitalWrite(LEDPin, HIGH); 
 else {
 /* Send the distance to the computer using Serial protocol, and
 turn LED OFF to indicate successful reading. */
 digitalWrite(LEDPin, LOW); 
 //Delay 50ms before next reading.

  Cayenne.virtualWrite(VIRTUAL_PIN, distance);

I tried it with jsn-sr04t module with no results, but it work fine with hr-sr04. The only drawback is that it gives me the result in inches and I would like to see it in centimeters.
I would prefer to use the jsn-sr04t module as it is waterproof
Any suggestions?


I don’t have this sensor to test, but if you can share some code that does work for you maybe we can try to combine the two sketches into something that works for you.


I’d try using the NewPing library. I have used this library before and works well and you can easily get the measurement in any format you want. It should also support that other jsn-sr04t sensor I believe since it uses a trigger/echo style communication same as the.

NewPing Library


the code was. in my first post…


Ill try thk!


Hmm…guess I must have missed something. I thought the code you posted there only worked with the hr-sr04 sensor and not the jsn-sr04t sensor?


Sorry i didnt understand, i havent these code, but i search one and them will post

Thank you very much