Problem in Cayenne first project: Led on/off with Arduino Uno + Ethernet Shield W5100

Hello, this is my first project with Cayenne,I hope you can help me with this: I have a problem to light on and off a led that is connected to pin digital 2 of the shield, after I follow all the instructions and I am on the dashboard adding a device/ actuator/ light/ light switch/ here in connectivity only appears option virtual and I saw in many videos that it should appear the option digital so I can select below the pin D2 and make it work but it doesn’t.
Before this like I said, I already have:

  • Connected my Ethernet Shield (on top of my Uno)

  • Installed Arduino IDE

  • Added Cayenne Library (I selected version 1.2.0)

  • Selected my board and my port
    By the way, after doing this and clicked next, it appeared this (username, password, clientID):
    Instead of this (like I saw in many videos that only works when option token appears here):


    Then I selected Arduino Uno/ Ethernet Shield W5100 sketch and appeared this code:

     /*
      This example shows how to connect to Cayenne using an Ethernet W5100 shield and send/receive sample data.
    
      The CayenneMQTT Library is required to run this sketch. If you have not already done so you can install it from the Arduino IDE Library Manager.
    
      Steps:
      1. Set the Cayenne authentication info to match the authentication info from the Dashboard.
      2. Compile and upload the sketch.
      3. A temporary widget will be automatically generated in the Cayenne Dashboard. To make the widget permanent click the plus sign on the widget.
      */
    
      //#define CAYENNE_DEBUG       // Uncomment to show debug messages
      #define CAYENNE_PRINT Serial  // Comment this out to disable prints and save space
      #include <CayenneMQTTEthernet.h>
    
      // Cayenne authentication info. This should be obtained from the Cayenne Dashboard.
      char username[] = "";
      char password[] = "";
      char clientID[] = "";
    
      void setup() {
      	Serial.begin(9600);
      	Cayenne.begin(username, password, clientID);
      }
    
      void loop() {
      	Cayenne.loop();
      }
    
      // Default function for sending sensor data at intervals to Cayenne.
      // You can also use functions for specific channels, e.g CAYENNE_OUT(1) for sending channel 1 data.
      CAYENNE_OUT_DEFAULT()
      {
      	// Write data to Cayenne here. This example just sends the current uptime in milliseconds on virtual channel 0.
      	Cayenne.virtualWrite(0, millis());
      	// Some examples of other functions you can use to send data.
      	//Cayenne.celsiusWrite(1, 22.0);
      	//Cayenne.luxWrite(2, 700);
      	//Cayenne.virtualWrite(3, 50, TYPE_PROXIMITY, UNIT_CENTIMETER);
      }
    
      // Default function for processing actuator commands from the Cayenne Dashboard.
      // You can also use functions for specific channels, e.g CAYENNE_IN(1) for channel 1 commands.
      CAYENNE_IN_DEFAULT()
      {
      	CAYENNE_LOG("Channel %u, value %s", request.channel, getValue.asString());
      	//Process message here. If there is an error set an error message using getValue.setError(), e.g getValue.setError("Error message");
      }
    

That’s all, until now I can’t put my led on/off. Hope you can help me.

after uploading the code was your board connected to cayenne?

adding a button widget to turn on a led, you add button widget on your dashboard with channel 1 (virtual connectivity) and then use below code to read the value of the button :

 CAYENNE_IN(1)
{
	int x = getValue.asInt();
        digitalWrite( led_pin, x); 
	}

where the value of channel 1 button is stored in x. “led_pin” is the digital pin 2 of arduino where the led is connected and you use digitalWrite to turn on off led.

Thank you very much for the help, it works now. One final question please: why doesn’t appear the option digital? Is this the way the new version works, without the option digital now?

Yes… this is how cayenne MQTT version works.

I have exactly the same problem can you give me details about what you’ve done. Step by step please because I’m a beginner.


what should I do here?

Sure, first click in sketch file, then follow the steps of the comment block on top of the code:

  • put a number for the channel (in your dashboard image): I put 1
  • choose an icon (in your dashboard image): I choose light
  • Now in the line #define VIRTUAL_CHANNEL undefined (in Arduino IDE after copy/paste) : replace undefined for 1
  • And in the line #define ACTUATOR_PIN 4 (is the next line): replace 4 for 2 (this because I connected the
    led to pin 2, if you wish change it)
  • Now connect your circuit (as it says in step 4 of the comment block)
  • Compile and upload
  • In the dashboard again: click in add actuator
  • Try it now
2 Likes

oooh thank you. It works.

1 Like