récupérer valeur digits d'un autre appareil

ca ne serait pas 8 segments? il ne faut pas oublier le . (point) qui sert aussi.

La solution 2 me conviendrait, mais là c'est une grosse partie de plaisir en perspective et des nuits blanches

sinon pour la solution 1
ca pourrait s'afficher via un tableau pour faire simple avec l'état du segment comme une led pour reformer le chiffre, c'est ca?
ca pourrait donner ca

----- segment 1
----- segment 4
----- *

j'ai souder les fils afin de récupérer sur le digits le + si un segment est affiché ou pas.

par contre je ne vois pas comment récupérer ca sur le pin.
je cherche du coté des sensors car j'ai du courant qui arrive sur le digit.

a moins que vous n'ayez une astuce toute bete.

infobarquee:
j'ai souder les fils afin de récupérer sur le digits le + si un segment est affiché ou pas.

par contre je ne vois pas comment récupérer ca sur le pin.
je cherche du coté des sensors car j'ai du courant qui arrive sur le digit.

a moins que vous n'ayez une astuce toute bete.

bonsoir
Vous vous etes piqué où ?
en sortie du 74HC595 ou sur l'afficheur lui meme
et donc après les R de limitations ?
Vous avez quoi comme tension au multimètre entre GND lorsqu'un segment est allumé ?
il y a de grandes chances qu'injecté sur une input de l'arduino cela soit correctement vu comme un niveau haut

je me suis repiqué sur l'afficheur avec 1.80v quand un segment est allumé.

j'ai essayé pas mal de truc comme si c'était un bouton poussoir par exemple, mais rien, il affiche toujours BP rouge OFF/

const int bpRouge=3; // Constante pour la broche 3
const int APPUI=HIGH; // constante pour tester état BP

