Bienvenue aux nouveaux arrivants sur FantasPic !
- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.
--- L’équipe FantasPic ---
- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.
--- L’équipe FantasPic ---
Modérateur : Gérard
Nombre aléatoire
Merci pour l'exemple pspic. Intéressant.
@++
@++
Nombre aléatoire
Bonjour et merci pspic,
Faut-il souder un petit bout de fil sur l'entrée analogique flottante RA0 de manière à ce que celle-ci reçoive plus de parasites pour générer un nombre aléatoire entre 0 et 1023 à chaque lecture "ADC_Read(0)"
Merci pour les explications de Srand() et Rand().
Je pense avoir tous les éléments qu'il me manquait. je vais tantôt faire les premiers essais. @+
Cordialement.
Tango.
Faut-il souder un petit bout de fil sur l'entrée analogique flottante RA0 de manière à ce que celle-ci reçoive plus de parasites pour générer un nombre aléatoire entre 0 et 1023 à chaque lecture "ADC_Read(0)"
Merci pour les explications de Srand() et Rand().
Je pense avoir tous les éléments qu'il me manquait. je vais tantôt faire les premiers essais. @+
Cordialement.
Tango.
Nombre aléatoire
Nombre aléatoire
-
Jérémy
Administrateur du site- Messages : 2725
- Âge : 45
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
Bonjour ici,
J'ai un doute sur l’utilisation de leacture ADC seul .
En fait je doute que tu puisses obtenir un 0 ou 1 par exemple en faisait une lecture analogique? Moi je prendrais le chiffre des unités ( de 0 à 9) puis je referais une lecture et reprendrais le dernier chiffre ou les deux derniers et ferait une opération mathématiques pour obtenir la des chiffres dans la fourchette désiré . Un truc du genre
J'ai un doute sur l’utilisation de leacture ADC seul .
En fait je doute que tu puisses obtenir un 0 ou 1 par exemple en faisait une lecture analogique? Moi je prendrais le chiffre des unités ( de 0 à 9) puis je referais une lecture et reprendrais le dernier chiffre ou les deux derniers et ferait une opération mathématiques pour obtenir la des chiffres dans la fourchette désiré . Un truc du genre
Nombre aléatoire
BonjourJérémy,
Je n'est pas bien compris ta remarque, peux tu préciser ?
Tango souhaite allumer une lampe toutes les 2 heures pendant un temps aléatoire de 1 à 15 mn.
Je viens de tester en réel et ça fonctionne.
Attention, remplacer delay_ms(1000) par Delay_ms(7200 * 1000) pour un cycle toutes les 2 heures.
Je n'est pas bien compris ta remarque, peux tu préciser ?
Tango souhaite allumer une lampe toutes les 2 heures pendant un temps aléatoire de 1 à 15 mn.
Je viens de tester en réel et ça fonctionne.
Attention, remplacer delay_ms(1000) par Delay_ms(7200 * 1000) pour un cycle toutes les 2 heures.
Code : Tout sélectionner
program GeneNbrAleatoire_2
'Génère un nombre aléatoire entre 1 et 255.
'Testé avec PIC 18F2420 à 8MHz sur Easy Pic 5.
dim V0, Vp, Bc as byte
V0Str as string[3]
Va as word
main:
'Uart1_Init(9600)
TRISA = 1
PORTB = 0
TRISB = 0
ADC_Init()
Adcon1 = %00001110 'RA0 en entrée ana
While true
Va = ADC_Read(0) 'Lecture entrée ana RA0 en l'air
Srand(Va and 15) 'Fixe le point de départ
V0 = rand() 'Nombre tiré au sort entre 0 et 255
V0 = V0 and 15 'Filtre sur 0 à 15.
if V0 = Vp then V0 = V0 - 1 end if 'Anti répétition.
if V0 < 1 then V0 = 5 end if 'Eliminer le chiffre 0
Vp = V0 'Mem valeur précédente.
' bytetostr(V0,V0Str) 'Conversion valeur tirée en Txt.
'Uart1_write_Text(","+V0Str) 'Envoi valeur tirée sur UART
SetBit(PORTB,0) 'Lampe = 1
for Bc = 1 to V0 'Boucle tempo
delay_ms(1000* 60) 'Tempo en mn
next Bc
ClearBit(PORTB,0) 'Lampe = 0
delay_ms(1000) 'Pour 2 h. --> delay_ms(7200 * 1000)
Wend
end.
Nombre aléatoire
-
Jérémy
Administrateur du site- Messages : 2725
- Âge : 45
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
Je n'est pas bien compris ta remarque, peux tu préciser ?
Pas de probléme, j'ai parfois du mal a expliqué ce que je pense!
La génération d'un nombre aléatoire doit permettre d'obtenir n'importe quel chiffre . Hors je ne pense pas que tu puisses obtenir la valeur 0 en faisant une lecture analogique d'une broche en l'air.
N'ayant pas lu en entier , j'avais pas vu que la tempo est forcement supérieur à 0 et que tu faisais un autre traitement derriére !
Nombre aléatoire
Le chiffre tiré au sort sert à définir le nombre de minutes d'allumage de la lampe, donc 0 est exclus.
Zéro est possible en admettant que le chiffre %00110000 est tiré.
Comme je fais %00110000 AND 00001111 le résultat est bien zéro.
Je fait un test pour vérifier que le chiffre est <> 0, sinon je force une valeur > 0 (voir le code).
Résultat du test toutes les secondes ajouté à 18h52:
Heure Temps mn
15:53:07 5
15:58:08 15
16:13:09 8
16:21:10 7
16:28:11 5
16:33:12 6
16:39:13 5
16:44:18 2
16:46:19 6
16:52:22 8
17:00:26 7
17:07:27 5
17:12:28 8
17:20:29 9
17:29:30 8
17:37:31 7
17:44:32 5
17:49:33 8
17:57:34 12
18:09:35 3
18:12:36 6
18:18:37 9
18:27:38 14
Zéro est possible en admettant que le chiffre %00110000 est tiré.
Comme je fais %00110000 AND 00001111 le résultat est bien zéro.
Je fait un test pour vérifier que le chiffre est <> 0, sinon je force une valeur > 0 (voir le code).
Résultat du test toutes les secondes ajouté à 18h52:
Heure Temps mn
15:53:07 5
15:58:08 15
16:13:09 8
16:21:10 7
16:28:11 5
16:33:12 6
16:39:13 5
16:44:18 2
16:46:19 6
16:52:22 8
17:00:26 7
17:07:27 5
17:12:28 8
17:20:29 9
17:29:30 8
17:37:31 7
17:44:32 5
17:49:33 8
17:57:34 12
18:09:35 3
18:12:36 6
18:18:37 9
18:27:38 14
Modifié en dernier par pspic le mer. 28 nov. 2018 18:54, modifié 1 fois.
Nombre aléatoire
Retourner vers « Langage BASIC & PASCAL »
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 87 invités