Catégories
Arduino Automate programmable industriel capteur Commande des moteurs électronique moteur Projets Arduino Projets électroniques

GRAFCET | Arduino #34: La Commande IR d’un Curseur de Caméra Multimodes – Test du système complet V

Objectifs

  • Savoir faire la commande multimodes d’un automate
  • Savoir utiliser le module IR
  • Test des capteurs à ultrasons
  • Savoir mesurer la distance avec un capteur à US
  • Savoir lire le code d’une télécommande IR
  • Savoir commander un moteur pas à pas
  • Savoir changer la vitesse d’un moteur PAP
  • Savoir changer le sens de rotation d’un moteur PAP
  • Comprendre le principe de fonctionnement de la commande IR
  • Etc.

L’objectif du tuto est de valider le fonctionnement du système complet. Voir le tuto pour les détails techniques.

Schéma synoptique

schéma de principe arduino commande IR - Test liaison IR

Grafcet du Système

Grafcet du système

Extrait du Code Arduino

Le code complet sera disponible à la fin de la série.

#include "IRremote.h"
#define NumEtapes   9
#define NumIn       4
#define NumOut      4
#define NumTrans    15
#define NumInOut    2
#define VSeuil      100
#define N           256
#define dmin_mm     15
#define Trig_out_pin_g  2 
#define Trig_out_pin_d  3 
#define Echo_in_pin_g   4  
#define Echo_in_pin_d   5 
#define Rx_pin          11 

bool Etapes[NumEtapes]; 
word Inputs[NumIn]; 
word InOuts[NumInOut]; 
word Outputs[NumOut]; 
bool Trans[NumTrans]; 

// Rx
IRrecv irrecv(Rx_pin);           
decode_results results;  

void setup() 
{
  // Affichage 
  Serial.begin(115200); 
  
  // Initialisation des étapes & les E/S
  InitStateIO(Etapes, NumEtapes, Inputs, NumIn,  Outputs, NumOut);
}

void loop() 
{ 
  // Test des capteurs US
  /*
  float disg=getDistmm(Trig_out_pin, Echo_in_pin_1);
  float disd=getDistmm(Trig_out_pin, Echo_in_pin_2);
  Serial.print(disg); Serial.print("\t"); Serial.println(disd);
  delay(1000); return; 
  */
  
  // Tst Télécommande 
  /*
  int touche= getMode(Rx_pin);
  if (touche!=-1)Serial.println(touche);
  return; 
  */

  // Tst Moteur PAP
  /*
  setMPAP(pinout_mpap, 0, 2, 100); delay(2000); 
  setMPAP(pinout_mpap, 1, 10, 100); delay(2000); 
  return; 
  */

  // 1. Activation des sorties 
  SetOutputs(Etapes,  Outputs); 
  
  // 2. Lecture des entrées   
  GetInputs(Inputs);
  Serial.print(Inputs[0]); Serial.print(", \t"); 
  Serial.print(Inputs[1]); Serial.print(", \t");
  Serial.print(Inputs[2]); Serial.print(", \t");
  Serial.print(Inputs[3]); Serial.print("-- \t");
  Serial.print(InOuts[0]); Serial.print(", \t"); 
  Serial.print(InOuts[1]); Serial.print("-- \t");
  
  // 3. Calcul des transitions 
  ComputeTrans(Etapes,  Trans);
  
  // 4. Mise à jour des étapes 
  SetupStates(Etapes,  Trans); 
  for(int i=0;i<NumEtapes-1; i++)Serial.print(Etapes[i]);
  Serial.println(Etapes[NumEtapes-1]); //delay(100); 
}

Obtenir le livre « Codage en C du GRAFCET avec ARDUINO« 

Laisser un commentaire

L'Avenir de l'Électronique : Des Projets Innovants Vous Attendent !