Moteur + capteur de température - besoin d'aide

Bonjour,
J'ai une question concernant un de mes projets :
Je voudrais controler un moteur pas à pas grâce à un capteur de température de sorte que lorsque la température atteint les 25 degrés par exemple le moteur tourne.
Mais le porblème c'est que je n'arrive pas à controller le moteur grace au capteur LM35.
Je possède le capteur LM35, le motor driver ULN2003, le moteur 28BYJ et une arduino uno.
Je n'est pas de schéma car je suppose que mon montage était faux.
Quelqu'un aurrait une idée pour le branchement/code ?
Merci d'avance
LoadzFire

c'est pour l'école?
montrez nous que vous avez bossé un peu... un schéma et un peu de code... même faux

C'est pour moi et voici le code (qui ne fonctionne pas).

#define IN1  8
#define IN2  9
#define IN3  10
#define IN4  11
int Steps = 0;
boolean Direction = true;// gre
unsigned long last_time;
unsigned long currentMillis ;
int steps_left=4095;
long time;

        
int val;
int tempPin = 0;
const int chaud = 22;
const int froid = 25;
void setup()
{
pinMode(IN1, OUTPUT); 
pinMode(IN2, OUTPUT); 
pinMode(IN3, OUTPUT); 
pinMode(IN4, OUTPUT); 
Serial.begin(9600);
}
void loop()
{
val = analogRead(tempPin);
float mv = ( val/1024.0)*5000;
float cel = mv/10;
float farh = (cel*9)/5 + 32;

Serial.print("TEMPRATURE = ");
Serial.print(cel);
Serial.print("*C");
Serial.println();
delay(1000);

if (cel >= chaud)
{
//void stepper(int xw){
  //for (int x=0;x<xw;x++){
switch(Steps){
   case 0:
     digitalWrite(IN1, LOW); 
     digitalWrite(IN2, LOW);
     digitalWrite(IN3, LOW);
     digitalWrite(IN4, HIGH);
   break; 
   case 1:
     digitalWrite(IN1, LOW); 
     digitalWrite(IN2, LOW);
     digitalWrite(IN3, HIGH);
     digitalWrite(IN4, HIGH);
   break; 
   case 2:
     digitalWrite(IN1, LOW); 
     digitalWrite(IN2, LOW);
     digitalWrite(IN3, HIGH);
     digitalWrite(IN4, LOW);
   break; 
   case 3:
     digitalWrite(IN1, LOW); 
     digitalWrite(IN2, HIGH);
     digitalWrite(IN3, HIGH);
     digitalWrite(IN4, LOW);
   break; 
   case 4:
     digitalWrite(IN1, LOW); 
     digitalWrite(IN2, HIGH);
     digitalWrite(IN3, LOW);
     digitalWrite(IN4, LOW);
   break;  case 5:
     digitalWrite(IN1, HIGH); 
     digitalWrite(IN2, HIGH);
     digitalWrite(IN3, LOW);
     digitalWrite(IN4, LOW);
   break; 
     case 6:
     digitalWrite(IN1, HIGH); 
     digitalWrite(IN2, LOW);
     digitalWrite(IN3, LOW);
     digitalWrite(IN4, LOW);
   break; 
   case 7:
     digitalWrite(IN1, HIGH); 
     digitalWrite(IN2, LOW);
     digitalWrite(IN3, LOW);
     digitalWrite(IN4, HIGH);
    break;
}
if (cel <= froid)
{

}
}
}

Merci beaucoup,
Mais le problème que j'ai moi c'est que je ne comprend rien au codage du moteur pas à pas (j'ai copier coller des trucs du net).
Par exemple qu'est ce qu'une step ?
Merci encore pour vos réponse

Re,
jai téster ce code la :
int motorPin1 = 8;
int motorPin2 = 9;
int motorPin3 = 10;
int motorPin4 = 11;
int delayTime = 500;

void setup() {
pinMode(motorPin1, OUTPUT);
pinMode(motorPin2, OUTPUT);
pinMode(motorPin3, OUTPUT);
pinMode(motorPin4, OUTPUT);
}

void loop() {
digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
delay(delayTime);
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
delay(delayTime);
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, HIGH);
digitalWrite(motorPin4, LOW);
delay(delayTime);
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, HIGH);
delay(delayTime);
}

Et rien ne marche alors que tout est bien branché et les 4 led sallume les unes après les autres.

vous nous expliquez où sont connectées les PINs?

Merci beaucoup -pepe- pour toute ses éxplications,
Voici donc une photo de mon montage (une photo car Fritizing ne contient pas les mêmes shield que moi).
Photo ici :
https://drive.google.com/open?id=0B14hEyb5IsvMRGFFcGhkdW1fUzQ

Du coup quelqu'un aurait une idée pour le branchement ou le code ?

Bonjour,
Il serait opportun de changer le titre de ton post car il ne précise pas le sujet. Il y a aucune envie de lire le sujet et d'apporter des réponses.
@+

