Go Down

Topic: Projet Terminale STI Caddie Motorisé (Read 402 times) previous topic - next topic

Lmi_Cycle

Bonjour, dans le cadre de mon projet de terminale, j'ai a charge d'automatiser un chariot de course, plus précisément gérer la vitesse et l'identification de l'utilisateur grâce un module RFID. Bien sur je ne demande pas de me réaliser le programme nécessaire, mais j'aurais besoin d'une petite aide. :smiley-sad:

Voici le programme pour la lecture de la puce, avec une led:
Code: [Select]

#include <SoftwareSerial.h>

int led8 = 8;
char incoming_char=0;

//Déclaration d'une chaine de caractères (type String) appelée commandID qui servira à stocker la valeur de la puce lue
String commandID;

// borne 2 pour Rx et 3 pour DX de la liasion série du lecteur RFID
SoftwareSerial  parametre_RFID(2, 3);

void setup()
{
  parametre_RFID.begin(9600);            // vitesse en baud de la liaison série du lecteur RFID   
  Serial.begin(9600);                    // vitesse en baud de la liaison série USB micro
  pinMode(led8, OUTPUT);
  lcd.begin(16, 2);
}

 
void loop()
{
  // On capture les caractères émis par le module TAG vers l'Arduino et on les affiche sur le PC
  if( parametre_RFID.available())
  {
    incoming_char =  parametre_RFID.read(); //capture des caractères lus sur le tag
    commandID += incoming_char; // stockage des caractères reçus.   
    Serial.print(incoming_char); // affichage sur la console (PC).
  }

  // On analyse la chaine de caractères reçue pour voir si elle contient le numéro du tag
  // si oui, on allume la led8
  if (StrContains(commandID, "0700822C8F26"))
  {
digitalWrite(led8, HIGH); //allumer L1
delay(1000); // attendre 1 seconde
digitalWrite(led8, LOW); // Eteindre L1
delay(2000); // attendre 2 seconde
    commandID = "0700822C8F26";
  }
}


Code: [Select]

// fonction pour rechercher si une chaine de caractères (str) contient la chaine (strfind) pour fonction StrContains de comparaison
// return = 1 si oui
// return = 0 si non
char StrContains(String str, String strfind)
{
  char index1 = 0;
  char index2 = 0;

  if (strfind.length() > str.length()) { 
    return 0;
  }
  while (index2 < str.length()) {
    if (str[index2] == strfind[index1]) {
      index1++;
      if (strfind.length() == index1) {
        return index2;
      }
    }
    else {
      index1 = 0;
    }
    index2++;
  }
  return 0;
}




Mais voila le problème, je dois intégrer mon programme principal après la vérification du code de la puce mais rien ne marche.

Voici le programme :
Code: [Select]

#define B_POUSSOIR 2
#define RELAIS 7
#include <Wire.h>
#include "rgb_lcd.h"

rgb_lcd lcd;

//Déclaration des variables
int memoireBp = LOW;
int etatBp = LOW;
int etatRelais = LOW;
int MoteurPin = 11;     
int analogPot = A0;   
int val = 0; 
 
void setup()
{
  pinMode(B_POUSSOIR, INPUT);
  pinMode(RELAIS, OUTPUT);
  digitalWrite(RELAIS, etatRelais);
  lcd.begin(16, 2);
  pinMode(MoteurPin, OUTPUT);   
  pinMode(analogPot, INPUT);
  Serial.begin(9600);
}
void loop()
{
  //Récupération de l'état actuel du BP
  etatBp = digitalRead(B_POUSSOIR);
 {
//Commande Vitesse MOTEUR 
val = analogRead(analogPot); 
 
Serial.println(val);
val = map(val, 0, 1023, 0, 255);
analogWrite(MoteurPin, val);
}

  if(etatBp != memoireBp && etatBp == HIGH)
  {
    //On inverse l'état du relais
    if(etatRelais == HIGH)
    {
      etatRelais = LOW;     
    } else
   
    {
      etatRelais = HIGH;
      Commande_ECRAN();
    }
 
    //On écrit l'état du relais
    digitalWrite(RELAIS, etatRelais);
  } 
 
  //Conservation de l'état du bouton
 
    memoireBp = etatBp;
}

Code: [Select]

void Commande_ECRAN()
{
lcd.print("CADDIE PRET");
delay (2000);
lcd.clear();
}


J'aimerais que lors de la détection de la puce, tout ce qui se trouve dans la boucle loop s'éxecute, merci d'avance pour votre aide.

Go Up