[TUTO SIOC] La fonction TIMER

Tous les tutoriels sur la programmation SIOC, le language des cartes Opencockpits

Re: tuto sioc la fonction TIMER

Messagede mameloose » Mar 5 Avr 2016 21:34

effectivement je viens de me rendre compte qu'une fois un timer lancé on ne peux pas l'arreter je cherche la solution jvous tient au courant ....
Avatar de l’utilisateur
mameloose
 
Messages: 1271
Inscription: 20/04/09
Localisation: evreux

Re: tuto sioc la fonction TIMER

Messagede mameloose » Mer 6 Avr 2016 20:27

wwoooouuuh ca y est apres une grosse prise de tete jai trouvé une solution mais c'est une usine a gaz ! gratgrat


voila le code

Code: Tout sélectionner
Var 0001, name VALEUR, Value 0
{
  IF &VALEUR = 1
  {
    CALL &incremen
  }
  IF &VALEUR = 0
  {
    CALL &decrement
  }
}

Var 0002, name SERVO, Link USB_SERVOS, Output 1, PosL 0, PosC 512, PosR 1023

Var 0003, name incremen, Link SUBRUTINE
{
  &montee = TIMER 200 ,1 ,5
}

Var 0004, name decrement, Link SUBRUTINE
{
  &descente = TIMER 0 ,-1 ,5
}

Var 0005, name montee
{
  IF &VALEUR = 1
  {
    &descente = &montee   
    &SERVO = &montee   
  }
  IF &VALEUR = 0
  {
    &montee = &descente   
    &SERVO = &descente   
  }
}

Var 0006, name descente



en gros la variable qui sappelle "valeur" represente la batterie par exemple donc allumée elle est egale a 1 et eteinte a 0

ici si jallume ma battery la servo prend bien la montée que je lui demande mais si je met a zero AVANT quelle atteigne la position haute alors elle redescend bien au lieu de stagner ou faire nimporte quoi comme chez Pierre roicouronne
Avatar de l’utilisateur
mameloose
 
Messages: 1271
Inscription: 20/04/09
Localisation: evreux

Re: tuto sioc la fonction TIMER

Messagede fab » Jeu 7 Avr 2016 07:04

Ok, génial ! je note et ne manquerai pas de tester aussi !
Avatar de l’utilisateur
fab
 
Messages: 4414
Inscription: 26/12/12
Localisation: Roubaix

Re: tuto sioc la fonction TIMER

Messagede pierre01 » Jeu 7 Avr 2016 10:26

Merci pour ton aide, je regarde également !
J'utile moi aussi une variable "courant" qui tient compte de "batterie ON ou OFF" , ce serait donc dans la façon de l'utiliser ???
A+
Pierre.
Avatar de l’utilisateur
pierre01
 
Messages: 1769
Inscription: 19/04/09
Localisation: Vers Vesoul (Haute Saône)

Re: tuto sioc la fonction TIMER

Messagede mameloose » Jeu 7 Avr 2016 10:28

normalement oui ! test le code dans iocp tu met la valeur 1 pour valeur tu vas voir la servo monter et si tu met 0 avant quelle finisse elle va redescendre
Avatar de l’utilisateur
mameloose
 
Messages: 1271
Inscription: 20/04/09
Localisation: evreux

Re: tuto sioc la fonction TIMER

Messagede mameloose » Jeu 7 Avr 2016 10:33

aie petit soucis je viens de retester le code ... si j'attend que la servo atteigne son point haut puis je passe la valeur a zero elle ne descend plus ....

jvais trouver la modif qui va bien ...
Avatar de l’utilisateur
mameloose
 
Messages: 1271
Inscription: 20/04/09
Localisation: evreux

Re: tuto sioc la fonction TIMER

Messagede mameloose » Jeu 7 Avr 2016 10:37

c'est bon j'ai fais la modif qui va bien voici le code final !

Code: Tout sélectionner
Var 0001, name VALEUR, Value 0
{
  IF &VALEUR = 1
  {
    CALL &incremen
  }
  IF &VALEUR = 0
  {
    CALL &decrement
  }
}

Var 0002, name SERVO, Link USB_SERVOS, Output 1, PosL 0, PosC 512, PosR 1023

Var 0003, name incremen, Link SUBRUTINE
{
  &montee = TIMER 200 ,1 ,5
}

Var 0004, name decrement, Link SUBRUTINE
{
  &descente = TIMER 0 ,-1 ,5
}

