@@ -25,11 +25,14 @@ device like the KT0803 in your projects, either hobby, commercial or otherwise.
2525
2626## Description
2727
28- This ** experimental** library allows basic control of the KT0803 and / or the KT0803K
28+ ** Experimental**
29+
30+ This experimental library allows basic control of the KT0803 and / or the KT0803K
2931FM transmitter device.
3032It is primary written to understand the possibilities and the interface of the device.
3133
3234The library is not tested by me with hardware yet. See future below.
35+ However it is verified to work by others.
3336
3437There are newer, more capable, follow up devices like model K, L and M.
3538From these only the KT0803K is supported as a derived class.
@@ -44,7 +47,7 @@ For ATTinyX5 series there exists the TinyKT0803 class which is derived from this
4447It uses a different I2C implementation. See - https://github.com/RobTillaart/TinyKT0803
4548
4649
47- #### Hardware
50+ ### Hardware
4851
4952Read datasheet for details.
5053
@@ -68,7 +71,7 @@ The KT0803 is an 3.3 Volt device and cannot be connected directly to 5V MCU's.
6871```
6972
7073
71- #### Frequency range
74+ ### Frequency range
7275
7376The frequency range stated on the front page of the datasheet ==> 70 MHz - 108 MHz.
7477The frequency range stated in table 2 ==> 76 MHz - 108 MHz.
@@ -78,7 +81,7 @@ Keep in mind that the frequency range allowed differs per country.
7881The library does not provide this filtering, explicit responsibility of the user.
7982
8083
81- #### Differences
84+ ### Differences
8285
8386The KT0803K device has far more options, which are not all implemented.
8487There is one important, the resolution or step-size of the frequency.
@@ -93,7 +96,7 @@ According to the datasheet code for the KT0803 should work for the KT0803K.
9396Code with the KT0803K class will probably not work on a KT0803.
9497
9598
96- #### Transmit frequency
99+ ### Transmit frequency
97100
98101The transmit frequency can be set with ** setFrequency(MHz)** or by ** setChannel(channel)** .
99102Note that the channel and frequency math of the KT0803 and the KT0803K is aligned
@@ -117,7 +120,7 @@ Some examples:
117120| 108.00 MHz | 2160 |
118121
119122
120- #### Related
123+ ### Related
121124
122125- https://github.com/RobTillaart/KT0803
123126- https://github.com/RobTillaart/TinyKT0803
@@ -133,20 +136,24 @@ Some examples:
133136#include " KT0803.h"
134137```
135138
136- #### Constructor
139+ ### Constructor
137140
138141- ** KT0803(TwoWire \* wire = &Wire)** constructor,
139142optional Wire interface.
140143- ** KT0803K(TwoWire \* wire = &Wire)** constructor,
141144optional Wire interface.
145+ - ** KT0803L(TwoWire \* wire = &Wire)** constructor,
146+ optional Wire interface.
147+ - ** KT0803M(TwoWire \* wire = &Wire)** constructor,
148+ optional Wire interface.
142149- ** bool begin(float freq = 90.0, bool mute = true)** initializes the library.
143150Furthermore it checks if the deviceAddress is available on the I2C bus.
144151Default it sets the frequency to 90 MHz and ** mutes the signal** .
145152Returns true if deviceAddress is found on the bus, false otherwise.
146153- ** bool isConnected()** test to see if deviceAddress is found on the I2C-bus.
147154
148155
149- #### Frequency
156+ ### Frequency
150157
151158- ** bool setFrequency(float MHz)** converts the frequency in MHz to
152159call ** setChannel(channel)** . The value of channel is rounded off depending
@@ -161,7 +168,7 @@ This involves two or three writes to different device registers.
161168returns it.
162169
163170
164- #### PGA
171+ ### PGA
165172
166173Read Datasheet.
167174
@@ -185,7 +192,7 @@ Returns false if pga is out of range (0..7).
185192| 011 | -12dB |
186193
187194
188- #### RFGain
195+ ### RFGain
189196
190197Read Datasheet.
191198
@@ -218,7 +225,7 @@ Returns false if rfgain is out of range (0..15).
218225| 1111 | 108.0 dBuV | 112.5 dBuV | default
219226
220227
221- #### Region selection
228+ ### Region selection
222229
223230Read datasheet for details.
224231
@@ -241,15 +248,15 @@ a wrapper for it.
241248| 1 | 50 μs | Europe, Australia
242249
243250
244- #### PilotToneAdjust
251+ ### PilotToneAdjust
245252
246253Read datasheet.
247254
248255- ** bool setPilotToneAdjust(uint8_t mode)** HIGH = 1 LOW = 0
249256- ** uint8_t getPilotToneAdjust()**
250257
251258
252- #### Mute
259+ ### Mute
253260
254261Default the device is not muted, but ** begin()** will default mute it.
255262See interface section above.
@@ -271,32 +278,31 @@ A minimal hardcoded preset sketch is in the examples.
271278
272279## Derived classes
273280
274- A derived class KT0803K class is created, with some extended
275- functions.
281+ Three derived classes are made:
276282
277- The KT0803L will work as it is backwards compatible with KT0803K.
278- It has far more registers in use than the KT0803/K.
283+ - KT0803K has some extended functions.
284+ - KT0803L is backwards compatible with KT0803K.
285+ It has far more registers in use than the KT0803/KT0803K.
286+ For now it is a wrapper around KT0803K.
287+ - KT0803M is identical to the KT0803K (no new registers).
279288
280- The KT0803M is identical to the KT0803K (no new registers), so
281- a derived class is straightforward.
282289
283-
284- ## Interface KT0803K
290+ ## Interface KT0803K / KT0803L / KT0803M
285291
286292Added functions in 0.3.0 (not tested), check datasheet.
287293
288- #### Mono Stereo
294+ ### Mono Stereo
289295
290296- ** bool setMono()** idem
291297- ** bool setStereo()** idem
292298- ** bool isStereo()** idem
293299
294- #### Bass
300+ ### Bass
295301
296302- ** bool setBass(uint8_t bass); // 0..3 = 0, 5, 11, 17 dB
297303- ** uint8_t getBass()** idem
298304
299- #### Misc
305+ ### Misc
300306
301307- ** bool powerOK()** idem
302308- ** bool silenceDetected()** idem
@@ -313,21 +319,17 @@ Added functions in 0.3.0 (not tested), check datasheet.
313319
314320#### Should
315321
316- - update readme.md
317- - KT0803K specific functions.
318322- add examples for KT0803K specific functions.
319-
320-
321- #### Could
322-
323+ - investigate KT0803L
323324- RESET pin as optional parameter in constructor?
324325- SW pin (ON/OFF) as optional parameter in constructor?
325326 - add functions for sw on/off,
326327 - what is impact on settings?
327328 - call begin () again? => default
328329 - explain well doc.
329- - derived class KT0803M == KT0803K
330- - derived class KT0803L >= KT0803K (compatible)
330+
331+ #### Could
332+
331333- improve error handling
332334- unit tests possible?
333335- extend settings upon request ** bold** are interesting, see table
@@ -353,7 +355,7 @@ Added functions in 0.3.0 (not tested), check datasheet.
353355
354356#### Wont (for now)
355357
356- - investigate tea5767 FM receiver (Out of scope for this lib ).
358+ - investigate tea5767 FM receiver (Out of scope for this library ).
357359- investigate efficiency of register access.
358360 - caching all (allowed) registers in ** begin()**
359361 - 3 bytes for KT0803
0 commit comments