//#define CAYENNE_DEBUG // Uncomment to show debug messages #define CAYENNE_PRINT Serial // Comment this out to disable prints and save space #include #define echoPin 7 // Echo Pin #define trigPin 8 // Trigger Pin #define LEDPin 2 // Onboard LED #define VIRTUAL_PIN V1 #include #include #include LiquidCrystal_I2C lcd(0x27,2,1,0,4,5,6,7); // 0x27 is the I2C bus address for an unmodified module // Cayenne authentication token. This should be obtained from the Cayenne Dashboard. char token[] = "token"; int maximumRange = 200; // Maximum range needed int minimumRange = 0; // Minimum range needed long duration, distance; // Duration used to calculate distance void setup() { Serial.begin(9600); Cayenne.begin(token); pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); pinMode(LEDPin, OUTPUT); // Use LED indicator (if required) lcd.setBacklightPin(3,POSITIVE); lcd.setBacklight(HIGH); // NOTE: You can turn the backlight off by setting it to LOW instead of HIGH lcd.begin(16, 2); lcd.clear(); } void loop() { Cayenne.run(); digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); 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" */ Serial.println("-1"); digitalWrite(LEDPin, HIGH); } else { /* Send the distance to the computer using Serial protocol, and turn LED OFF to indicate successful reading. */ Serial.println(distance); digitalWrite(LEDPin, LOW); } lcd.clear(); lcd.setCursor(0,0); lcd.print("Distance is"); lcd.setCursor(0,1); lcd.print(distance); lcd.setCursor(3,1); lcd.print("cm"); //Delay 50ms before next reading. delay(1000); } CAYENNE_OUT(VIRTUAL_PIN) { Cayenne.virtualWrite(VIRTUAL_PIN, distance); }