denko 0.13.0 → 0.13.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/HARDWARE.md +12 -5
- data/README.md +37 -39
- data/examples/sensor/aht20.rb +1 -1
- data/lib/denko/behaviors/bus_peripheral_addressed.rb +1 -1
- data/lib/denko/behaviors/component.rb +1 -1
- data/lib/denko/behaviors/input_pin.rb +3 -0
- data/lib/denko/behaviors/single_pin.rb +1 -3
- data/lib/denko/behaviors/state.rb +1 -0
- data/lib/denko/one_wire/bus.rb +1 -1
- data/lib/denko/one_wire/{bus_enumeration.rb → bus_enumerator.rb} +16 -8
- data/lib/denko/one_wire/helper.rb +1 -1
- data/lib/denko/one_wire.rb +1 -1
- data/lib/denko/sensor/ds18b20.rb +1 -1
- data/lib/denko/version.rb +1 -1
- data/test/one_wire/bus_enumerator_test.rb +4 -0
- data/test/one_wire/helper_test.rb +5 -5
- data/test/sensor/ds18b20_test.rb +10 -0
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a8f92242ec380e61b3b9d8729c8268cd0384196a982b3546deea690449e1b969
|
4
|
+
data.tar.gz: f706c61a73d4ad2ea7ebc531454c79b1e45368f303b484189b8bf749d4845d52
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f8d870fb998fe4694b6e18b3570f5caaaf965f4e54f8b6af609b6cdf27acae5be47482454b0c818bf3bd58e0d18d3548e8c18573bef3aef91054655c5120c411
|
7
|
+
data.tar.gz: 7d44fa1875dc2c023d4cbc664a5f8960bcaac9b3f32c44b41c366e9d9d8570f1d6d39850584be502c18e010c2d5d69aa2c786b85d504bb7bfda9064d0ba2c8a0
|
data/HARDWARE.md
CHANGED
@@ -2,22 +2,29 @@
|
|
2
2
|
|
3
3
|
:green_heart: Full support :yellow_heart: Partial support :heart: Planned. No support yet :question: Works in theory. Untested in real hardware.
|
4
4
|
|
5
|
-
###
|
6
|
-
[](https://github.com/denko-rb/denko/actions/workflows/build_avr.yml) [](https://github.com/denko-rb/denko/actions/workflows/build_megaavr.yml)
|
5
|
+
### AVR/MegaAVR Based in Arduino Products (and Clones)
|
6
|
+
[](https://github.com/denko-rb/denko/actions/workflows/build_avr.yml) [](https://github.com/denko-rb/denko/actions/workflows/build_megaavr.yml)
|
7
7
|
|
8
8
|
| Chip | Status | Products | Notes |
|
9
9
|
| :-------- | :------: | :--------------- |------ |
|
10
10
|
| ATmega168 | :green_heart: | Duemilanove, Diecimila, Pro | Features omitted to save memory. `denko targets` for more info.
|
11
|
-
| ATmega328 | :green_heart: | Uno, Nano, Fio, Pro |
|
11
|
+
| ATmega328 | :green_heart: | Uno R3, Uno WiFi, Nano, Fio, Pro |
|
12
12
|
| ATmega32u4 | :green_heart: | Leonardo, Micro, Leonardo ETH, Esplora, LilyPad USB |
|
13
13
|
| ATmega1280 | :green_heart: | Mega |
|
14
14
|
| ATmega2560 | :green_heart: | Mega2560, Arduino Mega ADK |
|
15
15
|
| ATmega4809 | :question: | Nano Every, Uno WiFi Rev2 | No hardware to test, but should work
|
16
|
-
| ATSAM3X8E | :yellow_heart: | Due | Native USB port. Tone, and IR Out don't work.
|
17
|
-
| ATSAMD21 | :green_heart: | Zero, M0, M0 Pro | Native USB port. I2C seems stuck on 100 kHz.
|
18
16
|
|
19
17
|
**Note:** Only USB boards listed. Any board with a supported chip should work, once you can flash it and connect to serial.
|
20
18
|
|
19
|
+
### ARM Based Arduino Products (and Clones)
|
20
|
+
[](https://github.com/denko-rb/denko/actions/workflows/build_sam3x.yml) [](https://github.com/denko-rb/denko/actions/workflows/build_samd.yml)
|
21
|
+
|
22
|
+
| Chip | Status | Products | Notes |
|
23
|
+
| :-------- | :------: | :--------------- |------ |
|
24
|
+
| ATSAM3X8E | :yellow_heart: | Due | Native USB port. Tone, and IR Out don't work.
|
25
|
+
| ATSAMD21 | :green_heart: | Zero, M0, M0 Pro | Native USB port. I2C seems stuck on 100 kHz.
|
26
|
+
| RA4M1 | :heart: | Uno R4 Minima, Uno R4 WiFi |
|
27
|
+
|
21
28
|
### Arduino Accessories
|
22
29
|
|
23
30
|
| Chip | Status | Product | Notes |
|
data/README.md
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
### Ruby Meets Microcontrollers
|
3
3
|
Denko gives you a high-level Ruby interface to low-level hardware, without writing microcontroller code. Use LEDs, buttons, sensors and more, just as easily as any Ruby object:
|
4
4
|
|
5
|
-
|
5
|
+
```ruby
|
6
6
|
led.blink 0.5
|
7
7
|
|
8
8
|
lcd.print "Hello World!"
|
@@ -12,9 +12,9 @@ reading = sensor.read
|
|
12
12
|
button.down do
|
13
13
|
puts "Button pressed!"
|
14
14
|
end
|
15
|
-
|
15
|
+
```
|
16
16
|
|
17
|
-
Denko doesn't run Ruby on the microcontroller (see
|
17
|
+
Denko doesn't run Ruby on the microcontroller (see [mruby-denko](#mruby-denko) for that). It runs C++ firmware that exposes as much low-level I/O as possible, so we can use it in Ruby. It becomes a peripheral for your computer.
|
18
18
|
|
19
19
|
High-level abstraction in Ruby makes hardware classes easy to implement, with intuitive interfaces. They multitask a single core microcontroller, with thread-safe state, and callbacks for inputs, but no "task" priority. If you need more I/O, integration is seamless. Connect another board and instantiate it in Ruby.
|
20
20
|
|
@@ -22,7 +22,15 @@ Each peripheral connected to your microcontroller(s) maps to a Ruby object you c
|
|
22
22
|
|
23
23
|
### Supported Hardware
|
24
24
|
|
25
|
-
|
25
|
+
Full list of supported mircocontroller platforms, interfaces, and peripherals is located [here](HARDWARE.md).
|
26
|
+
|
27
|
+
##### denko-piboard
|
28
|
+
There's an add-on for this gem in development, [denko-piboard](https://github.com/denko-rb/denko-piboard), which supports the Raspberry Pi's built in GPIO pins, as `Denko::PiBoard`, class-compatible with `Denko::Board`. Connect peripherals directly to the Pi, with no microcontroller between, then use the same peripheral classes from this gem.
|
29
|
+
|
30
|
+
##### mruby-denko
|
31
|
+
A solo Raspberry Pi (or other small SBC + microcontroller) is a great standalone setup if your project needs the compute power anyway, but what if you don't? Why not run Ruby on the microcontroller itself?
|
32
|
+
|
33
|
+
That's the goal of [mruby-denko](https://github.com/denko-rb/mruby-denko). Write mruby on the ESP32, using peripheral classes as close to this gem as possible. Still early in development, and limited features, but already working.
|
26
34
|
|
27
35
|
## Getting Started
|
28
36
|
|
@@ -33,17 +41,17 @@ See a full list of supported mircocontroller platforms, interfaces, and peripher
|
|
33
41
|
gem install denko
|
34
42
|
```
|
35
43
|
|
36
|
-
Before using the microcontroller in Ruby, we need to flash it with the denko firmware (or "sketch" in Arduino lingo). This is needed **once** for each board, but future
|
44
|
+
Before using the microcontroller in Ruby, we need to flash it with the denko firmware (or "sketch" in Arduino lingo). This is needed **once** for each board, but future versions may need reflashing to add functionality.
|
37
45
|
|
38
46
|
#### 2. Install the Arduino IDE OR CLI
|
39
47
|
|
40
48
|
Get the Arduino IDE [here](http://arduino.cc/en/Main/Software) for a graphical interface (recommended for Windows), or use the command line interface from [here](https://github.com/arduino/arduino-cli/releases), or Homebrew.
|
41
49
|
|
42
50
|
**CLI Installation with Homebrew on Mac or Linux:**
|
43
|
-
|
51
|
+
```shell
|
44
52
|
brew update
|
45
53
|
brew install arduino-cli
|
46
|
-
|
54
|
+
```
|
47
55
|
|
48
56
|
#### 3. Install Arduino Dependencies
|
49
57
|
Denko uses Arduino cores, which add support for microcontrollers, and a few libraries. Install only the ones for your microcontroller, or install everything. There are no conflcits. Instructions for supported microcontrollers:
|
@@ -56,22 +64,22 @@ The `denko` command is included with the gem. It will make the Arduino sketch fo
|
|
56
64
|
**For ATmega boards, Serial over USB:** (Arduino Uno, Nano, Mega, Leonardo, Micro)
|
57
65
|
```shell
|
58
66
|
denko sketch serial
|
59
|
-
|
67
|
+
```
|
60
68
|
|
61
69
|
**For ESP8266, Serial over USB:**
|
62
70
|
```shell
|
63
71
|
denko sketch serial --target esp8266
|
64
|
-
|
72
|
+
```
|
65
73
|
|
66
74
|
**For ESP8266 or ESP32 over WiFi (2.4Ghz and DHCP Only):**
|
67
75
|
```shell
|
68
76
|
denko sketch wifi --target esp8266 --ssid YOUR_SSID --password YOUR_PASSWORD
|
69
77
|
denko sketch wifi --target esp32 --ssid YOUR_SSID --password YOUR_PASSWORD
|
70
|
-
|
78
|
+
```
|
71
79
|
|
72
|
-
**Note:** [This example](examples/connection/tcp.rb) shows how to connect to a board with a TCP socket, but the WiFi & Ethernet sketches fall back to the
|
80
|
+
**Note:** [This example](examples/connection/tcp.rb) shows how to connect to a board with a TCP socket, but the WiFi & Ethernet sketches fall back to the Serial interface when no TCP client is connected.
|
73
81
|
|
74
|
-
#### 5a
|
82
|
+
#### 5a. IDE Flashing
|
75
83
|
|
76
84
|
* Connect the board to your computer with a USB cable.
|
77
85
|
* Open the .ino file inside your sketch folder with the IDE.
|
@@ -82,45 +90,45 @@ denko sketch wifi --target esp32 --ssid YOUR_SSID --password YOUR_PASSWORD
|
|
82
90
|
* If your serial port is in the list, but the board is wrong, select the serial port anyway, then you will be asked to manually select a board.
|
83
91
|
* If your board doesn't show up at all, make sure it is connected properly. Try disconnecting and reconnecting, use a different USB port or cable, or press the reset button after plugging it in.
|
84
92
|
|
85
|
-
#### 5b
|
93
|
+
#### 5b. CLI Flashing
|
86
94
|
|
87
95
|
* The path output by `denko sketch` earlier is your sketch folder. Keep it handy.
|
88
96
|
* Connect the board to your computer with a USB cable.
|
89
97
|
* Check if the CLI recognizes it:
|
90
98
|
|
91
|
-
|
99
|
+
```shell
|
92
100
|
arduino-cli board list
|
93
|
-
|
101
|
+
```
|
94
102
|
|
95
103
|
* Using the Port and FQBN (Fully Qualified Board Name) shown, compile and upload the sketch:
|
96
|
-
|
104
|
+
```shell
|
97
105
|
arduino-cli compile -b YOUR_FQBN YOUR_SKETCH_FOLDER
|
98
106
|
arduino-cli upload -v -p YOUR_PORT -b YOUR_FQBN YOUR_SKETCH_FOLDER
|
99
|
-
|
107
|
+
```
|
100
108
|
|
101
109
|
**Troubleshooting:**
|
102
110
|
* Follow the same steps as the IDE method above. List all FQBNs using:
|
103
|
-
|
111
|
+
```shell
|
104
112
|
arduino-cli board listall
|
105
|
-
|
113
|
+
```
|
106
114
|
|
107
|
-
#### 6
|
115
|
+
#### 6. Test It
|
108
116
|
|
109
|
-
Most boards have a regular LED on-board. Test it with the [blink](examples/led/builtin_blink.rb) example. If you have an on-board WS2812 LED, use the [WS2812 blink](examples/led/ws2812_builtin_blink.rb) example instead. If it starts blinking, you're ready for Ruby!
|
117
|
+
Most boards have a regular LED on-board. Test it with the [blink](examples/led/builtin_blink.rb) example. If you have an on-board WS2812 LED (Neopixel), use the [WS2812 blink](examples/led/ws2812_builtin_blink.rb) example instead. If it starts blinking, you're ready for Ruby!
|
110
118
|
|
111
119
|
## Examples and Tutorials
|
112
120
|
|
113
121
|
#### Tutorial
|
114
122
|
|
115
123
|
- [Here](tutorial) you will find a beginner-friendly tutorial, that goes through the basics, using commented examples and diagrams. Read the comments and try modifying the code. You will need the following:
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
+
- 1 compatible microcontroller (see [supported hardware](HARDWARE.md))
|
125
|
+
- 1 button or momentary switch
|
126
|
+
- 1 potentiometer (any value)
|
127
|
+
- 1 external RGB LED (4 legs common cathode, not a Neopixel or individually addressable)
|
128
|
+
- 1 external LED (any color, or use one color from the RGB LED)
|
129
|
+
- Current limiting resistors for LEDs
|
130
|
+
- Breadboard
|
131
|
+
- Jumper wires
|
124
132
|
|
125
133
|
**Tip:** Kits are a cost-effective way to get started. They will almost certainly include these parts, plus more, getting you well beyond the tutorial.
|
126
134
|
|
@@ -140,13 +148,3 @@ Most boards have a regular LED on-board. Test it with the [blink](examples/led/b
|
|
140
148
|
- "Arduino the Ruby Way" at RubyConf 2012
|
141
149
|
- [Video by ConFreaks](https://www.youtube.com/watch?v=oUIor6GK-qA)
|
142
150
|
- [Slides on SpeakerDeck](https://speakerdeck.com/austinbv/arduino-the-ruby-way)
|
143
|
-
|
144
|
-
## mruby Port
|
145
|
-
|
146
|
-
A single-board computer plus microcontroller can be a great standalone solution, especially if your project needs the computer anyway. For example, a Raspberry Pi Zero and Arduino Nano combo, running CRuby, Denko and other software.
|
147
|
-
|
148
|
-
But what if you want to be _really_ small? Building on the [mruby-esp32](https://github.com/mruby-esp32/mruby-esp32) project, Denko is being ported to run directly on the ESP32 here: [mruby-dino-template](https://github.com/denko-rb/mruby-dino-template).
|
149
|
-
|
150
|
-
## denko-piboard
|
151
|
-
|
152
|
-
There's an add-on for this gem, [denko-piboard](https://github.com/denko-rb/denko-piboard), in early development, which adds support for the Raspberry Pi's built in GPIO interface as a class-compatible "board". This allows you to connect peripherals directly to the Pi, without a microcontroller, and use the denko peripherals classes as-is.
|
data/examples/sensor/aht20.rb
CHANGED
@@ -5,7 +5,7 @@ require 'bundler/setup'
|
|
5
5
|
require 'denko'
|
6
6
|
|
7
7
|
board = Denko::Board.new(Denko::Connection::Serial.new)
|
8
|
-
bus = Denko::I2C::Bus.new(board: board, pin: :
|
8
|
+
bus = Denko::I2C::Bus.new(board: board, pin: :SDA)
|
9
9
|
aht20 = Denko::Sensor::AHT20.new(bus: bus)
|
10
10
|
|
11
11
|
aht20.poll(2) do |reading|
|
@@ -4,7 +4,7 @@ module Denko
|
|
4
4
|
include Denko::Behaviors::BusPeripheral
|
5
5
|
|
6
6
|
def before_initialize(options={})
|
7
|
-
#
|
7
|
+
# Allow @address override in options, even if peripheral sets a default.
|
8
8
|
@address = options[:address] if options[:address]
|
9
9
|
|
10
10
|
raise ArgumentError, "missing address for #{self}. Try Bus#search first" unless @address
|
@@ -12,9 +12,12 @@ module Denko
|
|
12
12
|
def initialize_pins(options={})
|
13
13
|
super(options)
|
14
14
|
|
15
|
+
# Assume input direction, and look for pull mode in options.
|
15
16
|
initial_mode = :input
|
16
17
|
initial_mode = :input_pullup if options[:pullup]
|
17
18
|
initial_mode = :input_pulldown if options[:pulldown]
|
19
|
+
|
20
|
+
# If user was explicit about mode, just use that.
|
18
21
|
initial_mode = options[:mode] if options[:mode]
|
19
22
|
|
20
23
|
self.mode = initial_mode
|
@@ -11,15 +11,13 @@ module Denko
|
|
11
11
|
|
12
12
|
protected
|
13
13
|
|
14
|
-
attr_writer :pin
|
15
|
-
|
16
14
|
def convert_pins(options={})
|
17
15
|
raise ArgumentError, 'a pin is required for this component' unless options[:pin]
|
18
16
|
options[:pin] = board.convert_pin(options[:pin])
|
19
17
|
end
|
20
18
|
|
21
19
|
def initialize_pins(options={})
|
22
|
-
|
20
|
+
@pin = options[:pin]
|
23
21
|
end
|
24
22
|
end
|
25
23
|
end
|
data/lib/denko/one_wire/bus.rb
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
module Denko
|
2
2
|
module OneWire
|
3
|
-
module
|
3
|
+
module BusEnumerator
|
4
|
+
include Constants
|
5
|
+
|
4
6
|
def _search(branch_mask)
|
5
7
|
reset
|
6
8
|
write(SEARCH_ROM)
|
@@ -42,12 +44,12 @@ module Denko
|
|
42
44
|
def parse_search_result(result)
|
43
45
|
address, complement = split_search_result(result)
|
44
46
|
|
45
|
-
raise "CRC error during OneWire search" unless Helper.crc_check(address)
|
46
|
-
|
47
47
|
if (address & complement) > 0
|
48
48
|
raise "OneWire device not connected or disconnected during search"
|
49
49
|
end
|
50
50
|
|
51
|
+
raise "CRC error during OneWire search" unless Helper.crc(address)
|
52
|
+
|
51
53
|
# Gives 0 at every discrepancy we didn't write 1 for on this search.
|
52
54
|
new_discrepancies = address ^ complement
|
53
55
|
|
@@ -73,12 +75,18 @@ module Denko
|
|
73
75
|
[address, complement]
|
74
76
|
end
|
75
77
|
|
76
|
-
#
|
78
|
+
#
|
79
|
+
# Set FAMILY_CODE in peripheral class, and add the class to this array
|
80
|
+
# for the class to be identified during search.
|
81
|
+
#
|
82
|
+
PERIPHERAL_CLASSES = [
|
83
|
+
Sensor::DS18B20,
|
84
|
+
]
|
85
|
+
|
77
86
|
def family_lookup(family_code)
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
return obj if obj::FAMILY_CODE == family_code
|
87
|
+
PERIPHERAL_CLASSES.each do |klass|
|
88
|
+
if (klass.const_defined? "FAMILY_CODE")
|
89
|
+
return klass if klass::FAMILY_CODE == family_code
|
82
90
|
end
|
83
91
|
end
|
84
92
|
return nil
|
data/lib/denko/one_wire.rb
CHANGED
@@ -2,7 +2,7 @@ module Denko
|
|
2
2
|
module OneWire
|
3
3
|
autoload :Constants, "#{__dir__}/one_wire/constants"
|
4
4
|
autoload :Helper, "#{__dir__}/one_wire/helper"
|
5
|
-
autoload :
|
5
|
+
autoload :BusEnumerator, "#{__dir__}/one_wire/bus_enumerator"
|
6
6
|
autoload :Bus, "#{__dir__}/one_wire/bus"
|
7
7
|
autoload :Peripheral, "#{__dir__}/one_wire/peripheral"
|
8
8
|
end
|
data/lib/denko/sensor/ds18b20.rb
CHANGED
@@ -47,7 +47,7 @@ module Denko
|
|
47
47
|
end
|
48
48
|
|
49
49
|
def pre_callback_filter(bytes)
|
50
|
-
return { crc_error: true } unless Helper.
|
50
|
+
return { crc_error: true } unless OneWire::Helper.crc(bytes)
|
51
51
|
@resolution = decode_resolution(bytes)
|
52
52
|
|
53
53
|
decode_temperature(bytes).merge(raw: bytes)
|
data/lib/denko/version.rb
CHANGED
@@ -131,4 +131,8 @@ class OneWireEnumeratorTest < Minitest::Test
|
|
131
131
|
found_addresses = bus.found_devices.map { |d| d[:address] }
|
132
132
|
assert_equal found_addresses.sort, bus_sim.addresses.sort
|
133
133
|
end
|
134
|
+
|
135
|
+
def test_includes_constants
|
136
|
+
assert Denko::OneWire::BusEnumerator.ancestors.include?(Denko::OneWire::Constants)
|
137
|
+
end
|
134
138
|
end
|
@@ -3,16 +3,16 @@ require_relative '../test_helper'
|
|
3
3
|
class OneWireHelper < Minitest::Test
|
4
4
|
|
5
5
|
def test_with_valid_crc
|
6
|
-
assert Denko::OneWire::Helper.
|
7
|
-
assert Denko::OneWire::Helper.
|
6
|
+
assert Denko::OneWire::Helper.crc(18086456125349333800)
|
7
|
+
assert Denko::OneWire::Helper.crc([121, 117, 144, 185, 6, 165, 43, 26])
|
8
8
|
end
|
9
9
|
|
10
10
|
def test_with_invalid_crc
|
11
|
-
refute Denko::OneWire::Helper.
|
11
|
+
refute Denko::OneWire::Helper.crc(18086456125349333801)
|
12
12
|
end
|
13
13
|
|
14
14
|
def test_arbitrary_length_read
|
15
|
-
assert Denko::OneWire::Helper.
|
16
|
-
refute Denko::OneWire::Helper.
|
15
|
+
assert Denko::OneWire::Helper.crc([181, 1, 75, 70, 127, 255, 11, 16, 163])
|
16
|
+
refute Denko::OneWire::Helper.crc([181, 1, 75, 70, 127, 255, 11, 16, 164])
|
17
17
|
end
|
18
18
|
end
|
data/test/sensor/ds18b20_test.rb
CHANGED
@@ -43,6 +43,16 @@ class DS18B20Test < MiniTest::Test
|
|
43
43
|
assert_equal 0.75, part.instance_variable_get(:@convert_time)
|
44
44
|
end
|
45
45
|
|
46
|
+
def test_pre_callback_filter_does_crc_and_returns_error_on_fail
|
47
|
+
raw_bytes = [239, 1, 75, 70, 127, 255, 1, 16, 245]
|
48
|
+
mock = MiniTest::Mock.new.expect(:call, false, [raw_bytes])
|
49
|
+
|
50
|
+
Denko::OneWire::Helper.stub(:crc, mock) do
|
51
|
+
assert_equal({crc_error: true}, part.pre_callback_filter(raw_bytes))
|
52
|
+
end
|
53
|
+
mock.verify
|
54
|
+
end
|
55
|
+
|
46
56
|
# test resolution=
|
47
57
|
|
48
58
|
def test_convert_is_atomic
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: denko
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.13.
|
4
|
+
version: 0.13.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- vickash, Austinbv
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-06-
|
11
|
+
date: 2023-06-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rubyserial
|
@@ -229,7 +229,7 @@ files:
|
|
229
229
|
- lib/denko/motor/stepper.rb
|
230
230
|
- lib/denko/one_wire.rb
|
231
231
|
- lib/denko/one_wire/bus.rb
|
232
|
-
- lib/denko/one_wire/
|
232
|
+
- lib/denko/one_wire/bus_enumerator.rb
|
233
233
|
- lib/denko/one_wire/constants.rb
|
234
234
|
- lib/denko/one_wire/helper.rb
|
235
235
|
- lib/denko/one_wire/peripheral.rb
|