comptage d'objets par minute ( aide )

bonjour
Désolé Serge si je t'ai offensé ,car ce n'était pas le but ,et ce n'est pas non plus parce que tu es nouveau sur ce forum que tu n'as pas les connaissances .pour ma part je bricole (et j'arrive à me débrouiller quand meme) .disons que j'aurai du poser la question differemment (comment faire un comptage (cellule ,IR etc ...) dans un timer de 60 s )
pour fdufnews ,je ne cherche pas à faire un instrument de haute précision (pour info) car comme je l'ai cité (un chrono en main et comptage par visu )ce n'est pas précis ,je m'accorde une erreur (+ ou - 2 boites) ,j'ai pensé au Sharp (E R infrarouge) facile à mettre en place 3 fils.(je l'ai testé à l'arrache ça me parait correcte)
effectivement la plupart des boites sont cylindriques mais il y a un temps d'arret (remplissage boites) et elles sont guidées (ne peuvent pas etre de travers),je pense avoir tout dit .
merci à tous pour votre implication
William

récapitulatif
Pardon , il y a quand mème une précision ( le temps , 1 mn ) ::slight_smile:
@+

Salut Jean-François
Chose promise chose du, j'ai donc utilisé ton code et apporté quelques modifs (j'avoue que j'ai un peu bricolé ) mais ça a l'air de tenir la route ,comme je ne possède pas de Devree (conditioneuse) chez moi ;D ,j'ai simulé le passage des boites devant le capteur ,j'ai pris ma paluche ;D
il me reste la gestion de l'ecran pour le déclenchement et la remise à zero du comptage (ça va le faire,c'est à ma portée ::slight_smile: ) voici le code ,dans le cas ou tu trouve une solution + simple ou un bug.

[edit]long oldtime=0;
long time=60000; // 60000 millisecondes = 1 minute
int boite=0;
int ledPin = 9; // LED connected to digital pin 9
int sensorPin = 1; // value read from the sensor
int outputValue = 0; // value output to the PWM (analog out)

void setup(){
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
attachInterrupt(0,comptage,RISING); // capteur sur digital pin 2
}

void loop(){
/* la bricole est ici comme le capteur est plutot destiné à la distance
j'ai utilisé la sortie digit 9 pour le déclenchement de l'interruption
si il y a une autre solution ,je suis tout Ouïe
*/

int analogValue = analogRead(sensorPin);
outputValue = map(analogValue, 250, 900, 0, 255);
if (outputValue<0)
digitalWrite(ledPin, LOW);
else
digitalWrite(ledPin, HIGH);
// wait 20 milliseconds for the analog-to-digital converter
delay(20);

oldtime = millis();
// Serial.println(oldtime/1000);// afficher le timer en secondes pour le test horloge

if (oldtime>=time)
{
detachInterrupt(0);
}
}

void comptage(){
if (digitalRead(0))
{
boite++;
Serial.println(boite);// afficher le compteur boite(s)
}
}[/edit]

Je dis peut-être une bétise, mais si tu travailles avec la pin 9 en entrée, tu n'a pas besoins d'utiliser attachInterrupt(), et tu fais ta boucle de comptage directement dans le if avec l'analog Read().

Ensuite, fais deux boléens :start et comptage, que tu mets à false en les déclarant.
Lorsque tu appuies sur le bouton pour démarrer le comptage, ça te mets "start" à true.
Si start est à true, lors du début du passage d'une boite "comptage se mets à true et tu initialises la valeur du chrono dans la foulée et tu remets "start" à false (le chrono ne doit s'initialiser que si start est à true). Ainsi , si une boite est déjà engagée (à moitié) lors de "start", le chrono commencera au début de la boite suivante.
Lorsque la minute est passée tu remets "comptage" à false.

Il faudra certainement corriger certain truc dans ma logique.... ::slight_smile:

Salut Jean-François

la pin 9 est une sortie :wink: , la bidouille est là justement ,comme le capteur délivre une valeur ANA variable je l'ai connecté sur une entrée ana et fais une magouille afin qu'il déclenche une sortie digit qui elle meme est connectée à l'entrée (interrupt ) pour ne pas faire ce que m'a proposé fdufnews (qui a raison dans son raisonnement) ,je me suis imposé mon propre cahier des charges ;D
j'ai modifié ton code car le timer fonctionnait en permanence et déclenché par l'interruption .

