Aller au contenu

j'apprend le LUA mai


971jmd

Messages recommandés

function f (op, a, b)
    
  if op and a and b then				--si tous les arguments sont là
    
    if op == 'add' then					--add
      return a + b

il y a un truc bizard dans la 1ère partie du code :

 

le SI alors SI c'est possible une condition comme ça ?
si OP et A et B     alors     si OP == ADD then return A+B

 

 

Lien vers le commentaire
Partager sur d’autres sites

ce sont des conditions imbriquées : 

 

alors on teste dans premier temps si on a tous les arguments :

 

if op and A and B then    c'est la meme chose que :

if op ~= nil and A ~= nil and B ~= nil then -- ~= veut dire différent

on teste que les arguments ne sont pas null (qu'ils ont bien été transmis).

sinon on retourne une erreur comme quoi il manque des arguments.

 

et dans un deuxième temps (donc à condition d'avoir eut tous les arguments), on teste la l'opération à effectuer.

on renvoie aussi une erreur si l'opération n'est pas connue.

 


 

 

  • Like 1
Lien vers le commentaire
Partager sur d’autres sites

Pour faire simple et comprendre le code, j'ai découpé 

 

1-  j'ai rajouté des valeurs en variable local et un nouvel argument 

2- la ligne N°7 contrôles si les arguments sont bien présents et non leurs valeurs 

9- Alors SI op == add   alors retourne et adition la valeur a + b +z

 

si je comprends bien comme ADD n'existe pas alors retourne et adition la valeur a + b +z

 

C'est le role de add et op que je ne comprends pas  

 

foncf.JPG.05385e9f2c5cbf0ffdf91ae770720b32.JPG

 

Modifié par 971jmd
Lien vers le commentaire
Partager sur d’autres sites

Citation

2- la ligne N°7 contrôles si les arguments sont bien présents et non leurs valeurs 

ben elle contrôle que tu as passé une valeur. (il s'en fiche du type)

 

Citation

9- Alors SI op == add   alors retourne et adition la valeur a + b +z

 

tout à fait

Lien vers le commentaire
Partager sur d’autres sites

Bon ça ne fonctionne pas :D 

 

Voilà une partie du code

si motsoerti1 = 1  alors     change la variable offs2    à   1 (qui passe à OFF  la sortie 2 )     et   lance le moteur de la sortie n1    

 

 


function ouvferm (mot)
  
  local MotSorti1 = 1  ---tonumber(fibaro:getValue(33, "value"))  ----Module double - moteur  sortie 1  On  ou  Off donc valeur 1 ou 0
  local MotSorti2 = 0 ---tonumber(fibaro:getValue(24, "value"))  ----Module double - moteur  sortie 2  On  ou  Off donc valeur 1 ou 0
  local offs2 = 0

  ---si Value sortie N°1 = 1 alors ON moteur - ouverture
  if MotSorti1 == 1  then  offs2 = 1  --- turn ON  module N°1 Sortie 1
  return "ouverture"
end

 ---si sortie N°2 Value = 1 alors OFF moteur ferm sortie N°2
  if offs2 == 1 then  print("off s2")  --- turn OFF module Sortie N°2 moteur
  return  "OFF sortie 2"
  
 
end
end
 

 

Lien vers le commentaire
Partager sur d’autres sites

Dans un 1er temps Un inverseur 

 

si S 1 ON  alors S2 OFF 

si S 2 ON  alors S1 OFF

 

et au final je cherche à substituer la carte principal de mon moteur de portail  pour gérer le moteur par ma HC2 ou raspberry

 

 

Lien vers le commentaire
Partager sur d’autres sites

j'ai testé ça 

 

bin non 

function inverseur (a , b)
  
  if a == 1 and  b == 0 then 
    return "s1"

elseif b == 2 and a == 1 then 
return "s2"

  end
end

-- Affectation des valeur 0 ou 1
param1 = 0
param2 = 1

---On appelle la fonction inverseur
inverseur (param1, param2)

print(inverseur(1 , 2))

 

Lien vers le commentaire
Partager sur d’autres sites

je pense avoir trouver 

 

function inverseur (a, b)
  
  if a == 1  and b == 0 then print("ON moteur Ouvertur")
    return 

elseif b == 1 and b == 1 then print("ON moteur Fermetur")
return 

  end
end

-- Affectation des valeur 0 ou 1
param1 = 0
param2 = 1

---On appelle la fonction inverseur
inverseur (param1, param2)

 

Modifié par 971jmd
Lien vers le commentaire
Partager sur d’autres sites

Mai au niveau des 

 

-- Affectation des valeur 0 ou 1
param1 = 0
param2 = 1

 

je vois pas comment passer     param1 =0 et param2 = 1 ou si  param1 =1 et param2 = 0

 

je pense qu'il faire une autre fonction 

 

Lien vers le commentaire
Partager sur d’autres sites

J'ai trouvé mai il reste un truc important le STOP

le principe du moteur de portail est :  un appui = ouverture - un  un appui = STOP - un appui = fermeture

 

 

function sleep(a) 
    local sec = tonumber(os.clock() + a)
    while (os.clock() < sec) do 
    end 
end


function inverseur (a)
  
  if a == 1   then sleep(1)  print("ON moteur Ouvertur")
    return 

elseif a == 2 then sleep(1)  print("ON moteur Fermetur")
return 

  end
end

-- Affectation des valeur 0 ou 1
param1 = 1

---On appelle la fonction inverseur
inverseur (param1)

 

Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...