Go Down

Topic: stepper (Read 955 times) previous topic - next topic

soumapika

bonjour
je veux commander un moteur pas a pas qui fait 48 pas par tour qui fera seulement 2 pas a un temps précis !
j'ai utilisé une carte RTC et j'ai réussi a faire tourner le moteur au temps voulu
mais a partir de cet instant , le moteur se met a tourner sans arrêt
quelqu'un peut m'aider
merci

infobarquee

AUCUNE AIDE PAR MP

icare

Bonjour,
Regarde les exemples fournis avec la librairie Stepper.
2B OR NOT(2B) = FF
Arduino 1.0.5 à 1.8.5 + gEdit + Ubuntu 18.04 LTS

soumapika

#include <Stepper.h>

#include <LiquidCrystal.h>
#include <Wire.h>
#include "RTClib.h"
//pour un moteur de 200 pas par tour et brancher sur les broches 2, 3, 4, 5
Stepper moteur(48, 4, 5, 6, 7);
LiquidCrystal lcd( 1, 2, 3, 4, 5, 6);   // définition des broches RS/E/D4/D5/D6/D7


int led =13;
RTC_DS1307 RTC;

void setup()
{             
 
  pinMode(13, OUTPUT);
   Serial.begin(57600); //Démarrage de la communication
  Wire.begin(); //Démarrage de la librairie wire.h
  RTC.begin(); //Démarrage de la librairie RTClib.h
   lcd.begin(16,2); // initialisation de l'afficheur type soit ici 16 caractères et 2 lignes
  delay(10); // délai 10 ms pour l'initialisation
  lcd.clear(); // rafraichissement de l'afficheur
  delay(10); // délai de rafraichissement
  moteur.setSpeed(10);
 
  }

void loop()
{

DateTime now = RTC.now();  // Get the current time
DateTime heureRTC;
heureRTC = RTC.now();
 
int8_t heureAlarme=10;
int8_t minuteAlarme=36;

  Serial.print(now.year(), DEC);
  lcd.print(now.year(), DEC);
  Serial.print('/');
  lcd.print('/');
  Serial.print(now.month(), DEC);
  lcd.print(now.month(), DEC);
  Serial.print('/');
  lcd.print('/');
  Serial.print(now.day(), DEC);
  lcd.print(now.day(), DEC);
  Serial.print(' ');
  lcd.print(' ');
  Serial.print(now.hour(), DEC);
  lcd.print(now.hour(), DEC);
  Serial.print(':');
 lcd.print(':');
  Serial.print(now.minute(), DEC);
 lcd.print(now.minute(), DEC);
  Serial.print(':');
  lcd.print(':');
  Serial.print(now.second(), DEC);
  lcd.print(now.second(), DEC);
  Serial.println();
lcd.println();
  delay(1000);

if (heureRTC.hour()==heureAlarme && heureRTC.minute()==minuteAlarme)
{
 
   Serial.println("Declenchement de l'alarme");
   digitalWrite(13,HIGH);
   moteur.step(5);

  }
  else {
    Serial.println("Pas d'alarme");
    digitalWrite(13,LOW);
   
  }
  }

icare

#4
Apr 23, 2015, 11:55 am Last Edit: Apr 23, 2015, 11:59 am by icare
Re,
Un début de réponse

Si ton moteur tourne tout le temps c'est que ta condition IF est toujours vrai.
2B OR NOT(2B) = FF
Arduino 1.0.5 à 1.8.5 + gEdit + Ubuntu 18.04 LTS

infobarquee

balise code, merci.
ton moteur, vu le code, doit tourner pendant une minute de 10h36:00 à 10;36:59
AUCUNE AIDE PAR MP

Go Up