Var 0005, name montee
{
  IF &VALEUR = 1
  {
    &descente = &montee   
    &SERVO = &montee   
  }
  IF &VALEUR = 0
  {
    &montee = &descente   
    &SERVO = &descente   
  }
}

Var 0006, name descente
{
  IF &VALEUR = 1
  {
    &descente = &montee   
    &SERVO = &montee   
  }
  IF &VALEUR = 0
  {
    &montee = &descente   
    &SERVO = &descente   
  }
}
Avatar de l’utilisateur
mameloose
 
Messages: 1271
Inscription: 20/04/09
Localisation: evreux

Re: tuto sioc la fonction TIMER

Messagede arcc » Dim 10 Avr 2016 11:16

Bonjour à tous
J'ai besoin d'un peu d'aide.
J'ai appliqué le tuto pour faire varier plus lentement l'aiguille de mes deux servo. Ca fonctionne très bien dans le sens croissant (a l'allumage de la batterie) mais en fin de vol , quand je coupe l'alimentation, les deux aiguilles ne reviennent pas à o.
Je ne sais pas trop si il faut rentrer un -1 (comme indiqué dans le premier message pour la decrementation).

Mon bout de code
Code: Tout sélectionner
Var 600, name Hyd_Main_Press, Link FSUIPC_INOUT, Offset $9224, Length 4 // Hydraulic Servo Right
{
    L0 = &Hyd_Main_Press * 0.77
    L1 = L0 + 170
    &Hyd_Main_svo = TIMER L1 ,1 ,10
}

Var 602, name Hyd_Main_svo, Link USB_SERVOS, Output 1, PosL 1, PosC 512, PosR 1023

Var 610, name Hyd_Brk_Press, Link FSUIPC_INOUT, Offset $9228, Length 4 // Hydraulic Servo Left
{
    L0 = &Hyd_Brk_Press * 0.756
    L1 = L0 + 164
    &Hyd_Brk_svo = TIMER L1 ,1 ,10
}

Var 612, name Hyd_Brk_svo, Link USB_SERVOS, Output 2, PosL 1, PosC 512, PosR 1023


Merci

Christian
Un ancien sous-marinier qui a pris de la hauteur.
Avatar de l’utilisateur
arcc
 
Messages: 715
Inscription: 16/12/13
Localisation: La ou fini la terre (Finistere)

Re: tuto sioc la fonction TIMER

Messagede mameloose » Dim 10 Avr 2016 11:43

salut Christian !

le probleme avec ton code c'est que tu as juste un incrementation ...


je ne connais pas les valeurs de tes offset mais tu devrais mettre des conditions IF du genre IF la valeur de carb est superieur a zero alors timer incremention de L1

et IF la valeur de carb est plus petite que 1500 ? (pour lexemple ) alors decrementation TImer de L1 -1 10
Avatar de l’utilisateur
mameloose
 
Messages: 1271
Inscription: 20/04/09
Localisation: evreux

Re: tuto sioc la fonction TIMER

Messagede mameloose » Dim 10 Avr 2016 12:03

essaye ca au pire mais je te promet rien .....


Code: Tout sélectionner
Var 0600, name Hyd_Main_Press, Link FSUIPC_INOUT, Offset $9224, Length 4     // Hydraulic Servo Right
{
  L0 = &Hyd_Main_Press * 0.77
  L1 = L0 + 170
  &Hyd_Main_svo = TIMER L1 ,1 ,10
  &Hyd_Main_svo = TIMER L1 ,-1 ,10
}

Var 0602, name Hyd_Main_svo, Link USB_SERVOS, Output 1, PosL 1, PosC 512, PosR 1023

Var 0610, name Hyd_Brk_Press, Link FSUIPC_INOUT, Offset $9228, Length 4     // Hydraulic Servo Left
{
  L0 = &Hyd_Brk_Press * 0.756
  L1 = L0 + 164
  &Hyd_Brk_svo = TIMER L1 ,1 ,10
  &Hyd_Brk_svo = TIMER L1 ,-1 ,10
}

Var 0612, name Hyd_Brk_svo, Link USB_SERVOS, Output 2, PosL 1, PosC 512, PosR 1023
Avatar de l’utilisateur
mameloose
 
Messages: 1271
Inscription: 20/04/09
Localisation: evreux

PrécédenteSuivante

Retourner vers Les TUTOS SIOC





Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 2 invités