RGB Project and FAN

Hello everybody,
I need to adapt this project carried out on Arduino Uno on an Arduino Nano 33 IoT.
All this for some reasons: I would like to be able to control the LEDs and the FAN both from the IR remote control and through Alexa. I have already tried with the ESP8266, but there are too many problems with the libraries not interfacing.
So I bought the Nano 33 IoT only I can't understand anything about it, I don't understand how I have to render the code, how it should be divided, what I have to put where and above all I don't find RGB Example or Fan around on the web.
If I post my code, can someone adapt it to me?

This is the scheme of the project. The diagram shows 2 groups of 3 LEDs each (one on the right and one on the left). At the moment I considered only the 3 LEDs on the left, but then once I have seen how the code will come out I will study it and adapt it by making the appropriate changes

#include <IRremote.h>

#define FAN     6   // define the pin of the FAN
#define RX      12  // define the pin of the IR remote sensor

IRrecv irrecv(RX);         //  define and instantiate the infrared serial
decode_results results; // define the variable "results" to store the received button code

int fanSpeed=140;           // fan speed default starting
int fanSpeedPercent;
int red_light_pin = 11;
int green_light_pin = 10;
int blue_light_pin = 9;

void UP()    { fanSpeed=fanSpeed+5; analogWrite(FAN,fanSpeed); delay(100); } // function through which I increase the fan speed 
void DOWN()  { fanSpeed=fanSpeed-5; analogWrite(FAN,fanSpeed); delay(100); } //function by which I decrease the fan speed

void setup() {
  Serial.println("Starting IR-receiver...");
  irrecv.enableIRIn();                           // start the IR-receiver
  Serial.println("IR-receiver active");
  pinMode(red_light_pin, OUTPUT);
  pinMode(green_light_pin, OUTPUT);
  pinMode(blue_light_pin, OUTPUT);
  pinMode(FAN, OUTPUT);
  analogWrite(FAN, fanSpeed);  // default speed (between 0 and 255; example at 140)

RGB_color(255, 0, 0);      //RED

RGB_color(0, 255, 0);    //GREEN

RGB_color(0, 0, 255);       // BLUE

RGB_color(244, 70, 17);    // PURE ORANGE 602.72nm 

RGB_color(247, 94, 37);    //ORANGE RED LIGHT 598.71 nm

RGB_color(255, 69, 0);    // orangered HTML 602.98 nm

RGB_color(255, 35, 5);    //BRILLANT ORANGE 608.6 nm

RGB_color(255, 12, 0);    //SATUR RED 610.68nm

RGB_color(255, 117, 0);    //SATUR ORANGE 593.1 nm

RGB_color(230, 88, 25);    //ORANGE 597.87 nm

RGB_color(255, 54, 0);    //RED-ORANGE 605.64 nm

void loop()
     if (irrecv.decode(&results)) 
      (fanSpeed>90) && (fanSpeed<255);
        Serial.println(results.value, HEX); // Print the received value as a hexadecimal value
        irrecv.resume();    // Resume the IR-receiver to listen for new signals
        switch (results.value) // Determine which button has been pressed
            case 0xE85952E1: RGB_color(255, 0, 0);// press a key on remote controller and obtain RED
            case 0x78CDA4DD: RGB_color(0, 255, 0);// press another key on remote controller and obtain GREEN

            case 0xA2672345: RGB_color(0, 0, 255); // press another key on remote controller and obtain BLUE

            case 0xB0F9B3E1: RGB_color(244, 70, 17); // press another key on remote controller and obtain ORANGE

            case 0x8503705D: if(fanSpeed<255)  UP();   // I press UP key and increase the speed of the FAN by 5        

            case 0xDEB0C861: if(fanSpeed>90)    DOWN(); I press DOWN key and decrease the speed of the FAN by 5
            default: ;
    Serial.print("PWM VENTOLA: ");
    fanSpeedPercent = map(fanSpeed,35,255,1,100);
    Serial.print("VELOCITA' VENTOLA: ");
    Serial.println(" %");
    delay(100);      // pause 100ms

void RGB_color(int red_light_value, int green_light_value, int blue_light_value)
  analogWrite(red_light_pin, red_light_value);
  analogWrite(green_light_pin, green_light_value);
  analogWrite(blue_light_pin, blue_light_value);

This is the code of Arduino Nano 33 IoT Cloud but it is empty because i don't know how to compile. Can anyone help me?

In the project, since my utility and then that of interfacing with Alexa and giving the Voice commands I have seen that in the Dashboard and in the IoT variables only some are compatible with Alexa. Then :

  • for the fan I chose dimming light (the slider is unfortunately not compatible with Alexa I think :()
  • for the LEDs I entered the only dashboard compatible with the variable compatible with Alexa (I would have preferred the other of the colors but it did not indicate compatible with Alexa)
  • finally I inserted Sound that would be (but I still have to work on a background sound to reproduce in a speaker (even if this part could not be used)
  Sketch generated by the Arduino IoT Cloud Thing "LED"

  Arduino IoT Cloud Variables description

  The following variables are automatically generated and updated when changes are made to the Thing

  CloudSwitch sound;
  CloudColoredLight rgb;
  CloudDimmedLight fan;

  Variables which are marked as READ/WRITE in the Cloud Thing will also have functions
  which are called when their values are changed from the Dashboard.
  These functions are generated with the Thing and added at the end of this sketch.

#include "thingProperties.h"

void setup() {
  // Initialize serial and wait for port to open:
  // This delay gives the chance to wait for a Serial Monitor without blocking if none is found

  // Defined in thingProperties.h

  // Connect to Arduino IoT Cloud
     The following function allows you to obtain more information
     related to the state of network and IoT Cloud connection and errors
     the higher number the more granular information you’ll get.
     The default is 0 (only errors).
     Maximum is 4


void loop() {
  // Your code here 

void onRgbChange() {
// Do something


void onSoundChange() {
  // Do something

void onFanChange() {
  // Do something

Thanks a lot to everyone!

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.