pinMode (bpRouge,INPUT); // Broche bpRouge configurée en entrée
void loop(){

void loop(){

if (digitalRead(bpRouge)==APPUI) 
{
Serial.print("Appui BP rouge / ");
}else{
Serial.print("BP rouge OFF/ ");
}

infobarquee:
je me suis repiqué sur l'afficheur avec 1.80v quand un segment est allumé.

Alors pas bon
il aurait fallu vous repiquer directement sur les sorties du 595 (avant la sortie des réseaux de résistances)
voir la photo commentée plus haut

je vais donc tout refaire, car je pensais que 1.80 aurait pu suffire a mettre en état HIGH.
ca risque d'etre rock'& roll pour souder.

sinon le code est bon pour ce que je veux faire?

après quelques recherches le 74HC595 serait un compteur en fait.
si je me connecte sur l'entrée série, comment faire pour connaitre la valeur du compteur au moment ou je me connecte?
compteur en 2 choix :
0--7
0. ----- 7.

après quelques recherches le 74HC595 serait un compteur en fait.

le 74HC595 n'est pas un compteur mais un registre à décalage utilisé içi en entrée de bits en série et sortie des 8 bits en parallèle.

On fait entrer les 8 bits l'un après l'autre en les 'poussant' un par un grace à la première entrée d'horloge. (en bleu sur l'image jointe)
Au bout de 8 coups d'horloge (bleue) les 8 bits étant bien à leur place on recopie tout ça en sortie par un coup unique d'horloge (rouge)
Ce systeme de double registre permet de ne pas voir en sortie le 'bazar' de l'accumulation progressive des bits dans le premier registre.

si je me connecte sur l'entrée série, comment faire pour connaitre la valeur du compteur au moment ou je me connecte?

Pour reconstituer l'état de l'afficheur comme l'a indiqué Artouste à partir de l'entrée 'serial in' il faut donc recréer dans l'Arduino (par hard ou par soft) un registre à décalage à entrée série et sortie parallèle.
La contrainte vient du fait de la synchronisation nécessaire avec l'horloge de décalage série du HC595
Le plus simple est à mon avis de présenter cette horloge sur une entrée d'interruption en mode 'RISING' , chaque interruption externe étant traitée pour reconstituer les octets. Le traitement serait simplifié si l'entrée Reset du HC595 est utilisé dans l'appareil.....en surveillant cette entrée il serait plus facile de 'recaler' le comptage des coups d'horloge.

Une solution 'hard' est envisageable SI le bus SPI n'est pas du tout utilisé : le hardware SPI du microcontrolleur est (entre autres modes de fonctionnement) un registre à décalage série->parallèlle parfait !

595.jpg

autant pour moi pour le compteur :frowning:

par contre pour le reste de la réponse, comment dire....... I am in the ramasse totale :blush:

si je comprends bien, je me repique sur :

  • entrée série pin 14 vers arduino pin ?
  • clock pin 11 vers arduino pin ?
  • masse

après chaque impulsions recues sur le 14 et 11, l'arduino pourra afficher le chiffre (0.1.2.3.4.5.6.7 et 0 1 2 3 4 5 6 7) tout seul en décodant ce qu'il aura recu, ou faut il lui mettre un algo pour décoder les infos?

je sais élu boulet du jour :roll_eyes:

infobarquee:
autant pour moi pour le compteur :frowning:

par contre pour le reste de la réponse, comment dire....... I am in the ramasse totale :blush:

si je comprends bien, je me repique sur :

  • entrée série pin 14 vers arduino pin ?
  • clock pin 11 vers arduino pin ?
  • masse

après chaque impulsions recues sur le 14 et 11, l'arduino pourra afficher le chiffre (0.1.2.3.4.5.6.7 et 0 1 2 3 4 5 6 7) tout seul en décodant ce qu'il aura recu, ou faut il lui mettre un algo pour décoder les infos?

je sais élu boulet du jour :roll_eyes:

bonjour
Ce qui est important c'est de persévérer dans ses envies. :smiley:
il faut y aller calmement step by step XD

L'option de la recup serie et développée par Al1fch est une option, mais option qui nécessite de "bien savoir quoi et comment coder".
Vous avez peut être aussi évacué rapidement celle de simplement vous repiquer sur les sorties // avant les R de limitation .
là le niveau logique sera tenu et directement "lisible" sur une entrée arduino.
= plus de hard, moins de soft
déjà et si vous en avez la possibilité , testez V sur le pin1 (celui le plus proche du point) et pin (.2.3.4.5.6.7.15 ) du 595 lorsque le(s) segment est ON.
Vous aviserez ensuite de la méthode la plus ... "adéquate" pour récupérer la valeur.
Le pont DP (Dot Point) est utilisé ? vous l'avez vu allumé ? , si oui, il signifie quoi ?

algo obligatoire pour l'option 'série soft' ... qui n'est pas la seule (l'économie de fils 3ou 4 au lieu de 8 ou 9 se paie par un décodage plus lourd côté Arduino )

Deux tâches à assurer :

-1) reconstituer des paquets de 8 bits dans un flot permanent de bits arrivant en série
-2) déterminer le chiffre décimal affiché par le biais d'un tableau de correspondance bit/segment

