besoin d'aide programmation C

besoin d'aide programmation C - C - Programmation

Marsh Posté le 22-02-2012 à 12:14:44    

Bonjour,
Pour un projet je doit faire un compteur à bille, et la solution à été de passer par un arduino, donc du language C. J'en est jamais fait avant, mais j'ai réussi à faire un programme que le logiciel valide, mais en vrais sa ne fonctionne pas.
 
J'arrive bien à allumer pinActOuveture mais sa ne compte pas , pouvez vous m'aider s'il vous plait :(
 
Voici le programme
 
//Capteurs
boolean cptPresenceBille = false;
 
//Boutons de commande
boolean btnDcy = false;
boolean btn50 = false;
 
//Grafcet
boolean etp00 = false;
boolean etp10 = false;
boolean etp11 = false;
boolean etp12= false;
boolean etp40 = false;
boolean etp41 = false;
 
//Constantes
byte max50 = 5;
 
//Broches
int pinCptPresenceBille = 52;
int pinBtnDcy = 53;
int pinBtn50 = 47;
int pinActOuveture =46;
 
//variables internes
int compteur;
 
void setup()
{
//entr??es
pinMode(pinCptPresenceBille, INPUT);
pinMode(pinBtnDcy, INPUT);
pinMode(pinBtn50, INPUT);
 
//Sorties
pinMode(pinActOuveture, OUTPUT);
 
//Grafcet
etp00 = true;
digitalWrite(pinActOuveture, false);
compteur=0;
}
void loop()
{
//lecture des entr??es
btnDcy = digitalRead(pinBtnDcy);
btn50 = digitalRead(pinBtn50);
 
cptPresenceBille = digitalRead(pinCptPresenceBille);
 
if (btnDcy && etp00)
{
etp10 = true;
etp00 = false;
}
if (etp10 && btn50)
{
etp11 = true;
etp10 = false;
etp40 =true;
}
if (etp11 && compteur >= max50)
{
etp12 = true;
etp11 = false;
etp40 =false;
}
if (etp12)
{
etp12 = false;
etp10 = true;
}
if (etp40 && cptPresenceBille)
{
etp41 = true;
etp40 =false;
}
if (etp41)
{
compteur++;
}
if (etp41 && !cptPresenceBille)
{
etp41 = false;
etp40 =true;
}
 
//Traitement étapes
if (etp11)
{
digitalWrite(pinActOuveture, true);
}
 
if (etp12)
{
digitalWrite(pinActOuveture, false);
compteur=0;
}
}

Reply

Marsh Posté le 22-02-2012 à 12:14:44   

Reply

Marsh Posté le 22-02-2012 à 17:50:56    

SVP répondez moi :( :(
 
au pire sa serais bien de me donner un exemple de compteur en langage C

Reply

Marsh Posté le 23-02-2012 à 11:43:30    

UP

Reply

Marsh Posté le 23-02-2012 à 11:58:30    

Si tu allais voir sur le topic arduino de la section discussion, tu auras peut être plus de réponses.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 28-02-2012 à 00:42:18    

Bon, je suis pas expert en Arduino, et j'ai pas trop envie de reconvertir ton "C-grafcet" (c'est un choix ou imposé parle prof?) en Grafcet
A supposer que tu veux compter des billes
Je verrai bien quelque chose du genre :
 

Code :
  1. int nombre_billes=0;
  2. loop()
  3. {
  4. boolean BilleAvant = false;
  5. boolean BilleEncours = digitalRead(pinCptPresenceBille);
  6. if (BilleEncours && !BilleAvant)  nombre_billes++;
  7. BilleAvant=BilleEncours; //a priori la bille reste longtemps devant le capteur, on vérifie qu'il y a eu un "trou" avant
  8. if (nombre_bille>=xx)
  9. {
  10. //valeur max atteinte
  11. }
  12. }


 
Non compilé, et j'ai pas tout saisi de ce que tu veux faire.


---------------
I guess my real ennemy is me
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed