Bonjour a tous ,
Je suis nouveaux sur le forum et également débutent sur arduino .
J'aurai besoin de votre aide pour mon projet qui consiste a contrôlés la ventilation d'air chaux de ma cheminée .
Je m'explique je veux contrôlés 2 ventilateur de pc 4 pin en utilisent le pwm pour varié la vitesse par le biais de la température et de forces la ventilation par une télécommande ir et je voudrais 3 plage de vitesse (petite 1 , moyenne 2 , grande vitesse 3 ) et pour finir je voudrais afficher ses vitesse (1 ,2 ,3 ) sur un afficheur 7 segment je crois qu'il et a anode commune (ça fais très longtemps que je l'ai donc je n'ai pas plus d’info, il faudrait que je le teste) .
Par contre j'ai un petit problème avec la télécommande ir je n'arrive pas a ope-tenir les code transmission , je pense avoir tous teste se que j'ai pu trouver sur le net. Voila se que j'ai :
Voici la liste des composant que j'ai en ma possession :
Carte arduino mega 2560
Alimentation 12v
Ventilation pc
sonde de temperature
télécommande ir
afficheur 7 segment anode commune ?:
Voici le code arduino que j'esseille d'utiliser (je c'est qu'il est incomplet mais je ne c'est pas ce qu'il manque ) :
#include <IRremote.h>
#include <Thermocouple.h>
#include <MAX6675_Thermocouple.h>
#include <SmoothThermocouple.h>
#define SCK_PIN 23 // temperature
#define CS_PIN 24 // temperature
#define SO_PIN 22 // temperature
/**
Smoothing factor of a temperature value.
*/
#define SMOOTHING_FACTOR 5
Thermocouple* thermocouple = NULL;
const int fanPin = 13; // Broche <link category="SCIENCE">PWM</link> pour le ventilateur
const int displayPins[] = {40,41,42,43,44,45,46}; // Broches pour l'afficheur 7 segments (segments A, B, C, D, E, F, G)
const int temperatureThreshold = 25; // Seuil de température pour démarrer le ventilateur
const int minSpeed = 0; // Vitesse minimale du ventilateur (0-255)
const int maxSpeed = 255; // Vitesse maximale du ventilateur (0-255)
IRrecv irReceiver(12); // Broche digitale pour le récepteur infrarouge
decode_results irResults{ // Variable pour stocker les résultats de décodage infrarouge
};
void setup(){
Serial.begin(9600);
Thermocouple* originThermocouple = new MAX6675_Thermocouple(SCK_PIN, CS_PIN, SO_PIN);
thermocouple = new SmoothThermocouple(originThermocouple, SMOOTHING_FACTOR);
/* OR
thermocouple = new SmoothThermocouple(
new MAX6675_Thermocouple(SCK_PIN, CS_PIN, SO_PIN),
SMOOTHING_FACTOR
);
*/
}
pinMode(fanpin, OUTPUT);
irReceiver.enableIRIn();
void loop() {
int temperature = readTemperature();
if (temperature >= temperatureThreshold) {
int fanSpeed = map(temperature, temperatureThreshold, 50, minSpeed, maxSpeed);
analogWrite(fanPin, fanSpeed);
} else {
analogWrite(fanPin, 0);
}
if (irReceiver.decode(&irResults)) {
switch (irResults.value) {
// Ajouter les cas pour les commandes de la télécommande
case :Serial.print(F("1"));
analogWrite(100)
break;
case :Serial.print(F("2"));
analogWrite(180)
break;
case :Serial.print(F("3"));
analogWrite(250)
break;
}
irReceiver.resume();
}
displaySpeed(fanSpeed);
}
int readTemperature() {
int sensorValue = analogRead(temperaturePin);
// Reads temperature
const double celsius = thermocouple->readCelsius();
// Output of information
Serial.print("Temperature: ");
Serial.print(celsius);
Serial.print(" C, ");
return temperature;
}
void displaySpeed(int speed) {
// Faire l'affichage de la vitesse sur l'afficheur 7 segments
//chifre 1//
digitalWrite (A,HIGH);
digitalWrite (B,LOW);
digitalWrite (C,LOW);
digitalWrite (D,HIGH);
digitalWrite (E,HIGH);
digitalWrite (F,HIGH);
digitalWrite (G,HIGH);
//chifre 2//
digitalWrite (A,LOW);
digitalWrite (B,LOW);
digitalWrite (C,HIGH);
digitalWrite (D,LOW);
digitalWrite (E,LOW);
digitalWrite (F,HIGH);
digitalWrite (G,LOW);
//chifre 3//
digitalWrite (A,LOW);
digitalWrite (B,LOW);
digitalWrite (C,LOW);
digitalWrite (D,LOW);
digitalWrite (E,HIGH);
digitalWrite (F,HIGH);
digitalWrite (G,LOW);
}
Je pense n'avoir rien oublier , si toute fois ..... je répondrai le mieux que je peu .
Je remercie d’avance tous eu qui prendrons le temps de m'aider .