Pour la première tâche la fonction shiftin() (que je n'ai pas encore pratiqué) parait intéressante à ce niveau.....La contrainte est de pouvoir déterminer le début d'un paquet de 8 !!
Avec un simple cablage "2 fils + masse" ça ne me parait possible que s'il y a par exemple un temps mort franc entre deux paquets de 8 bits. Sinon il faut faire du "3 fils + masse" et prendre en compte la pin 10 du 595 qui est peut être 'pulsée' avant chaque nouvel envoi d'un paquet de 8...

La seconde implique d'avoir auparavant établi la liste des 8 sorties du HC595 et des segments correspondants gérés (a,b,c,d,e,e,f,g + point décimal).... ça peut etre fait en suivant les pistes du circuit, à l'ohmmetre. On peut également par élimination obtenir cette liste en comparant les états de sorties du HC595 pour les chiffres 1 et 7 affichés, les chiffres 2 et 3 .....
çi joint la notice des HS-2181 A et B

7_segment_display_labeled.png

HS2181A.jpg

@Artouste
oui le DP est utilisé pour une deuxieme partie de programmation évitant par la même occasion un 2eme digit.
ca se décrit par
1ere tranche : 0-->7
2eme tranche : 0. -----> 7. (qui équivaudrait à 10-->17)

sinon j'essaye de peser le pour et le contre des 2 solutions
souder les 8 pins = travail de haute voltige vu la disposition des pins
souder 2-3 pins = travail de prog hardu

j'ai relevé l'état des connexions sur le digit, mais pas sur le hs, sauf celle a coté du U5 sur la photo qui est la masse.
je vais prendre 5mn pour faire le schéma des pins par rapport au chiffre.

infobarquee:
@Artouste
oui le DP est utilisé pour une deuxieme partie de programmation évitant par la même occasion un 2eme digit.
ca se décrit par
1ere tranche : 0-->7
2eme tranche : 0. -----> 7. (qui équivaudrait à 10-->17)

sinon j'essaye de peser le pour et le contre des 2 solutions
souder les 8 pins = travail de haute voltige vu la disposition des pins

C'est du SO16 (pas de 1.27mm) avec un peu de rigueur et du matériel correct ça ne pose pas vraiment de probleme.
un bon fer, de la bonne soudure,du flux, de la nappe en 1.27 bien denudée, une bonne loupe .
Vous pouvez aussi décaper les pistes vernies et vous repiquer dessus plutôt que directement sur la sortie du chip
de toutes façons que ce soit 3,4 ou 8 points, le probleme reste quasi le même
exemple

je viens de trouver un montage qui parle de shiftin justement

Shiftin() = fausse piste ... désolé :blush:
Avec cette fonction l'entrée des bits en série se fait au rythme d'une horloge créée par l'Arduino
Ce n'est pas le cas içi ou il faut suivre le rythme d'une horloge externe pour récupérer un à un les 8 bits

tant pis.
pour le moment, j'attends une loupe pour souder.
le pc toute la journée a programmer, ca tue les yeux ]:slight_smile:

bonjour,
voila, les soudures sont faites, ca change du tig/mig que je maitrise un peu mieux :grin:
reste a connecter tout ca sur l'arduino.
mais avant vérifier qu'il y ait assez de tension pour passer en HIGH et LOW.

EDIT :
j'ai bien du jus sur les fils 4.82v, ce qui devrait suffir pour mettre en HIGH je pense.
votre avis?

après 2h30 d'essais, je bloque.

l'affichage serial me renvoit bien un état HIGH ou LOW avec un segment pour tester, mais je n'arrive pas a afficher le résultat sur ma page web.

const int bpRouge=4; // Constante pour la broche 4  
boolean bprouge1 = false; //LED status flag
void setup(){
pinMode (bpRouge,INPUT); // Broche bpRouge configurée en entrée
  //enable serial datada print  
  Serial.begin(115000);
}

void loop(){
          if (analogRead(bpRouge)==HIGH) 
         {
            bprouge1 = true;
         }else{
            bprouge1 = false;
          }

declaration connexion client
...
....

          if (bprouge1)
          {
            client.println("<font color='red' size='5'>ON"); 
          } 
          else {
            client.println("<font color='green' size='5'>OFF");  
          }  
}

infobarquee:
après 2h30 d'essais, je bloque.

l'affichage serial me renvoit bien un état HIGH ou LOW avec un segment pour tester, mais je n'arrive pas a afficher le résultat sur ma page web.

const int bpRouge=4; // Constante pour la broche 4  

boolean bprouge1 = false; //LED status flag
void setup(){
pinMode (bpRouge,INPUT); // Broche bpRouge configurée en entrée
  //enable serial datada print 
  Serial.begin(115000);
}

void loop(){
          if (analogRead(bpRouge)==HIGH)
         {
            bprouge1 = true;
         }else{
            bprouge1 = false;
          }

declaration connexion client
...
....

if (bprouge1)
          {
            client.println("ON");
          }
          else {
            client.println("OFF"); 
          } 
}

Je ne comprend pas pourquoi vous lisez un état haut ou bas avec l'instruction analogRead, la logique voudrait que ce soit digitalRead.
(voir example Button dans l'IDE)