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.
local relais = peripheral.find("relay")
print("bobine : " .. tostring(relais.coil()) .. ", avant : " .. relais.output())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ère | normalement ouvert | normalement fermé |
|---|---|---|
| aucun signal | ouvert : l'avant donne 0 | fermé : l'avant donne les côtés, ou 15 |
| un signal | fermé : l'avant donne les côtés, ou 15 | ouvert : 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.
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()
Si la bobine est alimentée : true tant que de la redstone arrive à l'arrière du relais.
- boolean
truetant 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.
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)
endVoir aussi relay.output()
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.
- 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.
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")
endVoir aussi relay.coil() relay.normally_closed()
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.
- boolean
truepour un relais normalement fermé,falsepour un relais normalement ouvert
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")
endVoir 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.
closedbooleantruepour normalement fermé,falsepour 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.
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()) -- trueUn 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.
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)
endVoir 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.
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)
endUn relais contre l'ordinateur apparaît sous le nom de sa face (left...), un relais du câble sous son nom de réseau.