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