icare:
Bonjour,
Il serait opportun de changer le titre de ton post car il ne précise pas le sujet. Il y a aucune envie de lire le sujet et d'apporter des réponses.
@+

c'est bon mais du coup qui à une idée ?

pourquoi ne pas utiliser la lib steppermotor?
tuto ICI

ok merci !!
Je suis en train d'essayer avec un moteur simple pour l'instant.

Re,
J'ai une question mais j'ai besoin d'éxpliquer un peu mieux mon projet :
Je voudrais faire des volets qui se ferment seulement lorsque la température dépasse les 25 degrès et qu'ils s'ouvrent lorsque la température descend en dessous de 20 degrès.
Mon code actuel est celui ci :

int val;
int tempPin = 1;

void setup()
{
 pinMode(12, OUTPUT); //Initiates Motor Channel A pin
 pinMode(9, OUTPUT); //Initiates Brake Channel A pin
Serial.begin(9600);

}
void loop()
{
  val = analogRead(tempPin);
float mv = ( val/1024.0)*5000;
float cel = mv/10;
float farh = (cel*9)/5 + 32;

Serial.print("TEMPRATURE = ");
Serial.print(cel);
Serial.print("*C");
Serial.println();
delay(1000);
if (cel >= 20)
{
  digitalWrite(12, HIGH); //Establishes backward direction of Channel A
  digitalWrite(9, HIGH);   //Disengage the Brake for Channel A
  analogWrite(3, 123);   //Spins the motor on Channel A at half speed
  delay(5000);
  analogWrite(3, 0);   //Spins the motor on Channel A at half speed
  
}
if (cel <= 25)
{
  digitalWrite(12, LOW); //Establishes backward direction of Channel A
  digitalWrite(9, LOW);   //Disengage the Brake for Channel A
  analogWrite(3, 123);   //Spins the motor on Channel A at half speed
  delay(5000);
  analogWrite(3, 0);   //Spins the motor on Channel A at half speed
}
}

Mais j'aimerai que les volets se ferment et souvre que une seul fois (de sorte que si la température dépasse les 25 degrès alors que les volet sont fermé, le moteur s'arrete de tourner et ne recommence plus a tourner), mais je ne sais pas comment mis prendre.
Merci pour toute l'aide que vous m'avez déjà fourni !

il faut mémoriser l'état des volets dans une variable (un boolean voletsOuverts; par exemple). si vous les avez fermés (voletsOuverts  = false; au moment de la commande moteur) déjà alors pas la peine de les fermer de nouveaux...

Merci JML pour ton aide je pense que cela peux fonctionné, je vais essayer et je vous informe du résultat.

Bonjour,
J'ai suivi un tutoriel pour utiliser le boolean et j'ai donc fait mon code avec, de sorte que si la temperature est supérieur a 20 degrès et que les volets sont fermé : les volets s'ouvre (et inversement).
Voici mon code :

int val;
int tempPin = 1;
boolean voletsOuverts;

void setup()
{
 pinMode(12, OUTPUT); //Initiates Motor Channel A pin
 pinMode(9, OUTPUT); //Initiates Brake Channel A pin
Serial.begin(9600);

}
void loop()
{
  val = analogRead(tempPin);
float mv = ( val/1024.0)*5000;
float cel = mv/10;
float farh = (cel*9)/5 + 32;

Serial.print("TEMPRATURE = ");
Serial.print(cel);
Serial.print("*C");
Serial.println();
delay(1000);
if ((cel >= 20)&&(voletsOuverts = false))
{
  digitalWrite(12, HIGH); //Establishes backward direction of Channel A
  digitalWrite(9, HIGH);   //Disengage the Brake for Channel A
  analogWrite(3, 123);   //Spins the motor on Channel A at half speed
  delay(5000);
  analogWrite(3, 0);   //Spins the motor on Channel A at half speed
  voletsOuverts = !voletsOuverts;
}
if ((cel <= 25)&&(voletsOuverts = true))
{
  digitalWrite(12, LOW); //Establishes backward direction of Channel A
  digitalWrite(9, LOW);   //Disengage the Brake for Channel A
  analogWrite(3, 123);   //Spins the motor on Channel A at half speed
  delay(5000);
  analogWrite(3, 0);   //Spins the motor on Channel A at half speed
  voletsOuverts = !voletsOuverts;
}
}

Pouvez vous me dire si cela fonctionnerai ?

Alors ?

Alors......

.... &&(voletsOuverts [color=red]=[/color] false)
...
.... &&(voletsOuverts [color=red]=[/color] true)

J-M-L:
Alors......

.... &&(voletsOuverts [color=red]=[/color] false)

...
.... &&(voletsOuverts = true)

Cela veut dire que mon code est juste ?

:o :o Non.... sinon je n'aurais pas mis du rouge...

Relisez bien et demandez vous comment on effectue une comparaison et comment on écrit une affectation de valeur à une variable

(cela dit vous pouvez faire simple puisqu'un booléen est conceptuellement une valeur de vérité, vous pouvez juste écrire juste if (voletsOuverts) {...} et c'est tout à fait correct et lisible)