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.
      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() {
      	Cayenne.begin(username, password, clientID);
      void 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.
      	// 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_LOG("Channel %u, value %s",, 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 :

	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


oooh thank you. It works.