// Define stepper motor connections:
#define dirPin 2
#define stepPin 3

void setup() {
  // Declare pins as output:
  pinMode(stepPin, OUTPUT);
  pinMode(dirPin, OUTPUT);

  // Set the spinning direction CW/CCW:
  digitalWrite(dirPin, HIGH);
}

void loop() {
  // These four lines result in 1 step:
  digitalWrite(stepPin, HIGH);
  delayMicroseconds(200); // Aumentare il delay per mantenere la velocità del motore
  digitalWrite(stepPin, LOW);
  delayMicroseconds(200); // Aumentare il delay per mantenere la velocità del motore
}
 qui il motore gira bene,  #include <ELECHOUSE_CC1101_SRC_DRV.h>
#include <DHT11.h>

// Crea un'istanza della classe DHT11
DHT11 dht11(4);

// Pin a cui è collegato lo switch
const int switchPin = A0;

// Define stepper motor connections:
#define dirPin 2
#define stepPin 3

// Motor control variables
bool motorRunning = false;

void setup() {
    Serial.begin(1200);  // Inizializza la comunicazione seriale a 1200 baud

    if (ELECHOUSE_cc1101.getCC1101()) {  // Controlla la connessione SPI del CC1101.
        Serial.println("Connessione OK");
    } else {
        Serial.println("Errore di connessione");
    }

    ELECHOUSE_cc1101.Init();            // Inizializza il cc1101
    ELECHOUSE_cc1101.setCCMode(1);      // Imposta la configurazione per la modalità di trasmissione interna
    ELECHOUSE_cc1101.setModulation(0);  // Imposta la modalità di modulazione (0 = 2-FSK)
    ELECHOUSE_cc1101.setMHZ(433.92);    // Imposta la frequenza
    ELECHOUSE_cc1101.setSyncMode(2);    // Imposta la modalità di sincronizzazione
    ELECHOUSE_cc1101.setPA(12);         // Imposta la potenza di trasmissione
    ELECHOUSE_cc1101.setCrc(1);         // Abilita il controllo CRC
    ELECHOUSE_cc1101.setDeviation(5.157);
    ELECHOUSE_cc1101.setDRate(10.0);
    ELECHOUSE_cc1101.setChannel(0);
    ELECHOUSE_cc1101.setPRE(1);
    ELECHOUSE_cc1101.setFEC(0);

    pinMode(switchPin, INPUT); // Imposta il pin del switch come input
    pinMode(stepPin, OUTPUT);   // Imposta il pin del motore come output
    pinMode(dirPin, OUTPUT);    // Imposta la direzione del motore come output

    // Set the spinning direction CW/CCW:
    digitalWrite(dirPin, HIGH);  // Imposta la direzione in senso orario

    Serial.println("Modalità Trasmissione");
}

void loop() {
    // Tenta di leggere i valori di temperatura e umidità dal sensore DHT11
    int temperatura = dht11.readTemperature();
    int umidita = dht11.readHumidity();

    // Leggi lo stato dello switch
    int switchState = analogRead(switchPin);
    String switchMessage;

    // Determina se il motore deve partire o meno
    if (switchState < 512) { // Supponendo che il valore sia basso quando chiuso
        switchMessage = "TR 1";
        motorRunning = true;  // Attiva il motore
    } else {
        switchMessage = "TR 0";
        motorRunning = false; // Ferma il motore
    }
// Controlla il risultato della lettura
    if (temperatura != DHT11::ERROR_CHECKSUM && temperatura != DHT11::ERROR_TIMEOUT &&
        umidita != DHT11::ERROR_CHECKSUM && umidita != DHT11::ERROR_TIMEOUT) {
        
        // Stampa i valori di temperatura e umidità sul monitor seriale
        Serial.print("Temperatura: ");
        Serial.print(temperatura);
        Serial.println(" °C");

        Serial.print("Umidità: ");
        Serial.print(umidita);
        Serial.println(" %");

        // Stampa lo stato dello switch
        Serial.println("Stato dello switch: " + switchMessage);

        // Crea una stringa da inviare
        char datiDaInviare[50];
        snprintf(datiDaInviare, sizeof(datiDaInviare), "Temp: %d C, Umidità: %d %%, %s", temperatura, umidita, switchMessage.c_str());

        // Trasmetti i dati
        ELECHOUSE_cc1101.SendData(datiDaInviare, 100);
    } else {
        // Stampa il messaggio di errore basato sul codice di errore
        if (temperatura == DHT11::ERROR_CHECKSUM || temperatura == DHT11::ERROR_TIMEOUT) {
            Serial.println(DHT11::getErrorString(temperatura));
        }
        if (umidita == DHT11::ERROR_CHECKSUM || umidita == DHT11::ERROR_TIMEOUT) {
            Serial.println(DHT11::getErrorString(umidita));
        }
    }

    // Stepper motor control logic
    if (motorRunning) {
        // Motor stepping logic
        digitalWrite(stepPin, HIGH);
        delayMicroseconds(1000); // Adjust this delay for motor speed (2000-10000 for slower speed)
        digitalWrite(stepPin, LOW);
        delayMicroseconds(1000); // Adjust this delay for motor speed
        // Optional: Add a small delay to avoid overheating the driver
        delay(5); // Adjust as necessary
    }

    // Attendi 3 secondi prima di inviare nuovamente
    delay(3000);
} qui non gira