Bonjour à tous

J’ai besoin de piloter un ESC PWM qui alimente un ventilateur.

J’ai trouvé un code qui fonctionne avec un capteur de température DS18B20.

Voici le code qui fonctionne avec le DS18B20

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#include <OneWire.h>
#include <DallasTemperature.h>
 
#define ONE_WIRE_BUS 2
 
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
 
int MIN_TEMP = 16;
int MAX_TEMP = 28;
 
void setup() {
 
pinMode(9,OUTPUT);
Serial.begin(9600);
sensors.begin();
 
}
 
void loop() {
 
  float temperature = getTemperature();
  int voltage = temperatureToPWM(temperature);
  analogWrite(9,voltage);
  delay(500);
}
 
float getTemperature()
{
  float temperature =0;
  sensors.requestTemperatures(); // Send the command to get temperatures
  temperature = sensors.getTempCByIndex(0);
  //Serial.println(temperature);
//Serial.print("PWM.");
//analogWrite(ledPin, tempDur);
//Serial.print("temperature.");
 
 
  return temperature;
}
 
int temperatureToPWM(float temperature)
{
  float temp=0;
  float voltage = 0;
  temp = temperature*10;
  voltage = map(temp,MIN_TEMP*10,MAX_TEMP*10,0,250);
  return voltage;
}
Je souhaiterai obtenir le même résultat avec un capteur MLX90614 en utilisant que le signal température ambiante.

Voici le code que j’ai modifié qui ne fonctionne pas pour l’instant.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_MLX90614.h>
 
 
 
#include <OneWire.h>
//#include <DallasTemperature.h>
 
//#define ONE_WIRE_BUS 2
 
//OneWire oneWire(ONE_WIRE_BUS);
//DallasTemperature sensors(&oneWire);
Adafruit_MLX90614 mlx = Adafruit_MLX90614();
 
 
int MIN_TEMP = 16;
int MAX_TEMP = 28;
 
 
 
 
void setup() {
 
pinMode(9,OUTPUT);
Serial.begin(9600);
mlx.begin();
 
 
 
//Serial.println("Adafruit MLX90614 test");
 
//sensors.begin();
 
}
 
void loop() {
 
  //float temperature = getTemperature();
  float temperature = mlx.readObjectTempC();
  //float celsius = mlx.readObjectTempC();
  int voltage = temperatureToPWM(temperature);
  //int voltage = mlx.readObjectTempC(temperature);
 
 
  analogWrite(9,voltage);
  //analogWrite(9,);
  delay(500);
}
 
float getTemperature()
{
  float temperature =0;
 // sensors.requestTemperatures(); // Send the command to get temperatures
 // temperature = sensors.getTempCByIndex(0);
  Serial.println(temperature);
Serial.print("PWM.");
//analogWrite(ledPin, tempDur);
//Serial.printin(tempDur);
 
 
 
  return temperature;
}
 
int temperatureToPWM(float temperature)
{
  float temp=0;
  float voltage = 0;
  temp = temperature*10;
  voltage = map(temp,MIN_TEMP*10,MAX_TEMP*10,0,250);
  return voltage;
}
Que dois-je modifier sur mon code ?

Merci pour votre aide