Go Down

Topic: Gestion cycle d'un airsoft gun + projet chrony (Read 3793 times) previous topic - next topic

B@tto

J'aurais fait autrement parce que deja tu n'as pas besoin de l'analogRead (il sert à rien) et ensuite avec CHANGE il va surement faire l'interruption à la montée et à la descente de chaque pic.

Donc plus un truc du genre :
Code: [Select]

long Depart;
int Flag=0;

void setup(){
Serial.begin(57600);
attachInterrupt(0,detect,FALLING);
}

void loop(){
if (Flag==1){
Flag++;
Depart=micros();
}


if (Flag==3){
Depart=Depart-micros();
Flag=0;
Serial.println(Depart);
}

}

void detect(){
Flag++;
}

Blog électronique : http://battomicro.wordpress.com/
Photographie : www.interactive-celebration.fr

Ju-de-tomate

Je ne comprend pas ton programme.

Je vois pas comment je peux faire sans analogread.
Ce que j'ai compris : j'ai une led IR qui sera allumé en permanence avec en fasse un capteur IR. Quand une bille devant la tension va chuter sur le capteur. J'ai donc besoin de l'analogread pr détecter la chute de tension. Quand la chute de tension est détecter j'enregistre le temps dans une variable. J'attends la détection sur l'autre capteur IR pou enregistrer cette deuxième valeur de temps. La différence entre ses 2 valeurs de temps me donne la vitesse vu que j'ai la distance.

B@tto

Deja, c'est un phototransistor, donc pas d'IR = état bloqué = pic de tension et non une chute.

Mon programme fait ça : l'interruption a lieu quand l'entrée passe de HIGH à LOW, autrement dit, quand une bille va passer et générer le pic de tension, il va détecter le front descendant (on pourrait très bien le faire avec le front ascendant). un principe de base avec les interruptions c'est d'en faire le moins possible et le plus rapidement possible. C'est pour celà que j'incrémente une variable, Flag, et qu'à chaque valeur de flag correspond une étape. En détail ça donne :


Flag = 0

Une bille passe, interruption, Flag = 1

Flag = 1 donc aquisition du temps de départ, Flag = 2

Nouveau pic, Flag = 3

Flag = 3 donc acquisition du temps final, calcul, envoi du résultat par le port série, réinitialisation de Flag

Bille suivante :)
Blog électronique : http://battomicro.wordpress.com/
Photographie : www.interactive-celebration.fr

Ju-de-tomate

Ok, je comprend.

Je vais tester ca. J'attends juste de recevoir les led IR.
Par contre pour branché les phototransistors (j'ai commandé ca :  IRM_3638 Infrared Receiver 38Khz)
Tu parlais d'état High et Low pour l'entrée j'en déduis que tu les branches sur une entrée numérique. Je peux les brancher directement ? Est-ce que le faisceau sera entièrement coupé par la bille ?
Est-ce que l'entrée va bien passé de High à Low quand une bille passera ?

B@tto

Une règle de base est de toujours mettre une résistance, quelque soit l'entrée ou la sortie. Un µC comme l'Atmega ne sert qu'à traiter de l'information et à envoyer des ordres (grosso-modo hein) c'est pas un étage de puissance. Donc les courant mis en jeu sont relativement faible.

Dans ton cas il faut juste suivre un état logique, donc entrée digitale en effet. Après oui effectivement, est-ce que le le transistor va bien completement se bloquer ... ça je peux pas le dire. Si c'est pas le cas, faudra juste faire une petite amplification (avec un amplificateur opérationnel c'est très simple à faire).


A l'entrée tu auras un pic, donc une transition low to high, puis high to low ;) (si bien sûr le phototransistor se bloque)
Blog électronique : http://battomicro.wordpress.com/
Photographie : www.interactive-celebration.fr

Ju-de-tomate

L'oscilo numérique qu'on avait à l'école me manque...  :smiley-roll:

Ju-de-tomate

J'ai du mal a faire fonctionner mon IRM_3638 Infrared Receiver 38Khz

Il est tout le temps saturé ( 5V => 1024 sur mon entré analogique).

taddot

essaie de mettre un filtre devant, afin de filtrer la lumière ambiante (comme sur les TV, il y a souvent un morceaux de plexi/plastique rouge ou noir devant le récepteur)

As-tu fait le test dans le noir ?
pas taper... sauf application de l'article 35 ...

Ju-de-tomate

Non j'ai pas encore fait le test dans le noir.

Les entrées digital Arduino commute pour quelle valeur ?
J'imagine qu'il y a 2 valeurs :
1 valeur pour le passage de 0 à 1
1 valeur pour le passage de 1 à 0

Ju-de-tomate

Une autre question: Est-ce qu'il y a un moyen logiciel d'écrire à l'envers sur un LCD ? Quand je dis à l'envers c'est uniquement au niveau branchement car ca m'arrangerait que les fils soient en bas à droite plutôt qu'en en haut à gauche. Donc si je prends l'afficheur LCD à l'envers il faut que j'écrive le texte à l'envers pour qu'il soit dans le bon sens !

Go Up