//#define CAYENNE_DEBUG #define CAYENNE_PRINT Serial // Comment this out to disable prints and save space #include // Cayenne authentication info. This should be obtained from the Cayenne Dashboard. char username[] = ""; char password[] = ""; char clientID[] = ""; #define PRESISTOR_VIRTUAL_CHANNEL 0 #define DISTANCE_VIRTUAL_CHANNEL 1 // Defines pins numbers for the HC-SR04 connections. const int trigPin = 9; const int echoPin = 10; const int pResistor = A0; long duration; int distanceCm; int value; void setup() { pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); Serial.begin(9600); pinMode(pResistor, INPUT);// Set pResistor - A0 pin as an input (optional) Cayenne.begin(username, password, clientID); } void loop() { // Cayenne.loop(); value = analogRead(pResistor); Serial.println(value); digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); duration = pulseIn(echoPin, HIGH); distanceCm= duration*0.034/2; Serial.println(distanceCm);// if distance less than 0.5 meter and more than 0 (0 or less means over range) delay(100); if( (distanceCm < 68)&&(distanceCm > 10) && (value < 180)) { Cayenne.virtualWrite(DISTANCE_VIRTUAL_CHANNEL, distanceCm, "prox", "cm"); Cayenne.virtualWrite(PRESISTOR_VIRTUAL_CHANNEL,value); } } CAYENNE_OUT(PRESISTOR_VIRTUAL_CHANNEL) { value = analogRead(pResistor); Serial.println(value); Cayenne.virtualWrite(PRESISTOR_VIRTUAL_CHANNEL,value); } // This function is called at intervals to send HC-SR04 sensor data to Cayenne. CAYENNE_OUT(DISTANCE_VIRTUAL_CHANNEL) { digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); duration = pulseIn(echoPin, HIGH); distanceCm= duration*0.034/2; Serial.println(distanceCm);// if distance less than 0.5 meter and more than 0 (0 or less means over range) delay(100); // Send the distance value to Cayenne on proximity widget in centimeter. Cayenne.virtualWrite(DISTANCE_VIRTUAL_CHANNEL, distanceCm, "prox", "cm"); }