Pilotare una ventola 12V con sensore temperatura

Salve ragazzi
Ho una ventola per PC a 12Volt 4fili (Positivo giallo, Negativo nero, Sensore di giri verde, e regolatore velocità blu) . Ho una scheda Arduino Uno e lo starter kit della Grove che comprende sia un Display RGB (Grove LCD RGB Bachlight V4.0), un sensore di temperatura V1.2 (con LM358) e la Base Shield V2.1, tanto per intenderci il kit della Seeed Studio che con i suoi sketch facevano accendere il Display con la scritta "hello word".
Con questi componenti mi piacerebbe realizzare uno sketch che mi pilotasse la ventola sopradescritta facendola partire o meglio ancora facendogli aumentare i giri in base alla temperatura registrata dal sensore. Ho provato diversi Sketch trovati in rete, nessuno sembra funzionare correttamente con questi componenti, qualcuno di voi ha qualche idea?
Ringrazio tutti anticipatamente per l'attenzione rivoltami leggendo questo articolo.

Ciao, con il codice che ha il kit per misurare la temperatura, modificalo con un po 'di IF, per usarlo per gestire un'uscita PWM a cui collegherai la ventola tramite un transistor.
Dalla ventola utilizzare solo i cavi giallo e nero utilizzando un montaggio come descritto in questo altro thread di questo forum:
link
Saluti.

@maikolino : stiamo parlando di un argomento simile QUI ...

Guglielmo

Ad ogni modo, metti il ​​codice e qualche immagine del sensore che devi misurare la temperatura perché l'LM358 non è un termometro, vediamo cosa hai.
Saluti.

image

Parlo di questo kit

Bene, prima collega il sensore di temperatura alla scheda grove come indicato nel libro, in secondo luogo collega il segnale dal pin 3 e uno della massa della scheda grove e collegali come indicato nell'altro post indicato sopra, infine carica questo codice nell'arduino apportare le modifiche indicate dagli asterischi.

// Demo code for Grove - Temperature Sensor V1.1/1.2
// Loovee @ 2015-8-26
 
#include <math.h>
 
const int B = 4275;               // B value of the thermistor
const int R0 = 100000;            // R0 = 100k
const int pinTempSensor = A0;     // Grove - Temperature Sensor connect to A0
const int pinVentola = 3;        // Pin 3 output fan
int temp;

#if defined(ARDUINO_ARCH_AVR)
#define debug  Serial
#elif defined(ARDUINO_ARCH_SAMD) ||  defined(ARDUINO_ARCH_SAM)
#define debug  SerialUSB
#else
#define debug  Serial
#endif
 
void setup(){
    pinMode (pinVentola, OUTPUT);
    Serial.begin(9600);
}
 
void loop(){
    int a = analogRead(pinTempSensor); 
    float R = 1023.0/a-1.0;
    R = R0*R; 
    float temperature = 1.0/(log(R/R0)/B+1/298.15)-273.15; // convert to temperature via datasheet 
    temp = temperature;
    
//***************************************************************************************************************************
//Nella riga successiva modificare il valore-inferiore e il valore-superiore per l'intervallo di temperatura da controllare**
    analogWrite(pinVentola , map(temp,valore-inferiore,valore-superiore ,0,255));                                          **
//***************************************************************************************************************************

    delay(100);
}

Saluti.