Difference between revisions of "Redstone (event)"

From ComputerCraft Wiki
Jump to: navigation, search
(Added a second more complete example of usage, and how you might treat this event.)
m (Fixed spelling, grammar; made an edit to keep consistency)
Line 12: Line 12:
 
   print("Redstone input changed.")
 
   print("Redstone input changed.")
 
  end
 
  end
|output=This will tell one when the redstone event is triggered. Note this doesn't tell you the side of the event.
+
|output=This will tell one when the redstone event is triggered. Note that this doesn't tell you the side of the event.
 
}}=== Application ===
 
}}=== Application ===
 
{{Example
 
{{Example
Line 32: Line 32:
 
   
 
   
 
  while true do -- Start an endless loop
 
  while true do -- Start an endless loop
   os.pullEvent("redstone") -- Yeild the computer until some redstone changes
+
   os.pullEvent("redstone") -- Yield the computer until some redstone changes
 
   -- We don't care what the event returns, since the first variable will be "redstone" and the rest will be nil.  
 
   -- We don't care what the event returns, since the first variable will be "redstone" and the rest will be nil.  
 
   
 
   
   --Now we check each side to see if it's changed.
+
   -- Now we check each side to see if it's changed.
 
   for side, state in pairs(statelist) do -- Run the lines of code in this loop for each key/value pair in statelist
 
   for side, state in pairs(statelist) do -- Run the lines of code in this loop for each key/value pair in statelist
 
     if rs.getInput(side) ~= state then -- If the side we're checking doesn't match what it was last time we checked then
 
     if rs.getInput(side) ~= state then -- If the side we're checking doesn't match what it was last time we checked then

Revision as of 17:08, 11 April 2013

This page needs some serious TLC, stat!
Please help us by cleaning it, fixing it up, or sparing it some love.
(Reason: A demonstration on the use and handling of this event would be beneficial. AfterLifeLochie 16:13, 30 November 2012 (MSK))



Grid Modem.png  Event redstone
Fired when any Redstone inputs change on any of the sides of the computer.
Returned Object 1 Nothing

Basic Usage

Grid paper.png  Example
Alerts via console output when a redstone input changes.
Code
while true do
  event = os.pullEvent("redstone")
  print("Redstone input changed.")
end
Output This will tell one when the redstone event is triggered. Note that this doesn't tell you the side of the event.


Application

Grid paper.png  Example
This program will store the values of each redstone signal on load, and on each state change. It will further display on the screen which state was changed.
Code
-- Set up a list which contains the sides as keys, and the current redstone state of each side as a boolean value
statelist = {
  ["top"] = rs.getInput("top"),
  ["front"] = rs.getInput("front"),
  ["left"] = rs.getInput("left"),
  ["right"] = rs.getInput("right"),
  ["back"] = rs.getInput("back"),
  ["bottom"] = rs.getInput("bottom"),
}

-- Ready the terminal for printing to
term.clear()
term.setCursorPos(1,1)

while true do -- Start an endless loop
  os.pullEvent("redstone") -- Yield the computer until some redstone changes
  -- We don't care what the event returns, since the first variable will be "redstone" and the rest will be nil. 

  -- Now we check each side to see if it's changed.
  for side, state in pairs(statelist) do -- Run the lines of code in this loop for each key/value pair in statelist
    if rs.getInput(side) ~= state then -- If the side we're checking doesn't match what it was last time we checked then
      print(side.." is now "..tostring(rs.getInput(side))) -- Print the new state of the side.
      statelist[side] = rs.getInput(side) -- Update the statelist with the new change
    end
  end
end