| View previous topic :: View next topic |
| Author |
Message |
numerique1
Joined: 17 Nov 2006 Posts: 69
|
Posted: Tue Apr 03, 2007 12:33 pm Post subject: |
|
|
hello dear Bruno
desole meme apres avoir entrer ce code, l alarme est toujours actif le samedi apres midi.
merci.
A+ |
|
| Back to top |
|
BrunoG Site Admin
Joined: 22 Nov 2005 Posts: 636
|
Posted: Wed Apr 04, 2007 9:14 pm Post subject: |
|
|
Hum oui les jours sont comptés à partir de zéro alors qu'ils sont codés à partir de un
il faut donc les renuméroter :
| Code: | symbol LUNDI = 0
symbol MARDI = 1 |
etc...
voila voila  _________________ BrunoG, Administrator |
|
| Back to top |
|
numerique1
Joined: 17 Nov 2006 Posts: 69
|
Posted: Wed Apr 04, 2007 11:32 pm Post subject: |
|
|
salut ami Bruno
merci je vais essayer de modifier. j ai aussi un probleme bizarre: a la mise a zero et au reglage des jours; quand je regle en reculant tout les jours se deffillent de 0 a 6 c est normal. mais si j avance le 6 ne s affiche pas. a 5 l affichage se remet a 0. aussi un probleme de reglage mais rarement avec les heures et les minutes: en avancant l affichage deborde et compte plus que 23h pour les heures et plus que 59mn pour les minutes.
est ce que cette numerotation est la cause?
aussi pour l exploitation de la sortie A4 j ai mesure 1.4 v par rapport au + de l alimentation, et cette valeur ne change pas avec ou sans alarme. .
merci.
A+ |
|
| Back to top |
|
numerique1
Joined: 17 Nov 2006 Posts: 69
|
Posted: Thu Apr 05, 2007 2:57 pm Post subject: |
|
|
hello ami
oui ami vous avez raison .la numerotation n etait pas conforme avec le code. c est bien maintenant tout est entre en ordre.j ai bien regle mes alarmes pour samedi. sauf les problemes cites lahaut.
merci.
A+. |
|
| Back to top |
|
BrunoG Site Admin
Joined: 22 Nov 2005 Posts: 636
|
Posted: Thu Apr 05, 2007 10:17 pm Post subject: |
|
|
| numerique1 wrote: | salut ami Bruno
merci je vais essayer de modifier. j ai aussi un probleme bizarre: a la mise a zero et au reglage des jours; quand je regle en reculant tout les jours se deffillent de 0 a 6 c est normal. mais si j avance le 6 ne s affiche pas. a 5 l affichage se remet a 0. aussi un probleme de reglage mais rarement avec les heures et les minutes: en avancant l affichage deborde et compte plus que 23h pour les heures et plus que 59mn pour les minutes.
est ce que cette numerotation est la cause?
aussi pour l exploitation de la sortie A4 j ai mesure 1.4 v par rapport au + de l alimentation, et cette valeur ne change pas avec ou sans alarme. .
merci.
A+ |
Hello,
oui la fonction setValue() ne permet pas d'atteindre la dernière valeur et le bit RA4 est remis à zéro dans la routine d'interruption
voici les modifications :
| Code: | program alarmClock
#define CATHODE_COMMUNE
symbol LUNDI = 0
symbol MARDI = 1
symbol MERCREDI = 2
symbol JEUDI = 3
symbol VENDREDI = 4
symbol SAMEDI = 5
symbol DIMANCHE = 6
symbol LMMJV = 7
symbol NBALARM = 16
const alarmTable as byte[NBALARM * 4] = (
' JOUR HEURE MINUTE DUREE (secondes, 59 maxi)
LUNDI, 0, 0, 200,
' LUNDI, 8, 30, 10,
LUNDI, 12, 30, 10,
LUNDI, 14, 00, 10,
LUNDI, 16, 30, 10,
MARDI, 8, 30, 10,
MARDI, 12, 30, 10,
MARDI, 14, 00, 10,
MARDI, 16, 30, 10,
JEUDI, 8, 30, 10,
JEUDI, 12, 30, 10,
JEUDI, 14, 00, 10,
JEUDI, 16, 30, 10,
VENDREDI, 8, 30, 10,
VENDREDI, 12, 30, 10,
VENDREDI, 14, 00, 10,
VENDREDI, 16, 30, 10
)
dim maxcount as word
dim scaler as word
dim jj as byte
dim hh as byte
dim mn as byte
dim ss as byte
dim digiled as byte[4]
dim digit as byte
dim dp as byte
dim key as byte
dim alarm as byte
sub procedure interrupt
dim i as byte
scaler = scaler + 1
if scaler > maxcount
then
scaler = 0
inc(ss)
if ss = 60
then
ss = 0
inc(mn)
if mn = 60
then
mn = 0
inc(hh)
if hh = 24
then
hh = 0
inc(jj)
if jj = 8
then
jj = 1
end if
end if
end if
end if
end if
#ifdef CATHODE_COMMUNE
PORTA = 0
TRISA = $0f
key = PORTA
TRISA = 0
PORTB = 0
#else
PORTA = $0f
TRISA = $0f
key = PORTA
key = not(key)
TRISA = 0
PORTB = $ff
#endif
key = key and $07
digit = digit + 1
if digit > 3
then
digit = 0
i = $01
else
i = $01 << digit
end if
#ifdef CATHODE_COMMUNE
PORTB = digiled[digit]
PORTA = i
#else
PORTB = digiled[digit]
PORTB = not(PORTB)
PORTA = not(i)
#endif
PORTA.4 = dp.3
INTCON.T0IF = 0
end sub
sub function intTo7seg(dim n as byte) as byte
select case n
case 0 result = $3F
case 1 result = $06
case 2 result = $5B
case 3 result = $4F
case 4 result = $66
case 5 result = $6D
case 6 result = $7D
case 7 result = $07
case 8 result = $7F
case 9 result = $6F
end select
end sub
sub procedure setValue(dim v as ^byte, dim s as byte, dim max as byte)
digiled[0] = s
digiled[1] = 0
while 1
if key.0
then
inc(v^)
if(v^ > max)
then
v^ = 0
end if
end if
if key.1
then
if(v^ = 0)
then
v^ = max
else
dec(v^)
end if
end if
if key.2
then
Delay_ms(50)
while key.2
wend
Delay_ms(50)
scaler = 0
ss = 0
return
end if
digiled[2] = intTo7seg(v^ / 10)
digiled[3] = intTo7seg(v^ mod 10)
delay_ms(300)
wend
end sub
main:
dim i as byte
dp = 0
hh = 0
mn = 0
ss = 0
jj = 0
maxcount = 15625
PORTA = 0
TRISA = %00000000
PORTB = 0
TRISB = $00
INTCON = %10100000
OPTION_REG = %11011000
setValue(@hh, 116, 23)
setValue(@mn, 55, 59)
setValue(@jj, 14, 6)
while true
if key
then
digiled[0] = intTo7seg(jj)
digiled[1] = 0
digiled[2] = intTo7seg(ss / 10)
digiled[3] = intTo7seg(ss mod 10)
else
if hh < 10
then
digiled[0] = 0
digiled[1] = intTo7seg(hh)
else
digiled[0] = intTo7seg(hh / 10)
digiled[1] = intTo7seg(hh mod 10)
end if
digiled[2] = intTo7seg(mn / 10)
digiled[3] = intTo7seg(mn mod 10)
end if
if scaler > maxcount / 2
then
dp.1 = 1
else
dp.1 = 0
end if
digiled[0].7 = dp.0
digiled[1].7 = dp.1
digiled[2].7 = dp.2
digiled[3].7 = dp.3
alarm = 0
for i = 0 to (NBALARM - 1) * 4
if ((alarmTable[i] = jj) or ((alarmTable[i] = LMMJV) and (jj < SAMEDI))) and (alarmTable[i + 1] = hh) and (alarmTable[i + 2] = mn) and (alarmTable[i + 3] > ss)
then
inc(alarm)
end if
next i
if alarm
then
' PORTA.4 = 1
dp.3 = 1
else
' PORTA.4 = 0
dp.3 = 0
end if
wend
end. |
avec ça la cloche devrait sonner  _________________ BrunoG, Administrator |
|
| Back to top |
|
numerique1
Joined: 17 Nov 2006 Posts: 69
|
Posted: Thu Apr 05, 2007 11:29 pm Post subject: |
|
|
hello ami Bruno.
merci pour les modifications. je vous tiendrai au courant.
A+ |
|
| Back to top |
|
numerique1
Joined: 17 Nov 2006 Posts: 69
|
Posted: Fri Apr 06, 2007 11:34 pm Post subject: |
|
|
salut ami
oui plus de problemes avec l affichage qui debordait. merci ami. seulement j ai rencontre des problemes au niveau de l exploitation de la sortie A4. pouriez vous m indiquer un simple schema a transistor pour commander un relais 12v.ou bien dois je passer par les circuits logiques? merci.
A+. |
|
| Back to top |
|
Gérard
Joined: 01 Mar 2007 Posts: 38 Location: Alsace - France
|
Posted: Sat Apr 07, 2007 7:42 am Post subject: |
|
|
Attention, je crois que A4 est à drain ouvert et ne peut que commander une charge reliée au +5V.
Gérard. |
|
| Back to top |
|
numerique1
Joined: 17 Nov 2006 Posts: 69
|
Posted: Sat Apr 07, 2007 12:23 pm Post subject: |
|
|
salut
merci Mr Gerard de l information. auriez vous un schema pratique pour exploiter ce type de port?, car mon pic a deja rendu l ame en se trompant sur les broches d un transistor:cry: .
merci. A+. |
|
| Back to top |
|
BrunoG Site Admin
Joined: 22 Nov 2005 Posts: 636
|
Posted: Sat Apr 07, 2007 11:08 pm Post subject: |
|
|
Oui Gérard a raison RA4 est en collecteur ouvert, si vous tentez de commander directement une charge sous plus de 5V avec cette sortie elle ne résistera pas, idem si vous lui faites débiter plus de 25 mA
pour commander un relais, quelque chose comme ça devrait donner satisfaction :
A+, _________________ BrunoG, Administrator |
|
| Back to top |
|
numerique1
Joined: 17 Nov 2006 Posts: 69
|
Posted: Sat Apr 07, 2007 11:21 pm Post subject: |
|
|
salut.
merci ami Bruno pour le schema. je vous tiendrai au courant .
A+. |
|
| Back to top |
|
numerique1
Joined: 17 Nov 2006 Posts: 69
|
Posted: Sun Apr 08, 2007 11:44 am Post subject: |
|
|
salut cher ami Bruno.
desole mais le schema ne marche pas .le relai reste colle des la mise sous tension.en plus l afficheur demarre toujours avec un M00 et non avec un J 00. je crois qu il faut mettre un NPN et non un PNP .car l etage de sortie de A4 est cable a la masse. j ai essaye avec un NPN mais j ai du mal a regler l heure car l afficheur demarre parfois avec un M 00. .
vous ne croyais pas qu il faut mettre une resistance de tirage a la sortie A4 vers le 5v pour avoir des niveaux exploitables?
meci.A+. |
|
| Back to top |
|
numerique1
Joined: 17 Nov 2006 Posts: 69
|
Posted: Sun Apr 08, 2007 7:17 pm Post subject: |
|
|
hello
j ai un phenomene bizzare que j ai pas compris. si je soude un fil de 10cm de long sur la broche 3 (A4): il y a impossibilite de de redemarrer le montage a zero (h 00) . il demarre toujours par un (m00). si je retire ce fil il demarre a zero (h 00) . |
|
| Back to top |
|
BrunoG Site Admin
Joined: 22 Nov 2005 Posts: 636
|
Posted: Sun Apr 08, 2007 11:14 pm Post subject: |
|
|
| numerique1 wrote: | hello
j ai un phenomene bizzare que j ai pas compris. si je soude un fil de 10cm de long sur la broche 3 (A4): il y a impossibilite de de redemarrer le montage a zero (h 00) . il demarre toujours par un (m00). si je retire ce fil il demarre a zero (h 00) . |
Houla
Les ports RA0 à RA2 sont bien tirés à la masse par une résistance de 10K ?
Je n'ai pas testé le circuit que j'ai proposé pour commander le relais, je vais vérifier cela.
A+! _________________ BrunoG, Administrator |
|
| Back to top |
|
numerique1
Joined: 17 Nov 2006 Posts: 69
|
Posted: Sun Apr 08, 2007 11:43 pm Post subject: |
|
|
salut ami Bruno.
oui les ports A0,A1 et A2 sont bien tires a la masse par des 10k . merci cher ami.
A+ |
|
| Back to top |
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|