[Programmation] Horloge à texte pour les nuls - Page 2
Répondre à la discussion
Page 2 sur 2 PremièrePremière 2
Affichage des résultats 31 à 55 sur 55

Horloge à texte pour les nuls



  1. #31
    mag1

    Re : Horloge à texte pour les nuls


    ------

    Photo de l'électronique de l'horloge, tout y est: le plateau de support des leds, les 4 modules PCF8574+uln, le circuit carte mêre avec le picaxe et la RTC (ici une DS137), le poussoir et la prise alim 5V

    Nom : Qlock2complète.jpg
Affichages : 167
Taille : 280,5 Ko

    La suite à suivre

    MM

    -----
    Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...

  2. #32
    mag1

    Re : Horloge à texte pour les nuls

    Bonjour,

    Aujourd'hui, premier projet de face avant. Fait de photocopies sur papier calque entre deux feuilles de plexiglas.
    On voit un peu trop les leds, c'est normal, la face avant est posée dessus

    Nom : face avant1.jpg
Affichages : 161
Taille : 363,1 Ko

    MM
    Dernière modification par mag1 ; 31/03/2020 à 17h07.
    Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...

  3. #33
    invite03481543

    Re : Horloge à texte pour les nuls

    Bravo mag1 pour ton effort et ton travail

  4. #34
    mag1

    Re : Horloge à texte pour les nuls

    Citation Envoyé par HULK28 Voir le message
    Bravo mag1 pour ton effort et ton travail
    Merci pour les encouragements.
    Je soumets à la critique le dernier schéma utilisé, peu de changements
    Le montage est directement alimenté par une alim stabilisée, Il n'y a pas de régulateur, le µC est alimenté via une 5819 et découplé par 100µF //100nF.
    PWM pour alimenté les leds, modulé par une LDR et coef de proportionnalité (poussoir,8 paliers). Une 1n4148 pour compenser le passage par l'uln des autres leds.

    Pour l'instant, tout fonctionne: mise à l'heure de la RTC, resynchronisation à +/- 2mn30 après coupure, etc

    Nom : schemqlock2.JPG
Affichages : 208
Taille : 207,4 Ko

    MM
    Dernière modification par mag1 ; 31/03/2020 à 21h37.
    Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...

  5. #35
    mag1

    Re : Horloge à texte pour les nuls

    Bonjour,

    Oui, bon, pas la peine de rigoler, on est bien obligé de prendre ce que l'on a sous la main.
    Le problème, c'est que l'impression laser sur calque n'est pas opaque. Même avec deux épaisseurs, ça ne vaut pas une découpe du même nom.

    Nom : en boite.jpg
