Pages: [1]   Go Down
Author Topic: Arduino programmation phasage / dephasage temporel  (Read 1634 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Newbie
*
Karma: 0
Posts: 16
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour messieurs et mesdames .
j'ai besoin d'aide pour la programmation d'un projet que je suis en train de réalisé .
En gros je contrôle la mise en marche et l'extinction de poste de radio afin de généré du bruit capté via les postes sur les grandes ondes.
L'idée est de créer du phasage / déphasage dans les allumages extinctions des postes à la manière des musiques minimalistes américaine ( Steve Reich, Philip Glass ou encore Terry riley et bien d'autre )

Pour le moment j'ai juste repris un code de led le : blink , et j'ai rentré plusieurs variables correspondant aux différentes sortie PWM sur lesquelles sont branché mes relays et j'ai mis des temps d'allumage différents .

Mais du coup là je n'ai qu'un systême de répétition d'allumage et d'extinction de mes postes.

j'ai vraiment besoin que chaque poste ait un cycle d'allumage et d'extinction différents : poste 1 on : 1sec off : 1,2sec et poste 2 on: 0,5sec et off : 0,2sec. c'est un exemple mais voila l'idée .

Voila je ne vois vraiment pas comment programmer ça pour le moment.

Merci d'avance pour votre aide .


valentin .
Logged

Ales
Offline Offline
Faraday Member
**
Karma: 39
Posts: 3827
Do or DIY
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Salut !

Désolé mais je vois pas trop la différence entre ce que tu as fait et ce que tu veux faire :s tu veux que ça s'allume au hasard ?

Rq : pas besoin spécialement des sorties PWM pour commander un allumage, les sorties digitales suffisent.
Logged


Geneva
Offline Offline
Faraday Member
**
Karma: 30
Posts: 3231
Yoplait... le pt'it suisse
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

regarde ici :
maitriser le temps


Tu remplaces SDL_GetTicks()  par la fonction millis() et tu crées autant de variable de temps que tu as de radio( int timeRadio1,timeRadio2,timeRadio3...).
« Last Edit: May 26, 2010, 08:54:15 am by jfs » Logged

MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

0
Offline Offline
Newbie
*
Karma: 0
Posts: 16
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Je veux pouvoir donner des temps d'allumages et d'extinction pour chaque postes . Et que chaque poste boucle de façon autonome selon ses temps d'on et off

Et tu peux controler des relays par les sorties digitales ?
je croyais que justement les pwm c'était pour ça .
enfin c'est pas le problème .

je regarde ce que jean françois m'a mis .


merci en tout cas .
valentin .
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 16
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Punaise j'ai du mal à faire le lien avec ce que j'ai .
Là on arrive à calculer le temps écouler depuis le début du lancement .

Moi je veux rentrer mes temps . tu vois ?
radio 1 on : 1sec      off : 1,1sec   et LOOP
radio 2 on : 0,5sec   off : 0,8sec   et LOOP
radio 3 on : 0,9sec   off : 2,1sec   et LOOP
radio 4 on : 1,5sec   off : 3,1sec   et LOOP

je veux que chaque loop soit autonome, pas que le code lise tous au fur et à mesure et revienne au début .

j'espère que c'est plus clair .


valentin . smiley-wink

Logged

Geneva
Offline Offline
Faraday Member
**
Karma: 30
Posts: 3231
Yoplait... le pt'it suisse
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ben oui.....

Code:
timeRadio1=millis();

if(timeRadio1-oldTimeRadio1>= 1000){
allume_ta_radio_1();
oldTimeRadio1=timeRadio1;
}

timeRadio2=millis();

if(timeRadio2-oldTimeRadio2>= 1500){
allume_ta_radio_2();
oldTimeRadio2=timeRadio2;
}


si la différence entre le temps écoulé et le temps précédent fait plus ou est égale à 1000, ta radio s'allume....

donc tu peux faire que ta radio 1 s'allume toute les secondes (1000)
la 2 toutes les 1,5 secondes (1500) etc.
« Last Edit: May 26, 2010, 03:05:27 am by jfs » Logged

MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

0
Offline Offline
Newbie
*
Karma: 0
Posts: 16
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ok je suis un peu lent par moment .
je vais tester ça sur mes postes directement je serais sur comme ça .

merci merci .

valentin . smiley-grin
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 16
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Mais là je gère les on .
mais les off ne sont pas pris en compte là si ?

à la rigueur je rajoute une ligne avec millis pour avoir 1000ms de off par exemple ?

valentin .
Logged

Geneva
Offline Offline
Faraday Member
**
Karma: 30
Posts: 3231
Yoplait... le pt'it suisse
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

si elles s'allument et s'éteignent à la même fréquence que leur allumage, tu fais un boleen etatRadio:

Code:
allume _la_radio(){
etatRadio= !etatRadio;

if (etatRadio){
allume la radio;
}
else{
eteint la radio;
}
« Last Edit: May 26, 2010, 03:36:40 am by jfs » Logged

MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

0
Offline Offline
Newbie
*
Karma: 0
Posts: 16
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

merci merci merci
je vais taffer la dessus .

valentin .
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 16
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bon j'ai commencé à codé cela, mais vu que je n'ai jamais codé du boolean et du millis() je t'avoue que je suis un peu perdu .

je comprend la globalité mais après la syntaxe, je lutte .


mon code sans le boolean :


 int radio1 =  9;
int radio2 =  10;
int radio3 =  5;
int radio4 =  6;


void setup()   {                
  // initialize the digital pin as an output:
  pinMode(radio1, OUTPUT);
  pinMode(radio2, OUTPUT);    
    pinMode(radio3, OUTPUT);  
   pinMode(radio4, OUTPUT);  

void loop()

timeRadio1=millis();

if(timeRadio1-oldTimeRadio1 >= 1000 {
  allume_ta_radio_1 ()
  oldTimeRadio1=timeRadio1;
}


timeRadio2=millis();

if(timeRadio2-oldTimeRadio2 >= 1500){
  allume_ta_radio_2();
  oldTimeRadio2=timeRadio2;
}


voila ou j'en suis . :-/
valentin .
Logged

Geneva
Offline Offline
Faraday Member
**
Karma: 30
Posts: 3231
Yoplait... le pt'it suisse
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Tu peux faire une simple fonctionque allume _la _radio(); que tu remets dans chaque itération if() et que tu déclares en dehors de ta boucle:

Code:
bolean etat_radio1=Low;      // declaration du boleen etat_radio
bolean etat_radio2=Low;
int choix_radio=0;                // declare le n[ch730]de la radio à allumer à 0 aucune ne s'allume.


allume_ta_radio(){    // fonction à placer en dehors de void loop() et void setup().
switch (choix_radio){


case 0;

digitalWrite(radio1,Low);
digitalWrite(radio2,Low);
break;

case 1:

etat_radio1= !etat_radio1 ;  // inverse la valeur de etat_radio1   (Low-High)

digitalWrite(radio1, etat_radio1);

break;

case 2:

etat_radio2= !etatradio2 ;  // inverse la valeur de etat_radio2 (Low-High)

digitalWrite(radio2, etat_radio2);
break;
}

sans être sur de la syntaxe....  smiley
Logged

MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

0
Offline Offline
Newbie
*
Karma: 0
Posts: 16
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bon, j'essayé de comprendre, mais millis je comprend le fonctionnement, boolean plus ou moins mais les deux ensemble, je comprends pas du tout, et ou mettons nous le void setup void loop du coup ? ...

Je suis vraiment petit petit en programmation et là c'est beaucoup trop pour moi .

juste m'aider sur ou m'être le void setup et loop .

valentin .
Logged

Geneva
Offline Offline
Faraday Member
**
Karma: 30
Posts: 3231
Yoplait... le pt'it suisse
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Commence par là :

http://arduino.cc/fr/Main/MiniReference
Logged

MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

Pages: [1]   Go Up
Jump to: