Interruption avec une entrée analogique (Uno)

Bonjour,

Je cherche à asservir le moteur à courant continu d'un tourne-disque. J'ai placé une LED et un phototransistor de part et d'autre du plateau tournant, sachant qu'il y a des trous à intervalles réguliers sur le plateau. Cela constitue donc un codeur rudimentaire.

J'aimerais incrémenter le tick du codeur à chaque fois que le phototransistor détecte un trou en utilisant une interruption. Seulement, le phototransistor est relié à une l'entrée analogique A0 et les interruptions sont liées au changement de la tension présente sur une broche numérique.

Je voulais savoir s'il existe une fonction permettant d'incrémenter le tick à chaque fois que je reçois une valeur inférieure à 200 ou s'il faut utiliser un comparateur extérieur et si oui, lequel. (J'utilise une Arduino Uno).

Pardon si ça parait évident ou si je m'exprime mal, je suis novice et "légèrement" perdue :)

hello sachant qu'un signal TTL est défini comme niveau logique bas entre 0 et 1,4 V,

et que le seuil de 200 correspond à 1V :

as tu tenté un test en raccordant ton phototransistor sur D2 ?

Votre code peut boucler et juste lire la valeur analogique et faire la comparaison - un tourne disque ça ne va pas très vite...

Pourquoi décabler vers D2 ? (a moins que ce ne soit pour bénéficier de la sous fonction int0 de D2).

1) Les pins ont toutes une fonction principale et une ou plusieurs fonctions secondaires.

2) La fonction principale de TOUTES les pins est NUMERIQUE. La mesure analogique sur A0 à A5 est une sous-fonction activée uniquement par l'appel à analogRead().

3) Sur un micro 328p TOUTES les pins disposent d'une sous fonction interruptions. Dirrecte pour D2 et D3 (int0 ou int1), indirecte sur toutes les autres y compris D2 et D3 (PCintX)

Dans "Tutoriel et cours" à la fin de la dernière page , 3eme tuto en partant de la fin il y a un tuto qui explique comment utiliser les interruptions PCINTX sur n'importe quelle broche du micro. Nota le micro de la méga n'accepte pas des interruptions sur toutes ses broches mais vu qu'il dispose déjà d'un nombre impressioonant de broches ce n'est pas gênant.

Je vais essayer l'interruption en interprétant le signal analogique comme un signal logique, sans décabler puisque c'est censé fonctionner. Le tuto sur les interruptions a éclairci certains points.

Au cas où ça ne marche pas, je tente avec la broche d2 ou même j'utilise une boucle avec analogRead... J'avais exclu cette option parce que je voulais pouvoir accélérer la vitesse de rotation du tourne-disque jusqu'à 100 tours/min, mais c'est vrai que même là il est peu probable que ce soit trop rapide.

Merci de vos réponses!

Il y a une autre solution : le comparateur analogique du 328p.

Il existe un tuto dans la rubrique tuto :

http://forum.arduino.cc/index.php?topic=238952.0