adds oscilloscope
This commit is contained in:
parent
c1db32243f
commit
0bcfedb77a
45
oscilloscope/oscilloscope.lua
Normal file
45
oscilloscope/oscilloscope.lua
Normal file
@ -0,0 +1,45 @@
|
||||
local side = "right"
|
||||
|
||||
local interval = 0.05
|
||||
|
||||
local trigger = function(previous, current)
|
||||
return current > 0
|
||||
end
|
||||
|
||||
local mon = peripheral.find("monitor")
|
||||
|
||||
local values = {}
|
||||
local previous = rs.getAnalogInput(side)
|
||||
local curr = nil
|
||||
while true do
|
||||
os.pullEvent("redstone")
|
||||
curr = rs.getAnalogInput(side)
|
||||
if trigger(previous, curr) then break end
|
||||
previous = curr
|
||||
end
|
||||
|
||||
values[1] = curr
|
||||
|
||||
mon.setTextScale(0.5)
|
||||
local monX, monY = mon.getSize()
|
||||
|
||||
print("Triggered!")
|
||||
for i = 2,monX do
|
||||
sleep(interval)
|
||||
values[i] = rs.getAnalogInput(side)
|
||||
end
|
||||
|
||||
mon.setBackgroundColor(colors.black)
|
||||
mon.setCursorBlink(false)
|
||||
mon.clear()
|
||||
|
||||
local prevX = 1
|
||||
local prevY = values[1] * (monY-1)/15
|
||||
for x, y in pairs(values) do
|
||||
y = y * (monY-1)/15
|
||||
term.redirect(mon)
|
||||
paintutils.drawLine(prevX, monY-prevY, x, monY-y, colors.green)
|
||||
term.redirect(term.native())
|
||||
prevX = x
|
||||
prevY = y
|
||||
end
|
23
oscilloscope/readme.md
Normal file
23
oscilloscope/readme.md
Normal file
@ -0,0 +1,23 @@
|
||||
# Oscilloscope
|
||||
Oscilloscope with customizable trigger and polling rate.
|
||||
|
||||
## Setup
|
||||
1. Open the script in the editor
|
||||
2. Set the side wich the redstone signal will be read from
|
||||
3. Set the interval at which the signal will be polled (setting it below 0.05 will not give more resolution as this is the tickspeed)
|
||||
4. (Optional) Customize the trigger function to trigger when you want it to (see examples below).
|
||||
|
||||
### Example triggers
|
||||
Trigger when receiving full signal:
|
||||
```lua
|
||||
local trigger = function(previous, current)
|
||||
return current == 15
|
||||
end
|
||||
```
|
||||
|
||||
Triggers when the difference in the measured signals is more than positive 7:
|
||||
```lua
|
||||
local trigger = function(previous, current)
|
||||
return (current - previous) > 7
|
||||
end
|
||||
```
|
Loading…
Reference in New Issue
Block a user