besoin d'aide programmation C - C - Programmation
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
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+,
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 :
|
Non compilé, et j'ai pas tout saisi de ce que tu veux faire.
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;
}
}