Create: Computing AgesDoc Brass
Périphériques

Relais

Le relais électromécanique : une bobine à l'arrière actionne un contact. Un ordinateur lit la bobine et la sortie, et le fait passer de normalement ouvert à normalement fermé.

Le Relais est le relais électromécanique des lignes télégraphiques et des premiers calculateurs à relais : une bobine actionne un contact. La redstone qui arrive à l'arrière alimente la bobine, et tant que le contact est fermé, l'avant donne de la redstone. Tout seul, c'est une pièce de redstone, comme un répéteur, sans besoin d'ordinateur. Un ordinateur relié au relais lit sa bobine et sa sortie, et fait passer son contact de normalement ouvert à normalement fermé, comme un clic droit.

Brass
local relais = peripheral.find("relay")
print("bobine : " .. tostring(relais.coil()) .. ", avant : " .. relais.output())
Méthodes
relais.coil()Si la bobine est alimentée : true tant que de la redstone arrive à l'arrière du relais.
relais.output()La puissance que donne l'avant du relais en ce moment : 0 tant que le contact est ouvert ; quand il est fermé, le signal le plus fort des côtés, ou 15 quand les côtés ne reçoivent rien.
relais.normally_closed()La façon dont travaille le contact. false, normalement ouvert (un relais neuf) : il conduit tant que la bobine est alimentée. true, normalement fermé : il conduit tant qu'elle ne l'est pas.
relais.set_normally_closed(closed)Rend le relais normalement fermé (true) ou normalement ouvert (false), comme un clic droit : il fait son clic et son avant suit le nouveau mode. Le relais garde ce mode après la fin du programme.

Installation

Le poser. Le relais est un bloc plat qui se pose sur un bloc solide : il tombe quand le bloc du dessous disparaît. Son avant est tourné vers vous quand vous le posez, et la Clé de Create le fait tourner ensuite.

Ses côtés.

  • L'arrière est la bobine : n'importe quel signal de redstone l'alimente. Le contact bascule 2 ticks plus tard (un dixième de seconde), avec un clic.
  • Les côtés gauche et droit alimentent le contact : le plus fort de leurs deux signaux est celui qui passe.
  • L'avant donne la sortie tant que le contact est fermé : le signal le plus fort des côtés, ou un 15 plein quand aucun signal n'arrive sur les côtés. Il alimente le bloc posé devant lui, comme un répéteur.

Normalement ouvert ou normalement fermé. Un clic droit change la façon dont travaille le contact :

à l'arrièrenormalement ouvertnormalement fermé
aucun signalouvert : l'avant donne 0fermé : l'avant donne les côtés, ou 15
un signalfermé : l'avant donne les côtés, ou 15ouvert : l'avant donne 0

Un relais neuf est normalement ouvert. Seul, il transmet un signal (normalement ouvert) ou l'inverse (normalement fermé) ; un signal sur un côté choisit la puissance qui passe.

Le joindre depuis un ordinateur. Posez-le contre une face de l'ordinateur et appelez-le par cette face, ou, à partir du Mini-ordinateur, contre un Câble de données du réseau de l'ordinateur : il prend alors un nom comme relay@120,64,-35. peripheral.find("relay") prend le premier, et peripheral.list("relay") donne les noms de tous. Tous les ordinateurs peuvent le piloter, Calculateur à tubes compris. Voir Périphériques et Tous les périphériques.

De la redstone loin de l'ordinateur

Un relais posé sur le Câble de données est une entrée et une sortie de redstone pour l'ordinateur, n'importe où sur son réseau, sans Liaison de redstone. Sa bobine dit si un levier ou une plaque de pression derrière lui est activé (relay.coil()). Sans rien à l'arrière, relay.set_normally_closed() allume son avant (true : 15) ou l'éteint (false : 0).

Quand le relais a disparu (cassé, remplacé), chaque méthode arrête le programme avec relay removed ; quand son chunk n'est pas chargé, avec peripheral is not loaded.

Lecture

#

relais.coil()

→ boolean

Si la bobine est alimentée : true tant que de la redstone arrive à l'arrière du relais.

Renvoie
boolean
true tant que la bobine est alimentée

La réponse suit le contact : elle change donc 2 ticks après le signal de l'arrière, avec le clic que vous entendez. Une impulsion plus courte peut ne jamais faire basculer le contact.

