VIDEO
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
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 «