Re: Module Arduino
Posté : 31 janv. 2016, 18:48
				
				T'as oublié les femmes, recommences depuis le début !  
			
Forum MG automobiles : conseils techniques, sorties et petites annonces sur le plus grand forum dédié aux automobiles MG : MGF et TF, MG6, MGB et tous les modèles MG anciens et modernes. MG Expert
https://forum-mg.eu/phpBB2/

je suis pas pour les histoires, tu me connais, mais Rachel risque de pas aimer quand je vais lui direOldtimer42 a écrit :T'as oublié les femmes, recommences depuis le début !

Au rique de passer pour un vieux réac, je note que dans les 2 cas ça fait tout aussi mal!la sodomie, les impôts,

ça dépendMG O1->B69 a écrit :Au rique de passer pour un vieux réac, je note que dans les 2 cas ça fait tout aussi mal!la sodomie, les impôts,
 de quel côté du manche tu es
 de quel côté du manche tu es  
 
Bonjour,korrignu a écrit :héhé ! Salut les gens !
Si tu commences à mettre tes doigts dans l'arduino, tu pourrais songer à ce qu'il faut pour monter une sonde pour un tripmaster DIY
...
 
 Code : Tout sélectionner
// ------------------------------------------------------------------------------------------
// declaration partie poussoirs pilotage moteur
//-------------------------------------------------------------------------------------------
// arrêt moteur par bouton poussoir sur pin 7
#define Capt7 7
int etatCapt7;
int etatprecCapt7=HIGH;
// ------------------------------------------------------------------------------------------
// declaration partie capteur inductif de rotation
//-------------------------------------------------------------------------------------------
#define Capt2 2 //num entree numerique (num 2) pour la sortie capteur inductif rotation (fil noir)
int vitessecomptage=0; //vitesse de rotation entree tr/mn avec capt 2 impuls/tr
int compteCapt=0; //compteur impulsions capteur
unsigned long T0=0; // date de debut de comptage des impulsions
unsigned long currentms; // date en cours dans la boucle principale
long interval=1000; // duree de comptage des impulsions en ms  (1s)
unsigned long Tcapt=0; //date du dernier changement d'etat du capteur
long intervalcapt=5; // tempo en ms (5ms) pour eviter le rebond de comptage capteur
unsigned long currentcaptms; //date en cours dans la routine d'interruption de lecture du capteur
// ------------------------------------------------------------------------------------------
// declaration partie moteur (pour carte MotorShield)
//-------------------------------------------------------------------------------------------
const int 
PWM_A   = 3,    //constante sortie vitesse moteur A
DIR_A   = 12,   //constante canal moteur A
BRAKE_A = 9,    //constante canal frein A
SNS_A   = A0,   //constante sens rotation moteur A
consignemoteur = 195; //consigne de vitesse moteur 0-255
int vitessemoteur=0;  //consigne moteur courante
int etatmoteur= 0 ; // 1 si phase de mise en route, 0 si phase stop;
// ------------------------------------------------------------------------------------------
// declaration partie Vitesse et Transmission
//-------------------------------------------------------------------------------------------
const int tpkTransmission = 814;  //tours/Km du cable compteur
int vitessevoiture=0; //vitesse calculée voiture
// ------------------------------------------------------------------------------------------
// Sous-programme d'initialisation (reset ou mise sous tension carte)
//-------------------------------------------------------------------------------------------
void setup() {
  // Configuration da la sortie A MotorShield (moteur)
  pinMode(BRAKE_A, OUTPUT);  // Brake pin pour canal A
  pinMode(DIR_A, OUTPUT);    // Direction pin pour canal A
  // Configuration rotation moteur
  digitalWrite(BRAKE_A, LOW);  // brake LOW = frein desactive
  digitalWrite(DIR_A, LOW);   // direction LOW = rotation moteur sens - (sens horaire vu cote arbre moteur)
  // Configuration input (capteur rotation)
  pinMode(Capt2,INPUT_PULLUP); // Capteur declare sur entree numerique num 2
  attachInterrupt(0,Compter,FALLING); //declaration du sous-programme fonctionnant sur interruption port 0 (=entree num2) sur front descendant
  // Configuration boutons poussoirs pilotage moteur
  pinMode(Capt7,INPUT_PULLUP);
  // affichage moniteur sorie pour debuggage
  Serial.begin(9600);
  Serial.println("Motor shield DC motor Test:\n");
}
// ------------------------------------------------------------------------------------------
// Sous-programme de calcul de la vitese en fonction de l'info capteur de rotation
//-------------------------------------------------------------------------------------------
int calculvitesse(int entree) {
  float result;
  double vcpt;
  vcpt = float(entree)*60/float(tpkTransmission);
  result = vcpt;
 return int(result);  
}
// ------------------------------------------------------------------------------------------
// Sous-programme de comptage des impulsions capteur, fonctionne sur interruption
//-------------------------------------------------------------------------------------------
void Compter() 
{
  currentcaptms = millis();
  if(currentcaptms-Tcapt > intervalcapt) compteCapt ++ ;
  else {}; 
  Tcapt = millis();
  }
// ------------------------------------------------------------------------------------------
// Sous-programmes de modification de la vitesse du moteur
//-------------------------------------------------------------------------------------------
void lancemoteur(){
  etatmoteur =1; 
  while (vitessemoteur < consignemoteur)
  {
    vitessemoteur ++;
    analogWrite(PWM_A,vitessemoteur);     // envoi consigne de vitesse au moteur
    if (vitessemoteur < 20) {delay(10);} else {delay(50);}
  }
}
void stopmoteur(){
  etatmoteur = 0;
  while (vitessemoteur >0)
  {
    vitessemoteur --;
    analogWrite(PWM_A,vitessemoteur);     // envoi consigne de vitesse au moteur
    delay(50);
  }
}
// ------------------------------------------------------------------------------------------
//--------------------------------- PGM PRINCIPAL -------------------------------------------
// ------------------------------------------------------------------------------------------
void loop() {
  currentms = millis();
  //--- action sur front descendant bouton poussoir -----
  etatCapt7 =digitalRead(Capt7);
  if ((etatCapt7 == LOW) and (etatprecCapt7 == HIGH))
  {
    etatprecCapt7 = LOW;
    if (etatmoteur == 0) {lancemoteur();} else {stopmoteur();} 
  }
  if ((etatCapt7 == HIGH) and (etatprecCapt7 == LOW)) {etatprecCapt7 = HIGH;}
  // -----------------------------------------------------  
  if(currentms-T0 > interval)
  {
    // ------Calculs vitesse ---- 
    vitessecomptage = 30 * compteCapt;  // en tr/mn (2 impulsions/tr)
    vitessevoiture = calculvitesse(vitessecomptage); 
    Serial.print("vitesse comptage (tr/mn) : ");   
    Serial.println(vitessecomptage);   
    Serial.print("Vitesse voiture : ");
    Serial.println(vitessevoiture);
    // ----------------------------
    compteCapt=0; 
    T0 = millis();
  }
}




 
 
