Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Revision 0:af7247fcd74c, committed 2014-06-15
- Comitter:
- arn_beauclair
- Date:
- Sun Jun 15 15:32:04 2014 +0000
- Commit message:
- ADS_technologie
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/Etat.cpp Sun Jun 15 15:32:04 2014 +0000
@@ -0,0 +1,74 @@
+#include "mbed.h"
+
+extern char Etat_Precedant, Etat;
+extern int compteur_Demarreur,compteur_Tempo;
+extern char Demarreur, moteur, accelerateur;
+DigitalOut led0(LED1);
+DigitalOut led1(LED2);
+DigitalOut led2(LED3);
+
+
+void Etat_machine() {
+ switch(Etat){
+ ///Etat normal
+ case 0:
+ compteur_Demarreur=compteur_Tempo=0;
+ Demarreur=moteur=accelerateur=0;
+ led0=led1=led2=0;
+ break;
+ // detection d'une batterie faible
+ case 1:
+ compteur_Tempo=0;
+ Demarreur=moteur=accelerateur=1;
+ led0=1;
+ led1=led2=0;
+ break;
+ //compteur du demarreur finit
+ case 2:
+ compteur_Demarreur=compteur_Tempo=0;
+ Demarreur=0;
+ moteur=accelerateur=1;
+ led0=led2=0;
+ led1=1;
+ break;
+ //detection fort courant
+ case 3:
+ compteur_Demarreur=0;
+ Demarreur=moteur=accelerateur=0;
+ led0=led1=1;
+ led2=0;
+ break;
+ // temporisation lors du fort courant fini
+ case 4:
+ compteur_Tempo=0;
+ Demarreur=moteur=1;
+ accelerateur=0;
+ led0=led1=0;
+ led2=1;
+ break;
+ // fin du demarreur pour un fort courant
+ case 5:
+ compteur_Demarreur=compteur_Tempo=0;
+ Demarreur=accelerateur=0;
+ moteur=1;
+ led1=0;
+ led0=led2=1;
+ break;
+ // freinage
+ case 6:
+ compteur_Demarreur=compteur_Tempo=0;
+ Demarreur=moteur=0;
+ accelerateur=3;
+ led0=0;
+ led1=led2=1;
+ break;
+ // freinage lors de la recharge de la batterie
+ case 7 :
+ compteur_Demarreur=compteur_Tempo=0;
+ Demarreur=0;
+ moteur=1;
+ accelerateur=3;
+ led0=led1=led2=1;
+ break;
+ }
+}
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/Etat_Futur.cpp Sun Jun 15 15:32:04 2014 +0000
@@ -0,0 +1,126 @@
+#include "mbed.h"
+
+extern float TemporisationDemarreur,commandeLimite,comptDem,vitesseMin;
+extern int courantLim;
+extern int tensionMin, tensionMax;
+extern char Etat_Precedant, Etat;
+extern int compteur_Demarreur,compteur_Tempo;
+extern char demInfini,infini;
+DigitalIn frein(p12);
+AnalogIn Volts(p20);
+AnalogIn Ampere(p17);
+
+void Etat_Futur() {
+ switch (Etat_Precedant){
+ //Etat normal
+ case 0:
+ if(frein.read()==1)
+ Etat=6;
+ else{
+ if(Volts.read()*100<=tensionMin)
+ Etat=1;
+ else{
+ if(Ampere.read()*48>=commandeLimite)
+ Etat=3;
+ else
+ Etat=0;
+ }
+ }
+ break;
+ // detection d'une batterie faible
+ case 1:
+ if(frein.read()==1)
+ Etat=6;
+ else{
+ if(int(Volts.read()*100)>=(tensionMax))
+ Etat=0;
+ else
+ {
+ if((infini==0)&&(compteur_Demarreur>=(TemporisationDemarreur*10)))
+ Etat=2;
+ else
+ Etat=1;
+ }
+ }
+ break;
+ //compteur du demarreur finit
+ case 2:
+ if(frein.read()==1)
+ Etat=7;
+ else{
+ if(int(Volts.read()*100)>=(tensionMax))
+ Etat=0;
+ else
+ Etat=2;
+ }
+ break;
+ //detection fort courant
+ case 3:
+ if(frein.read()==1)
+ Etat=6;
+ else{
+ if(Ampere.read()*48>=commandeLimite)
+ Etat=0;
+ else
+ {
+ if(compteur_Tempo>=(comptDem*10))
+ Etat=4;
+ else
+ Etat=3;
+ }
+ }
+ break;
+ // temporisation lors du fort courant fini
+ case 4:
+ if(frein.read()==1)
+ Etat=6;
+ else{
+ if(Ampere.read()*48>=commandeLimite)
+ Etat=0;
+ else
+ {
+ if((infini==0)&&(compteur_Demarreur>=(TemporisationDemarreur*10)))
+ {
+ if(int(Volts.read()*100)<=(tensionMin))
+ Etat=2;
+ else
+ Etat=5;
+ }
+ else
+ Etat=4;
+ }
+ }
+ break;
+ // fin du demarreur pour un fort courant
+ case 5:
+ if(frein.read()==1)
+ Etat=6;
+ else{
+ if(Ampere.read()*48>=commandeLimite)
+ Etat=0;
+ else
+ {
+ if(int(Volts.read()*100)<=(tensionMin))
+ Etat=2;
+ else
+ Etat=5;
+ }
+ }
+ break;
+ // freinage
+ case 6 :
+ if(frein==0)
+ Etat=0;
+ else
+ Etat=6;
+ break;
+ // freinage lors de la recharge de la batterie
+ case 7:
+ if(frein==0)
+ Etat=0;
+ else
+ Etat=7;
+ break;
+ }
+}
+
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/Initialisation.cpp Sun Jun 15 15:32:04 2014 +0000
@@ -0,0 +1,25 @@
+#include "mbed.h"
+
+extern float TemporisationDemarreur,commandeLimite,comptDem,vitesseMin;
+extern int courantLim;
+extern int tensionMin, tensionMax;
+extern char Etat;
+extern int compteur_Demarreur,compteur_Tempo;
+extern int tour;
+extern char demInfini,infini;
+
+void Initialisation() {
+ //mise des valeur par défaut de tout les reglage et a 0 les variables
+ tensionMin = 75;
+ tensionMax = 80;
+ courantLim=40;
+ TemporisationDemarreur=3;
+ commandeLimite=60;
+ comptDem=0;
+ vitesseMin=0;
+ Etat=0;
+ compteur_Demarreur=0;
+ compteur_Tempo=0;
+ infini=0;
+ tour=0;
+}
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/biblio_prog.h Sun Jun 15 15:32:04 2014 +0000 @@ -0,0 +1,6 @@ +void Initialisation(void); +void boucle(void); +void Etat_Futur(void); +void Etat_machine(void); +void Sortie(void); +void compteur_vitesse (void); \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/boucle.cpp Sun Jun 15 15:32:04 2014 +0000
@@ -0,0 +1,26 @@
+#include "mbed.h"
+#include"biblio_prog.h"
+
+extern float compt,commandeLimite,comptDem,vitesseMin;
+extern int courantLim;
+extern int tensionMin, tensionMax;
+extern char Etat_Precedant, Etat;
+extern int compteur_Demarreur,compteur_Tempo;
+extern char demInfini,infini;
+extern int tour,tour_par_minute;
+DigitalOut led3(LED4);
+
+void boucle(){
+ led3=!led3; //indication visuel pour verifier le fonctionnement de la boucle
+ Etat_Precedant=Etat; //enregistremant de l'etat actuelle
+ Etat_Futur(); //appel d'une fonction permettant de naviguer entre les etat
+ //test pour les compteurs
+ if((Etat==1)||(Etat==4))
+ compteur_Demarreur=compteur_Demarreur++;
+ if(Etat==3)
+ compteur_Tempo=compteur_Tempo++;
+ tour_par_minute=tour*6000; //calcul des tours par minute
+ tour=0; //remise a zero du compte tour
+ Etat_machine(); //appel de la fonction configurant les sorties par rapport a l'etat actuel
+ Sortie(); //applications des sorties
+}
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/compteur_vitesse.cpp Sun Jun 15 15:32:04 2014 +0000
@@ -0,0 +1,8 @@
+#include "mbed.h"
+
+extern int tour;
+
+void compteur_vitesse (){
+ tour++;
+ //taille du pneu 130/70-12
+}
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp Sun Jun 15 15:32:04 2014 +0000
@@ -0,0 +1,98 @@
+#include "mbed.h"
+#include"biblio_prog.h"
+
+float TemporisationDemarreur,commandeLimite,comptDem,vitesseMin;
+int courantLim;
+int tensionMin, tensionMax;
+char Etat_Precedant, Etat;
+int compteur_Demarreur,compteur_Tempo;
+int tour,tour_par_minute;
+char Demarreur, moteur, accelerateur;
+char demInfini, infini,Erreur;
+Ticker timer;
+InterruptIn event (p8);
+Serial pc(USBTX, USBRX);
+
+int main() {
+ event.rise(&compteur_vitesse); //creation d'une interruption lors d'un front montant du port 8
+ Initialisation(); //Initialisation des capteur
+ printf("\n\t\tbonjour\n\n"); // creation d'un message en dirrection d'un ordinateur
+ timer.attach(&boucle,0.1); //creation d'une interruption en fonction d'un timer 0,1ms
+ while(1) {
+ //calibrage tension
+ do{
+ do
+ {
+ printf("\nLa tension minimum de la batterie:\n\n");
+ scanf("%d",&tensionMin);
+ printf("\t\t%d",tensionMin);
+ if((tensionMin < 0)||(tensionMin>=100))
+ printf("\n***Erreur: valeur tension minimum erronner***\n");
+ }while((tensionMin < 0)||(tensionMin>=100));
+ printf("\nLa tension maximum de la batterie:\n\n");
+ scanf("%d",&tensionMax);
+ printf("\t\t%d",tensionMax);
+ if((tensionMax <= tensionMin)||(tensionMax>100))
+ printf("\n***Erreur: valeurs tensions erronners***\n");
+ }while((tensionMax <= tensionMin)||(tensionMax>100));
+ //calibrage courant
+ do{
+ printf("\nLa limite de courant:\n\n");
+ scanf("%d",&courantLim);
+ printf("\t\t%d",courantLim);
+ if((courantLim < 0)||(courantLim>=100))
+ printf("\n***Erreur: valeur courrant erronner***\n");
+ }while((courantLim < 0)||(courantLim>=100));
+ //calibrage demarreur
+
+ do{
+ printf("\nLa duree du demarreur est elle infini :\n Y si oui, N si non\n\n");
+ Erreur=getchar();
+ demInfini= getchar();
+ printf("\t\t%c",demInfini);
+ if((demInfini==0x59)||(demInfini==1111001))
+ infini=1;
+ else
+ {
+ if((demInfini==0x6E)||(demInfini==0x4E))
+ {
+ infini=0;
+ do{
+ printf("\nLa duree du demarreur :\n\n");
+ scanf("%f",&TemporisationDemarreur);
+ printf("\t\t%f",TemporisationDemarreur);
+ if((TemporisationDemarreur<0)||(TemporisationDemarreur>30))
+ printf("\n***Erreur: valeur du demarreur Erronner***\n");
+ }while((TemporisationDemarreur<0)||(TemporisationDemarreur>30));
+ }
+ }
+ }while(((demInfini!=0x59)&&(demInfini!=0x79))&&((demInfini!=0x6E)&&(demInfini!=0x4E)));
+
+ //calibrage limiteur de commande
+ do{
+ printf("\nLa limite de la commande poignee lors de la recharge:\n\n\tCommande en pourcentage\n\n");
+ scanf("%f",&commandeLimite);
+ printf("\t\t%f",commandeLimite);
+ if(commandeLimite < 0||commandeLimite>=100)
+ printf("\n***Erreur: valeur commande erronner***\n");
+ }while((commandeLimite < 0)||(commandeLimite>=100));
+ //calibrage temporisation
+ do{
+ printf("\nLa temprorisation entre la detection d'un fort courant et le lancemant du moteur essence:\n---Par defaut elle est a zero---\n\n");
+ scanf("%f",&comptDem);
+ printf("\t\t%f",comptDem);
+ if((comptDem < 0)||(comptDem>=100))
+ printf("\n***Erreur: valeur est erronner***\n");
+ }while((comptDem < 0)||(comptDem>=100));
+ //calibrage vitesse minimum
+ do{
+
+ printf("\nLa vitesse minimum devant etre atteint avant de lancee le moteur essence pour un fort courant:\nPar defaut elle sera de zeros\n\n");
+ scanf("%f",&vitesseMin);
+ printf("\t\t%f",vitesseMin);
+ if((vitesseMin < 0)||(vitesseMin>=100))
+ printf("\n***Erreur: valeur est erronner***\n");
+ }while((vitesseMin < 0)||(vitesseMin>=100));
+ printf("\n\n\t\tFin des reglage\n\n");
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Sun Jun 15 15:32:04 2014 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/mbed/builds/0b3ab51c8877 \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sortie.cpp Sun Jun 15 15:32:04 2014 +0000
@@ -0,0 +1,18 @@
+#include "mbed.h"
+
+extern float tensionMin, tensionMax,courantLim,compt,commandeLimite,comptDem,vitesseMin;
+extern char Demarreur, moteur, accelerateur;
+AnalogIn commande(p19);
+DigitalOut signal_demarreur(p21);
+DigitalOut signal_moteur(p22);
+AnalogOut signal_commande(p18);
+
+void Sortie(){
+ signal_demarreur=Demarreur;
+ signal_moteur=moteur;
+ //test pour la limitation de vitesse
+ if((accelerateur==1)&&(commande.read()>=(commandeLimite/100)))
+ signal_commande=(commandeLimite/100);
+ else
+ signal_commande=commande.read();
+}
\ No newline at end of file