Programme sur un At908535 et une carte stk200

amo41 Messages postés 12 Date d'inscription jeudi 16 février 2006 Statut Membre Dernière intervention 10 mars 2009 - 13 avril 2008 à 22:27
amo41 Messages postés 12 Date d'inscription jeudi 16 février 2006 Statut Membre Dernière intervention 10 mars 2009 - 12 mai 2008 à 14:54
Bonjour, alors voila je souhaite réaliser un programme pour mon PPE (projet pluritechnique encadré) mais ayant peu de connaissance dans ce domaine, je tiens à faire appel à vous. Je vous explique le déroulement. Admettons qu'un bébé se réveille la nuit, bien notre sytème doit detecter cela avec un detecteur infrarouge(que l'on trouve habituellement sous les lampes extrieures) et actionner un moteur qui fait bercer le berceau,avec une berceuse et une musique. Voila où j'en suis, j'ai créé un algo pour voir ce que cela donnait ici . Puis en français:

debut



variable



initialisation des prériphérique
moteur=0 // moteur a 0 <=> moteur a l'arret
musique=0 // musique a 0 <=> pas de musique
lumiere=0 // musique a 0 <=> pas de musique
comteur_mouvement=0 // comteur de mouvement
compteur_temps_1=0; // un compteur de temps en seconde
compteur_temps_2=0; // un compteur de temps en seconde




 





tant que (1=1) // boucle infini a modifier si il y a un bouton on/off
{
 tant que(compteur_mouvement<12)// quand on sort de cette boucle le bébé a fait 12 mouvements en moins de 180 seconde
 {
  compteur_mouvement=0
  compteur_temps_1=0
  tant que(compteur_mouvement<12 ET compteur_temps_1<180) // a la sorti de cette boucle soit il se serra écouler 180 sconde , soit le bébé aurra bouger 12 fois
  {
   si(mouvement!=0)
   {
    compteur_mouvement++
   }
   sinon
   {
    attendre(3seconde)
   }
   fin si
  }
  moteur=1
  musique=1
  lumiere=1
  attendre(600seconde)
  
}
 
} // fin du programme ( bouton off)




Voila, donc j'aurai besoin de savoir quels fonction réalise ceci? Merci d'avance

7 réponses

amo41 Messages postés 12 Date d'inscription jeudi 16 février 2006 Statut Membre Dernière intervention 10 mars 2009
13 avril 2008 à 22:29
0
amo41 Messages postés 12 Date d'inscription jeudi 16 février 2006 Statut Membre Dernière intervention 10 mars 2009
13 avril 2008 à 22:43
0
amo41 Messages postés 12 Date d'inscription jeudi 16 février 2006 Statut Membre Dernière intervention 10 mars 2009
14 avril 2008 à 00:15
Il me faut une une fonction en C qui permet d'attendre un certain nombre de seconde et savoir comment dire au moteur/lumière/musique de s'allumer.merci
0
amo41 Messages postés 12 Date d'inscription jeudi 16 février 2006 Statut Membre Dernière intervention 10 mars 2009
14 avril 2008 à 11:26
je suis dans la bonne section?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_cedric177 Messages postés 20 Date d'inscription mardi 15 avril 2008 Statut Membre Dernière intervention 19 avril 2008
15 avril 2008 à 20:58
cedric

oui
0
amo41 Messages postés 12 Date d'inscription jeudi 16 février 2006 Statut Membre Dernière intervention 10 mars 2009
12 mai 2008 à 14:50
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50,
//programme : mouvement bebe
#define F_CPU 4000000UL
#include
#include <stdlib.h>
#include
//entrees
#define mouvement PINA
//variable
int
compteur_mouvement
;
//initialisation des périphériques
void
Init_Periph
(
void
)
{
compteur_mouvement
=
0
;
DDRA
=
0xFD
;
/* port A en sortie sauf PA1 en entrée*/
PORTA
=
0x02
;
}
/**********************************************************
Programme
***********************************************************/
void
main
(
void
)
{
Init_Periph
();
while
(
1
)
// boucle infinie a modifier si il y a un bouton on/off
{
compteur_mouvement
=
0
;
while
(
compteur_mouvement
<
5
)
//quand on sort de cette boucle le bébé a fait 12 mouvements en moins de 180 seconde
{
if
(
mouvement

0x02
)
{
compteur_mouvement
++
;
}
_delay_ms
(
10000
);
}
PORTA
=
0x0C
;
_delay_ms
(
60000
);
_delay_ms
(
60000
);
PORTA
=
0x00
;
}
//fin while et fin du programme ( bouton off)
}
//fin du main
Le while de la ligne 35, while (compteur_mouvement<5; j'aimerai que si on dépasse un temps de 180s, ce while ne doit pas continuer, il doit recommencer. Comment puis-je faire? Merci
0
amo41 Messages postés 12 Date d'inscription jeudi 16 février 2006 Statut Membre Dernière intervention 10 mars 2009
12 mai 2008 à 14:54
désolée, je ne sais pas pourquoi cela c'est mal affiché,

//programme : mouvement bebe
#define F_CPU 4000000UL 
#include         
#include <stdlib.h>
#include


//entrees
#define mouvement PINA
//variable


int compteur_mouvement;
//initialisation des périphériques


void Init_Periph(void)
 {
 compteur_mouvement=0;
  
 DDRA = 0xFD;/* port A en sortie sauf PA1 en entrée*/
 PORTA = 0x02;
 }


/**********************************************************
                       Programme                               
***********************************************************/




void main(void)
{
 Init_Periph();


 while(1)// boucle infinie a modifier si il y a un bouton on/off
  {
   compteur_mouvement=0;
   
   while (compteur_mouvement<5) //quand on sort de cette boucle le bébé a fait 12 mouvements en moins de 180 seconde
   {
    if (mouvement == 0x02) 
    {
    compteur_mouvement++;
    }
   _delay_ms(3000);
   }
    PORTA=0x0C;
    _delay_ms(3000);
    _delay_ms(3000);
    _delay_ms(3000);
    _delay_ms(3000);
    PORTA=0x00;
    
        
 }//fin while et fin du programme ( bouton off)
}//fin du main

Pour ce while la: while (compteur_mouvement<5; j'aimerai que si on dépasse un temps de 180s, ce while ne doit pas continuer, il doit recommencer. Comment puis-je faire? Merci
0