Affichages : 177
Taille : 235,5 Ko

    J'ai acheté du cuivre 1/10 de mm sur papier, beau rouleau.., mais le cuivre se plisse quand on le déroule...dommage. Je vais quand même essayer d'imprimer dessus et de le passer au perchlo... pour voir.

    MM
    Dernière modification par mag1 ; 04/04/2020 à 16h56.
    Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...

  6. #36
    invite03481543

    Re : Horloge à texte pour les nuls

    As-tu essayé avec une feuille blanche classique?

  7. #37
    mag1

    Re : Horloge à texte pour les nuls

    Citation Envoyé par HULK28 Voir le message
    As-tu essayé avec une feuille blanche classique?
    Je peux essayer, mais je doute que cela donne un meilleur résultat.
    L'idéal serait un masque opaque, je pense à une feuille cuivre de 1/10, sans frisures, bombe verni UV, insolation, gravure perchlo ou HCL...pas gagné.
    Je suis preneur d'idées...

    MM
    Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...

  8. #38
    invite03481543

    Re : Horloge à texte pour les nuls

    Et pourquoi pas un PCB simple face en 4/10 en gravure anglaise?

    J'ai fait faire une cotation pour voir, ça te revient à 60 balles port compris, PCB noir.
    Pour 5 pièces vu que c'est leur minimum.
    Images attachées Images attachées  
    Dernière modification par HULK28 ; 04/04/2020 à 22h02.

  9. #39
    invite03481543

    Re : Horloge à texte pour les nuls

    Si des fois tu étais intéressé je peux te faire le "routage" des lettres avec tes dimensions.

  10. #40
    mag1

    Re : Horloge à texte pour les nuls

    Citation Envoyé par HULK28 Voir le message
    Si des fois tu étais intéressé je peux te faire le "routage" des lettres avec tes dimensions.
    Merci, pour l'instant, je passe commande d'une bombe de positiv20. Avec l'expérience, j'espère dérouler ce qui me reste de cuivre autocollant sur une plaque de plexi, sans frisure cette fois.
    Parce que l'impression directe sur cuivre avec la laser, même sans frisures, ça marche pas,(ben oui, j'ai essayé ...) le toner fond bien au début de la feuille, plus à la fin, le cuivre doit refroidir le rouleau du four.
    Je ne sais pas où ni comment thjazi39 fabrique ses faces avant, mais ça n'était pas sa préoccupation

    MM
    Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...

  11. #41
    mag1

    Re : Horloge à texte pour les nuls

    Je retiens en tout cas l'idée de la fraiseuse cnc. Reste à savoir où je pourrais faire çà.

    MM
    Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...

  12. #42
    Janpolanton

    Re : Horloge à texte pour les nuls

    Bonjour,
    Très bonne idée le PCB mais pourquoi pas faire graver directement un masque de prototypage.

    Ils le proposent chez JLCPCB

  13. #43
    jak66

    Re : Horloge à texte pour les nuls

    Bonjour,
    Il y a ce site, pas très cher.

    C'est un autre "fabricant" de cette horloge qui l'a utilisé.
    Et je suis en train d'en faire une suivant son modèle.

    Jacques

  14. #44
    mag1

    Re : Horloge à texte pour les nuls

    Citation Envoyé par jak66 Voir le message
    Bonjour,
    Il y a ce site, pas très cher.

    C'est un autre "fabricant" de cette horloge qui l'a utilisé.
    Et je suis en train d'en faire une suivant son modèle.

    Jacques
    Bonjour,

    C'est une belle réalisation, proche de celle de HULK

    Oui, il y a les entreprises de signalétique qui peuvent faire des bandeaux publicitaires autocollants, j'en avais vu un quand mon fils à fait le 4LTrophy (2008)
    C'est effectivement une bonne piste.

    MM
    Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...

  15. #45
    invite03481543

    Re : Horloge à texte pour les nuls

    Astucieux le coup de l'affichage des secondes en se servant des lettres....

  16. #46
    mag1

    Re : Horloge à texte pour les nuls

    Citation Envoyé par HULK28 Voir le message
    Astucieux le coup de l'affichage des secondes en se servant des lettres....
    Oui, c'est vrai, mais pas à la portée de ma version. J'avais bien penser au MAX7219, mais pas suffisant avec 64 leds.
    MM
    Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...

  17. #47
    mag1

    Re : Horloge à texte pour les nuls

    Bonjour,

    J'ai repris ma qlock.
    L'idée du max6955 est bonne, mais chère, 15 à 20 euros et en cms, pas pratique. Mais on peut trouver deux modules MAX7219 pour pas cher et ça donne des idées....
    Celle en cours se porte bien, il a juste fallu mettre au point la mise à l'heure à partir de son affichage pour tous les cas de figures.
    Pour la finition, on peut se faire fabriquer des panneaux autocollants découpés en vinyle, 3 ou 4 pour une quinzaine d'euros.
    J'attends le vernis UV pour essayer le cuivre. Bref, il y a des solutions.
    Le code à suivre
    MM
    Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...

  18. #48
    mag1

    Re : Horloge à texte pour les nuls

    Bonjour,
    La perfectionite est une maladie handicapante, quasi incurable.

    Le pense ajouter deux signes: un + et un -, dans le coin inf gauche (y a un trou).
    Entre H-2mn30 et H- 1mn, le signe - s'allume, l'heure réelle est inférieure à l'heure affichée de plus de 1 mn. Entre H-1mn et H+1mn, on affiche rien, l'heure exacte et l'heure affichée sont à 1 mn près. Entre H+1mn et H+2mn30, le + s'allume pour indiquer que l'heure réelle est dépassée de plus de 1 mn.
    C'est pas grand chose à ajouter et ce sera une option...

    MM
    Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...

  19. #49
    jak66

    Re : Horloge à texte pour les nuls

    Bonjour,
    Je suis en train de me "battre" avec le max 6955, ayant repris l'idée de celle citée en #43. Certes, il est un peu cher, mais 2x7219, c'est aussi cher. Cependant, le 7219 semble plus simple d'emploi, du moins la datasheet est plus explicite!
    La datasheet de maxim est, je trouve, pas très claire et compréhensible. A moins que vous ayez trouvé comment adresser chaque segment de la table 2. Peut-être qu'à nos ages, nos neurones sont un peu essoufflés, et en ce moment on ne les "aère" pas beaucoup!
    J'écris le prg en C avec CCS, que je maitrise assez bien.
    La façade envisagée en PJ et le schéma sous proteus que j'utilise pour mettre au point le prg.
    J'envisage de la faire de 35x35cm pour accrocher au mur.

    A+
    Jacques
    Images attachées Images attachées

  20. #50
    mag1

    Re : Horloge à texte pour les nuls

    Citation Envoyé par jak66 Voir le message
    Bonjour,
    Je suis en train de me "battre" avec le max 6955, ayant repris l'idée de celle citée en #43. Certes, il est un peu cher, mais 2x7219, c'est aussi cher. Cependant, le 7219 semble plus simple d'emploi, du moins la datasheet est plus explicite!
    La datasheet de maxim est, je trouve, pas très claire et compréhensible. A moins que vous ayez trouvé comment adresser chaque segment de la table 2. Peut-être qu'à nos ages, nos neurones sont un peu essoufflés, et en ce moment on ne les "aère" pas beaucoup!
    J'écris le prg en C avec CCS, que je maitrise assez bien.
    La façade envisagée en PJ et le schéma sous proteus que j'utilise pour mettre au point le prg.
    J'envisage de la faire de 35x35cm pour accrocher au mur.
    Jacques
    Bon courage...j'ai pas trouvé ça très clair non plus. Voir si il y a des notes d'application.
    La solution des PCF8574 fonctionne bien, et c'est pas trop compliqué, surtout en basic de collégien. Le résultat sera exactement le même, pas de regrets...L'idée du décalage de 2mn30 est à retenir, à mon avis.
    En parlant de code, voici le dernier utilisé, Ok pour l'instant, avec option + et -

    Code:
    ;Horloge qclocktwo picaxe 14M2 MM 14/04/2020
    ;poussoir de commande sur C.3
    ;interrupt sur C.0  :comptage pulses 1Hz, Déphasage de 2mn30s
    ;Mise au point par Afficheur LCD. les commandes sont restées en commentaires.
    #picaxe 14M2
    setfreq M32		; Moins vite, ça fonctionne aussi
    symbol pous=pinC.3
    symbol eclair= C.2	;sortie PWM
    symbol LDR= C.4		;entrée LDR
    symbol buz=B.2  		;sortie buzzer pour les 3s mise à l'heure
    symbol PM=bit0		; bascule jour/nuit
    symbol midinuit=bit1
    symbol cpt1Hz=w13		;compteur pulses 1Hz
    symbol cptmax=w12		;valeur max ;300 pour 5 mn
    symbol heure=w11		;heure sous forme HHmm
    symbol lum=w10			;mesure lumière (0 à 1023)
    symbol varlum=w9		;mesure après atténuation (170 à 1023)
    symbol heuraff=w8
    symbol hh=b1			;valeut heures
    symbol mm=b2			;valeur minutes
    symbol octet4=b3		
    symbol octet3=b4		;octets pour pcf8574
    symbol octet2=b5
    symbol octet1=b6
    symbol mmbcd=b7		;valeur mn en BCD => DS3231
    symbol hhbcd=b8		;valeur HH en BCD
    symbol varb=b10		;variable locale 
    symbol dch=b11			;variable locale, chiffre des dizaines
    symbol coef=b12		;coef lumière
    symbol memomm=b13		;mémo veleur précédente des minutes
    symbol memoct2=b14
    symbol vit=i2cslow_32
    #macro transdectobcd(varb)    ;transformation de dec vers bcd
        dch=varb//10
        varb=varb/10*16        'mises au format BCD
        varb=varb+dch        	'pour enregistrement
    #endmacro
    #macro transbcdtodec(varb)		;transformation de bcd vers dec
    	dch=varb/16*10
    	varb=varb//16
    	varb=varb+dch
    #endmacro	
    	pullup %100000000000		;activation pullup sur C.3	
     	pause 1000		
    	pwmout pwmdiv64,eclair,255,1023		;PWM sur C.2 488Hz ,100%. div16 =>1955 Hz
    	read 0,coef		;lecture niveau éclairage mis en mémoire EEPROM
    	if coef=0 then
    		coef=60		;si pas en mémoire => éclairage max
    	endif		
    	octet4=0:octet3=0:octet2=0:octet1=0
    	gosub afficheur   
    	gosub affichmin
    	;serout B.0,T9600_32,(254,1,254,1,254,128,"OK")
    	If pous=0 then gosub initDS
    	gosub synchro		;suite mise àl'heure et perrte alimentation: recherche heure et mn
    ;***** boucle principale . Horloge 24H µC et réglage pour affichage sur 12H ********
    	do
    		do						;mise à l'échelle de lum à ajuster ?
    			readadc10 LDR,lum		;lecture LDR
    			lum=lum+10 max 1023	
    			if pous=0 then gosub atenu	 ;atténuation éclairage
    			varlum=lum*coef/60		
    			pwmduty eclair,varlum	;valeur % PWM (lum=0 =>0%, 1023 =>100%	
    			gosub plusmoins		  
    		loop while memomm=mm		;attente incrémentation des minutes (+5)
    		memomm=mm		;mm a changé =>mise en mémoire nouvelle valeur
    		cptmax=300		;compteur 5 mn après 1er comptage		  
    		if mm>55 then	;après 55, on repasse 
    			mm=0			;à 0
    			inc hh		;et on incrémente l'heure	
    		endif
    		if hh>23 then	;pendule H24
    			hh=0		
    		endif    
    		heure=hh*100 + mm		;heure en forme hhmm sur 24H
    		gosub convheur
    	loop
    end
    convheur:	;convertisseur H24 => H12 + nuit
    		select case heure		;passage en mode H12
    			case 0 to 0025					
    				PM=1			;pour minuit + mn
    				heuraff=heure
    			case 0030 to 1130
    				PM=0			;=> AM pour afficher AM/PM
    				heuraff=heure	;0 midi ou minuit, pasd'affichage AM/PM
    			case 1135 to 1155	; midi =>nuit sans objet
    				heuraff=heure
    			case 1200 to 1225
    				heuraff= heure-1200				
    			case 1230 to 2355
    				PM=1			;=> PM et minuit
    				heuraff=heure-1200			
    		endselect
    		;serout B.0,T9600_32,(254,192,"H24=",#heure," ","haff= ",#heuraff,"      ")	
    		gosub codheur
    		gosub codmin		
    	return
    codheur:	;******* sub codage heure , octets 4 et 3 ***************
    	midinuit=0			;par défaut
    	select case heuraff		
    		case 0035 to 0130
    			octet4=2: octet3=2
    		case 135 to 230
    			octet4=131: octet3=0
    		case 235 to 330
    			octet4=67:octet3=0
    		case 335 to 430
    			octet4=3:octet3=1
    		case 435 to 530
    			octet4=19:octet3=0	
    		case 535 to 630
    			octet4=3:octet3=8	
    		case 635 to 730    
    			octet4=35:octet3=0
    		case 735 to 830
    			octet4=3:octet3=16
    		case 835 to 930
    			octet4=3:octet3=4
    		case 935 to 1030
    			octet4=3:octet3=96
    		case 1035 to 1130
    			octet4=11:octet3=0
    		else	;reste 0 à 30 et 1135 à 1155
    			midinuit=1		;il est midi ou minuit
    			if PM=1 then		;minuit
    				octet4=4:octet3=0
    			else					;midi
    				octet4=0:octet3=192
    			endif
    	end select	
    	gosub afficheur
    	return
    
    codmin:     ;*******  sub codage minutes octets 2 et 1 ********
    	select case mm
    		case 35
    			octet2=7 : octet1=33
    		case 40
     			octet2=5 : octet1=1
    		case 45
    			octet2=1 : octet1=81
    		case 50
    			octet2=1 : octet1=129
    		case 55
    			octet2=1 : octet1=33
    		case 00
    			octet2=0 : octet1=1
    		case 05
    			octet2=0 : octet1=33
    		case 10
    			octet2=0 : octet1=129
    		case 15  
    			octet2=8 : octet1=17   
    		case 20
    			octet2=4 : octet1=1
    		case 25
    			octet2=6 : octet1=33
    		case 30
    			octet2=8 : octet1=13			
    	end select	
    	octet1=octet1+PM
    	memoct2=octet2
    	if midinuit=1 then			;a midi ou à minuit:
    		octet1=octet1 & %11111100		;on efface "AM" ou "PM"
    	endif
    	gosub afficheur	;si 1130-1230 => effacement AM PM 
    	gosub affichmin
    	return
       
    initDS:	  ;******* Initialisation DS3231;'%11010000 est l'adresse i2c******  
    	do loop while pous=0		
    	time=0
    	PM=0
    	sound buz,(103,100)
    	do		;réglage AM/PM (jour/PM)			
    		if pous=0 then
    			pause 100	;anti rebonds logiciel
    			time =0		
    			do 				
    			if time >3 then
    				sound buz,(103,100)
    			 	goto heur						
    			endif
    			loop while pous=0
    			PM=not PM
    			octet1=PM +1		;càd 1 ou 2
    			gosub affichmin	;on affiche "AM" ou "PM"			
    		endif
    	loop	
    heur:
    	do loop while pous=0			
    	time=0 : hh=0 : mm=0
    	do		;réglage heures
    		if pous=0 then
    			pause 100
    			time =0		
    			do			
    				if time >3 then
    					sound buz,(103,100)
    				 	goto minute					
    				endif
    			loop while pous=0
    			inc hh
    			if hh>11 then	;càd 12
    				hh=0     
    			endif					
    		endif	
    		heuraff=100*hh			
    		gosub codheur
    		gosub codmin				
    	loop	    
    minute:	
    	do loop while pous=0	;on a choisi l'heure	
    	time=0 : mm=0
    	do		;réglage minutes
    		if pous=0 then
    			pause 100   
    			time =0		
    			do			
    				if time >3 then
    					sound buz,(103,100)
    				 	goto fin				
    				endif
    			loop while pous=0   
    			mm=mm+5
    			if mm>55 then	;càd 60
    				mm=0  
    			endif											
    		endif			
    		gosub codmin	     
    	loop 	
    fin:	
    	if hh>0 then
    		if mm>30 then
    			hh=hh-1
    		endif
    		hh=12*PM+hh
    	endif
    	if hh=0 then
    		if mm>30  then 
    			hh=12*PM+11
    		endif
    		if mm<35 and PM=1 then
    			PM=not PM
    			hh=12*PM
    		endif
    	endif		
    	do loop while pous=0		;attente relache	
    	memomm=mm
    	mmbcd=mm		;mmbcd est la forme BCD de mm sur 1 octet
    	hhbcd=hh	
    	;serout B.0,T9600_32,(254,212,"H24=",#hh,#mm)
    	transdectobcd(mmbcd)
    	transdectobcd(hhbcd)		 
    	do loop while pous=1		;on attend
    	do loop while pous=0		;on relâche à sec=00
    	hi2csetup i2cmaster, %11010000, i2cslow, i2cbyte	 
    	hi2cout 0, ($00,mmbcd,hhbcd,$0,$0,$0,$0,%00010000)   ;mise en mémoire EEPROM 
    	hi2cout 14,(0)		;registre control DS3231 au cas où
    	sound buz,(103,100)
    	pause 50	
    	sound buz,(103,100)
    	octet4=0:octet3=0:octet2=0:octet1=0 	;on 
    	gosub afficheur 			;efface 
    	gosub affichmin			;tout (presque) 
    	return 
    afficheur:	;affichage des l'heures
    	hi2csetup i2cmaster,%01001000, vit, i2cbyte ;adresse I2C à ajuster
    	hi2cout (octet4) 
    	hi2csetup i2cmaster,%01000110, vit, i2cbyte	 ;adresse I2C à ajuster
    	hi2cout (octet3)
    	;serout B.0,T9600_32,(254,128," 4=",#octet4," 3=",#octet3," 2=",#octet2," 1=",#octet1," ",254,212,"haff= ",#heuraff,"  ","N=",#PM," ")
    	return
    affichmin:	;affichage des minutes
    	hi2csetup i2cmaster,%01000100, vit, i2cbyte	;adresse I2C à ajuster
    	hi2cout (octet2)
    	hi2csetup i2cmaster,%01000010, vit, i2cbyte	;adresse I2C à ajuster
    	hi2cout (octet1)
    	;serout B.0,T9600_32,(254,128,"4=",#octet4," 3=",#octet3," 2=",#octet2," 1=",#octet1," ")
    	;serout B.0,T9600_32,(254,192,"haff=",#heuraff," ",#mm," PM=",#PM," ")
    	;serout B.0,T9600_32,(254,212,"h24=",#heure,"  "     )
    	return 
    synchro:	;sous prog resynchronosation
    	hi2csetup i2cmaster, %11010000, i2cslow, i2cbyte 	;en cas de coupure d'alim 
    	hi2cout 14,(0)		;registre control DS3231
    	hi2cout 7,(%00010000)		;registre control DS1307
    	do
    		hi2cin 1,(mm)		;lecture minutes et heures sur RTC
    		hi2cin 2,(hh)	
    		transbcdtodec(mm)		;passage forme bcd => dec
    		transbcdtodec(hh)		     
    		varb= mm//5			;attente mn multiple de 5	
    		;serout B.0,T9600_32,(254,1,254,148,"hhmm=",#hh," ",#mm,"  ")	
    	loop while varb<>0 or memomm=mm	  ;pour attendre la valeur suivante
    	cpt1Hz=0				;raz compteur
    	setint %1,%1		;interruption niveau 1 sur C.0; comptage		
    	cptmax=150	 		;comptage pour décalage 2mn30s
    	heure=hh*100+mm	;mise en forme hhmm
    	memomm=mm 	
    	return
    atenu:		;***** sub atténuation éclairage *******
    	pause 100
    	do loop while pous=0	
    	coef=coef+10
    	if coef>60 then
    		coef=0	;de 0 à 60 => 7 paliers
    	endif	
    	write 0,coef		;mise en mémoire EEPROM 	
    	return
    plusmoins:
    	octet2=memoct2
    	if cpt1Hz < 90 and cptmax=300  then
    		octet2=octet2 | 128  ; ajoute 1 sur bit 7 (de 0 à 7)
    	elseif cpt1Hz >210 and cptmax=300 then
    		octet2=octet2 | 64	;ajout 1 sur bit 6	
    	endif
    	hi2csetup i2cmaster,%01000100, vit, i2cbyte	;adresse I2C à ajuster
    	hi2cout (octet2)
    	;serout B.0,T9600_32,(254,148,"oct2=",#octet2," moc2=",#memoct2,"  ",254,222,"cpt=",#cpt1Hz,"  ")	
    	return
    interrupt:	;comptage de secondes RTC
    	inc cpt1Hz	
    	if cpt1Hz>=cptmax then	;a cptmax, on incrément les minutes
    		cpt1Hz=0					;raz compteur
    		mm=mm+5			        ;on augmente les minutes de 5
    	endif	
    	do loop while pinC.0=1	; un seul inc par seconde
    	setint %1,%1			;réactivation interruption
    	return

    MM
    Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...

  21. #51
    mag1

    Re : Horloge à texte pour les nuls

    Bonjour,

    Voilà une bonne semaine que la Qlocktwo donne l'heure dans le séjour et que j'attends des faces avant vinyle.
    Je me suis amusé à faire un programme intégrant la mise à l'heure avec le texte affiché. Ça fonctionne, mais cela alourdit le programme inutilement.
    Je propose donc une procédure en deux temps.
    Un programme de mise à l'heure indépendant, utilisant uniquement le PC, avec une marche à suivre simple. Et un programme horloge allégé.

    A suivre
    MM
    Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...

  22. #52
    mag1

    Re : Horloge à texte pour les nuls

    Pour le programme de mise à l'heure des RTC, tout est là, avec une vidéo:
    http://electromag1.wifeo.com/mise-a-lheure-rtc.php

    MM
    Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...

  23. #53
    mag1

    Re : Horloge à texte pour les nuls

    Bonjour,

    Les faces avant vinyle sont arrivées.
    La lisibilité réelle est meilleure que sur la photo:

    Nom : Qlock2salon.jpg
Affichages : 88
Taille : 348,4 Ko

    Le petit "+" indique que l'heure affichée est dépassée de plus de 1 mn (entre +1 et +2mn30)

    Le vinyl: C'est une mince feuille de plastique entre deux protections, papier glacé côté autocollant, qu'il faut décoller en déroulant, progressivement, doucement, petit à petit et transférer avec précaution sur le support final (feuille de plexi de 2 mm) et même, vu la taille des surfaces, il y a quelques centres de "o" et autres qui manquent. Heureusement, on peut les récupérer avec une lame de cutter et les replacer où ils faut. Bref, on y arrive.
    Le fabricant est un vrai pro, on lui envoie le projet en pdf et le produit arrive les jours qui suivent dans une grande enveloppe cartonnée "Ne pas plier!".
    Prix raisonnable, c'est la première planche qui coute le plus chère, les planches supplémentaires sont à 2 ou 3 euros. j'en ai 3 pour 15 euros tout compris.
    Pour la diffusion de la lumière, j'ai ajouté derrière deux ou trois feuilles de papier calque avec une autre plaque de plexi. Le sandwich est assemblé avec du scotch invisible. Le total fixé contre les cloisonnements (joints de portes découpés) par quelques mm de velcro aux quatre coins, repositionnables et qui ne glissent pas,( contrairement aux aimants).

    MM
    Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...

  24. #54
    Kissagogo27

    Re : Horloge à texte pour les nuls

    Joli travail et réalisation

  25. #55
    mag1

    Re : Horloge à texte pour les nuls

    Citation Envoyé par Kissagogo27 Voir le message
    Joli travail et réalisation
    Citation Envoyé par Kissagogo27 Voir le message
    Joli travail et réalisation
    Bonjour et merci;

    Le projet arrive à son terme. Ce qui précède est l'évolution "temps réel".

    Résumé des caractéristiques de la Qlocktwo "revisitée"

    La face a une surface totale de 25 x 25 (simplement parce que j'ai acheté une plaque de plexi de 50 x 70 cm)
    La surface utile (textes) est de 19 x 19 cm (simplement parce que on peut l'imprimer sur une feuille A4. Les lettres ajoutées autour de cette surface masquent mieux les textes.
    L'alimentation est un bloc secteur "standard" de 5V régulés 1A. La consommation dépend du nombre de lettres éclairées, mais ne dépasse pas les 500mA.
    Le matériel utilisé est accessible à tous, en France: plaques genre veroboard, module horloge DS3231, modules PCF8574, câbles "dupond" , leds cms 1206 et résistances cms 75ohms. condensateurs, picaxe, transistors, etc.
    La procédure de mise à l'heure intégrée à l'horloge est restée, en cas de nécessité (changement d'heure) il est pratique de pouvoir le faire sans rien démonter.
    Le rétroéclairage s'ajuste à la lumière ambiante, avec un petit poussoir pour régler le point de fonctionnement (7 paliers).
    Indication AM ou PM, un petit plus qui ne ça sert pas à grand chose. Un autre plus est celui qui s'éclaire en bas à gauche, avec le -, il divise les 5 mn en trois et améliore la précision.
    La RTC interne est protégée par sa batterie. En cas de coupure d'alimentation, l'horloge se resynchronise automatiquement.
    Je rappelle le décalage de 2mn30 par rapport à l'heure réelle (grosse amélioration à mon avis).
    Pour le reste, il s'agit d'un coffret vite fait à la colle au pistolet sur une boite de marrons glacés (vide).

    Le code définitif (pour l'instant), la fréquence du PWM est modifiée pour palier des fluctuations du rétroéclairage (origine?)

    Code:
    ;Horloge qclocktwo picaxe 14M2 MM 30/04/2020
    ;poussoir de commande sur C.3
    ;interrupt sur C.0  :comptage pulses 1Hz, Déphasage de 2mn30s
    ;Mise au point par Afficheur LCD. les commandes sont restées en commentaires.
    #picaxe 14M2
    setfreq M32		; Moins vite, ça fonctionne aussi
    symbol pous=pinC.3
    symbol eclair= C.2	;sortie PWM
    symbol LDR= C.4		;entrée LDR
    symbol buz=B.2  		;sortie buzzer pour les 3s mise à l'heure
    symbol PM=bit0			; bascule jour/nuit
    symbol midinuit=bit1	;midi ou minuit=> supp AM ou PM
    symbol cpt1Hz=w13		;compteur pulses 1Hz
    symbol cptmax=w12		;valeur max ;300 pour 5 mn
    symbol heure=w11		;heure sous forme HHmm
    symbol lum=w10			;mesure lumière (0 à 1023)
    symbol varlum=w9		;mesure après atténuation (170 à 1023)
    symbol heuraff=w8		;heure affichée
    symbol hh=b1			;valeur heures
    symbol mm=b2			;valeur minutes
    symbol octet4=b3		
    symbol octet3=b4		;octets pour pcf8574
    symbol octet2=b5
    symbol octet1=b6
    symbol mmbcd=b7		;valeur mn en BCD => DS3231
    symbol hhbcd=b8		;valeur HH en BCD
    symbol varb=b10		;variable locale 
    symbol dch=b11			;variable locale, chiffre des dizaines
    symbol coef=b12		;coef lumière
    symbol memomm=b13		;mémo veleur précédente des minutes
    symbol memoct2=b14	;mémo octet 2 pour +/-
    symbol vit=i2cslow_32	;vitesse I2C
    symbol frson=109		;fréquence buzzer
    #macro transdectobcd(varb)    ;transformation de dec vers bcd
        dch=varb//10
        varb=varb/10*16        'mises au format BCD
        varb=varb+dch        	'pour enregistrement
    #endmacro
    #macro transbcdtodec(varb)		;transformation de bcd vers dec
    	dch=varb/16*10
    	varb=varb//16
    	varb=varb+dch
    #endmacro	
    	pullup %100000000000		;activation pullup sur C.3	
     	pause 1000		
    	pwmout pwmdiv4,eclair,255,1023		;PWM sur C.2 :7813Hz ,RC=100%.
    	read 0,coef		;lecture niveau éclairage mis en mémoire EEPROM
    	if coef=0 then
    		coef=60		;si pas en mémoire => éclairage max
    	endif		
    	octet4=0:octet3=0:octet2=0:octet1=0
    	gosub afficheur   
    	gosub affichmin
    	;serout B.0,T9600_32,(254,1,254,1,254,128,"OK")
    	If pous=0 then gosub initDS
    	gosub synchro		;suite mise àl'heure et perrte alimentation: recherche heure et mn
    ;***** boucle principale . Horloge 24H µC et réglage pour affichage sur 12H ********
    	do
    		do						;mise à l'échelle de lum à ajuster ?
    			readadc10 LDR,lum		;lecture LDR
    			lum=lum+10 max 1023	
    			if pous=0 then gosub atenu	 ;atténuation éclairage
    			varlum=lum*coef/60		
    			pwmduty eclair,varlum	;valeur % PWM (lum=0 =>0%, 1023 =>100%	
    			  gosub plusmoins		  
    		loop while memomm=mm		;attente incrémentation des minutes (+5)
    		memomm=mm		;mm a changé =>mise en mémoire nouvelle valeur
    		cptmax=300		;compteur 5 mn après 1er comptage		  
    		if mm>55 then	;après 55, on repasse 
    			mm=0			;à 0
    			inc hh		;et on incrémente l'heure	
    	  	endif
    		if hh>23 then	;pendule H24
    			hh=0		
    		endif    
    		heure=hh*100 + mm		;heure en forme hhmm sur 24H
    		gosub convheur
    	loop
    end
    convheur:	;convertisseur H24 => H12 + nuit
    		select case heure		;passage en mode H12
    			case 0 to 0025					
    				PM=1			;pour minuit + mn
    				heuraff=heure
    			case 0030 to 1155
    				PM=0			;=> AM pour afficher AM/PM
    				heuraff=heure	;0 midi ou minuit, pasd'affichage AM/PM
    			case 1200 to 1225
    				PM=0
    				heuraff= heure-1200				
    			case 1230 to 2355
    				PM=1			;=> PM et minuit
    				heuraff=heure-1200			
    		endselect
    		;serout B.0,T9600_32,(254,192,"H24=",#heure," ","haff= ",#heuraff,"      ")	
    		gosub codheur
    		gosub codmin		
    	return
    codheur:	;******* sub codage heure , octets 4 et 3 ***************
    	midinuit=0			;par défaut
    	select case heuraff		
    		case 0035 to 0130
    			octet4=2: octet3=2
    		case 135 to 230
    			octet4=131: octet3=0     
    		case 235 to 330
    			octet4=67:octet3=0
    		case 335 to 430
    			octet4=3:octet3=1
    		case 435 to 530
    			octet4=19:octet3=0	
    		case 535 to 630
    			octet4=3:octet3=8	
    		case 635 to 730    
    			octet4=35:octet3=0
    		case 735 to 830
    			octet4=3:octet3=16
    		case 835 to 930
    			octet4=3:octet3=4
    		case 935 to 1030
    			octet4=3:octet3=96
    		case 1035 to 1130
    			octet4=11:octet3=0
    		else	;reste 0 à 30 et 1135 à 1155
    			midinuit=1		;il est midi ou minuit
    			if PM=1 then		;minuit
    				octet4=4:octet3=0
    			else					;midi
    				octet4=0:octet3=192
    			endif
    	end select	
    	gosub afficheur
    	return
    
    codmin:     ;*******  sub codage minutes octets 2 et 1 ********
    	select case mm
    		case 35
    			octet2=7 : octet1=33
    		case 40
     			octet2=5 : octet1=1
    		case 45
    			octet2=1 : octet1=81
    		case 50
    			octet2=1 : octet1=129
    		case 55
    			octet2=1 : octet1=33
    		case 00
    			octet2=0 : octet1=1
    		case 05
    			octet2=0 : octet1=33
    		case 10
    			octet2=0 : octet1=129
    		case 15  
    			octet2=8 : octet1=17   
    		case 20
    			octet2=4 : octet1=1
    		case 25
    			octet2=6 : octet1=33
    		case 30
    			octet2=8 : octet1=13			
    	end select	
    	octet1=octet1+PM
    	memoct2=octet2
    	if midinuit=1 then			;a midi ou à minuit:
    		octet1=octet1 & %11111100		;on efface "AM" ou "PM"
    	endif
    	gosub afficheur	;si 1130-1230 => effacement AM PM 
    	gosub affichmin
    	return
       
    initDS:	  ;******* Initialisation DS3231;'%11010000 est l'adresse i2c******  
    	do loop while pous=0		
    	time=0
    	PM=0
    	sound buz,(frson,100)
    	do		;réglage AM/PM (jour/PM)			
    		if pous=0 then
    			pause 100	;anti rebonds logiciel
    			time =0		
    			do 				
    			if time >3 then
    				sound buz,(frson,100)
    			 	goto heur						
    			endif
    			loop while pous=0
    			PM=not PM
    			octet1=PM +1		;càd 1 ou 2
    			gosub affichmin	;on affiche "AM" ou "PM"			
    		endif
    	loop	
    heur:
    	do loop while pous=0			
    	time=0 : hh=0 : mm=0
    	do		;réglage heures
    		if pous=0 then
    			pause 100
    			time =0		
    			do			
    				if time >3 then
    					sound buz,(frson,100)
    				 	goto minute					
    				endif
    			loop while pous=0
    			inc hh
    			if hh>11 then	;càd 12
    				hh=0     
    			endif					
    		endif	
    		heuraff=100*hh			
    		gosub codheur
    		gosub codmin				
    	loop	    
    minute:	
    	do loop while pous=0	;on a choisi l'heure	
    	time=0 : mm=0
    	do		;réglage minutes
    		if pous=0 then
    			pause 100   
    			time =0		
    			do			
    				if time >3 then
    					sound buz,(frson,100)
    				 	goto fin				
    				endif
    			loop while pous=0   
    			mm=mm+5
    			if mm>55 then	;càd 60
    				mm=0  
    			endif											
    		endif			
    		gosub codmin	     
    	loop 	
    fin:	
    	if hh>0 then
    		if mm>30 then
    			hh=hh-1
    		endif
    		hh=12*PM+hh
    	endif
    	if hh=0 then
    		if mm>30  then 
    			hh=12*PM+11
    		endif
    		if mm<35 and PM=1 then
    			PM=not PM
    			hh=12*PM
    		endif
    	endif		
    	do loop while pous=0		;attente relache	
    	memomm=mm
    	mmbcd=mm		;mmbcd est la forme BCD de mm sur 1 octet
    	hhbcd=hh	
    	;serout B.0,T9600_32,(254,212,"H24=",#hh,#mm)
    	transdectobcd(mmbcd)
    	transdectobcd(hhbcd)		 
    	do loop while pous=1		;on attend
    	do loop while pous=0		;on relâche à sec=00
    	hi2csetup i2cmaster, %11010000, i2cslow, i2cbyte	 
    	hi2cout 0, ($00,mmbcd,hhbcd,$0,$0,$0,$0,%00010000)   ;mise en mémoire EEPROM 
    	hi2cout 14,(0)		;registre control DS3231 au cas où
    	sound buz,(frson,100)
    	pause 50	
    	sound buz,(frson,100)
    	octet4=0:octet3=0:octet2=0:octet1=0 	;on 
    	gosub afficheur 			;efface 
    	gosub affichmin			;tout sauf "il est" 
    	return 
    afficheur:	;affichage des l'heures
    	hi2csetup i2cmaster,%01001000, vit, i2cbyte ;adresse I2C à ajuster
    	hi2cout (octet4) 
    	hi2csetup i2cmaster,%01000110, vit, i2cbyte	 ;adresse I2C à ajuster
    	hi2cout (octet3)
    	;serout B.0,T9600_32,(254,128," 4=",#octet4," 3=",#octet3," 2=",#octet2," 1=",#octet1," ",254,212,"haff= ",#heuraff,"  ","N=",#PM," ")
    	return
    affichmin:	;affichage des minutes
    	hi2csetup i2cmaster,%01000100, vit, i2cbyte	;adresse I2C à ajuster
    	hi2cout (octet2)
    	hi2csetup i2cmaster,%01000010, vit, i2cbyte	;adresse I2C à ajuster
    	hi2cout (octet1)
    	;serout B.0,T9600_32,(254,128,"4=",#octet4," 3=",#octet3," 2=",#octet2," 1=",#octet1," ")
    	;serout B.0,T9600_32,(254,192,"haff=",#heuraff," ",#mm," PM=",#PM," ")
    	;serout B.0,T9600_32,(254,212,"h24=",#heure,"  "     )
    	return 
    synchro:	;sous prog resynchronosation
    	hi2csetup i2cmaster, %11010000, i2cslow, i2cbyte 	;en cas de coupure d'alim 
    	hi2cout 14,(0)		;registre control DS3231
    	hi2cout 7,(%00010000)		;registre control DS1307
    	do
    		hi2cin 1,(mm)		;lecture minutes et heures sur RTC
    		hi2cin 2,(hh)	
    		transbcdtodec(mm)		;passage forme bcd => dec
    		transbcdtodec(hh)		     
    		varb= mm//5			;attente mn multiple de 5	
    		;serout B.0,T9600_32,(254,1,254,148,"hhmm=",#hh," ",#mm,"  ")	
    	loop while varb<>0 or memomm=mm	  ;pour attendre la valeur suivante
    	cpt1Hz=0				;raz compteur
    	setint %1,%1		;interruption niveau 1 sur C.0; comptage		
    	cptmax=150	 		;comptage pour décalage 2mn30s
    	heure=hh*100+mm	;mise en forme hhmm
    	memomm=mm 	
    	return
    atenu:		;***** sub atténuation éclairage *******
    	pause 100
    	do loop while pous=0	
    	coef=coef+10
    	if coef>60 then
    		coef=0	;de 0 à 60 => 7 paliers
    	endif	
    	write 0,coef		;mise en mémoire EEPROM 	
    	return
    plusmoins:
    	octet2=memoct2		;réinitialisation octet2
    	if cpt1Hz < 90 and cptmax=300  then
    		octet2=octet2 | 128  ; ajoute 1 sur bit 7 (de 0 à 7)
    	elseif cpt1Hz >210 and cptmax=300 then
    		octet2=octet2 | 64	;ajout 1 sur bit 6	
    	endif
    	hi2csetup i2cmaster,%01000100, vit, i2cbyte	;adresse I2C à ajuster
    	hi2cout (octet2)
    	;serout B.0,T9600_32,(254,148,"oct2=",#octet2," moc2=",#memoct2,"  ",254,222,"cpt=",#cpt1Hz,"  ")	
    	return
    interrupt:	;comptage de secondes RTC
    	inc cpt1Hz	
    	if cpt1Hz>=cptmax then	;a cptmax, on incrément les minutes
    		cpt1Hz=0					;raz compteur
    		mm=mm+5					;on augmente les minutes de 5
    	endif	
    	do loop while pinC.0=1	; un seul inc par seconde
    	setint %1,%1			;réactivation interruption
    	return
    Et pour finir:

    Nom : Qlock2situ.jpg
Affichages : 75
Taille : 74,3 Ko

    MM
    Dernière modification par mag1 ; 30/04/2020 à 16h10.
    Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...

Page 2 sur 2 PremièrePremière 2

Discussions similaires

  1. L'eau chaude pour les nuls
    Par CB6 dans le forum Habitat bioclimatique, isolation et chauffage
    Réponses: 57
    Dernier message: 04/02/2020, 04h28
  2. La thermodynamique pour les nuls ?
    Par invited6e157f4 dans le forum Lectures scientifiques
    Réponses: 3
    Dernier message: 16/05/2010, 23h15
  3. Le diamagnétisme pour les nuls
    Par invitee8534f39 dans le forum Chimie
    Réponses: 4
    Dernier message: 08/06/2009, 17h52
  4. RMN pour les nuls....
    Par invited0359390 dans le forum Chimie
    Réponses: 8
    Dernier message: 17/06/2007, 21h43
  5. La rmn pour les nuls
    Par invitea47878d8 dans le forum Lectures scientifiques
    Réponses: 0
    Dernier message: 29/08/2005, 14h57
Découvrez nos comparatifs produits sur l'informatique et les technologies.