Pages: 1 [2]   Go Down
Author Topic: Gestion cycle d'un airsoft gun + projet chrony  (Read 3400 times)
0 Members and 1 Guest are viewing this topic.
Ales
Offline Offline
Faraday Member
**
Karma: 39
Posts: 3626
Do or DIY
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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:
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++;
}

Logged


Offline Offline
Newbie
*
Karma: 0
Posts: 18
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Ales
Offline Offline
Faraday Member
**
Karma: 39
Posts: 3626
Do or DIY
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 smiley
Logged


Offline Offline
Newbie
*
Karma: 0
Posts: 18
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 ?
Logged

Ales
Offline Offline
Faraday Member
**
Karma: 39
Posts: 3626
Do or DIY
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 smiley-wink (si bien sûr le phototransistor se bloque)
Logged


Offline Offline
Newbie
*
Karma: 0
Posts: 18
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Offline Offline
Newbie
*
Karma: 0
Posts: 18
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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).
Logged

0
Offline Offline
Full Member
***
Karma: 0
Posts: 185
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 ?
Logged

pas taper... sauf application de l'article 35 ...

Offline Offline
Newbie
*
Karma: 0
Posts: 18
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 18
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 !
Logged

Pages: 1 [2]   Go Up
Jump to: