[Programmation] Horloge à texte pour les nuls
Répondre à la discussion
Page 1 sur 2 1 DernièreDernière
Affichage des résultats 1 à 30 sur 55

Horloge à texte pour les nuls



  1. #1
    mag1

    Horloge à texte pour les nuls


    ------

    Bonjour,

    Si vous avez suivi cette discussion, je proposais une horloge à base de picaxe. Je pense en faire une.
    Voici une page partageant cette réalisation, ce n'est que la début, rien n'est testé.
    http://electromag1.wifeo.com/horloge-a-texte.php

    Voici le code (non testé) sur ce forum:

    Code:
    ;Horloge clockword picaxe 14M2 MM 13/02/2020
    ;poussoir sur C.3
    ;interrupt sur C.0  :comptage pulses 1Hz
    #picaxe 14M2
    setfreq M32
    symbol led=pinB.0
    symbol ADC=C.4
    symbol pous=pinC.3
    symbol cpt1Hz=w13
    symbol nuit=bit0		; bascule jour/nuit
    symbol flaginit=bit1
    symbol cptmax=w12
    symbol heure=w11
    symbol valadc=w10
    symbol hh=b1
    symbol mm=b2
    symbol octet4=b3
    symbol octet3=b4
    symbol octet2=b5
    symbol octet1=b6
    symbol mmbcd=b7
    symbol hhbcd=b8
    symbol exept=b9
    symbol memomm=b10
    symbol varb=b11
    symbol dch=b12
    ;dirsB=%1111111
    #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)
    	dch=varb/16*10
    	varb=varb//16
    	varb=varb+dch
    #endmacro	
    	setint %1,%1		;interrupt niveau 1 sur C.0	
    	hi2csetup i2cmaster,%11010000, i2cslow_32, i2cbyte    ;init I2C horloge
    	hi2cout 14,(0)  ;raz registre de configuration control DS3231(1Hz sur SQW) 
    	If pous=0 then gosub initDS
    	gosub synchro		;suite coupure de courant recherche min et heur DS BCD=>DEC
    	cptmax=150			;compte initiale pour bascule au bout de 2mm30s
    ;boucle principale
    	do
    		do
    		loop while memomm=mm     ;attente increm mm par comptage interruption
    		memomm=mm		;mm a changé =>mise en mémoire
    		cptmax=300		;compteur 5 mn
    		if mm>55 then	;après 55, on repasse 
    			mm=0			;à 0
    			inc hh		;et on incrémente l'heure	
    		endif
    		heure=hh*100 + mm		;heure en forme hhmm
    		if heure>1130 and nuit=1 then  ;on était de nuit, 
    			heure=2335			;passage tronçon "minuit"
    			nuit=not nuit		;en jour au prochain passage
    		endif
    		if heure>=2400 then 	;
    			heure=0000
    		endif
    		if heure> 1230 and nuit=0 then	
    			heure=0035		;de jour, on passe de midi et demi à 1h moins 25
    		endif		
    		gosub codheur	
    		gosub codmin		
    	loop
    ;sub codage heure , octets 4 et 3
    codheur:	
    	select case heure
    		case >=2335
    			octet4=0: octet3=8
    		case <= 30
    			octet4=0: octet3=8
    		case 35 to 130
    			octet4=8: octet3=2
    		case 135 to 230
    			octet4=128: octet3=3
    		case 235 to 330
    			octet4=32:octet3=3
    		case 335 to 430
    			octet4=64:octet3=3
    		case 435 to 530
    			octet4=0:octet3=131	
    		case 535 to 630
    			octet4=1:octet3=3	
    		case 635 to 730
    			octet4=4:octet3=3
    		case 735 to 830
    			octet4=2:octet3=3
    		case 835 to 930
    			octet4=16:octet3=3
    		case 935 to 1030
    			octet4=0:octet3=51
    		case 1035 to 1130
    			octet4=0:octet3=7
    		case 1135 to 1230
    			octet4=0:octet3=96
    	end select	
    	gosub afficheur
    	return
    ; sub codage minutes octets 2 et 1
    codmin:
    	select case mm
    		case 35
    			octet2=2 : octet1=28
    		case 40
     			octet2=2 : octet1=16
    		case 45
    			octet2=3 : octet1=32
    		case 50
    			octet2=2 : octet1=128
    		case 55
    			octet2=2 : octet1=4
    		case 00
    			octet2=0 : octet1=0
    		case 05
    			octet2=0 : octet1=4
    		case 10
    			octet2=0 : octet1=128
    		case 15
    			octet2=0 : octet1=96
    		case 20
    			octet2=0 : octet1=16
    		case 25
    			octet2=0 : octet1=28
    		case 30
    			octet2=0 : octet1=67
    			if heure=0030 then
    				octet1=66
    			endif	
    	end select	
    	gosub affichmin
    	return 
    
    initDS:	' Initialisation DS3231;'%11010000 est l'adresse i2c         
    	do loop while pous=0
    	do
    		readadc10 ADC,valadc
    		nuit=valadc/600	;en fait, 0 ou 1
    		led=nuit		
    	loop while pous=1
    		led=0
    	do		;réglage heures
    		readadc10 ADC,valadc
    		heure= 12 * valadc /10  ;de 0 à 1200  	
    		gosub codheur
    	loop while pous=1	
    	do loop while pous=0		;on a choisi l'heure	
    	do		;réglage minutes
    		readadc10 ADC,valadc
    		mm=valadc * 11 /1023 *5		;de 0 à 55 mod 5
    		gosub codmin
    	loop while pous=1
    	do loop while pous=0		;on a choisi les minutes
    	memomm=mm
    	mmbcd=mm		;mmbcd est la forme BCD de mm sur 1 octet
    	hhbcd=hh	
    	transdectobcd(mmbcd)
    	transdectobcd(hhbcd)
    	led=1
    	do loop while pous=1	
    	do loop while pous=0	
    	hi2cout 0, ($00,mmbcd,hhbcd)   ;mise en mémoire EEPROM	format BCD
    	led=0
    	flaginit=1
    	return
    afficheur:
    	hi2csetup i2cmaster,%01001000, i2cslow_32, i2cbyte
    	hi2cout (octet4) 
    	hi2csetup i2cmaster,%01001010, i2cslow_32, i2cbyte 
    	hi2cout (octet3)
    	return
    affichmin:
    	hi2csetup i2cmaster,%01001100, i2cslow_32, i2cbyte
    	hi2cout (octet2)
    	hi2csetup i2cmaster,%01001110, i2cslow_32, i2cbyte
    	hi2cout (octet1)
    	return 
    synchro:
    	do
    		hi2cin 0,(varb,mm,hh)
    	loop while varb=0
    	transbcdtodec(mm)		;passage forme bcd => dec
    	transbcdtodec(hh)
    	return	
    interrupt:
    	;inc cpt1Hz					;en commentaire pour simu
    	cpt1Hz=cpt1Hz + 10		;vitesse x 10 pour simu
    	if cpt1Hz>cptmax then
    		cpt1Hz=0	
    		mm=mm+5
    	endif
    		do loop while pinC.0=1
    		setint %1,%1
    	return
    MM

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

  2. #2
    mag1

    Re : Horloge à texte pour les nuls

    Pas eu le temps...
    La discussion sus nommée était celle ci : https://forums.futura-sciences.com/e...troleur-5.html

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

  3. #3
    mag1

    Re : Horloge à texte pour les nuls

    Citation Envoyé par mag1 Voir le message
    Pas eu le temps...
    La discussion sus nommée était celle ci : https://forums.futura-sciences.com/e...troleur-5.html
    MM
    Ci dessous, la grille donnée par thjazi39 dans le sujet précédent (#96), réduite au juste nécessaire des 156 états, avec les valeurs des octets que l'on retrouvent dans les deux "selec case" du code ci dessus.

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

  4. #4
    mag1

    Re : Horloge à texte pour les nuls

    Bonjour,
    Juste pour dire qu'il y a des modifs à faire sur le code

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

  5. A voir en vidéo sur Futura
  6. #5
    mag1

    Re : Horloge à texte pour les nuls

    Bonjour,

    Le code a donc été un peu modifié, voici quelques explications en préambule :

    A ce stade, rien n'a encore été testé, donc tout est possible (je parle des erreurs, bugs,etc...)

    Quelques explications sur l'architecture et le fonctionnement:
    L'horloge affiche le même texte le jour et la nuit, avec une différence autour de midi ou minuit.
    De 11h35 à 12h30, l'affiche de l'heure va de: "midi moins vingt-cinq à "midi et demi" et la nuit, de 23h35 à 00h30, cet affichage va de "minuit moins vingt-cinq à minuit et demi".
    Il y a donc un tronc commun et deux tronçons particuliers pour le jour et la nuit.

    Pour différentier jour et nuit, une bascule (nuit=0 ou nuit=1) est inversée toutes les 12h, après le passage dans les tronçons "jour" et "nuit". La bascule est mise au pas dans le sous programme d'initialisation du module RTC (DS3231).
    Ce module RTC est protégé par sa propre batterie (LIR2032).

    En fonctionnement normal, le programme compte les pulses 1Hz, l'affichage de l'heure est actualisée toutes les 5 mn (300 secondes), sauf pour le premier affichage, actualisé au bout de 150s. Ah...et pourquoi??
    La mise à l'heure de la RTC se fait sur un top précis de 5 mn, ex: à 9h00, ou 9h05, ou 9h10,etc. Avec ce décalage initial de 150 s, l'affichage "il est dix heures cinq" sera effectif de 10h 2mn 30s à 10h 7mn 30s.
    L'erreur maximum par rapport à l'heure réelle est de 2mm30s, au lieu de 5mn, sans décalage.

    En cas de coupure d'alimentation, il y a lecture de la RTC avec re-synchronication de l'horloge.
    Les boucles "heures" et "minutes" ne sont pas véritablement imbriquées dans ce code, une optimisation est possible, avec un intérêt limité.

    Après passage dans les tables "select case" jours et minutes, on dispose de quatre octets correspondants aux lignes de la grille excel, ces octets sont transmis aux expanseurs PCF8574 pour afficher le texte.

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

  7. #6
    mag1

    Re : Horloge à texte pour les nuls

    Bonjour,
    Présentation de la partie mise à l'heure de l'horloge

    Mise à l'heure de l'horloge interne RTC DS3231
    Elle se fait avec un unique poussoir, en trois étapes. On entre dans le sous programme en appuyant sur le poussoir pendant la mise sous tension.

    Mise au pas de la bascule jour/nuit:
    En relâchant le poussoir après la mise sous tension, chaque appui bref (<2 s) sur le poussoir fait basculer entre les phases jour/nuit. En "jour", le texte "midi" est allumé, en "nuit", le texte "minuit" est allumé. Lorsque le texte correct est allumé, un appui long (>2 s) enregistre le choix et fait passer à la phase réglage de l'heure.

    Réglage de l'heure:
    Chaque appui bref incrémente le cycle de l'affichage de l'heure, de 1 à 11, puis "midi" ou "minuit" en fonction l'option jour/nuit précédente. Lorsque l'affichage est correct, un appui long enregistre le choix et fait passer au réglage des minutes.

    Réglage des minutes:
    Chaque appui bref incrémente le cycle des minutes, de "cinq" à "moins cinq", un appui long enregistre le choix,
    L'heure est préaffichée en totalité, mais le programme attend un nouvel cycle appui- relâchement pour effectuer la mise à l'heure. Le choix de l'heure doit correspondre au prochain multiple de cinq. Ex si l'heure actuelle est 8h32, préparer l'horloge pour 8h35. Prendre une heure de référence (un smartphone par ex.), quelques secondes avant l'heure exacte, appuyer le poussoir et relâcher lorsque les secondes passent à 00. La RTC est à l'heure.

    La mise à l'heure est immédiatement suivie d'une re-synchronisation, comme en cas de perte d'alimentation. On doit voir afficher : "Il est neuf heures moins vingt" 2mn30s après la mise à l'heure, cet affichage durera 5 mn. On a l'assurance que l'heure enregistrée dans la RTC est la bonne.

    Re-synchronisation en cas de perte d'alimentation:
    La mise à l'heure est immédiatement suivie d'une re-synchronisation, comme en cas de perte d'alimentation.
    Le programme attend de lire des minutes multiples de 5 sur la RTC. Lorsque c'est le cas, heures et minutes sont chargées dans le programme et affichées.

    On pourra alors vérifier que l'affichage de l'heure en texte est exacte à +/- 2mn 30s.

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

  8. #7
    mag1

    Re : Horloge à texte pour les nuls

    Bonjour,

    Le code, mis à jour:

    Testé sur le simulateur, avec quelques modifs pour simuler la RTC, donc sous toutes réserves d'un essai réel (dès que possible)... il fonctionne.

    Quelques explications:
    En tête, la liste des noms de variables et de ports
    Ensuite:
    - deux macros pour transformer le codage binaire en BCD et inversement
    - La boucle principale, elle attend le changement des minutes toutes les 5 minutes et déclenche les sous programmes d'affichage
    - Sous prog "codheur" transcrit la table de correspondance entre heures et affichage octets "heures"
    - Sous prog "codmin" idem pour la table "minutes"
    - Sous prog 'initDS", procédure de mise à l'heure de l'horloge RTC, on y passe en maintenant le poussoir appuyé à la mise sous tension.
    - Sous prog "afficheur" et "affichmin", commande I2C pour envoyer les octets sur les sorties des PCF8574, avec les amplis de courant uln2803.
    - Sous prog "synchro", lancée à la mise sous tension et en cas de coupure d'alim: réinitialise l'horloge avec les paramètres heures et minutes lus sur la RTC
    - Sous prog "interruption", compte les pulses 1Hz venant de la RTC, moteur de l'horloge qui incrémente le compteur des minutes
    C'est tout....

    Code:
    ;Horloge qclocktwo picaxe 14M2 MM 19/02/2020
    ;poussoir sur C.3
    ;interrupt sur C.0  :comptage pulses 1Hz
    #picaxe 14M2
    setfreq M32
    symbol led=pinB.0
    symbol pous=pinC.3
    symbol cpt1Hz=w13
    symbol nuit=bit0		; bascule jour/nuit
    symbol flaginit=bit1
    symbol cptmax=w12
    symbol heure=w11
    symbol hh=b1
    symbol mm=b2
    symbol octet4=b3
    symbol octet3=b4
    symbol octet2=b5
    symbol octet1=b6
    symbol mmbcd=b7
    symbol hhbcd=b8
    symbol memomm=b9
    symbol varb=b10		;variable locale
    symbol dch=b11
    #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	
    	setint %1,%1		;interruption niveau 1 sur C.0	
    	hi2csetup i2cmaster,%11010000, i2cslow_32, i2cbyte    ;init I2C horloge
    	hi2cout 14,(0)  ;raz registre de configuration control DS3231(1Hz sur SQW)
     	cptmax=150			;compte initiale pour bascule au bout de 2mm30s
    	If pous=0 then gosub initDS
    	gosub synchro		;suite mise àl'heure et perrte alimentation: recherche heure et mn
    ;boucle principale **********************
    	do
    		do	loop while memomm=mm
    		memomm=mm		;mm a changé =>mise en mémoire
    		cptmax=300		;compteur 5 mn au second passage
    		if mm>55 then	;après 55, on repasse 
    			mm=0			;à 0
    			inc hh		;et on incrémente l'heure	
    		endif
    		if hh>12 then
    			hh=0
    		endif
    		heure=hh*100 + mm		;heure en forme hhmm
    		if heure>1230 then	;fin d'un cycle de 12h =>bascule J/N
    			nuit=not nuit
    			heure=0035
    		endif		
    		gosub codmin
    		gosub codheur		
    	loop
    ;sub codage heure , octets 4 et 3 ***************
    codheur:	
    	select case heure		
    		case 0035 to 0130
    			octet4=8: octet3=2
    		case 135 to 230
    			octet4=128: octet3=3
    		case 235 to 330
    			octet4=32:octet3=3
    		case 335 to 430
    			octet4=64:octet3=3
    		case 435 to 530
    			octet4=0:octet3=131	
    		case 535 to 630
    			octet4=1:octet3=3	
    		case 635 to 730
    			octet4=4:octet3=3
    		case 735 to 830
    			octet4=2:octet3=3
    		case 835 to 930
    			octet4=16:octet3=3
    		case 935 to 1030
    			octet4=0:octet3=51
    		case 1035 to 1130
    			octet4=0:octet3=7
    		case 1135 to 1230
    			if nuit=1 then
    				octet4=0:octet3=8
    			else
    				octet4=0:octet3=96
    			endif
    	end select	
    	gosub afficheur
    	return
    ; sub codage minutes octets 2 et 1
    codmin:
    	select case mm
    		case 35
    			octet2=2 : octet1=28
    		case 40
     			octet2=2 : octet1=16
    		case 45
    			octet2=3 : octet1=32
    		case 50
    			octet2=2 : octet1=128
    		case 55
    			octet2=2 : octet1=4
    		case 00
    			octet2=0 : octet1=0
    		case 05
    			octet2=0 : octet1=4
    		case 10
    			octet2=0 : octet1=128
    		case 15
    			octet2=0 : octet1=96
    		case 20
    			octet2=0 : octet1=16
    		case 25
    			octet2=0 : octet1=28
    		case 30
    			octet2=0 : octet1=67
    			if heure=0030 then
    				octet1=66
    			endif	
    	end select	
    	gosub affichmin
    	return
    '******* Initialisation DS3231;'%11010000 est l'adresse i2c******     
    initDS:	  
    	do loop while pous=0		
    		time=0
    	do		;réglage jour/nuit			
    		if pous=0 then
    			time =0		
    			do 
    			pause 1		;bug simu
    			loop while pous=0
    			if time >3 then
    			 	exit
    			endif
    			nuit=not nuit		
    		endif
    	loop 
    	do loop while pous=0	
    	time=0 : hh=0
    	do		;réglage heures
    		if pous=0 then
    			time =0		
    			do
    			pause 1		;bug simu
    			loop while pous=0
    			if time >3 then
    			 	exit
    			endif
    			inc hh
    			if hh>12 then
    				hh=0
    			endif			
    		endif
    		heure=hh *100
    		gosub codheur	
    	loop
    	do loop while pous=0		;on a choisi l'heure
    	time=0 : mm=0
    	do		;réglage minutes
    		if pous=0 then
    			time =0		
    			do
    			pause 1
    			loop while pous=0
    			if time >3 then
    			 	exit
    			endif
    			mm=mm+5
    			if mm>55 then
    				mm=0
    			endif			
    		endif		
    		gosub codmin	
    	loop
    	do loop while pous=0		;on a choisi les minutes
    	memomm=mm
    	mmbcd=mm		;mmbcd est la forme BCD de mm sur 1 octet
    	hhbcd=hh	
    	transdectobcd(mmbcd)
    	transdectobcd(hhbcd)
    	led=1
    	do loop while pous=1	
    	do loop while pous=0	
    	hi2cout 0, ($00,mmbcd,hhbcd)   ;mise en mémoire EEPROM	format BCD
    	led=0	
    	return
    afficheur:	;affichage des l'heures
    	hi2csetup i2cmaster,%01001000, i2cslow_32, i2cbyte ;adresse I2C à ajuster
    	hi2cout (octet4) 
    	hi2csetup i2cmaster,%01001010, i2cslow_32, i2cbyte	 ;adresse I2C à ajuster
    	hi2cout (octet3)
    	return
    affichmin:	;affichage des minutes
    	hi2csetup i2cmaster,%01001100, i2cslow_32, i2cbyte	;adresse I2C à ajuster
    	hi2cout (octet2)
    	hi2csetup i2cmaster,%01001110, i2cslow_32, i2cbyte	;adresse I2C à ajuster
    	hi2cout (octet1)
    	return 
    synchro:	;sous prog resynchronosation
    	do
    		hi2cin 1,(mm,hh)	
    		transbcdtodec(mm)		;passage forme bcd => dec
    		transbcdtodec(hh)
    		varb= mm//5			;attente mn multiple de 5
    	loop while varb<>0				
    	heure=hh * 100 +mm
    	select case heure
    		case 0035 to 1230		;on passera par "midi"
    		 nuit=0
    		else nuit=1				;sinon,on passera par "minuit"
    	endselect
    	return	
    interrupt:	;comptage de secondes RTC
    	inc cpt1Hz	
    	if cpt1Hz>cptmax then
    		cpt1Hz=0	
    		mm=mm+5
    	endif
    		do loop while pinC.0=1	; un seul inc par seconde
    		setint %1,%1
    	return
    MM
    Dernière modification par mag1 ; 20/02/2020 à 14h29.
    Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...

  9. #8
    mag1

    Re : Horloge à texte pour les nuls

    Bonjour,

    D'abord, manque une ligne dans la mise à jour pour activer la R de pullup interne sur l'entrée C.3, sans résistance "de tirage", la broche est "en l'air " et sa valeur n'est pas fixée, ce qui provoque un fonctionnement aléatoire. Cette ligne "pullup" est placée dans l'en tête, avant le test du poussoir:

    pullup %100000000000 ;activation pullup sur C.3
    setint %1,%1 ;interruption niveau 1 sur C.0

    La partie électronique est complète (mais non testée), reste la partie "design", libre d'interprétation. Les dimensions, l'éclairage du texte, etc
    Il faudra délimiter chaque portion de texte, pour éviter la diffusion de lumière en dehors du texte à afficher.
    Il y a une alimentation par portion de texte (il y en a 26). On peut choisir d'éclairer chaque lettre individuellement. Les textes les plus longs (voir tableau excel) sont "quatre" et "minuit" avec 6 caractères. Avec une alimentation de 12v, on peut alimenter 6 leds rouges (vf=1,5v) en séries, avec une résistance de limitation de courant à 20mA calculée ci dessous:
    6 x 1,5v = 9v => 12v-9v=3v => R=3000/20 = 150 ohms

    Le même mode de calcul donne les valeurs de R pour les mots de 1 à 5 lettres

    Pour 5 lettres : R= 4500/20 = 225
    Pour 4 lettres : R= 6000/20 = 300
    Pour 3 lettres : R= 7500/20 = 375
    Pour 2 lettres : R= 9000/20 = 450
    Pour 1 lettre : R= 10500/20 = 525

    On peut choisir les valeurs normalisées les plus proches, l’œil ne verra sans doute pas de différence.

    Il y a d'autres options, avec moins de leds.

    A suivre
    Dernière modification par mag1 ; 23/02/2020 à 13h07.
    Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...

  10. #9
    mag1

    Re : Horloge à texte pour les nuls

    Bonjour,

    Pas de questions? Je ne sais pas si quelqu'un est intéressé par ce projet, mais je continue....

    Nouvelle version du schéma avec prise en compte de la lumière ambiante. Il y aura sans doute de petites retouches à faire en fonction des leds choisies et du design général.
    La lumière ambiante module l'éclairage, mais le poussoir (toujours le même) permet en fonctionnement normal d'atténuer l'éclairage en 8 paliers cycliques (en gros de 30% à 100%).
    La consommation max de l'éclairage est grossièrement calculé à 200mA (10 textes à 20mA)
    Le schéma, soumis à la critique:

    Nom : Qclocktwopwm.JPG
Affichages : 394
Taille : 178,8 Ko

    A suivre
    MM
    Dernière modification par mag1 ; 24/02/2020 à 08h40.
    Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...

  11. #10
    mag1

    Re : Horloge à texte pour les nuls

    Suite:

    Nouveau code de cette horloge Qclocktwo, tenant compte des observations précédentes.
    Il y avait des traces d'une led pour aider à la manipulation du poussoir, elles sont supprimées.
    Ajout d'une sub pour faire varier, en plus de la LDR, la luminosité des leds, restera à faire quelques essais en vraie grandeur.
    Toujours pas testé, toujours sous réserve...

    Code:
    ;Horloge qclocktwo picaxe 14M2 MM 23/02/2020
    ;poussoir sur C.3
    ;interrupt sur C.0  :comptage pulses 1Hz
    #picaxe 14M2
    setfreq M32
    symbol pous=pinC.3
    symbol eclair= C.2
    symbol LDR= C.4
    symbol nuit=bit0		; bascule jour/nuit
    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 (300 à 1023)
    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 memomm=b9		;mémo veleur précédente des minutes
    symbol varb=b10		;variable locale
    symbol dch=b11			;varieble locale, chiffre des dizaines
    #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
    	setint %1,%1		;interruption niveau 1 sur C.0	
    	hi2csetup i2cmaster,%11010000, i2cslow_32, i2cbyte    ;init I2C horloge
    	hi2cout 14,(0)  ;raz registre de configuration control DS3231(1Hz sur SQW)
     	cptmax=150			;compte initiale pour bascule au bout de 2mm30s
    	If pous=0 then gosub initDS
    	gosub synchro		;suite mise àl'heure et perrte alimentation: recherche heure et mn
    	pwmout pwmdiv64,eclair,255,1023		;PWM sur C.2 488Hz ,100%
    	read 0,word lum		;lecture niveau éclairage mis en mémoire EEPROM
    ;boucle principale **********************
    	do
    		do						;mise à l'échelle de lum à ajouter ?
    			readadc10 LDR,lum		;lecture LDR	
    			if pous=0 then gosub atenu		
    			pwmduty eclair,varlum	;valeur % PWM (lum=0 =>0%, 1023 =>100%)
    		loop while memomm=mm		;attente incrémentation des minutes (+5)
    		memomm=mm		;mm a changé =>mise en mémoire
    		cptmax=300		;compteur 5 mn au second passage
    		if mm>55 then	;après 55, on repasse 
    			mm=0			;à 0
    			inc hh		;et on incrémente l'heure	
    		endif
    		if hh>12 then
    			hh=0
    		endif
    		heure=hh*100 + mm		;heure en forme hhmm
    		if heure>1230 then	;fin d'un cycle de 12h =>inversion bascule J/N
    			nuit=not nuit		;inversion bascule
    			heure=0035			;départ nouveau cycle
    		endif		
    		gosub codmin
    		gosub codheur		
    	loop
    ;sub codage heure , octets 4 et 3 ***************
    codheur:	
    	select case heure		
    		case 0035 to 0130
    			octet4=8: octet3=2
    		case 135 to 230
    			octet4=128: octet3=3
    		case 235 to 330
    			octet4=32:octet3=3
    		case 335 to 430
    			octet4=64:octet3=3
    		case 435 to 530
    			octet4=0:octet3=131	
    		case 535 to 630
    			octet4=1:octet3=3	
    		case 635 to 730
    			octet4=4:octet3=3
    		case 735 to 830
    			octet4=2:octet3=3
    		case 835 to 930
    			octet4=16:octet3=3
    		case 935 to 1030
    			octet4=0:octet3=51
    		case 1035 to 1130
    			octet4=0:octet3=7
    		case 1135 to 1230
    			if nuit=1 then
    				octet4=0:octet3=8		;si nuit, on affiche "minuit"
    			else
    				octet4=0:octet3=96	;sinon, de jour, on affiche "midi"
    			endif
    	end select	
    	gosub afficheur
    	return
    ; sub codage minutes octets 2 et 1
    codmin:
    	select case mm
    		case 35
    			octet2=2 : octet1=28
    		case 40
     			octet2=2 : octet1=16
    		case 45
    			octet2=3 : octet1=32
    		case 50
    			octet2=2 : octet1=128
    		case 55
    			octet2=2 : octet1=4
    		case 00
    			octet2=0 : octet1=0
    		case 05
    			octet2=0 : octet1=4
    		case 10
    			octet2=0 : octet1=128
    		case 15
    			octet2=0 : octet1=96
    		case 20
    			octet2=0 : octet1=16
    		case 25
    			octet2=0 : octet1=28
    		case 30
    			octet2=0 : octet1=67
    			if heure=0030 then
    				octet1=66
    			endif	
    	end select	
    	gosub affichmin
    	return
    '******* Initialisation DS3231;'%11010000 est l'adresse i2c******     
    initDS:	  
    	do loop while pous=0		
    		time=0
    	do		;réglage jour/nuit			
    		if pous=0 then
    			time =0		
    			do 
    			pause 1		;bug simu
    			loop while pous=0	;attente relâchement
    			if time >3 then	;plus de 3s, on sort
    			 	exit
    			endif
    			nuit=not nuit		
    		endif
    	loop 
    	do loop while pous=0	
    	time=0 : hh=0
    	do		;réglage heures
    		if pous=0 then
    			time =0		
    			do
    			pause 1		;bug simu
    			loop while pous=0
    			if time >3 then
    			 	exit
    			endif
    			inc hh
    			if hh>12 then
    				hh=0
    			endif			
    		endif
    		heure=hh *100
    		gosub codheur	
    	loop
    	do loop while pous=0		;on a choisi l'heure
    	time=0 : mm=0
    	do		;réglage minutes
    		if pous=0 then
    			time =0		
    			do
    			pause 1		;bug simu
    			loop while pous=0
    			if time >3 then
    			 	exit
    			endif
    			mm=mm+5
    			if mm>55 then
    				mm=0
    			endif			
    		endif		
    		gosub codmin	
    	loop
    	do loop while pous=0		;on a choisi les minutes
    	memomm=mm
    	mmbcd=mm		;mmbcd est la forme BCD de mm sur 1 octet
    	hhbcd=hh	
    	transdectobcd(mmbcd)
    	transdectobcd(hhbcd)	
    	do loop while pous=1	
    	do loop while pous=0	
    	hi2cout 0, ($00,mmbcd,hhbcd)   ;mise en mémoire EEPROM	format BCD	
    	return
    afficheur:	;affichage des l'heures
    	hi2csetup i2cmaster,%01001000, i2cslow_32, i2cbyte ;adresse I2C à ajuster
    	hi2cout (octet4) 
    	hi2csetup i2cmaster,%01001010, i2cslow_32, i2cbyte	 ;adresse I2C à ajuster
    	hi2cout (octet3)
    	return
    affichmin:	;affichage des minutes
    	hi2csetup i2cmaster,%01001100, i2cslow_32, i2cbyte	;adresse I2C à ajuster
    	hi2cout (octet2)
    	hi2csetup i2cmaster,%01001110, i2cslow_32, i2cbyte	;adresse I2C à ajuster
    	hi2cout (octet1)
    	return 
    synchro:	;sous prog resynchronosation
    	do
    		hi2cin 1,(mm,hh)	
    		transbcdtodec(mm)		;passage forme bcd => dec
    		transbcdtodec(hh)
    		varb= mm//5			;attente mn multiple de 5
    	loop while varb<>0				
    	heure=hh * 100 +mm
    	select case heure
    		case 0035 to 1230		;on passera par "midi"
    		 nuit=0
    		else nuit=1				;sinon,on passera par "minuit"
    	endselect
    	return
    atenu:
    	do loop while pous=0
    	lum= lum-100
    	if lum<300 then
    		lum= 1023
    	endif
    	write 0,word lum		;mise en mémoire EEPROM
    	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
    Dernière modification par mag1 ; 24/02/2020 à 16h48.
    Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...

  12. #11
    mag1

    Re : Horloge à texte pour les nuls

    Bonjour,

    Oui, ben non, ma modif pour atténuer la luminosité , c'est du n'importe quoi. Donc, je reprends.
    La lecture de la LDR va donner un nombre entre 0 et 1023 (0 dans le noir et 1023 en pleine lumière). On veut appliquer à ce nombre un coefficient variant de 0 à 100%.
    En fait, ce coef varie de 10/60 à 60/60, le numérateur varie de 10 à 60 par palier de 5 en fonction de l'appui sur le poussoir. Il y a donc maintenant 10 paliers.
    Ce coef est gardé en mémoire EEPROM pour ne pas le refaire en cas de coupure de courant.
    Voici donc un résumé du programme, avec la boucle principale et la sub du réglage du coef: Tout cela n'a pas encore été testé en réalité.....

    Code:
    ;boucle principale **********************
    	do
    		do						;mise à l'échelle de lum à ajouter ?
    			readadc10 LDR,lum		;lecture LDR	
    			if pous=0 then gosub atenu
    			varlum=lum*coef/60		
    			pwmduty eclair,varlum	;valeur % PWM (lum=0 =>0%, 1023 =>100%)
    		loop while memomm=mm		;attente incrémentation des minutes (+5)
    		memomm=mm		;mm a changé =>mise en mémoire
    		cptmax=300		;compteur 5 mn au second passage
    		if mm>55 then	;après 55, on repasse 
    			mm=0			;à 0
    			inc hh		;et on incrémente l'heure	
    		endif
    		if hh>12 then
    			hh=0
    		endif
    		heure=hh*100 + mm		;heure en forme hhmm
    		if heure>1230 then	;fin d'un cycle de 12h =>inversion bascule J/N
    			nuit=not nuit		;inversion bascule
    			heure=0035			;départ nouveau cycle
    		endif		
    		gosub codmin
    		gosub codheur		
    	loop
    
    atenu:
    	do loop while pous=0
    	coef=coef+5
    	if coef>60 then
    		coef=10
    	endif	
    	write 0,coef		;mise en mémoire EEPROM
    	return
    A suivre
    Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...

  13. #12
    mag1

    Re : Horloge à texte pour les nuls

    Bonjour,

    Il va bien falloir entrer dans la partie "mécanique", où chaqu'un peut donner libre cours à son imagination. Perso, je pense à une plaque genre véroboard (bandes ou 3 pastilles) de 20 x 20 cm, avec une led rouge cms par lettre, rouge pour pouvoir mettre 6 leds en série avec alimentation 12v. Il faudra compartimenter les 26 portions de texte, ou chaque lettre avec un croisillon (papier noir?). Pour la face avant, peut être une simple feuille de papier calque, avec le texte imprimé et éclairé par l'arrière. La face avant découpée au laser n'est pas à la portée de tous, mais on peut aussi découper au cutter, c'est plus fastidieux.

    Avant, voici le plan de câblage des portions de texte (voir #9), directement issu du tableau excel :
    Les valeurs des octets (en rouge) se retrouvent dans les "select case" du code basic en #10
    Le début du tableau:

    tableau1qlock.JPG

    Et la fin, avec les deux options jour/nuit que l'on retrouve dans le code basic:

    tableau2qlock.JPG

    A suivre...
    MM
    Dernière modification par mag1 ; 26/02/2020 à 09h01.
    Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...

  14. #13
    mag1

    Re : Horloge à texte pour les nuls

    Idée face avant:
    Je verrais bien ce tableau excel, imprimé sur un papier calque A4, il fait 19 x 19 cm, entre deux feuilles de plexiglass translucides:

    Nom : face qlock.JPG
Affichages : 361
Taille : 59,7 Ko

    L'intéret est que l'on peut choisir la police de caractères et les couleurs

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

  15. #14
    mag1

    Re : Horloge à texte pour les nuls

    Manquait la première ligne de mon copier-coller, le même, avec une autre police, juste pour le plaisir:

    Nom : face qlock2.JPG
Affichages : 349
Taille : 61,7 Ko

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

  16. #15
    mag1

    Re : Horloge à texte pour les nuls

    Mais si vous voulez choisir vous même, voici le fichier Excel, vous sélectionnez la totalité du tableau et vous allez promener la souris dans la liste des polices disponibles (et il y en a...), on peut aussi modifier la taille, les dimensions du tableau ne changent pas: 19 x 19 cm:

    face qlock2.xlsx

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

  17. #16
    mag1

    Re : Horloge à texte pour les nuls

    Bonjour,

    Réflexion...Dans un premier temps, je pensais réunir en série les leds d'un même mot. C'est bien si la tension reste constante, mais il y a le pwm.
    Le vf des leds reste constant (presque) et donc la variation de tension se retrouve aux bornes de la R limitation et donc le courant dans les branches est fonction du nombre de leds....dommage.

    Conclusion, avec le pwm, il faut une R par led, 97 leds, 97 R.
    Les leds et les R seront sur le véroboard de 20 x20 cm , leds cms 1206, du coup, j'abandonne les leds rouges pour des leds blanches et le 12V pour du 5V. Ça va consomme plus, mais sur secteur...
    les Vf de ces leds 1206 seraient de 2V ?

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

  18. #17
    mag1

    Re : Horloge à texte pour les nuls

    Je soumets aux moustachus du forum ce nouveau schéma un peu modifié par rapport au précédent#9:

    Nom : schemqlock2.JPG
Affichages : 328
Taille : 187,7 Ko

    Les leds seront des cms 1206, les résistances aussi.
    MM
    Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...

  19. #18
    Antoane
    Responsable technique

    Re : Horloge à texte pour les nuls

    Bonjour,

    Merci pour le partage de ton projet, que je suis de loin
    Citation Envoyé par mag1 Voir le message
    Réflexion...Dans un premier temps, je pensais réunir en série les leds d'un même mot. C'est bien si la tension reste constante, mais il y a le pwm.
    Le vf des leds reste constant (presque) et donc la variation de tension se retrouve aux bornes de la R limitation et donc le courant dans les branches est fonction du nombre de leds....dommage.
    Je ne suis pas sûr de comprendre : le courant moyen dans les led vaut Iavg = dc * (Vcc-n*Vf)/R, où dc est la rapport cyclique, Vcc la tension d'alimentation, R la résistance de limitation, n le nombre de led, et Vf leur tension directe.
    Donc si les résistances correspondant aux différents mots sont choisies de manière à ce que le courant ait la même valeur pour toutes les lettre lorsque dc = 1 (et ce indépendamment du nombre de led par branche), la luminosité sera homogène indépendamment de la valeur de dc...
    J'ai loupé quelque chose ?

    Sans rapport : les résistances de pull-up du bus I²C sont intégrées au µC ?
    Dernière modification par Antoane ; 27/02/2020 à 18h02.
    Deux pattes c'est une diode, trois pattes c'est un transistor, quatre pattes c'est une vache.

  20. #19
    mag1

    Re : Horloge à texte pour les nuls

    Citation Envoyé par Antoane Voir le message
    Je ne suis pas sûr de comprendre : le courant moyen dans les led vaut Iavg = dc * (Vcc-n*Vf)/R, où dc est la rapport cyclique, Vcc la tension d'alimentation, R la résistance de limitation, n le nombre de led, et Vf leur tension directe.
    Donc si les résistances correspondant aux différents mots sont choisies de manière à ce que le courant ait la même valeur pour toutes les lettre lorsque dc = 1 (et ce indépendamment du nombre de led par branche), la luminosité sera homogène indépendamment de la valeur de dc...
    J'ai loupé quelque chose ?
    Merci pour la réponse. Non, j'ai mal réfléchi, il est vrai que pour un RC, c'est l’œil qui fait la moyenne et le courant est constant. De toute façon, j'ai choisi l'option une R par led pour avoir une led blanche, quitte à consommer plus. Avec le papier calque imprimé, on peut vraiment faire ce que l'on veut et changer couleurs et polices à loisir.
    Pour les pullup des modules I2C, je pense qu'elles sont déjà intégrés aux modules, sinon, je les ajouterai.

    Merci pour le partage de ton projet, que je suis de loin
    Tu peux approcher... pas de risque de contagion

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

  21. #20
    invite03481543

    Re : Horloge à texte pour les nuls

    Salut mag1,
    Pour l'I2C compte tenu du nombre de PCF il faudra prévoir des pull-up de 4,7K, si tu as la possibilité d'activer des pull-up interne du coté de ton uC ils seront trop élevés, en général 10K ou 100K selon les uC.
    Pense également à bien découpler les alim de tes PCF et RTC
    Bonne continuation.
    (De mon coté j'ai terminé le routage sur l'autre version du projet que je posterai dans le WE, ainsi que les mises à jour schémas.)
    A+

  22. #21
    mag1

    Re : Horloge à texte pour les nuls

    Citation Envoyé par HULK28 Voir le message
    Salut mag1,
    Pour l'I2C compte tenu du nombre de PCF il faudra prévoir des pull-up de 4,7K, si tu as la possibilité d'activer des pull-up interne du coté de ton uC ils seront trop élevés, en général 10K ou 100K selon les uC.
    Pense également à bien découpler les alim de tes PCF et RTC
    Bonne continuation.
    (De mon coté j'ai terminé le routage sur l'autre version du projet que je posterai dans le WE, ainsi que les mises à jour schémas.)
    A+
    Merci Antoane et HULK pour vos conseils.
    En principe, les pullup sont intégrées aux modules (4k7 pour la RTC et sur les PCF8574, je pense voir des 1k).
    Modules PCF8574 (Que j'attends...Aie, je vais encore me faire bastonner): https://www.ebay.fr/itm/PCF8574-PCF8...x27HnveYvSpV4Q.
    Pour l'instant, je prévois une alim de 7,5v régulés 12W : https://www.gotronic.fr/art-adaptate...10gs-30762.htm
    (J'en ai, pas de problèmes, ne chauffent pas). Pour garder le régulateur 7805 et compenser la perte Vcesat du BDX54 (à remplacer par un mosfet éventuellement).
    Le PWN est actuellement à 498 Hz, on peut monter pour un découplage plus facile.

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

  23. #22
    mag1

    Re : Horloge à texte pour les nuls

    Bonsoir,

    Quelques nouvelles du front.
    J'ai reçu 100 leds cms 1206 blanches et 100 R de 75 ohms.
    J'ai relié deux plaques d'essais à bandes de 100 x 200 mm, divisé en 10 x 11 cases
    Et j'ai commencé à souder:
    Nom : soudures leds.JPG
Affichages : 287
Taille : 126,2 Ko

    Les leds 1206 donnent un éclairage largement suffisant (sur 120° d'angle), qu'il faudra moduler.
    Il y aura quatre connecteurs 8 broches où viendront s'enficher les modules PCF8574/uln
    Quelques tests avec DS3231 fonctionnent, resynchronisation OK.
    Pour des tests plus poussés, il faut continuer à souder...et recevoir le matériel (moins facile).

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

  24. #23
    mag1

    Re : Horloge à texte pour les nuls

    En fait, le plus délicat est la fabrication de la face avant (si on ne veut pas en acheter une entre 500 et 1500 euros).
    Le papier calque a ses limites, le noir n'est pas vraiment opaque. On est loin des originaux, mais pour un essai, c'est facile.
    Pour une façade opaque, il faut découper, sans découpeuse. Je pense aussi au transfert de toner sur feuille de cuivre 0,1 mm, rongée au perchlo
    Bref, des essais en vue. Et si quelqu'un a une meilleure idée, je suis preneur.

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

  25. #24
    mag1

    Re : Horloge à texte pour les nuls

    Bonjour,

    Coronavirus aidant, j'ai repris l'horloge.
    Deux photos des travaux:
    Côté face avant, toutes les diodes et R sont soudées. les ponts diode/R sont isolés, théoriquement, diodes et R sont identiques, les points diodes-résistances sont équipotentiels et donc on peut "théoriquement" les réunir, mais comme on est pas chinois, elles sont isolées.
    Toutes les branches sont reliées d'un côté au potentiel positif, les côtés négatifs seront reliés aux sorties uln.
    Qlock2face.jpg
    Côté pile, reste à relier les sorties uln aux blocs textes (26).
    Il restait 6 sorties inutilisées. J'ai ajouté deux blocs texte "AM" et "PM" en bas à droite ,( "avant midi" et "post midi" en français), permettant de distinguer matin et soir pour les affichages de 1 à 11 heures. A ajouter dans la grille excel et dans le code.
    Un module uln-PCF8574 est en place, le PCB picaxe-dc3231 sera au centre
    Qlock2pile.jpg
    A suivre
    MM
    Dernière modification par mag1 ; 18/03/2020 à 14h40.
    Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...

  26. #25
    mag1

    Re : Horloge à texte pour les nuls

    Bonjour,

    Suite: J'ai commencer le câblage des octets 3 et 4 (les heures).
    On s'aperçoit très vite que du point de vue esthétique, la procédure utilisée n'est pas le meilleure.
    Il fallait câbler au mieux pour éviter les croisements et faire des liaisons courtes. Reporter la configuration obtenue au niveau des octets dans le tableau excel et introduire les valeurs obtenue dans le programme.
    C'est purement esthétique, le fonctionnement sera strictement le même, donc, je ne change rien.
    Disons qu'il s'agit d'un prototype, lorsque tout sera valider, il faudra revoir la distribution des blocs de texte dans tous les octets pour optimiser le câblage.
    En attendant:
    Nom : câblage1.jpg
Affichages : 260
Taille : 206,7 Ko

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

  27. #26
    mag1

    Re : Horloge à texte pour les nuls

    Citation Envoyé par mag1 Voir le message
    C'est purement esthétique, le fonctionnement sera strictement le même, donc, je ne change rien.
    Disons qu'il s'agit d'un prototype, lorsque tout sera valider, il faudra revoir la distribution des blocs de texte dans tous les octets pour optimiser le câblage.
    Quel flemmard celui là! Pour une quinzaines de soudures...
    Ok, j'ai modifié:

    Nom : qlochcablage2.jpg
Affichages : 191
Taille : 262,9 Ko

    Les autres modifs à suivre

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

  28. #27
    mag1

    Re : Horloge à texte pour les nuls

    Bonjour,

    Première modif, la nouvelle grille de programmation.
    Avec l'ajout de l'option "AM" - "PM" . La bascule jour/nuit, nommée "nuit" dans le programme change de valeur à 12h30 et 0h30.
    Par défaut le bit 0 de l'octet 1 est à 1 (AM=1). La bascule nuit=0 jusqu'à 12h30 et 1 de 12h30 à 0h30. Je ferai donc octet1=octet1 +nuit =>AM s'éteint et PM s'allume.
    Pm et AM seront éteints avec "midi" ou "minuit" allumés

    Nom : nouv grille.JPG
Affichages : 234
Taille : 125,3 Ko

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

  29. #28
    mag1

    Re : Horloge à texte pour les nuls

    Bonjour,

    Quelques nouvelles..

    Photo du câblage, avec la sortie LDR et l'alim.
    cablageplaque.jpg

    Et avec une protection (radio recyclée, ça sert pas seulement à ouvrir des portes) et le reste : platine centrale et les quatre modules pcf8574 -uln2803. Manque juste le poussoir.
    yaout.jpg

    Les essais en vraie grandeur arriveront avant les masques ffp2 (HS: j'arrête avant d'être grossier)

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

  30. #29
    mag1

    Re : Horloge à texte pour les nuls

    Bonjour

    La version Qlocktwo du pauvre avance. C'est pas encore parfait, encore un peu de travail...
    Surtout au niveau de la présentation (manque le "e" de "est", la led à fait "paf" suite à un C/C de la résistance).

    Nom : Qlocktwo1.jpg
Affichages : 174
Taille : 424,8 Ko

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

  31. #30
    mag1

    Re : Horloge à texte pour les nuls

    Bonjour,

    Côté présentation, il y a la possibilité d'acheter des faces avant dessinées par de grands designers pour quelques milliers d'euros...

    Pour ma part, je pense placer deux feuilles de papiers calque (pour meilleure opacité) ente deux feuilles de plexiglas de 25cm de côté. Le boitier arrière contenant l'électronique et la plaque de leds ne dépassera pas une épaisseur 20 mm. L'alimentation sera un bloc secteur 5V 1A, comme tous les chargeurs de téléphone que l'on jette à la poubelle parce que le câble est coupé.
    Je vais proposer une construction sur plaque véroboard pour éviter les circuits imprimés. Je proposerai aussi une version circuit imprimé, le faire fabriquer par un artisan ne coûte pas très cher et est beaucoup plus simple.

    Côté code, il fonctionne. Je vérifie que la resynchronisation fonctionne dans tous les cas. Je me complique un peu la vie en voulant anticiper l'affichage de 150 secondes et limiter l'erreur absolue de lecture à 2 mn 30s max. Ce que ne font pas les Qlocktwo classiques, avec les voyants de progression dans les coins.

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

Page 1 sur 2 1 DernièreDernière

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, 03h28
  2. La thermodynamique pour les nuls ?
    Par invited6e157f4 dans le forum Lectures scientifiques
    Réponses: 3
    Dernier message: 16/05/2010, 22h15
  3. Le diamagnétisme pour les nuls
    Par invitee8534f39 dans le forum Chimie
    Réponses: 4
    Dernier message: 08/06/2009, 16h52
  4. RMN pour les nuls....
    Par invited0359390 dans le forum Chimie
    Réponses: 8
    Dernier message: 17/06/2007, 20h43
  5. La rmn pour les nuls
    Par invitea47878d8 dans le forum Lectures scientifiques
    Réponses: 0
    Dernier message: 29/08/2005, 13h57
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...