Bonjour à tous,
Je cherche depuis plusieurs jours une solution à mon problème et je ne trouve pas, alors je me tourne vers vous.
Je cherche à laisser passer quand je le souhaite un signal binaire (a priori 4MHz) depuis une entrée de ma carte Arduino vers une sortie, mais pouvoir aussi faire d'autres choses en même temps.
Le problème c'est que si je fais digitalWrite(sortie, digitalRead(entrée)), ça marche, mais que je ne peux rien faire d'autre.
Et j'ai essayé de profiter du fait que l'Arduino Uno était à 16MHz pour faire "rapidement" d'autres choses entre 2 impulsions, mais ça ne marche pas, car je pense que pas mal d'impulsions sont loupées par l'Arduino. La solution serait sans doute d'avoir une horloge qui tourne à 100 ou 200MHz, mais naturellement ça n'est pas possible.
Est-ce que vous savez comment ça peut se faire?
J'aimerais éviter le rajout de transistors externes.
Y a-t-il une solution interne à l'Arduino pour faire ça? En gros utiliser les composants internes au microcontroleur pour relier quand je le souhaite l'entrée à la sortie, et pouvoir faire autre chose?
Merci pour cette réponse, oui tu as bien compris.
En fait je cherche juste à laisser passer le signal quand je le souhaite, et parfois à le bloquer.
C'est un signal issu du microcontroleur d'une chaîne Hifi, et je veux grâce à l'Arduino simuler l'appui sur les touches de commande (=simples boutons poussoirs ou molette à tourner).
Sachant que le microcontroleur fonctionne à 4MHz, et que c'est un signal qu'il s'envoie à lui-même: en fonction de l'arrivée ou non du signal sur ses broches il en déduit si oui ou non on a appuyé sur le bouton. Mais pour certains boutons (sortes de molettes à tourner), il teste en permanence la position : il regarde à chaque cycle si elle est par exemple en position 3, et si elle passe ensuite en 4 ça veut dire "Preset UP", et si elle passe en 2 ça veut dire "Preset DOWN". Du coup il faut à chaque impulsion lui envoyer un signal en retour, sinon il fait n'importe quoi
Tu parles de portes NAND, j'avais aussi pensé à des transistors : Arduino sur la base pour la commande, entrée sur l'émetteur, base sur le collecteur?
Mais je n'ai pas testé car je me demandais si avec l'Arduino seule c'était possible : du genre : "connecte l'entrée numérique à la sortie numérique et reste comme ça jusqu'à ce que je te dise d'arrêter". Ça existe ce genre de fonctionnement sur Arduino?
Un transistor seul c'est de l'analogique, il va falloir gérer.
Si tu as un vrai signal numérique le plus simple c'est de prendre un circuit numérique qui est conçu pour.
Bonne sensibilité et remise en forme du signal.
Tu dois en trouver par paquet de 5 boîtiers pour moins de 1€ (en fait tu payera principalement l'emballage).
Pour la fréquence du signal une 74HCxxx est plus que très largement suffisante.
Mais je n'ai pas testé car je me demandais si avec l'Arduino seule c'était possible : du genre : "connecte l'entrée numérique à la sortie numérique et reste comme ça jusqu'à ce que je te dise d'arrêter". Ça existe ce genre de fonctionnement sur Arduino?
Bonsoir
+1 à ce stade avec l’approche de 68tjs
tu semble avoir déjà fait un peu "un peu de bonne retro" sur ton projet ? 8)
C'est "souvent" plus simple ici d'exposer "+/- exhaustivement, l’état d'avancement de tes travaux"
Le plus gros risque pour toi , à cette période sur le forum est d’être "catalogué" ... STIxy
Mais je n'ai pas testé car je me demandais si avec l'Arduino seule c'était possible : du genre : "connecte l'entrée numérique à la sortie numérique et reste comme ça jusqu'à ce que je te dise d'arrêter". Ça existe ce genre de fonctionnement sur Arduino?
Pour info, oui ça existe. Avec les fonctions "type" arduino, ce serait trop lent pour ressortir du 4 MHz, mais moyennant une manip avec un DMA (direct memory address) sur un uc qui a cette option et suffisamment rapide, ça se fait.
Dans ton cas cependant, la solution hardware proposée plus haut semble toutefois bien mieux adaptée .
Pour répondre à Artouste j'ai essayé de faire sommaire pour ne pas écrire une tartine trop indigeste!
Je cherche à rajouter le Bluetooth et à pouvoir le commander via les boutons de ma chaîne : c'est pour ça que j'ai besoin d'intercepter le signal quand j'en ai besoin, ou à le laisser passer quand je n'en ai pas besoin. C'est totalement basique en terme de complexité du code à écrire (si appui sur play, transmission de play, si apppui sur FWD et Bluetooth en marche, transmission de FWD au Bluetooth...), en dehors de ce problème sur lequel je suis tombé
Par contre je n'ai pas compris ce qu'était un STIxy?
Comme tu peux le constater nous sommes envahi en ce moment par des lycéens de terminale STI2D qui ont un projet coefficient 7 ou 8 pour le bac.
En France tous les ans c'est quelques dizaines ou centaines de milliers de lycéen STI2D qui passent le bac sans qu'on ait rien à leur reprocher, ils sont sérieux et ils travaillent.
Nous ne faisons pas de stigmatisation sur les STI2D en général mais il se trouve qu'une minorité d'entre eux envahi ce forum de mars à juin parce que ce sont des branleurs qui cherchent à ce qu'on fasse leur travail.
Cerise sur le gâteau cette année en plus d'être branleurs ils sont menteurs et ils essayent de se planquer en faisant croire à des projets personnels mais comme ils sont encore plus nuls que nuls nous le détectons assez facilement.
Actuellement un gros noyau de contributeurs ne supporte plus, d'où au mieux une absence de réponce et au pire des réactions un peu raides.
C'est pour éviter la confusion qu'il est préférable de bien décrire son projet.
Ah ok je comprends mieux.
Moi je suis aussi un nul mais malheureusement je ne suis pas un STI puisque je commence à avoir quelques cheveux blancs
Merci en tout cas à tous pour les réponses, j'ai regardé ce qu'étaient les DMA, et en ai conclu que ce n'était pas ni sur mon Arduino ni sur un Attiny.
Donc effectivement, même si ça m'embête de rajouter des composants externes, je vais plutôt partir sur des portes logiques, plutôt que de me lancer dans l'étude de uC ultraperformants dont je n'utiliserai qu'un millionième des capacités pour mon application basique.