Un compteur de visiteurs : une plaque de pression sur le seuil est reliée à l'arrière d'un relais, et l'ordinateur compte chaque fois que la bobine se ferme.

Brass
local relais = peripheral.find("relay")
local visiteurs = 0
local precedent = relais.coil()
while true do
  local maintenant = relais.coil()
  if maintenant and not precedent then
    visiteurs = visiteurs + 1
    print(visiteurs .. " visiteurs jusqu'ici")
  end
  precedent = maintenant
  sleep(0.1)
end

Voir aussi relay.output()

#

relais.output()

→ number

La puissance que donne l'avant du relais en ce moment : 0 tant que le contact est ouvert ; quand il est fermé, le signal le plus fort des côtés, ou 15 quand les côtés ne reçoivent rien.

Renvoie
number
la puissance de redstone que donne l'avant, de 0 à 15

Le contact suit les côtés aussitôt : seule la bobine attend 2 ticks.

Brass
local relais = peripheral.find("relay")
local puissance = relais.output()
if puissance == 0 then
  print("contact ouvert : rien ne sort à l'avant")
else
  print("contact fermé : " .. puissance .. " passe")
end

Voir aussi relay.coil() relay.normally_closed()

#

relais.normally_closed()

→ boolean

La façon dont travaille le contact. false, normalement ouvert (un relais neuf) : il conduit tant que la bobine est alimentée. true, normalement fermé : il conduit tant qu'elle ne l'est pas.

Renvoie
boolean
true pour un relais normalement fermé, false pour un relais normalement ouvert
Brass
local relais = peripheral.find("relay")
if relais.normally_closed() then
  print("normalement fermé : l'avant est allumé quand l'arrière est éteint")
else
  print("normalement ouvert : l'avant est allumé quand l'arrière l'est")
end

Voir aussi relay.set_normally_closed()

Commande

#

relais.set_normally_closed(closed)

Rend le relais normalement fermé (true) ou normalement ouvert (false), comme un clic droit : il fait son clic et son avant suit le nouveau mode. Le relais garde ce mode après la fin du programme.

Paramètres
closed boolean
true pour normalement fermé, false pour normalement ouvert

Demander le mode qu'il a déjà ne fait rien, pas même un clic. Autre chose que true ou false arrête le programme : relais.set_normally_closed(1) donne bad argument #1 to 'set_normally_closed' (boolean expected, got number).

Le changement réveille les blocs autour du relais : il est donc appliqué à la fin du tick du programme, une seule fois, avec la dernière valeur demandée. Une boucle qui bascule le relais plusieurs fois dans un tick ne coûte au monde qu'une mise à jour. Pour la même raison, normally_closed() et output() lisent encore l'ancien état dans le même tick ; sleep(0.05) attend un tick.

Brass
local relais = peripheral.find("relay")
relais.set_normally_closed(true)
print(relais.normally_closed())   -- encore l'ancien mode
sleep(0.05)
print(relais.normally_closed())   -- true

Un voyant au fond de l'usine : un relais sur le câble, rien à l'arrière, une lampe de redstone devant lui. L'ordinateur le fait clignoter.

Brass
local relais = peripheral.wrap("relay@120,64,-35")
while true do
  relais.set_normally_closed(true)    -- la lampe s'allume (15)
  sleep(1)
  relais.set_normally_closed(false)   -- la lampe s'éteint
  sleep(1)
end

Voir aussi relay.normally_closed() relay.output()

Exemple : un tableau de relais

Un tableau qui montre chaque relais du câble, comme le panneau d'un vieux central téléphonique : son nom, son mode (NO pour normalement ouvert, NF pour normalement fermé), sa bobine et la puissance de son avant.

Brass
while true do
  term.clear()
  term.set_cursor(1, 1)
  for _, nom in ipairs(peripheral.list("relay")) do
    local relais = peripheral.wrap(nom)
    local mode = "NO"
    if relais.normally_closed() then
      mode = "NF"
    end
    local bobine = "non"
    if relais.coil() then
      bobine = "oui"
    end
    print(string.format("%-22s %s bobine %-3s avant %2d", nom, mode, bobine, relais.output()))
  end
  sleep(1)
end

Un relais contre l'ordinateur apparaît sous le nom de sa face (left...), un relais du câble sous son nom de réseau.