Il faudra certainement corriger certain truc dans ma logique....

;D ;D moi aussi.
je suis à des km de l'optimisation de code ;D les programmeurs doivent s'arracher les cheveux,le principale c'est que ça fonctionne ,n'est-ce pas ???
@+
william

j'ai modifié ton code car le timer fonctionnait en permanence et déclenché par l'interruption .

Tu as eu bien raison, car c'était un jet comme ça juste pour se donner une idée, même la minute n'est pas une minute.... ;D ;D

le principale c'est que ça fonctionne ,n'est-ce pas ???

D'accord avec toi, d'autant que certaines erreurs peuvent t'amener sur des pistes..... inattendues et révélatrices de solutions :wink:

Quelques questions par rapport à l'écran que tu vas utiliser.
Est-ce que tu peux le gérer directement avec l'Arduino ?
Comment est l'affichage (fluidité, rapidité...) ?
Est il facile à utiliser ?

J'ai fait quelques recherches sur Gougle et je n'ai pas trouvé trop trouvé d'info avec l'Arduino.

absolument cher ami ,pour cela je tiens à te remercier car cela m'a permis de me donner un coup de pouce , je ne vais pas remettre une couche ,mais ,personnellement c'est ce que je recherche sur un forum !
l'echange d'idée .
comme je suis loin d'avoir inventé l'eau chaude et le fil à couper le beurre ,une petite aide ça fais plaisir :wink:

par contre la suite risque d'etre plus complexe ( comme je l'ai cité ) je veux faire un ptit appareil multi usage (dont un tachimetre ) et là au secour ;D ;D

l'ecran est genial ,tu peux faire plein de chose avec ,il est autonome , les echanges d'infos ce font par liaison rx/tx classique ,il possede un lecteur de cartes SD ,tu peux t'en servir comme cadre photo ,reveil , carte audio également integrée ,par contre il faut investire dans une petite carte aditionnelle ,elle possede des entrées/sorties .

voici le lien:

voici Jean-François un lien sur une de mes applications utilisant cet écran et XBEE .
AlienArea51 étant mon vrai pseudo :wink: pour info :wink:

à bientot

Y sont bizarre tes liens, si je clique dessus ça donne ça :

ftp://http//www.youtube.com/watch?v=l_NSDk5WjeA

Si je comprend bien, il faut programmer le graphisme coté écran, et pour l'instant je n'ai pas vu d'appli Mac pour ça :-?

au temps pour moi JF ,je me suis planté ,tu peux regarder maintenant

et pour répondre à ta question ,si tu possede un IMAC ou Macbook ,tu utilise VMware ou Parallels desktop ,

J'ai encore pas de Mac Intel chez moi :wink:

alors ça c'est ballot :o :o

tu dois bien avoir un PC qui traine avec XP ?????
;D ;D ;D ;D
ou alors il va falloir que tu investisse comme moi dans un IMAC 27" I7
;D ;D

Naaaan.... je suis Mac depuis 17 ans, j'ai jamais eu de PC :wink:

ce qui serait pas mal c'est de savoir ce qui sort de l'interface série /USB et de faire une petite appli avec Processing ::slight_smile:

je te comprend cher ami ,mac il y a rien de tel ;D (juste pour faire raler les autres ;D ;D ;D ;D j'adorre dire ça , et je connais déjà les réflexions qui vont etre mise) ;D ;D ;D

tu veux dire programmer l'ecran à l'aide de processing ??? car si c'est le cas ,chapeau bas , et interressant :wink:

tu veux dire programmer l'ecran à l'aide de processing ??? car si c'est le cas ,chapeau bas , et interressant

C'est bien ce que je veux dire, mais pour ça il faudrait que je sache ce qui est envoyé au port série de l'écran lorsqu'on le programme, et les fonctions dispo sur l'interface PC.

Suis pas sur d'y arriver, mais ça peut être marrant d'essayer.

c'est clair ,il y a certainement d'autres possibilité ( visual c++, ou autres )
par contre ,pour obtenir des infos sur ces écrans ,si tu as regardé le site , c'est une autre paire de manche , ou alors consulter les données constructeur de la puce .
mais il faut admettre que c'est un peu frustrant quand on fait l'acquisition de matos electronique programmable sur PC ,quand on possede un Mac.
heureusement que j'ai VMware ,car sinon c'est la MER... :-/ :cry: