first commit
This commit is contained in:
commit
adfe5792c4
675
COPYING.md
Executable file
675
COPYING.md
Executable file
|
@ -0,0 +1,675 @@
|
||||||
|
### GNU GENERAL PUBLIC LICENSE
|
||||||
|
|
||||||
|
Version 3, 29 June 2007
|
||||||
|
|
||||||
|
Copyright (C) 2007 Free Software Foundation, Inc.
|
||||||
|
<https://fsf.org/>
|
||||||
|
|
||||||
|
Everyone is permitted to copy and distribute verbatim copies of this
|
||||||
|
license document, but changing it is not allowed.
|
||||||
|
|
||||||
|
### Preamble
|
||||||
|
|
||||||
|
The GNU General Public License is a free, copyleft license for
|
||||||
|
software and other kinds of works.
|
||||||
|
|
||||||
|
The licenses for most software and other practical works are designed
|
||||||
|
to take away your freedom to share and change the works. By contrast,
|
||||||
|
the GNU General Public License is intended to guarantee your freedom
|
||||||
|
to share and change all versions of a program--to make sure it remains
|
||||||
|
free software for all its users. We, the Free Software Foundation, use
|
||||||
|
the GNU General Public License for most of our software; it applies
|
||||||
|
also to any other work released this way by its authors. You can apply
|
||||||
|
it to your programs, too.
|
||||||
|
|
||||||
|
When we speak of free software, we are referring to freedom, not
|
||||||
|
price. Our General Public Licenses are designed to make sure that you
|
||||||
|
have the freedom to distribute copies of free software (and charge for
|
||||||
|
them if you wish), that you receive source code or can get it if you
|
||||||
|
want it, that you can change the software or use pieces of it in new
|
||||||
|
free programs, and that you know you can do these things.
|
||||||
|
|
||||||
|
To protect your rights, we need to prevent others from denying you
|
||||||
|
these rights or asking you to surrender the rights. Therefore, you
|
||||||
|
have certain responsibilities if you distribute copies of the
|
||||||
|
software, or if you modify it: responsibilities to respect the freedom
|
||||||
|
of others.
|
||||||
|
|
||||||
|
For example, if you distribute copies of such a program, whether
|
||||||
|
gratis or for a fee, you must pass on to the recipients the same
|
||||||
|
freedoms that you received. You must make sure that they, too, receive
|
||||||
|
or can get the source code. And you must show them these terms so they
|
||||||
|
know their rights.
|
||||||
|
|
||||||
|
Developers that use the GNU GPL protect your rights with two steps:
|
||||||
|
(1) assert copyright on the software, and (2) offer you this License
|
||||||
|
giving you legal permission to copy, distribute and/or modify it.
|
||||||
|
|
||||||
|
For the developers' and authors' protection, the GPL clearly explains
|
||||||
|
that there is no warranty for this free software. For both users' and
|
||||||
|
authors' sake, the GPL requires that modified versions be marked as
|
||||||
|
changed, so that their problems will not be attributed erroneously to
|
||||||
|
authors of previous versions.
|
||||||
|
|
||||||
|
Some devices are designed to deny users access to install or run
|
||||||
|
modified versions of the software inside them, although the
|
||||||
|
manufacturer can do so. This is fundamentally incompatible with the
|
||||||
|
aim of protecting users' freedom to change the software. The
|
||||||
|
systematic pattern of such abuse occurs in the area of products for
|
||||||
|
individuals to use, which is precisely where it is most unacceptable.
|
||||||
|
Therefore, we have designed this version of the GPL to prohibit the
|
||||||
|
practice for those products. If such problems arise substantially in
|
||||||
|
other domains, we stand ready to extend this provision to those
|
||||||
|
domains in future versions of the GPL, as needed to protect the
|
||||||
|
freedom of users.
|
||||||
|
|
||||||
|
Finally, every program is threatened constantly by software patents.
|
||||||
|
States should not allow patents to restrict development and use of
|
||||||
|
software on general-purpose computers, but in those that do, we wish
|
||||||
|
to avoid the special danger that patents applied to a free program
|
||||||
|
could make it effectively proprietary. To prevent this, the GPL
|
||||||
|
assures that patents cannot be used to render the program non-free.
|
||||||
|
|
||||||
|
The precise terms and conditions for copying, distribution and
|
||||||
|
modification follow.
|
||||||
|
|
||||||
|
### TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
#### 0. Definitions.
|
||||||
|
|
||||||
|
"This License" refers to version 3 of the GNU General Public License.
|
||||||
|
|
||||||
|
"Copyright" also means copyright-like laws that apply to other kinds
|
||||||
|
of works, such as semiconductor masks.
|
||||||
|
|
||||||
|
"The Program" refers to any copyrightable work licensed under this
|
||||||
|
License. Each licensee is addressed as "you". "Licensees" and
|
||||||
|
"recipients" may be individuals or organizations.
|
||||||
|
|
||||||
|
To "modify" a work means to copy from or adapt all or part of the work
|
||||||
|
in a fashion requiring copyright permission, other than the making of
|
||||||
|
an exact copy. The resulting work is called a "modified version" of
|
||||||
|
the earlier work or a work "based on" the earlier work.
|
||||||
|
|
||||||
|
A "covered work" means either the unmodified Program or a work based
|
||||||
|
on the Program.
|
||||||
|
|
||||||
|
To "propagate" a work means to do anything with it that, without
|
||||||
|
permission, would make you directly or secondarily liable for
|
||||||
|
infringement under applicable copyright law, except executing it on a
|
||||||
|
computer or modifying a private copy. Propagation includes copying,
|
||||||
|
distribution (with or without modification), making available to the
|
||||||
|
public, and in some countries other activities as well.
|
||||||
|
|
||||||
|
To "convey" a work means any kind of propagation that enables other
|
||||||
|
parties to make or receive copies. Mere interaction with a user
|
||||||
|
through a computer network, with no transfer of a copy, is not
|
||||||
|
conveying.
|
||||||
|
|
||||||
|
An interactive user interface displays "Appropriate Legal Notices" to
|
||||||
|
the extent that it includes a convenient and prominently visible
|
||||||
|
feature that (1) displays an appropriate copyright notice, and (2)
|
||||||
|
tells the user that there is no warranty for the work (except to the
|
||||||
|
extent that warranties are provided), that licensees may convey the
|
||||||
|
work under this License, and how to view a copy of this License. If
|
||||||
|
the interface presents a list of user commands or options, such as a
|
||||||
|
menu, a prominent item in the list meets this criterion.
|
||||||
|
|
||||||
|
#### 1. Source Code.
|
||||||
|
|
||||||
|
The "source code" for a work means the preferred form of the work for
|
||||||
|
making modifications to it. "Object code" means any non-source form of
|
||||||
|
a work.
|
||||||
|
|
||||||
|
A "Standard Interface" means an interface that either is an official
|
||||||
|
standard defined by a recognized standards body, or, in the case of
|
||||||
|
interfaces specified for a particular programming language, one that
|
||||||
|
is widely used among developers working in that language.
|
||||||
|
|
||||||
|
The "System Libraries" of an executable work include anything, other
|
||||||
|
than the work as a whole, that (a) is included in the normal form of
|
||||||
|
packaging a Major Component, but which is not part of that Major
|
||||||
|
Component, and (b) serves only to enable use of the work with that
|
||||||
|
Major Component, or to implement a Standard Interface for which an
|
||||||
|
implementation is available to the public in source code form. A
|
||||||
|
"Major Component", in this context, means a major essential component
|
||||||
|
(kernel, window system, and so on) of the specific operating system
|
||||||
|
(if any) on which the executable work runs, or a compiler used to
|
||||||
|
produce the work, or an object code interpreter used to run it.
|
||||||
|
|
||||||
|
The "Corresponding Source" for a work in object code form means all
|
||||||
|
the source code needed to generate, install, and (for an executable
|
||||||
|
work) run the object code and to modify the work, including scripts to
|
||||||
|
control those activities. However, it does not include the work's
|
||||||
|
System Libraries, or general-purpose tools or generally available free
|
||||||
|
programs which are used unmodified in performing those activities but
|
||||||
|
which are not part of the work. For example, Corresponding Source
|
||||||
|
includes interface definition files associated with source files for
|
||||||
|
the work, and the source code for shared libraries and dynamically
|
||||||
|
linked subprograms that the work is specifically designed to require,
|
||||||
|
such as by intimate data communication or control flow between those
|
||||||
|
subprograms and other parts of the work.
|
||||||
|
|
||||||
|
The Corresponding Source need not include anything that users can
|
||||||
|
regenerate automatically from other parts of the Corresponding Source.
|
||||||
|
|
||||||
|
The Corresponding Source for a work in source code form is that same
|
||||||
|
work.
|
||||||
|
|
||||||
|
#### 2. Basic Permissions.
|
||||||
|
|
||||||
|
All rights granted under this License are granted for the term of
|
||||||
|
copyright on the Program, and are irrevocable provided the stated
|
||||||
|
conditions are met. This License explicitly affirms your unlimited
|
||||||
|
permission to run the unmodified Program. The output from running a
|
||||||
|
covered work is covered by this License only if the output, given its
|
||||||
|
content, constitutes a covered work. This License acknowledges your
|
||||||
|
rights of fair use or other equivalent, as provided by copyright law.
|
||||||
|
|
||||||
|
You may make, run and propagate covered works that you do not convey,
|
||||||
|
without conditions so long as your license otherwise remains in force.
|
||||||
|
You may convey covered works to others for the sole purpose of having
|
||||||
|
them make modifications exclusively for you, or provide you with
|
||||||
|
facilities for running those works, provided that you comply with the
|
||||||
|
terms of this License in conveying all material for which you do not
|
||||||
|
control copyright. Those thus making or running the covered works for
|
||||||
|
you must do so exclusively on your behalf, under your direction and
|
||||||
|
control, on terms that prohibit them from making any copies of your
|
||||||
|
copyrighted material outside their relationship with you.
|
||||||
|
|
||||||
|
Conveying under any other circumstances is permitted solely under the
|
||||||
|
conditions stated below. Sublicensing is not allowed; section 10 makes
|
||||||
|
it unnecessary.
|
||||||
|
|
||||||
|
#### 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
|
||||||
|
|
||||||
|
No covered work shall be deemed part of an effective technological
|
||||||
|
measure under any applicable law fulfilling obligations under article
|
||||||
|
11 of the WIPO copyright treaty adopted on 20 December 1996, or
|
||||||
|
similar laws prohibiting or restricting circumvention of such
|
||||||
|
measures.
|
||||||
|
|
||||||
|
When you convey a covered work, you waive any legal power to forbid
|
||||||
|
circumvention of technological measures to the extent such
|
||||||
|
circumvention is effected by exercising rights under this License with
|
||||||
|
respect to the covered work, and you disclaim any intention to limit
|
||||||
|
operation or modification of the work as a means of enforcing, against
|
||||||
|
the work's users, your or third parties' legal rights to forbid
|
||||||
|
circumvention of technological measures.
|
||||||
|
|
||||||
|
#### 4. Conveying Verbatim Copies.
|
||||||
|
|
||||||
|
You may convey verbatim copies of the Program's source code as you
|
||||||
|
receive it, in any medium, provided that you conspicuously and
|
||||||
|
appropriately publish on each copy an appropriate copyright notice;
|
||||||
|
keep intact all notices stating that this License and any
|
||||||
|
non-permissive terms added in accord with section 7 apply to the code;
|
||||||
|
keep intact all notices of the absence of any warranty; and give all
|
||||||
|
recipients a copy of this License along with the Program.
|
||||||
|
|
||||||
|
You may charge any price or no price for each copy that you convey,
|
||||||
|
and you may offer support or warranty protection for a fee.
|
||||||
|
|
||||||
|
#### 5. Conveying Modified Source Versions.
|
||||||
|
|
||||||
|
You may convey a work based on the Program, or the modifications to
|
||||||
|
produce it from the Program, in the form of source code under the
|
||||||
|
terms of section 4, provided that you also meet all of these
|
||||||
|
conditions:
|
||||||
|
|
||||||
|
- a) The work must carry prominent notices stating that you modified
|
||||||
|
it, and giving a relevant date.
|
||||||
|
- b) The work must carry prominent notices stating that it is
|
||||||
|
released under this License and any conditions added under
|
||||||
|
section 7. This requirement modifies the requirement in section 4
|
||||||
|
to "keep intact all notices".
|
||||||
|
- c) You must license the entire work, as a whole, under this
|
||||||
|
License to anyone who comes into possession of a copy. This
|
||||||
|
License will therefore apply, along with any applicable section 7
|
||||||
|
additional terms, to the whole of the work, and all its parts,
|
||||||
|
regardless of how they are packaged. This License gives no
|
||||||
|
permission to license the work in any other way, but it does not
|
||||||
|
invalidate such permission if you have separately received it.
|
||||||
|
- d) If the work has interactive user interfaces, each must display
|
||||||
|
Appropriate Legal Notices; however, if the Program has interactive
|
||||||
|
interfaces that do not display Appropriate Legal Notices, your
|
||||||
|
work need not make them do so.
|
||||||
|
|
||||||
|
A compilation of a covered work with other separate and independent
|
||||||
|
works, which are not by their nature extensions of the covered work,
|
||||||
|
and which are not combined with it such as to form a larger program,
|
||||||
|
in or on a volume of a storage or distribution medium, is called an
|
||||||
|
"aggregate" if the compilation and its resulting copyright are not
|
||||||
|
used to limit the access or legal rights of the compilation's users
|
||||||
|
beyond what the individual works permit. Inclusion of a covered work
|
||||||
|
in an aggregate does not cause this License to apply to the other
|
||||||
|
parts of the aggregate.
|
||||||
|
|
||||||
|
#### 6. Conveying Non-Source Forms.
|
||||||
|
|
||||||
|
You may convey a covered work in object code form under the terms of
|
||||||
|
sections 4 and 5, provided that you also convey the machine-readable
|
||||||
|
Corresponding Source under the terms of this License, in one of these
|
||||||
|
ways:
|
||||||
|
|
||||||
|
- a) Convey the object code in, or embodied in, a physical product
|
||||||
|
(including a physical distribution medium), accompanied by the
|
||||||
|
Corresponding Source fixed on a durable physical medium
|
||||||
|
customarily used for software interchange.
|
||||||
|
- b) Convey the object code in, or embodied in, a physical product
|
||||||
|
(including a physical distribution medium), accompanied by a
|
||||||
|
written offer, valid for at least three years and valid for as
|
||||||
|
long as you offer spare parts or customer support for that product
|
||||||
|
model, to give anyone who possesses the object code either (1) a
|
||||||
|
copy of the Corresponding Source for all the software in the
|
||||||
|
product that is covered by this License, on a durable physical
|
||||||
|
medium customarily used for software interchange, for a price no
|
||||||
|
more than your reasonable cost of physically performing this
|
||||||
|
conveying of source, or (2) access to copy the Corresponding
|
||||||
|
Source from a network server at no charge.
|
||||||
|
- c) Convey individual copies of the object code with a copy of the
|
||||||
|
written offer to provide the Corresponding Source. This
|
||||||
|
alternative is allowed only occasionally and noncommercially, and
|
||||||
|
only if you received the object code with such an offer, in accord
|
||||||
|
with subsection 6b.
|
||||||
|
- d) Convey the object code by offering access from a designated
|
||||||
|
place (gratis or for a charge), and offer equivalent access to the
|
||||||
|
Corresponding Source in the same way through the same place at no
|
||||||
|
further charge. You need not require recipients to copy the
|
||||||
|
Corresponding Source along with the object code. If the place to
|
||||||
|
copy the object code is a network server, the Corresponding Source
|
||||||
|
may be on a different server (operated by you or a third party)
|
||||||
|
that supports equivalent copying facilities, provided you maintain
|
||||||
|
clear directions next to the object code saying where to find the
|
||||||
|
Corresponding Source. Regardless of what server hosts the
|
||||||
|
Corresponding Source, you remain obligated to ensure that it is
|
||||||
|
available for as long as needed to satisfy these requirements.
|
||||||
|
- e) Convey the object code using peer-to-peer transmission,
|
||||||
|
provided you inform other peers where the object code and
|
||||||
|
Corresponding Source of the work are being offered to the general
|
||||||
|
public at no charge under subsection 6d.
|
||||||
|
|
||||||
|
A separable portion of the object code, whose source code is excluded
|
||||||
|
from the Corresponding Source as a System Library, need not be
|
||||||
|
included in conveying the object code work.
|
||||||
|
|
||||||
|
A "User Product" is either (1) a "consumer product", which means any
|
||||||
|
tangible personal property which is normally used for personal,
|
||||||
|
family, or household purposes, or (2) anything designed or sold for
|
||||||
|
incorporation into a dwelling. In determining whether a product is a
|
||||||
|
consumer product, doubtful cases shall be resolved in favor of
|
||||||
|
coverage. For a particular product received by a particular user,
|
||||||
|
"normally used" refers to a typical or common use of that class of
|
||||||
|
product, regardless of the status of the particular user or of the way
|
||||||
|
in which the particular user actually uses, or expects or is expected
|
||||||
|
to use, the product. A product is a consumer product regardless of
|
||||||
|
whether the product has substantial commercial, industrial or
|
||||||
|
non-consumer uses, unless such uses represent the only significant
|
||||||
|
mode of use of the product.
|
||||||
|
|
||||||
|
"Installation Information" for a User Product means any methods,
|
||||||
|
procedures, authorization keys, or other information required to
|
||||||
|
install and execute modified versions of a covered work in that User
|
||||||
|
Product from a modified version of its Corresponding Source. The
|
||||||
|
information must suffice to ensure that the continued functioning of
|
||||||
|
the modified object code is in no case prevented or interfered with
|
||||||
|
solely because modification has been made.
|
||||||
|
|
||||||
|
If you convey an object code work under this section in, or with, or
|
||||||
|
specifically for use in, a User Product, and the conveying occurs as
|
||||||
|
part of a transaction in which the right of possession and use of the
|
||||||
|
User Product is transferred to the recipient in perpetuity or for a
|
||||||
|
fixed term (regardless of how the transaction is characterized), the
|
||||||
|
Corresponding Source conveyed under this section must be accompanied
|
||||||
|
by the Installation Information. But this requirement does not apply
|
||||||
|
if neither you nor any third party retains the ability to install
|
||||||
|
modified object code on the User Product (for example, the work has
|
||||||
|
been installed in ROM).
|
||||||
|
|
||||||
|
The requirement to provide Installation Information does not include a
|
||||||
|
requirement to continue to provide support service, warranty, or
|
||||||
|
updates for a work that has been modified or installed by the
|
||||||
|
recipient, or for the User Product in which it has been modified or
|
||||||
|
installed. Access to a network may be denied when the modification
|
||||||
|
itself materially and adversely affects the operation of the network
|
||||||
|
or violates the rules and protocols for communication across the
|
||||||
|
network.
|
||||||
|
|
||||||
|
Corresponding Source conveyed, and Installation Information provided,
|
||||||
|
in accord with this section must be in a format that is publicly
|
||||||
|
documented (and with an implementation available to the public in
|
||||||
|
source code form), and must require no special password or key for
|
||||||
|
unpacking, reading or copying.
|
||||||
|
|
||||||
|
#### 7. Additional Terms.
|
||||||
|
|
||||||
|
"Additional permissions" are terms that supplement the terms of this
|
||||||
|
License by making exceptions from one or more of its conditions.
|
||||||
|
Additional permissions that are applicable to the entire Program shall
|
||||||
|
be treated as though they were included in this License, to the extent
|
||||||
|
that they are valid under applicable law. If additional permissions
|
||||||
|
apply only to part of the Program, that part may be used separately
|
||||||
|
under those permissions, but the entire Program remains governed by
|
||||||
|
this License without regard to the additional permissions.
|
||||||
|
|
||||||
|
When you convey a copy of a covered work, you may at your option
|
||||||
|
remove any additional permissions from that copy, or from any part of
|
||||||
|
it. (Additional permissions may be written to require their own
|
||||||
|
removal in certain cases when you modify the work.) You may place
|
||||||
|
additional permissions on material, added by you to a covered work,
|
||||||
|
for which you have or can give appropriate copyright permission.
|
||||||
|
|
||||||
|
Notwithstanding any other provision of this License, for material you
|
||||||
|
add to a covered work, you may (if authorized by the copyright holders
|
||||||
|
of that material) supplement the terms of this License with terms:
|
||||||
|
|
||||||
|
- a) Disclaiming warranty or limiting liability differently from the
|
||||||
|
terms of sections 15 and 16 of this License; or
|
||||||
|
- b) Requiring preservation of specified reasonable legal notices or
|
||||||
|
author attributions in that material or in the Appropriate Legal
|
||||||
|
Notices displayed by works containing it; or
|
||||||
|
- c) Prohibiting misrepresentation of the origin of that material,
|
||||||
|
or requiring that modified versions of such material be marked in
|
||||||
|
reasonable ways as different from the original version; or
|
||||||
|
- d) Limiting the use for publicity purposes of names of licensors
|
||||||
|
or authors of the material; or
|
||||||
|
- e) Declining to grant rights under trademark law for use of some
|
||||||
|
trade names, trademarks, or service marks; or
|
||||||
|
- f) Requiring indemnification of licensors and authors of that
|
||||||
|
material by anyone who conveys the material (or modified versions
|
||||||
|
of it) with contractual assumptions of liability to the recipient,
|
||||||
|
for any liability that these contractual assumptions directly
|
||||||
|
impose on those licensors and authors.
|
||||||
|
|
||||||
|
All other non-permissive additional terms are considered "further
|
||||||
|
restrictions" within the meaning of section 10. If the Program as you
|
||||||
|
received it, or any part of it, contains a notice stating that it is
|
||||||
|
governed by this License along with a term that is a further
|
||||||
|
restriction, you may remove that term. If a license document contains
|
||||||
|
a further restriction but permits relicensing or conveying under this
|
||||||
|
License, you may add to a covered work material governed by the terms
|
||||||
|
of that license document, provided that the further restriction does
|
||||||
|
not survive such relicensing or conveying.
|
||||||
|
|
||||||
|
If you add terms to a covered work in accord with this section, you
|
||||||
|
must place, in the relevant source files, a statement of the
|
||||||
|
additional terms that apply to those files, or a notice indicating
|
||||||
|
where to find the applicable terms.
|
||||||
|
|
||||||
|
Additional terms, permissive or non-permissive, may be stated in the
|
||||||
|
form of a separately written license, or stated as exceptions; the
|
||||||
|
above requirements apply either way.
|
||||||
|
|
||||||
|
#### 8. Termination.
|
||||||
|
|
||||||
|
You may not propagate or modify a covered work except as expressly
|
||||||
|
provided under this License. Any attempt otherwise to propagate or
|
||||||
|
modify it is void, and will automatically terminate your rights under
|
||||||
|
this License (including any patent licenses granted under the third
|
||||||
|
paragraph of section 11).
|
||||||
|
|
||||||
|
However, if you cease all violation of this License, then your license
|
||||||
|
from a particular copyright holder is reinstated (a) provisionally,
|
||||||
|
unless and until the copyright holder explicitly and finally
|
||||||
|
terminates your license, and (b) permanently, if the copyright holder
|
||||||
|
fails to notify you of the violation by some reasonable means prior to
|
||||||
|
60 days after the cessation.
|
||||||
|
|
||||||
|
Moreover, your license from a particular copyright holder is
|
||||||
|
reinstated permanently if the copyright holder notifies you of the
|
||||||
|
violation by some reasonable means, this is the first time you have
|
||||||
|
received notice of violation of this License (for any work) from that
|
||||||
|
copyright holder, and you cure the violation prior to 30 days after
|
||||||
|
your receipt of the notice.
|
||||||
|
|
||||||
|
Termination of your rights under this section does not terminate the
|
||||||
|
licenses of parties who have received copies or rights from you under
|
||||||
|
this License. If your rights have been terminated and not permanently
|
||||||
|
reinstated, you do not qualify to receive new licenses for the same
|
||||||
|
material under section 10.
|
||||||
|
|
||||||
|
#### 9. Acceptance Not Required for Having Copies.
|
||||||
|
|
||||||
|
You are not required to accept this License in order to receive or run
|
||||||
|
a copy of the Program. Ancillary propagation of a covered work
|
||||||
|
occurring solely as a consequence of using peer-to-peer transmission
|
||||||
|
to receive a copy likewise does not require acceptance. However,
|
||||||
|
nothing other than this License grants you permission to propagate or
|
||||||
|
modify any covered work. These actions infringe copyright if you do
|
||||||
|
not accept this License. Therefore, by modifying or propagating a
|
||||||
|
covered work, you indicate your acceptance of this License to do so.
|
||||||
|
|
||||||
|
#### 10. Automatic Licensing of Downstream Recipients.
|
||||||
|
|
||||||
|
Each time you convey a covered work, the recipient automatically
|
||||||
|
receives a license from the original licensors, to run, modify and
|
||||||
|
propagate that work, subject to this License. You are not responsible
|
||||||
|
for enforcing compliance by third parties with this License.
|
||||||
|
|
||||||
|
An "entity transaction" is a transaction transferring control of an
|
||||||
|
organization, or substantially all assets of one, or subdividing an
|
||||||
|
organization, or merging organizations. If propagation of a covered
|
||||||
|
work results from an entity transaction, each party to that
|
||||||
|
transaction who receives a copy of the work also receives whatever
|
||||||
|
licenses to the work the party's predecessor in interest had or could
|
||||||
|
give under the previous paragraph, plus a right to possession of the
|
||||||
|
Corresponding Source of the work from the predecessor in interest, if
|
||||||
|
the predecessor has it or can get it with reasonable efforts.
|
||||||
|
|
||||||
|
You may not impose any further restrictions on the exercise of the
|
||||||
|
rights granted or affirmed under this License. For example, you may
|
||||||
|
not impose a license fee, royalty, or other charge for exercise of
|
||||||
|
rights granted under this License, and you may not initiate litigation
|
||||||
|
(including a cross-claim or counterclaim in a lawsuit) alleging that
|
||||||
|
any patent claim is infringed by making, using, selling, offering for
|
||||||
|
sale, or importing the Program or any portion of it.
|
||||||
|
|
||||||
|
#### 11. Patents.
|
||||||
|
|
||||||
|
A "contributor" is a copyright holder who authorizes use under this
|
||||||
|
License of the Program or a work on which the Program is based. The
|
||||||
|
work thus licensed is called the contributor's "contributor version".
|
||||||
|
|
||||||
|
A contributor's "essential patent claims" are all patent claims owned
|
||||||
|
or controlled by the contributor, whether already acquired or
|
||||||
|
hereafter acquired, that would be infringed by some manner, permitted
|
||||||
|
by this License, of making, using, or selling its contributor version,
|
||||||
|
but do not include claims that would be infringed only as a
|
||||||
|
consequence of further modification of the contributor version. For
|
||||||
|
purposes of this definition, "control" includes the right to grant
|
||||||
|
patent sublicenses in a manner consistent with the requirements of
|
||||||
|
this License.
|
||||||
|
|
||||||
|
Each contributor grants you a non-exclusive, worldwide, royalty-free
|
||||||
|
patent license under the contributor's essential patent claims, to
|
||||||
|
make, use, sell, offer for sale, import and otherwise run, modify and
|
||||||
|
propagate the contents of its contributor version.
|
||||||
|
|
||||||
|
In the following three paragraphs, a "patent license" is any express
|
||||||
|
agreement or commitment, however denominated, not to enforce a patent
|
||||||
|
(such as an express permission to practice a patent or covenant not to
|
||||||
|
sue for patent infringement). To "grant" such a patent license to a
|
||||||
|
party means to make such an agreement or commitment not to enforce a
|
||||||
|
patent against the party.
|
||||||
|
|
||||||
|
If you convey a covered work, knowingly relying on a patent license,
|
||||||
|
and the Corresponding Source of the work is not available for anyone
|
||||||
|
to copy, free of charge and under the terms of this License, through a
|
||||||
|
publicly available network server or other readily accessible means,
|
||||||
|
then you must either (1) cause the Corresponding Source to be so
|
||||||
|
available, or (2) arrange to deprive yourself of the benefit of the
|
||||||
|
patent license for this particular work, or (3) arrange, in a manner
|
||||||
|
consistent with the requirements of this License, to extend the patent
|
||||||
|
license to downstream recipients. "Knowingly relying" means you have
|
||||||
|
actual knowledge that, but for the patent license, your conveying the
|
||||||
|
covered work in a country, or your recipient's use of the covered work
|
||||||
|
in a country, would infringe one or more identifiable patents in that
|
||||||
|
country that you have reason to believe are valid.
|
||||||
|
|
||||||
|
If, pursuant to or in connection with a single transaction or
|
||||||
|
arrangement, you convey, or propagate by procuring conveyance of, a
|
||||||
|
covered work, and grant a patent license to some of the parties
|
||||||
|
receiving the covered work authorizing them to use, propagate, modify
|
||||||
|
or convey a specific copy of the covered work, then the patent license
|
||||||
|
you grant is automatically extended to all recipients of the covered
|
||||||
|
work and works based on it.
|
||||||
|
|
||||||
|
A patent license is "discriminatory" if it does not include within the
|
||||||
|
scope of its coverage, prohibits the exercise of, or is conditioned on
|
||||||
|
the non-exercise of one or more of the rights that are specifically
|
||||||
|
granted under this License. You may not convey a covered work if you
|
||||||
|
are a party to an arrangement with a third party that is in the
|
||||||
|
business of distributing software, under which you make payment to the
|
||||||
|
third party based on the extent of your activity of conveying the
|
||||||
|
work, and under which the third party grants, to any of the parties
|
||||||
|
who would receive the covered work from you, a discriminatory patent
|
||||||
|
license (a) in connection with copies of the covered work conveyed by
|
||||||
|
you (or copies made from those copies), or (b) primarily for and in
|
||||||
|
connection with specific products or compilations that contain the
|
||||||
|
covered work, unless you entered into that arrangement, or that patent
|
||||||
|
license was granted, prior to 28 March 2007.
|
||||||
|
|
||||||
|
Nothing in this License shall be construed as excluding or limiting
|
||||||
|
any implied license or other defenses to infringement that may
|
||||||
|
otherwise be available to you under applicable patent law.
|
||||||
|
|
||||||
|
#### 12. No Surrender of Others' Freedom.
|
||||||
|
|
||||||
|
If conditions are imposed on you (whether by court order, agreement or
|
||||||
|
otherwise) that contradict the conditions of this License, they do not
|
||||||
|
excuse you from the conditions of this License. If you cannot convey a
|
||||||
|
covered work so as to satisfy simultaneously your obligations under
|
||||||
|
this License and any other pertinent obligations, then as a
|
||||||
|
consequence you may not convey it at all. For example, if you agree to
|
||||||
|
terms that obligate you to collect a royalty for further conveying
|
||||||
|
from those to whom you convey the Program, the only way you could
|
||||||
|
satisfy both those terms and this License would be to refrain entirely
|
||||||
|
from conveying the Program.
|
||||||
|
|
||||||
|
#### 13. Use with the GNU Affero General Public License.
|
||||||
|
|
||||||
|
Notwithstanding any other provision of this License, you have
|
||||||
|
permission to link or combine any covered work with a work licensed
|
||||||
|
under version 3 of the GNU Affero General Public License into a single
|
||||||
|
combined work, and to convey the resulting work. The terms of this
|
||||||
|
License will continue to apply to the part which is the covered work,
|
||||||
|
but the special requirements of the GNU Affero General Public License,
|
||||||
|
section 13, concerning interaction through a network will apply to the
|
||||||
|
combination as such.
|
||||||
|
|
||||||
|
#### 14. Revised Versions of this License.
|
||||||
|
|
||||||
|
The Free Software Foundation may publish revised and/or new versions
|
||||||
|
of the GNU General Public License from time to time. Such new versions
|
||||||
|
will be similar in spirit to the present version, but may differ in
|
||||||
|
detail to address new problems or concerns.
|
||||||
|
|
||||||
|
Each version is given a distinguishing version number. If the Program
|
||||||
|
specifies that a certain numbered version of the GNU General Public
|
||||||
|
License "or any later version" applies to it, you have the option of
|
||||||
|
following the terms and conditions either of that numbered version or
|
||||||
|
of any later version published by the Free Software Foundation. If the
|
||||||
|
Program does not specify a version number of the GNU General Public
|
||||||
|
License, you may choose any version ever published by the Free
|
||||||
|
Software Foundation.
|
||||||
|
|
||||||
|
If the Program specifies that a proxy can decide which future versions
|
||||||
|
of the GNU General Public License can be used, that proxy's public
|
||||||
|
statement of acceptance of a version permanently authorizes you to
|
||||||
|
choose that version for the Program.
|
||||||
|
|
||||||
|
Later license versions may give you additional or different
|
||||||
|
permissions. However, no additional obligations are imposed on any
|
||||||
|
author or copyright holder as a result of your choosing to follow a
|
||||||
|
later version.
|
||||||
|
|
||||||
|
#### 15. Disclaimer of Warranty.
|
||||||
|
|
||||||
|
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
|
||||||
|
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
|
||||||
|
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT
|
||||||
|
WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT
|
||||||
|
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||||
|
A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND
|
||||||
|
PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE
|
||||||
|
DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR
|
||||||
|
CORRECTION.
|
||||||
|
|
||||||
|
#### 16. Limitation of Liability.
|
||||||
|
|
||||||
|
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||||
|
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR
|
||||||
|
CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||||
|
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES
|
||||||
|
ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT
|
||||||
|
NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR
|
||||||
|
LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM
|
||||||
|
TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER
|
||||||
|
PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||||
|
|
||||||
|
#### 17. Interpretation of Sections 15 and 16.
|
||||||
|
|
||||||
|
If the disclaimer of warranty and limitation of liability provided
|
||||||
|
above cannot be given local legal effect according to their terms,
|
||||||
|
reviewing courts shall apply local law that most closely approximates
|
||||||
|
an absolute waiver of all civil liability in connection with the
|
||||||
|
Program, unless a warranty or assumption of liability accompanies a
|
||||||
|
copy of the Program in return for a fee.
|
||||||
|
|
||||||
|
END OF TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
### How to Apply These Terms to Your New Programs
|
||||||
|
|
||||||
|
If you develop a new program, and you want it to be of the greatest
|
||||||
|
possible use to the public, the best way to achieve this is to make it
|
||||||
|
free software which everyone can redistribute and change under these
|
||||||
|
terms.
|
||||||
|
|
||||||
|
To do so, attach the following notices to the program. It is safest to
|
||||||
|
attach them to the start of each source file to most effectively state
|
||||||
|
the exclusion of warranty; and each file should have at least the
|
||||||
|
"copyright" line and a pointer to where the full notice is found.
|
||||||
|
|
||||||
|
<one line to give the program's name and a brief idea of what it does.>
|
||||||
|
Copyright (C) <year> <name of author>
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Also add information on how to contact you by electronic and paper
|
||||||
|
mail.
|
||||||
|
|
||||||
|
If the program does terminal interaction, make it output a short
|
||||||
|
notice like this when it starts in an interactive mode:
|
||||||
|
|
||||||
|
<program> Copyright (C) <year> <name of author>
|
||||||
|
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||||
|
This is free software, and you are welcome to redistribute it
|
||||||
|
under certain conditions; type `show c' for details.
|
||||||
|
|
||||||
|
The hypothetical commands \`show w' and \`show c' should show the
|
||||||
|
appropriate parts of the General Public License. Of course, your
|
||||||
|
program's commands might be different; for a GUI interface, you would
|
||||||
|
use an "about box".
|
||||||
|
|
||||||
|
You should also get your employer (if you work as a programmer) or
|
||||||
|
school, if any, to sign a "copyright disclaimer" for the program, if
|
||||||
|
necessary. For more information on this, and how to apply and follow
|
||||||
|
the GNU GPL, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
The GNU General Public License does not permit incorporating your
|
||||||
|
program into proprietary programs. If your program is a subroutine
|
||||||
|
library, you may consider it more useful to permit linking proprietary
|
||||||
|
applications with the library. If this is what you want to do, use the
|
||||||
|
GNU Lesser General Public License instead of this License. But first,
|
||||||
|
please read <https://www.gnu.org/licenses/why-not-lgpl.html>.
|
674
LICENSE
Executable file
674
LICENSE
Executable file
|
@ -0,0 +1,674 @@
|
||||||
|
GNU GENERAL PUBLIC LICENSE
|
||||||
|
Version 3, 29 June 2007
|
||||||
|
|
||||||
|
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
|
||||||
|
Everyone is permitted to copy and distribute verbatim copies
|
||||||
|
of this license document, but changing it is not allowed.
|
||||||
|
|
||||||
|
Preamble
|
||||||
|
|
||||||
|
The GNU General Public License is a free, copyleft license for
|
||||||
|
software and other kinds of works.
|
||||||
|
|
||||||
|
The licenses for most software and other practical works are designed
|
||||||
|
to take away your freedom to share and change the works. By contrast,
|
||||||
|
the GNU General Public License is intended to guarantee your freedom to
|
||||||
|
share and change all versions of a program--to make sure it remains free
|
||||||
|
software for all its users. We, the Free Software Foundation, use the
|
||||||
|
GNU General Public License for most of our software; it applies also to
|
||||||
|
any other work released this way by its authors. You can apply it to
|
||||||
|
your programs, too.
|
||||||
|
|
||||||
|
When we speak of free software, we are referring to freedom, not
|
||||||
|
price. Our General Public Licenses are designed to make sure that you
|
||||||
|
have the freedom to distribute copies of free software (and charge for
|
||||||
|
them if you wish), that you receive source code or can get it if you
|
||||||
|
want it, that you can change the software or use pieces of it in new
|
||||||
|
free programs, and that you know you can do these things.
|
||||||
|
|
||||||
|
To protect your rights, we need to prevent others from denying you
|
||||||
|
these rights or asking you to surrender the rights. Therefore, you have
|
||||||
|
certain responsibilities if you distribute copies of the software, or if
|
||||||
|
you modify it: responsibilities to respect the freedom of others.
|
||||||
|
|
||||||
|
For example, if you distribute copies of such a program, whether
|
||||||
|
gratis or for a fee, you must pass on to the recipients the same
|
||||||
|
freedoms that you received. You must make sure that they, too, receive
|
||||||
|
or can get the source code. And you must show them these terms so they
|
||||||
|
know their rights.
|
||||||
|
|
||||||
|
Developers that use the GNU GPL protect your rights with two steps:
|
||||||
|
(1) assert copyright on the software, and (2) offer you this License
|
||||||
|
giving you legal permission to copy, distribute and/or modify it.
|
||||||
|
|
||||||
|
For the developers' and authors' protection, the GPL clearly explains
|
||||||
|
that there is no warranty for this free software. For both users' and
|
||||||
|
authors' sake, the GPL requires that modified versions be marked as
|
||||||
|
changed, so that their problems will not be attributed erroneously to
|
||||||
|
authors of previous versions.
|
||||||
|
|
||||||
|
Some devices are designed to deny users access to install or run
|
||||||
|
modified versions of the software inside them, although the manufacturer
|
||||||
|
can do so. This is fundamentally incompatible with the aim of
|
||||||
|
protecting users' freedom to change the software. The systematic
|
||||||
|
pattern of such abuse occurs in the area of products for individuals to
|
||||||
|
use, which is precisely where it is most unacceptable. Therefore, we
|
||||||
|
have designed this version of the GPL to prohibit the practice for those
|
||||||
|
products. If such problems arise substantially in other domains, we
|
||||||
|
stand ready to extend this provision to those domains in future versions
|
||||||
|
of the GPL, as needed to protect the freedom of users.
|
||||||
|
|
||||||
|
Finally, every program is threatened constantly by software patents.
|
||||||
|
States should not allow patents to restrict development and use of
|
||||||
|
software on general-purpose computers, but in those that do, we wish to
|
||||||
|
avoid the special danger that patents applied to a free program could
|
||||||
|
make it effectively proprietary. To prevent this, the GPL assures that
|
||||||
|
patents cannot be used to render the program non-free.
|
||||||
|
|
||||||
|
The precise terms and conditions for copying, distribution and
|
||||||
|
modification follow.
|
||||||
|
|
||||||
|
TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
0. Definitions.
|
||||||
|
|
||||||
|
"This License" refers to version 3 of the GNU General Public License.
|
||||||
|
|
||||||
|
"Copyright" also means copyright-like laws that apply to other kinds of
|
||||||
|
works, such as semiconductor masks.
|
||||||
|
|
||||||
|
"The Program" refers to any copyrightable work licensed under this
|
||||||
|
License. Each licensee is addressed as "you". "Licensees" and
|
||||||
|
"recipients" may be individuals or organizations.
|
||||||
|
|
||||||
|
To "modify" a work means to copy from or adapt all or part of the work
|
||||||
|
in a fashion requiring copyright permission, other than the making of an
|
||||||
|
exact copy. The resulting work is called a "modified version" of the
|
||||||
|
earlier work or a work "based on" the earlier work.
|
||||||
|
|
||||||
|
A "covered work" means either the unmodified Program or a work based
|
||||||
|
on the Program.
|
||||||
|
|
||||||
|
To "propagate" a work means to do anything with it that, without
|
||||||
|
permission, would make you directly or secondarily liable for
|
||||||
|
infringement under applicable copyright law, except executing it on a
|
||||||
|
computer or modifying a private copy. Propagation includes copying,
|
||||||
|
distribution (with or without modification), making available to the
|
||||||
|
public, and in some countries other activities as well.
|
||||||
|
|
||||||
|
To "convey" a work means any kind of propagation that enables other
|
||||||
|
parties to make or receive copies. Mere interaction with a user through
|
||||||
|
a computer network, with no transfer of a copy, is not conveying.
|
||||||
|
|
||||||
|
An interactive user interface displays "Appropriate Legal Notices"
|
||||||
|
to the extent that it includes a convenient and prominently visible
|
||||||
|
feature that (1) displays an appropriate copyright notice, and (2)
|
||||||
|
tells the user that there is no warranty for the work (except to the
|
||||||
|
extent that warranties are provided), that licensees may convey the
|
||||||
|
work under this License, and how to view a copy of this License. If
|
||||||
|
the interface presents a list of user commands or options, such as a
|
||||||
|
menu, a prominent item in the list meets this criterion.
|
||||||
|
|
||||||
|
1. Source Code.
|
||||||
|
|
||||||
|
The "source code" for a work means the preferred form of the work
|
||||||
|
for making modifications to it. "Object code" means any non-source
|
||||||
|
form of a work.
|
||||||
|
|
||||||
|
A "Standard Interface" means an interface that either is an official
|
||||||
|
standard defined by a recognized standards body, or, in the case of
|
||||||
|
interfaces specified for a particular programming language, one that
|
||||||
|
is widely used among developers working in that language.
|
||||||
|
|
||||||
|
The "System Libraries" of an executable work include anything, other
|
||||||
|
than the work as a whole, that (a) is included in the normal form of
|
||||||
|
packaging a Major Component, but which is not part of that Major
|
||||||
|
Component, and (b) serves only to enable use of the work with that
|
||||||
|
Major Component, or to implement a Standard Interface for which an
|
||||||
|
implementation is available to the public in source code form. A
|
||||||
|
"Major Component", in this context, means a major essential component
|
||||||
|
(kernel, window system, and so on) of the specific operating system
|
||||||
|
(if any) on which the executable work runs, or a compiler used to
|
||||||
|
produce the work, or an object code interpreter used to run it.
|
||||||
|
|
||||||
|
The "Corresponding Source" for a work in object code form means all
|
||||||
|
the source code needed to generate, install, and (for an executable
|
||||||
|
work) run the object code and to modify the work, including scripts to
|
||||||
|
control those activities. However, it does not include the work's
|
||||||
|
System Libraries, or general-purpose tools or generally available free
|
||||||
|
programs which are used unmodified in performing those activities but
|
||||||
|
which are not part of the work. For example, Corresponding Source
|
||||||
|
includes interface definition files associated with source files for
|
||||||
|
the work, and the source code for shared libraries and dynamically
|
||||||
|
linked subprograms that the work is specifically designed to require,
|
||||||
|
such as by intimate data communication or control flow between those
|
||||||
|
subprograms and other parts of the work.
|
||||||
|
|
||||||
|
The Corresponding Source need not include anything that users
|
||||||
|
can regenerate automatically from other parts of the Corresponding
|
||||||
|
Source.
|
||||||
|
|
||||||
|
The Corresponding Source for a work in source code form is that
|
||||||
|
same work.
|
||||||
|
|
||||||
|
2. Basic Permissions.
|
||||||
|
|
||||||
|
All rights granted under this License are granted for the term of
|
||||||
|
copyright on the Program, and are irrevocable provided the stated
|
||||||
|
conditions are met. This License explicitly affirms your unlimited
|
||||||
|
permission to run the unmodified Program. The output from running a
|
||||||
|
covered work is covered by this License only if the output, given its
|
||||||
|
content, constitutes a covered work. This License acknowledges your
|
||||||
|
rights of fair use or other equivalent, as provided by copyright law.
|
||||||
|
|
||||||
|
You may make, run and propagate covered works that you do not
|
||||||
|
convey, without conditions so long as your license otherwise remains
|
||||||
|
in force. You may convey covered works to others for the sole purpose
|
||||||
|
of having them make modifications exclusively for you, or provide you
|
||||||
|
with facilities for running those works, provided that you comply with
|
||||||
|
the terms of this License in conveying all material for which you do
|
||||||
|
not control copyright. Those thus making or running the covered works
|
||||||
|
for you must do so exclusively on your behalf, under your direction
|
||||||
|
and control, on terms that prohibit them from making any copies of
|
||||||
|
your copyrighted material outside their relationship with you.
|
||||||
|
|
||||||
|
Conveying under any other circumstances is permitted solely under
|
||||||
|
the conditions stated below. Sublicensing is not allowed; section 10
|
||||||
|
makes it unnecessary.
|
||||||
|
|
||||||
|
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
|
||||||
|
|
||||||
|
No covered work shall be deemed part of an effective technological
|
||||||
|
measure under any applicable law fulfilling obligations under article
|
||||||
|
11 of the WIPO copyright treaty adopted on 20 December 1996, or
|
||||||
|
similar laws prohibiting or restricting circumvention of such
|
||||||
|
measures.
|
||||||
|
|
||||||
|
When you convey a covered work, you waive any legal power to forbid
|
||||||
|
circumvention of technological measures to the extent such circumvention
|
||||||
|
is effected by exercising rights under this License with respect to
|
||||||
|
the covered work, and you disclaim any intention to limit operation or
|
||||||
|
modification of the work as a means of enforcing, against the work's
|
||||||
|
users, your or third parties' legal rights to forbid circumvention of
|
||||||
|
technological measures.
|
||||||
|
|
||||||
|
4. Conveying Verbatim Copies.
|
||||||
|
|
||||||
|
You may convey verbatim copies of the Program's source code as you
|
||||||
|
receive it, in any medium, provided that you conspicuously and
|
||||||
|
appropriately publish on each copy an appropriate copyright notice;
|
||||||
|
keep intact all notices stating that this License and any
|
||||||
|
non-permissive terms added in accord with section 7 apply to the code;
|
||||||
|
keep intact all notices of the absence of any warranty; and give all
|
||||||
|
recipients a copy of this License along with the Program.
|
||||||
|
|
||||||
|
You may charge any price or no price for each copy that you convey,
|
||||||
|
and you may offer support or warranty protection for a fee.
|
||||||
|
|
||||||
|
5. Conveying Modified Source Versions.
|
||||||
|
|
||||||
|
You may convey a work based on the Program, or the modifications to
|
||||||
|
produce it from the Program, in the form of source code under the
|
||||||
|
terms of section 4, provided that you also meet all of these conditions:
|
||||||
|
|
||||||
|
a) The work must carry prominent notices stating that you modified
|
||||||
|
it, and giving a relevant date.
|
||||||
|
|
||||||
|
b) The work must carry prominent notices stating that it is
|
||||||
|
released under this License and any conditions added under section
|
||||||
|
7. This requirement modifies the requirement in section 4 to
|
||||||
|
"keep intact all notices".
|
||||||
|
|
||||||
|
c) You must license the entire work, as a whole, under this
|
||||||
|
License to anyone who comes into possession of a copy. This
|
||||||
|
License will therefore apply, along with any applicable section 7
|
||||||
|
additional terms, to the whole of the work, and all its parts,
|
||||||
|
regardless of how they are packaged. This License gives no
|
||||||
|
permission to license the work in any other way, but it does not
|
||||||
|
invalidate such permission if you have separately received it.
|
||||||
|
|
||||||
|
d) If the work has interactive user interfaces, each must display
|
||||||
|
Appropriate Legal Notices; however, if the Program has interactive
|
||||||
|
interfaces that do not display Appropriate Legal Notices, your
|
||||||
|
work need not make them do so.
|
||||||
|
|
||||||
|
A compilation of a covered work with other separate and independent
|
||||||
|
works, which are not by their nature extensions of the covered work,
|
||||||
|
and which are not combined with it such as to form a larger program,
|
||||||
|
in or on a volume of a storage or distribution medium, is called an
|
||||||
|
"aggregate" if the compilation and its resulting copyright are not
|
||||||
|
used to limit the access or legal rights of the compilation's users
|
||||||
|
beyond what the individual works permit. Inclusion of a covered work
|
||||||
|
in an aggregate does not cause this License to apply to the other
|
||||||
|
parts of the aggregate.
|
||||||
|
|
||||||
|
6. Conveying Non-Source Forms.
|
||||||
|
|
||||||
|
You may convey a covered work in object code form under the terms
|
||||||
|
of sections 4 and 5, provided that you also convey the
|
||||||
|
machine-readable Corresponding Source under the terms of this License,
|
||||||
|
in one of these ways:
|
||||||
|
|
||||||
|
a) Convey the object code in, or embodied in, a physical product
|
||||||
|
(including a physical distribution medium), accompanied by the
|
||||||
|
Corresponding Source fixed on a durable physical medium
|
||||||
|
customarily used for software interchange.
|
||||||
|
|
||||||
|
b) Convey the object code in, or embodied in, a physical product
|
||||||
|
(including a physical distribution medium), accompanied by a
|
||||||
|
written offer, valid for at least three years and valid for as
|
||||||
|
long as you offer spare parts or customer support for that product
|
||||||
|
model, to give anyone who possesses the object code either (1) a
|
||||||
|
copy of the Corresponding Source for all the software in the
|
||||||
|
product that is covered by this License, on a durable physical
|
||||||
|
medium customarily used for software interchange, for a price no
|
||||||
|
more than your reasonable cost of physically performing this
|
||||||
|
conveying of source, or (2) access to copy the
|
||||||
|
Corresponding Source from a network server at no charge.
|
||||||
|
|
||||||
|
c) Convey individual copies of the object code with a copy of the
|
||||||
|
written offer to provide the Corresponding Source. This
|
||||||
|
alternative is allowed only occasionally and noncommercially, and
|
||||||
|
only if you received the object code with such an offer, in accord
|
||||||
|
with subsection 6b.
|
||||||
|
|
||||||
|
d) Convey the object code by offering access from a designated
|
||||||
|
place (gratis or for a charge), and offer equivalent access to the
|
||||||
|
Corresponding Source in the same way through the same place at no
|
||||||
|
further charge. You need not require recipients to copy the
|
||||||
|
Corresponding Source along with the object code. If the place to
|
||||||
|
copy the object code is a network server, the Corresponding Source
|
||||||
|
may be on a different server (operated by you or a third party)
|
||||||
|
that supports equivalent copying facilities, provided you maintain
|
||||||
|
clear directions next to the object code saying where to find the
|
||||||
|
Corresponding Source. Regardless of what server hosts the
|
||||||
|
Corresponding Source, you remain obligated to ensure that it is
|
||||||
|
available for as long as needed to satisfy these requirements.
|
||||||
|
|
||||||
|
e) Convey the object code using peer-to-peer transmission, provided
|
||||||
|
you inform other peers where the object code and Corresponding
|
||||||
|
Source of the work are being offered to the general public at no
|
||||||
|
charge under subsection 6d.
|
||||||
|
|
||||||
|
A separable portion of the object code, whose source code is excluded
|
||||||
|
from the Corresponding Source as a System Library, need not be
|
||||||
|
included in conveying the object code work.
|
||||||
|
|
||||||
|
A "User Product" is either (1) a "consumer product", which means any
|
||||||
|
tangible personal property which is normally used for personal, family,
|
||||||
|
or household purposes, or (2) anything designed or sold for incorporation
|
||||||
|
into a dwelling. In determining whether a product is a consumer product,
|
||||||
|
doubtful cases shall be resolved in favor of coverage. For a particular
|
||||||
|
product received by a particular user, "normally used" refers to a
|
||||||
|
typical or common use of that class of product, regardless of the status
|
||||||
|
of the particular user or of the way in which the particular user
|
||||||
|
actually uses, or expects or is expected to use, the product. A product
|
||||||
|
is a consumer product regardless of whether the product has substantial
|
||||||
|
commercial, industrial or non-consumer uses, unless such uses represent
|
||||||
|
the only significant mode of use of the product.
|
||||||
|
|
||||||
|
"Installation Information" for a User Product means any methods,
|
||||||
|
procedures, authorization keys, or other information required to install
|
||||||
|
and execute modified versions of a covered work in that User Product from
|
||||||
|
a modified version of its Corresponding Source. The information must
|
||||||
|
suffice to ensure that the continued functioning of the modified object
|
||||||
|
code is in no case prevented or interfered with solely because
|
||||||
|
modification has been made.
|
||||||
|
|
||||||
|
If you convey an object code work under this section in, or with, or
|
||||||
|
specifically for use in, a User Product, and the conveying occurs as
|
||||||
|
part of a transaction in which the right of possession and use of the
|
||||||
|
User Product is transferred to the recipient in perpetuity or for a
|
||||||
|
fixed term (regardless of how the transaction is characterized), the
|
||||||
|
Corresponding Source conveyed under this section must be accompanied
|
||||||
|
by the Installation Information. But this requirement does not apply
|
||||||
|
if neither you nor any third party retains the ability to install
|
||||||
|
modified object code on the User Product (for example, the work has
|
||||||
|
been installed in ROM).
|
||||||
|
|
||||||
|
The requirement to provide Installation Information does not include a
|
||||||
|
requirement to continue to provide support service, warranty, or updates
|
||||||
|
for a work that has been modified or installed by the recipient, or for
|
||||||
|
the User Product in which it has been modified or installed. Access to a
|
||||||
|
network may be denied when the modification itself materially and
|
||||||
|
adversely affects the operation of the network or violates the rules and
|
||||||
|
protocols for communication across the network.
|
||||||
|
|
||||||
|
Corresponding Source conveyed, and Installation Information provided,
|
||||||
|
in accord with this section must be in a format that is publicly
|
||||||
|
documented (and with an implementation available to the public in
|
||||||
|
source code form), and must require no special password or key for
|
||||||
|
unpacking, reading or copying.
|
||||||
|
|
||||||
|
7. Additional Terms.
|
||||||
|
|
||||||
|
"Additional permissions" are terms that supplement the terms of this
|
||||||
|
License by making exceptions from one or more of its conditions.
|
||||||
|
Additional permissions that are applicable to the entire Program shall
|
||||||
|
be treated as though they were included in this License, to the extent
|
||||||
|
that they are valid under applicable law. If additional permissions
|
||||||
|
apply only to part of the Program, that part may be used separately
|
||||||
|
under those permissions, but the entire Program remains governed by
|
||||||
|
this License without regard to the additional permissions.
|
||||||
|
|
||||||
|
When you convey a copy of a covered work, you may at your option
|
||||||
|
remove any additional permissions from that copy, or from any part of
|
||||||
|
it. (Additional permissions may be written to require their own
|
||||||
|
removal in certain cases when you modify the work.) You may place
|
||||||
|
additional permissions on material, added by you to a covered work,
|
||||||
|
for which you have or can give appropriate copyright permission.
|
||||||
|
|
||||||
|
Notwithstanding any other provision of this License, for material you
|
||||||
|
add to a covered work, you may (if authorized by the copyright holders of
|
||||||
|
that material) supplement the terms of this License with terms:
|
||||||
|
|
||||||
|
a) Disclaiming warranty or limiting liability differently from the
|
||||||
|
terms of sections 15 and 16 of this License; or
|
||||||
|
|
||||||
|
b) Requiring preservation of specified reasonable legal notices or
|
||||||
|
author attributions in that material or in the Appropriate Legal
|
||||||
|
Notices displayed by works containing it; or
|
||||||
|
|
||||||
|
c) Prohibiting misrepresentation of the origin of that material, or
|
||||||
|
requiring that modified versions of such material be marked in
|
||||||
|
reasonable ways as different from the original version; or
|
||||||
|
|
||||||
|
d) Limiting the use for publicity purposes of names of licensors or
|
||||||
|
authors of the material; or
|
||||||
|
|
||||||
|
e) Declining to grant rights under trademark law for use of some
|
||||||
|
trade names, trademarks, or service marks; or
|
||||||
|
|
||||||
|
f) Requiring indemnification of licensors and authors of that
|
||||||
|
material by anyone who conveys the material (or modified versions of
|
||||||
|
it) with contractual assumptions of liability to the recipient, for
|
||||||
|
any liability that these contractual assumptions directly impose on
|
||||||
|
those licensors and authors.
|
||||||
|
|
||||||
|
All other non-permissive additional terms are considered "further
|
||||||
|
restrictions" within the meaning of section 10. If the Program as you
|
||||||
|
received it, or any part of it, contains a notice stating that it is
|
||||||
|
governed by this License along with a term that is a further
|
||||||
|
restriction, you may remove that term. If a license document contains
|
||||||
|
a further restriction but permits relicensing or conveying under this
|
||||||
|
License, you may add to a covered work material governed by the terms
|
||||||
|
of that license document, provided that the further restriction does
|
||||||
|
not survive such relicensing or conveying.
|
||||||
|
|
||||||
|
If you add terms to a covered work in accord with this section, you
|
||||||
|
must place, in the relevant source files, a statement of the
|
||||||
|
additional terms that apply to those files, or a notice indicating
|
||||||
|
where to find the applicable terms.
|
||||||
|
|
||||||
|
Additional terms, permissive or non-permissive, may be stated in the
|
||||||
|
form of a separately written license, or stated as exceptions;
|
||||||
|
the above requirements apply either way.
|
||||||
|
|
||||||
|
8. Termination.
|
||||||
|
|
||||||
|
You may not propagate or modify a covered work except as expressly
|
||||||
|
provided under this License. Any attempt otherwise to propagate or
|
||||||
|
modify it is void, and will automatically terminate your rights under
|
||||||
|
this License (including any patent licenses granted under the third
|
||||||
|
paragraph of section 11).
|
||||||
|
|
||||||
|
However, if you cease all violation of this License, then your
|
||||||
|
license from a particular copyright holder is reinstated (a)
|
||||||
|
provisionally, unless and until the copyright holder explicitly and
|
||||||
|
finally terminates your license, and (b) permanently, if the copyright
|
||||||
|
holder fails to notify you of the violation by some reasonable means
|
||||||
|
prior to 60 days after the cessation.
|
||||||
|
|
||||||
|
Moreover, your license from a particular copyright holder is
|
||||||
|
reinstated permanently if the copyright holder notifies you of the
|
||||||
|
violation by some reasonable means, this is the first time you have
|
||||||
|
received notice of violation of this License (for any work) from that
|
||||||
|
copyright holder, and you cure the violation prior to 30 days after
|
||||||
|
your receipt of the notice.
|
||||||
|
|
||||||
|
Termination of your rights under this section does not terminate the
|
||||||
|
licenses of parties who have received copies or rights from you under
|
||||||
|
this License. If your rights have been terminated and not permanently
|
||||||
|
reinstated, you do not qualify to receive new licenses for the same
|
||||||
|
material under section 10.
|
||||||
|
|
||||||
|
9. Acceptance Not Required for Having Copies.
|
||||||
|
|
||||||
|
You are not required to accept this License in order to receive or
|
||||||
|
run a copy of the Program. Ancillary propagation of a covered work
|
||||||
|
occurring solely as a consequence of using peer-to-peer transmission
|
||||||
|
to receive a copy likewise does not require acceptance. However,
|
||||||
|
nothing other than this License grants you permission to propagate or
|
||||||
|
modify any covered work. These actions infringe copyright if you do
|
||||||
|
not accept this License. Therefore, by modifying or propagating a
|
||||||
|
covered work, you indicate your acceptance of this License to do so.
|
||||||
|
|
||||||
|
10. Automatic Licensing of Downstream Recipients.
|
||||||
|
|
||||||
|
Each time you convey a covered work, the recipient automatically
|
||||||
|
receives a license from the original licensors, to run, modify and
|
||||||
|
propagate that work, subject to this License. You are not responsible
|
||||||
|
for enforcing compliance by third parties with this License.
|
||||||
|
|
||||||
|
An "entity transaction" is a transaction transferring control of an
|
||||||
|
organization, or substantially all assets of one, or subdividing an
|
||||||
|
organization, or merging organizations. If propagation of a covered
|
||||||
|
work results from an entity transaction, each party to that
|
||||||
|
transaction who receives a copy of the work also receives whatever
|
||||||
|
licenses to the work the party's predecessor in interest had or could
|
||||||
|
give under the previous paragraph, plus a right to possession of the
|
||||||
|
Corresponding Source of the work from the predecessor in interest, if
|
||||||
|
the predecessor has it or can get it with reasonable efforts.
|
||||||
|
|
||||||
|
You may not impose any further restrictions on the exercise of the
|
||||||
|
rights granted or affirmed under this License. For example, you may
|
||||||
|
not impose a license fee, royalty, or other charge for exercise of
|
||||||
|
rights granted under this License, and you may not initiate litigation
|
||||||
|
(including a cross-claim or counterclaim in a lawsuit) alleging that
|
||||||
|
any patent claim is infringed by making, using, selling, offering for
|
||||||
|
sale, or importing the Program or any portion of it.
|
||||||
|
|
||||||
|
11. Patents.
|
||||||
|
|
||||||
|
A "contributor" is a copyright holder who authorizes use under this
|
||||||
|
License of the Program or a work on which the Program is based. The
|
||||||
|
work thus licensed is called the contributor's "contributor version".
|
||||||
|
|
||||||
|
A contributor's "essential patent claims" are all patent claims
|
||||||
|
owned or controlled by the contributor, whether already acquired or
|
||||||
|
hereafter acquired, that would be infringed by some manner, permitted
|
||||||
|
by this License, of making, using, or selling its contributor version,
|
||||||
|
but do not include claims that would be infringed only as a
|
||||||
|
consequence of further modification of the contributor version. For
|
||||||
|
purposes of this definition, "control" includes the right to grant
|
||||||
|
patent sublicenses in a manner consistent with the requirements of
|
||||||
|
this License.
|
||||||
|
|
||||||
|
Each contributor grants you a non-exclusive, worldwide, royalty-free
|
||||||
|
patent license under the contributor's essential patent claims, to
|
||||||
|
make, use, sell, offer for sale, import and otherwise run, modify and
|
||||||
|
propagate the contents of its contributor version.
|
||||||
|
|
||||||
|
In the following three paragraphs, a "patent license" is any express
|
||||||
|
agreement or commitment, however denominated, not to enforce a patent
|
||||||
|
(such as an express permission to practice a patent or covenant not to
|
||||||
|
sue for patent infringement). To "grant" such a patent license to a
|
||||||
|
party means to make such an agreement or commitment not to enforce a
|
||||||
|
patent against the party.
|
||||||
|
|
||||||
|
If you convey a covered work, knowingly relying on a patent license,
|
||||||
|
and the Corresponding Source of the work is not available for anyone
|
||||||
|
to copy, free of charge and under the terms of this License, through a
|
||||||
|
publicly available network server or other readily accessible means,
|
||||||
|
then you must either (1) cause the Corresponding Source to be so
|
||||||
|
available, or (2) arrange to deprive yourself of the benefit of the
|
||||||
|
patent license for this particular work, or (3) arrange, in a manner
|
||||||
|
consistent with the requirements of this License, to extend the patent
|
||||||
|
license to downstream recipients. "Knowingly relying" means you have
|
||||||
|
actual knowledge that, but for the patent license, your conveying the
|
||||||
|
covered work in a country, or your recipient's use of the covered work
|
||||||
|
in a country, would infringe one or more identifiable patents in that
|
||||||
|
country that you have reason to believe are valid.
|
||||||
|
|
||||||
|
If, pursuant to or in connection with a single transaction or
|
||||||
|
arrangement, you convey, or propagate by procuring conveyance of, a
|
||||||
|
covered work, and grant a patent license to some of the parties
|
||||||
|
receiving the covered work authorizing them to use, propagate, modify
|
||||||
|
or convey a specific copy of the covered work, then the patent license
|
||||||
|
you grant is automatically extended to all recipients of the covered
|
||||||
|
work and works based on it.
|
||||||
|
|
||||||
|
A patent license is "discriminatory" if it does not include within
|
||||||
|
the scope of its coverage, prohibits the exercise of, or is
|
||||||
|
conditioned on the non-exercise of one or more of the rights that are
|
||||||
|
specifically granted under this License. You may not convey a covered
|
||||||
|
work if you are a party to an arrangement with a third party that is
|
||||||
|
in the business of distributing software, under which you make payment
|
||||||
|
to the third party based on the extent of your activity of conveying
|
||||||
|
the work, and under which the third party grants, to any of the
|
||||||
|
parties who would receive the covered work from you, a discriminatory
|
||||||
|
patent license (a) in connection with copies of the covered work
|
||||||
|
conveyed by you (or copies made from those copies), or (b) primarily
|
||||||
|
for and in connection with specific products or compilations that
|
||||||
|
contain the covered work, unless you entered into that arrangement,
|
||||||
|
or that patent license was granted, prior to 28 March 2007.
|
||||||
|
|
||||||
|
Nothing in this License shall be construed as excluding or limiting
|
||||||
|
any implied license or other defenses to infringement that may
|
||||||
|
otherwise be available to you under applicable patent law.
|
||||||
|
|
||||||
|
12. No Surrender of Others' Freedom.
|
||||||
|
|
||||||
|
If conditions are imposed on you (whether by court order, agreement or
|
||||||
|
otherwise) that contradict the conditions of this License, they do not
|
||||||
|
excuse you from the conditions of this License. If you cannot convey a
|
||||||
|
covered work so as to satisfy simultaneously your obligations under this
|
||||||
|
License and any other pertinent obligations, then as a consequence you may
|
||||||
|
not convey it at all. For example, if you agree to terms that obligate you
|
||||||
|
to collect a royalty for further conveying from those to whom you convey
|
||||||
|
the Program, the only way you could satisfy both those terms and this
|
||||||
|
License would be to refrain entirely from conveying the Program.
|
||||||
|
|
||||||
|
13. Use with the GNU Affero General Public License.
|
||||||
|
|
||||||
|
Notwithstanding any other provision of this License, you have
|
||||||
|
permission to link or combine any covered work with a work licensed
|
||||||
|
under version 3 of the GNU Affero General Public License into a single
|
||||||
|
combined work, and to convey the resulting work. The terms of this
|
||||||
|
License will continue to apply to the part which is the covered work,
|
||||||
|
but the special requirements of the GNU Affero General Public License,
|
||||||
|
section 13, concerning interaction through a network will apply to the
|
||||||
|
combination as such.
|
||||||
|
|
||||||
|
14. Revised Versions of this License.
|
||||||
|
|
||||||
|
The Free Software Foundation may publish revised and/or new versions of
|
||||||
|
the GNU General Public License from time to time. Such new versions will
|
||||||
|
be similar in spirit to the present version, but may differ in detail to
|
||||||
|
address new problems or concerns.
|
||||||
|
|
||||||
|
Each version is given a distinguishing version number. If the
|
||||||
|
Program specifies that a certain numbered version of the GNU General
|
||||||
|
Public License "or any later version" applies to it, you have the
|
||||||
|
option of following the terms and conditions either of that numbered
|
||||||
|
version or of any later version published by the Free Software
|
||||||
|
Foundation. If the Program does not specify a version number of the
|
||||||
|
GNU General Public License, you may choose any version ever published
|
||||||
|
by the Free Software Foundation.
|
||||||
|
|
||||||
|
If the Program specifies that a proxy can decide which future
|
||||||
|
versions of the GNU General Public License can be used, that proxy's
|
||||||
|
public statement of acceptance of a version permanently authorizes you
|
||||||
|
to choose that version for the Program.
|
||||||
|
|
||||||
|
Later license versions may give you additional or different
|
||||||
|
permissions. However, no additional obligations are imposed on any
|
||||||
|
author or copyright holder as a result of your choosing to follow a
|
||||||
|
later version.
|
||||||
|
|
||||||
|
15. Disclaimer of Warranty.
|
||||||
|
|
||||||
|
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
|
||||||
|
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
|
||||||
|
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
|
||||||
|
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
|
||||||
|
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||||
|
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
|
||||||
|
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
|
||||||
|
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||||
|
|
||||||
|
16. Limitation of Liability.
|
||||||
|
|
||||||
|
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||||
|
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
|
||||||
|
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
|
||||||
|
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
|
||||||
|
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
|
||||||
|
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
|
||||||
|
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
|
||||||
|
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
|
||||||
|
SUCH DAMAGES.
|
||||||
|
|
||||||
|
17. Interpretation of Sections 15 and 16.
|
||||||
|
|
||||||
|
If the disclaimer of warranty and limitation of liability provided
|
||||||
|
above cannot be given local legal effect according to their terms,
|
||||||
|
reviewing courts shall apply local law that most closely approximates
|
||||||
|
an absolute waiver of all civil liability in connection with the
|
||||||
|
Program, unless a warranty or assumption of liability accompanies a
|
||||||
|
copy of the Program in return for a fee.
|
||||||
|
|
||||||
|
END OF TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
How to Apply These Terms to Your New Programs
|
||||||
|
|
||||||
|
If you develop a new program, and you want it to be of the greatest
|
||||||
|
possible use to the public, the best way to achieve this is to make it
|
||||||
|
free software which everyone can redistribute and change under these terms.
|
||||||
|
|
||||||
|
To do so, attach the following notices to the program. It is safest
|
||||||
|
to attach them to the start of each source file to most effectively
|
||||||
|
state the exclusion of warranty; and each file should have at least
|
||||||
|
the "copyright" line and a pointer to where the full notice is found.
|
||||||
|
|
||||||
|
<one line to give the program's name and a brief idea of what it does.>
|
||||||
|
Copyright (C) <year> <name of author>
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Also add information on how to contact you by electronic and paper mail.
|
||||||
|
|
||||||
|
If the program does terminal interaction, make it output a short
|
||||||
|
notice like this when it starts in an interactive mode:
|
||||||
|
|
||||||
|
<program> Copyright (C) <year> <name of author>
|
||||||
|
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||||
|
This is free software, and you are welcome to redistribute it
|
||||||
|
under certain conditions; type `show c' for details.
|
||||||
|
|
||||||
|
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||||
|
parts of the General Public License. Of course, your program's commands
|
||||||
|
might be different; for a GUI interface, you would use an "about box".
|
||||||
|
|
||||||
|
You should also get your employer (if you work as a programmer) or school,
|
||||||
|
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
||||||
|
For more information on this, and how to apply and follow the GNU GPL, see
|
||||||
|
<https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
The GNU General Public License does not permit incorporating your program
|
||||||
|
into proprietary programs. If your program is a subroutine library, you
|
||||||
|
may consider it more useful to permit linking proprietary applications with
|
||||||
|
the library. If this is what you want to do, use the GNU Lesser General
|
||||||
|
Public License instead of this License. But first, please read
|
||||||
|
<https://www.gnu.org/licenses/why-not-lgpl.html>.
|
10
README.md
Executable file
10
README.md
Executable file
|
@ -0,0 +1,10 @@
|
||||||
|
# Arduino CW Keyer
|
||||||
|
Projet basé sur le travail de K3NG
|
||||||
|
https://github.com/k3ng/k3ng_cw_keyer/wiki
|
||||||
|
|
||||||
|
Version 2.0
|
||||||
|
|
||||||
|
|
||||||
|
<img src="http://xavier.debert.free.fr/keyer/keyer.png" width="20%">
|
||||||
|
<img src="http://xavier.debert.free.fr/keyer/pcb.png" width="20%">
|
||||||
|
<img src="http://xavier.debert.free.fr/keyer/schema.png" width="20%">
|
63
config.txt
Executable file
63
config.txt
Executable file
|
@ -0,0 +1,63 @@
|
||||||
|
Dongle simple compatible avec le croquis K3NG.
|
||||||
|
|
||||||
|
Le programme lui-même est ici - https://github.com/k3ng/k3ng_cw_keyer
|
||||||
|
|
||||||
|
|
||||||
|
* Dans le fichier KEYER_PIN_SETTING.H, spécifiez les contacts du microcontrôleur, tels qu'ils sont organisés dans cet appareil :
|
||||||
|
|
||||||
|
define paddle_left 6
|
||||||
|
|
||||||
|
define paddle_right 5
|
||||||
|
|
||||||
|
define tx_key_line_1 12
|
||||||
|
|
||||||
|
define sidetone_line 4
|
||||||
|
|
||||||
|
define potentiometer A0
|
||||||
|
|
||||||
|
define ptt_tx_1 11
|
||||||
|
|
||||||
|
define analog_buttons_pin A1
|
||||||
|
|
||||||
|
define command_mode_active_led 7
|
||||||
|
|
||||||
|
define ps2_keyboard_data 2
|
||||||
|
|
||||||
|
define ps2_keyboard_clock 3
|
||||||
|
|
||||||
|
Le reste des noms de contacts doit être défini sur '0'.
|
||||||
|
|
||||||
|
|
||||||
|
* spécifiez les options de périphérique utilisées dans le fichier KEYER_FEATURES_AND_OPTIONS.H, en supprimant le signe '//' devant elles :
|
||||||
|
|
||||||
|
define FEATURE_COMMAND_BUTTONS
|
||||||
|
|
||||||
|
define FEATURE_MEMORIES
|
||||||
|
|
||||||
|
define FEATURE_MEMORY_MACROS
|
||||||
|
|
||||||
|
define FEATURE_POTENTIOMETER
|
||||||
|
|
||||||
|
define FEATURE_PS2_KEYBOARD
|
||||||
|
|
||||||
|
Toutes les autres options doivent être commentées avec '//'.
|
||||||
|
|
||||||
|
Lors du choix de l'ensemble de fonctions souhaitées, soyez prudent, car tout l'ensemble souhaité ne rentrera pas dans la mémoire du microcontrôleur Arduino Nano.
|
||||||
|
|
||||||
|
* Dans le fichier KEYER_SETTINGS.H, vous devez spécifier les paramètres suivants pour les variables :
|
||||||
|
|
||||||
|
define potentiometer_change_threshold 1.0
|
||||||
|
|
||||||
|
define default_ptt_hang_time_wordspace_units 1.0
|
||||||
|
|
||||||
|
define potentiometer_always_on 1
|
||||||
|
|
||||||
|
define analog_buttons_number_of_buttons 6
|
||||||
|
|
||||||
|
define analog_buttons_r1 10
|
||||||
|
|
||||||
|
define analog_buttons_r2 1
|
||||||
|
|
||||||
|
|
||||||
|
Tous les autres paramètres peuvent rester inchangés.
|
||||||
|
|
BIN
k3ng-keyer-schematic-2012052101.png
Executable file
BIN
k3ng-keyer-schematic-2012052101.png
Executable file
Binary file not shown.
After Width: | Height: | Size: 22 KiB |
22650
k3ng_keyer/k3ng_keyer.ino
Executable file
22650
k3ng_keyer/k3ng_keyer.ino
Executable file
File diff suppressed because it is too large
Load Diff
226
k3ng_keyer/keyer.h
Executable file
226
k3ng_keyer/keyer.h
Executable file
|
@ -0,0 +1,226 @@
|
||||||
|
#ifndef keyer_h
|
||||||
|
#define keyer_h
|
||||||
|
|
||||||
|
// Do not change these !
|
||||||
|
|
||||||
|
// Variable macros
|
||||||
|
#define STRAIGHT 1
|
||||||
|
#define IAMBIC_B 2
|
||||||
|
#define IAMBIC_A 3
|
||||||
|
#define BUG 4
|
||||||
|
#define ULTIMATIC 5
|
||||||
|
#define SINGLE_PADDLE 6
|
||||||
|
|
||||||
|
#define PADDLE_NORMAL 0
|
||||||
|
#define PADDLE_REVERSE 1
|
||||||
|
|
||||||
|
#define KEYER_NORMAL 0
|
||||||
|
#define BEACON 1
|
||||||
|
#define KEYER_COMMAND_MODE 2
|
||||||
|
#define KEYER_COMMAND_MODE_SPEED_OVERRIDE 3
|
||||||
|
|
||||||
|
#define OMIT_LETTERSPACE 1
|
||||||
|
|
||||||
|
#define SIDETONE_OFF 0
|
||||||
|
#define SIDETONE_ON 1
|
||||||
|
#define SIDETONE_PADDLE_ONLY 2
|
||||||
|
|
||||||
|
#define SENDING_NOTHING 0
|
||||||
|
#define SENDING_DIT 1
|
||||||
|
#define SENDING_DAH 2
|
||||||
|
|
||||||
|
#define SPEED_NORMAL 0
|
||||||
|
#define SPEED_QRSS 1
|
||||||
|
|
||||||
|
#define CW 0
|
||||||
|
#define HELL 1
|
||||||
|
#define AMERICAN_MORSE 2
|
||||||
|
|
||||||
|
#ifdef FEATURE_PS2_KEYBOARD
|
||||||
|
#define PS2_KEYBOARD_NORMAL 0
|
||||||
|
#endif //FEATURE_PS2_KEYBOARD
|
||||||
|
|
||||||
|
#define SERIAL_CLI 0
|
||||||
|
#define SERIAL_WINKEY_EMULATION 1
|
||||||
|
|
||||||
|
#define SERIAL_SEND_BUFFER_SPECIAL_START 13
|
||||||
|
#define SERIAL_SEND_BUFFER_WPM_CHANGE 14
|
||||||
|
#define SERIAL_SEND_BUFFER_PTT_ON 15
|
||||||
|
#define SERIAL_SEND_BUFFER_PTT_OFF 16
|
||||||
|
#define SERIAL_SEND_BUFFER_TIMED_KEY_DOWN 17
|
||||||
|
#define SERIAL_SEND_BUFFER_TIMED_WAIT 18
|
||||||
|
#define SERIAL_SEND_BUFFER_NULL 19
|
||||||
|
#define SERIAL_SEND_BUFFER_PROSIGN 20
|
||||||
|
#define SERIAL_SEND_BUFFER_HOLD_SEND 21
|
||||||
|
#define SERIAL_SEND_BUFFER_HOLD_SEND_RELEASE 22
|
||||||
|
#define SERIAL_SEND_BUFFER_MEMORY_NUMBER 23
|
||||||
|
#define SERIAL_SEND_BUFFER_TX_CHANGE 24
|
||||||
|
#define SERIAL_SEND_BUFFER_SPECIAL_END 25
|
||||||
|
|
||||||
|
#if defined(OPTION_PROSIGN_SUPPORT)
|
||||||
|
#define PROSIGN_START 127
|
||||||
|
#define PROSIGN_AA 128
|
||||||
|
#define PROSIGN_AS 129
|
||||||
|
#define PROSIGN_BK 130
|
||||||
|
#define PROSIGN_CL 131
|
||||||
|
#define PROSIGN_CT 132
|
||||||
|
#define PROSIGN_KN 133
|
||||||
|
#define PROSIGN_NJ 134
|
||||||
|
#define PROSIGN_SK 135
|
||||||
|
#define PROSIGN_SN 136
|
||||||
|
#define PROSIGN_HH 137 // iz0rus
|
||||||
|
#define PROSIGN_END 138 // iz0rus
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define SERIAL_SEND_BUFFER_NORMAL 0
|
||||||
|
#define SERIAL_SEND_BUFFER_TIMED_COMMAND 1
|
||||||
|
#define SERIAL_SEND_BUFFER_HOLD 2
|
||||||
|
|
||||||
|
|
||||||
|
#define WINKEY_NO_COMMAND_IN_PROGRESS 0
|
||||||
|
#define WINKEY_UNBUFFERED_SPEED_COMMAND 1
|
||||||
|
#define WINKEY_UNSUPPORTED_COMMAND 2
|
||||||
|
#define WINKEY_POINTER_COMMAND 3
|
||||||
|
#define WINKEY_ADMIN_COMMAND 4
|
||||||
|
#define WINKEY_PAUSE_COMMAND 5
|
||||||
|
#define WINKEY_KEY_COMMAND 6
|
||||||
|
#define WINKEY_SETMODE_COMMAND 7
|
||||||
|
#define WINKEY_SIDETONE_FREQ_COMMAND 8
|
||||||
|
#define WINKEY_ADMIN_COMMAND_ECHO 9
|
||||||
|
#define WINKEY_BUFFERED_SPEED_COMMAND 10
|
||||||
|
#define WINKEY_DAH_TO_DIT_RATIO_COMMAND 11
|
||||||
|
#define WINKEY_KEYING_COMPENSATION_COMMAND 12
|
||||||
|
#define WINKEY_FIRST_EXTENSION_COMMAND 13
|
||||||
|
#define WINKEY_PTT_TIMES_PARM1_COMMAND 14
|
||||||
|
#define WINKEY_PTT_TIMES_PARM2_COMMAND 15
|
||||||
|
#define WINKEY_SET_POT_PARM1_COMMAND 16
|
||||||
|
#define WINKEY_SET_POT_PARM2_COMMAND 17
|
||||||
|
#define WINKEY_SET_POT_PARM3_COMMAND 18
|
||||||
|
#define WINKEY_SOFTWARE_PADDLE_COMMAND 19
|
||||||
|
//#define WINKEY_CANCEL_BUFFERED_SPEED_COMMAND 20
|
||||||
|
#define WINKEY_BUFFFERED_PTT_COMMMAND 21
|
||||||
|
#define WINKEY_HSCW_COMMAND 22
|
||||||
|
#define WINKEY_BUFFERED_HSCW_COMMAND 23
|
||||||
|
#define WINKEY_WEIGHTING_COMMAND 24
|
||||||
|
#define WINKEY_KEY_BUFFERED_COMMAND 25
|
||||||
|
#define WINKEY_WAIT_BUFFERED_COMMAND 26
|
||||||
|
#define WINKEY_POINTER_01_COMMAND 27
|
||||||
|
#define WINKEY_POINTER_02_COMMAND 28
|
||||||
|
#define WINKEY_POINTER_03_COMMAND 29
|
||||||
|
#define WINKEY_FARNSWORTH_COMMAND 30
|
||||||
|
#define WINKEY_MERGE_COMMAND 31
|
||||||
|
#define WINKEY_MERGE_PARM_2_COMMAND 32
|
||||||
|
#define WINKEY_SET_PINCONFIG_COMMAND 33
|
||||||
|
#define WINKEY_EXTENDED_COMMAND 34
|
||||||
|
#define WINKEY_SEND_MSG 35
|
||||||
|
#define WINKEY_LOAD_SETTINGS_PARM_1_COMMAND 101
|
||||||
|
#define WINKEY_LOAD_SETTINGS_PARM_2_COMMAND 102
|
||||||
|
#define WINKEY_LOAD_SETTINGS_PARM_3_COMMAND 103
|
||||||
|
#define WINKEY_LOAD_SETTINGS_PARM_4_COMMAND 104
|
||||||
|
#define WINKEY_LOAD_SETTINGS_PARM_5_COMMAND 105
|
||||||
|
#define WINKEY_LOAD_SETTINGS_PARM_6_COMMAND 106
|
||||||
|
#define WINKEY_LOAD_SETTINGS_PARM_7_COMMAND 107
|
||||||
|
#define WINKEY_LOAD_SETTINGS_PARM_8_COMMAND 108
|
||||||
|
#define WINKEY_LOAD_SETTINGS_PARM_9_COMMAND 109
|
||||||
|
#define WINKEY_LOAD_SETTINGS_PARM_10_COMMAND 110
|
||||||
|
#define WINKEY_LOAD_SETTINGS_PARM_11_COMMAND 111
|
||||||
|
#define WINKEY_LOAD_SETTINGS_PARM_12_COMMAND 112
|
||||||
|
#define WINKEY_LOAD_SETTINGS_PARM_13_COMMAND 113
|
||||||
|
#define WINKEY_LOAD_SETTINGS_PARM_14_COMMAND 114
|
||||||
|
#define WINKEY_LOAD_SETTINGS_PARM_15_COMMAND 115
|
||||||
|
|
||||||
|
#define WINKEY_HOUSEKEEPING 0
|
||||||
|
#define SERVICE_SERIAL_BYTE 1
|
||||||
|
|
||||||
|
#define WINKEY_UNBUFFERED_SPEED 0
|
||||||
|
#define WINKEY_BUFFERED_SPEED 1
|
||||||
|
|
||||||
|
|
||||||
|
#define UNDEFINED_SENDING 0
|
||||||
|
#define AUTOMATIC_SENDING 1
|
||||||
|
#define MANUAL_SENDING 2
|
||||||
|
#define AUTOMATIC_SENDING_INTERRUPTED 3
|
||||||
|
|
||||||
|
#define ULTIMATIC_NORMAL 0
|
||||||
|
#define ULTIMATIC_DIT_PRIORITY 1
|
||||||
|
#define ULTIMATIC_DAH_PRIORITY 2
|
||||||
|
|
||||||
|
|
||||||
|
#define PRINTCHAR 0
|
||||||
|
#define NOPRINT 1
|
||||||
|
|
||||||
|
#define DONT_RAISE_ERROR_MSG 0
|
||||||
|
#define RAISE_ERROR_MSG 1
|
||||||
|
|
||||||
|
#if !defined(HID_PROTOCOL_KEYBOARD) && !defined(HID_PROTOCOL_MOUSE)
|
||||||
|
#define HID_PROTOCOL_KEYBOARD 1
|
||||||
|
#define HID_PROTOCOL_MOUSE 2
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define WORDSWORTH_2_CHAR_WORDS 2
|
||||||
|
#define WORDSWORTH_3_CHAR_WORDS 3
|
||||||
|
#define WORDSWORTH_4_CHAR_WORDS 4
|
||||||
|
#define WORDSWORTH_NAMES 5
|
||||||
|
#define WORDSWORTH_QSO_WORDS 6
|
||||||
|
#define WORDSWORTH_MIXED 99
|
||||||
|
|
||||||
|
#define WORDSWORTH_WORDSPACE 1
|
||||||
|
#define WORDSWORTH_WPM 2
|
||||||
|
#define WORDSWORTH_REPETITION 3
|
||||||
|
|
||||||
|
#define CALLSIGN_INTERNATIONAL 0
|
||||||
|
#define CALLSIGN_US 1
|
||||||
|
#define CALLSIGN_EUROPEAN 2
|
||||||
|
#define CALLSIGN_CANADA 3
|
||||||
|
|
||||||
|
#define ECHO_PROGRESSIVE_5 40
|
||||||
|
#define ECHO_2_CHAR_WORDS 41
|
||||||
|
#define ECHO_3_CHAR_WORDS 42
|
||||||
|
#define ECHO_4_CHAR_WORDS 43
|
||||||
|
#define ECHO_NAMES 44
|
||||||
|
#define ECHO_QSO_WORDS 45
|
||||||
|
#define ECHO_MIXED 49
|
||||||
|
|
||||||
|
#define PRACTICE_NON_INTERACTIVE 0
|
||||||
|
#define PRACTICE_INTERACTIVE 1
|
||||||
|
|
||||||
|
#define RANDOM_LETTER_GROUPS 61
|
||||||
|
#define RANDOM_NUMBER_GROUPS 62
|
||||||
|
#define RANDOM_MIXED_GROUPS 63
|
||||||
|
|
||||||
|
#define PRACTICE_2_CHAR_WORDS 51
|
||||||
|
#define PRACTICE_3_CHAR_WORDS 52
|
||||||
|
#define PRACTICE_4_CHAR_WORDS 53
|
||||||
|
#define PRACTICE_NAMES 54
|
||||||
|
#define PRACTICE_QSO_WORDS 55
|
||||||
|
#define PRACTICE_MIXED 59
|
||||||
|
|
||||||
|
#define CLI_NORMAL_MODE 0
|
||||||
|
#define CLI_MILL_MODE_PADDLE_SEND 1
|
||||||
|
#define CLI_MILL_MODE_KEYBOARD_RECEIVE 2
|
||||||
|
|
||||||
|
#define COMMAND_SPEED_MODE_KEYER_WPM 0
|
||||||
|
#define COMMAND_SPEED_MODE_COMMAND_MODE_WPM 1
|
||||||
|
|
||||||
|
#define SD_CARD_UNINITIALIZED 0
|
||||||
|
#define SD_CARD_AVAILABLE 1
|
||||||
|
#define SD_CARD_AVAILABLE_BEACON_FILE_FOUND 2
|
||||||
|
#define SD_CARD_AVAILABLE_BEACON_FILE_RUNNING 3
|
||||||
|
#define SD_CARD_ERROR 254
|
||||||
|
|
||||||
|
#define SD_CARD_LOG_NOT_OPEN 0
|
||||||
|
#define SD_CARD_LOG_OPEN 1
|
||||||
|
#define SD_CARD_LOG_ERROR 254
|
||||||
|
|
||||||
|
#define COMMAND_PL 1
|
||||||
|
#define COMMAND_PT 2
|
||||||
|
#define COMMAND_PA 3
|
||||||
|
#define COMMAND_PI 4
|
||||||
|
|
||||||
|
#define SO2R_TX_1 1 // Transmitter 1
|
||||||
|
#define SO2R_TX_2 2 // Transmitter 2
|
||||||
|
#define SO2R_RX_1 1 // Receiver 1
|
||||||
|
#define SO2R_RX_2 2 // Receiver 2
|
||||||
|
#define SO2R_RX_S 3 // Stereo 1 and 2
|
||||||
|
#define SO2R_RX_R 4 // Reverse stereo (implemented as stereo)
|
||||||
|
#endif //keyer_h
|
414
k3ng_keyer/keyer_callsign_prefixes.h
Executable file
414
k3ng_keyer/keyer_callsign_prefixes.h
Executable file
|
@ -0,0 +1,414 @@
|
||||||
|
|
||||||
|
|
||||||
|
const char canadian_prefix_1[] PROGMEM = "VE1";
|
||||||
|
const char canadian_prefix_2[] PROGMEM = "VE2";
|
||||||
|
const char canadian_prefix_3[] PROGMEM = "VE3";
|
||||||
|
const char canadian_prefix_4[] PROGMEM = "VE4";
|
||||||
|
const char canadian_prefix_5[] PROGMEM = "VE5";
|
||||||
|
const char canadian_prefix_6[] PROGMEM = "VE6";
|
||||||
|
const char canadian_prefix_7[] PROGMEM = "VE7";
|
||||||
|
const char canadian_prefix_8[] PROGMEM = "VE8";
|
||||||
|
const char canadian_prefix_9[] PROGMEM = "VE9";
|
||||||
|
const char canadian_prefix_10[] PROGMEM = "VY0";
|
||||||
|
const char canadian_prefix_11[] PROGMEM = "VY1";
|
||||||
|
const char canadian_prefix_12[] PROGMEM = "VY2";
|
||||||
|
const char canadian_prefix_13[] PROGMEM = "VO1";
|
||||||
|
const char canadian_prefix_14[] PROGMEM = "VO2";
|
||||||
|
const byte canadian_prefix_size = 14;
|
||||||
|
const char* const canadian_prefix_table[] PROGMEM =
|
||||||
|
{canadian_prefix_1,canadian_prefix_2,canadian_prefix_3,canadian_prefix_4,canadian_prefix_5,canadian_prefix_6,canadian_prefix_7,canadian_prefix_8,canadian_prefix_9,canadian_prefix_10,
|
||||||
|
canadian_prefix_11,canadian_prefix_12,canadian_prefix_13,canadian_prefix_14};
|
||||||
|
|
||||||
|
// European callsign prefix table
|
||||||
|
//
|
||||||
|
// Note 2017-05-06: This is weird. If I put "LB" in the array, avrdude trips up with a timeout error when uploading to a Mega.
|
||||||
|
// That's why LB isn't in this table
|
||||||
|
|
||||||
|
const char eu_prefix_1[] PROGMEM = "3A";
|
||||||
|
const char eu_prefix_2[] PROGMEM = "4O";
|
||||||
|
const char eu_prefix_3[] PROGMEM = "4U";
|
||||||
|
const char eu_prefix_4[] PROGMEM = "9A";
|
||||||
|
const char eu_prefix_5[] PROGMEM = "9H";
|
||||||
|
const char eu_prefix_6[] PROGMEM = "C3";
|
||||||
|
const char eu_prefix_7[] PROGMEM = "CT";
|
||||||
|
const char eu_prefix_8[] PROGMEM = "CU";
|
||||||
|
const char eu_prefix_9[] PROGMEM = "DA";
|
||||||
|
const char eu_prefix_10[] PROGMEM = "DB";
|
||||||
|
const char eu_prefix_11[] PROGMEM = "DC";
|
||||||
|
const char eu_prefix_12[] PROGMEM = "DD";
|
||||||
|
const char eu_prefix_13[] PROGMEM = "DE";
|
||||||
|
const char eu_prefix_14[] PROGMEM = "DF";
|
||||||
|
const char eu_prefix_15[] PROGMEM = "DG";
|
||||||
|
const char eu_prefix_16[] PROGMEM = "DH";
|
||||||
|
const char eu_prefix_17[] PROGMEM = "DI";
|
||||||
|
const char eu_prefix_18[] PROGMEM = "DJ";
|
||||||
|
const char eu_prefix_19[] PROGMEM = "DK";
|
||||||
|
const char eu_prefix_20[] PROGMEM = "DL";
|
||||||
|
const char eu_prefix_21[] PROGMEM = "EI";
|
||||||
|
const char eu_prefix_22[] PROGMEM = "ER";
|
||||||
|
const char eu_prefix_23[] PROGMEM = "ES";
|
||||||
|
const char eu_prefix_24[] PROGMEM = "EU";
|
||||||
|
const char eu_prefix_25[] PROGMEM = "EV";
|
||||||
|
const char eu_prefix_26[] PROGMEM = "EW";
|
||||||
|
const char eu_prefix_27[] PROGMEM = "F";
|
||||||
|
const char eu_prefix_28[] PROGMEM = "G";
|
||||||
|
const char eu_prefix_29[] PROGMEM = "GX";
|
||||||
|
const char eu_prefix_30[] PROGMEM = "GD";
|
||||||
|
const char eu_prefix_31[] PROGMEM = "GT";
|
||||||
|
const char eu_prefix_32[] PROGMEM = "GI";
|
||||||
|
const char eu_prefix_33[] PROGMEM = "GN";
|
||||||
|
const char eu_prefix_34[] PROGMEM = "GJ";
|
||||||
|
const char eu_prefix_35[] PROGMEM = "GH";
|
||||||
|
const char eu_prefix_36[] PROGMEM = "GM";
|
||||||
|
const char eu_prefix_37[] PROGMEM = "GS";
|
||||||
|
const char eu_prefix_38[] PROGMEM = "GU";
|
||||||
|
const char eu_prefix_39[] PROGMEM = "GP";
|
||||||
|
const char eu_prefix_40[] PROGMEM = "GW";
|
||||||
|
const char eu_prefix_41[] PROGMEM = "GC";
|
||||||
|
const char eu_prefix_42[] PROGMEM = "HB";
|
||||||
|
const char eu_prefix_43[] PROGMEM = "HV";
|
||||||
|
const char eu_prefix_44[] PROGMEM = "I";
|
||||||
|
const char eu_prefix_45[] PROGMEM = "IS";
|
||||||
|
const char eu_prefix_46[] PROGMEM = "IM";
|
||||||
|
const char eu_prefix_47[] PROGMEM = "JW";
|
||||||
|
const char eu_prefix_48[] PROGMEM = "JX";
|
||||||
|
const char eu_prefix_49[] PROGMEM = "LX";
|
||||||
|
const char eu_prefix_50[] PROGMEM = "LY";
|
||||||
|
const char eu_prefix_51[] PROGMEM = "LZ";
|
||||||
|
const char eu_prefix_52[] PROGMEM = "OY";
|
||||||
|
const char eu_prefix_53[] PROGMEM = "OZ";
|
||||||
|
const char eu_prefix_54[] PROGMEM = "S5";
|
||||||
|
const char eu_prefix_55[] PROGMEM = "YU";
|
||||||
|
const char eu_prefix_56[] PROGMEM = "T7";
|
||||||
|
const char eu_prefix_57[] PROGMEM = "T9";
|
||||||
|
const char eu_prefix_58[] PROGMEM = "TF";
|
||||||
|
const char eu_prefix_59[] PROGMEM = "TK";
|
||||||
|
const char eu_prefix_60[] PROGMEM = "EM";
|
||||||
|
const char eu_prefix_61[] PROGMEM = "EO";
|
||||||
|
const char eu_prefix_62[] PROGMEM = "YL";
|
||||||
|
const char eu_prefix_63[] PROGMEM = "YO";
|
||||||
|
const char eu_prefix_64[] PROGMEM = "YT";
|
||||||
|
const char eu_prefix_65[] PROGMEM = "YU";
|
||||||
|
const char eu_prefix_66[] PROGMEM = "YP";
|
||||||
|
const char eu_prefix_67[] PROGMEM = "YQ";
|
||||||
|
const char eu_prefix_68[] PROGMEM = "YR";
|
||||||
|
const char eu_prefix_69[] PROGMEM = "Z3";
|
||||||
|
const char eu_prefix_70[] PROGMEM = "ZA";
|
||||||
|
const char eu_prefix_71[] PROGMEM = "YZ";
|
||||||
|
const char eu_prefix_72[] PROGMEM = "SA";
|
||||||
|
const char eu_prefix_73[] PROGMEM = "SB";
|
||||||
|
const char eu_prefix_74[] PROGMEM = "SC";
|
||||||
|
const char eu_prefix_75[] PROGMEM = "SD";
|
||||||
|
const char eu_prefix_76[] PROGMEM = "SE";
|
||||||
|
const char eu_prefix_77[] PROGMEM = "SF";
|
||||||
|
const char eu_prefix_78[] PROGMEM = "SG";
|
||||||
|
const char eu_prefix_79[] PROGMEM = "SH";
|
||||||
|
const char eu_prefix_80[] PROGMEM = "SI";
|
||||||
|
const char eu_prefix_81[] PROGMEM = "SJ";
|
||||||
|
const char eu_prefix_82[] PROGMEM = "SK";
|
||||||
|
const char eu_prefix_83[] PROGMEM = "SL";
|
||||||
|
const char eu_prefix_84[] PROGMEM = "SM";
|
||||||
|
const char eu_prefix_85[] PROGMEM = "SN";
|
||||||
|
const char eu_prefix_86[] PROGMEM = "SO";
|
||||||
|
const char eu_prefix_87[] PROGMEM = "SP";
|
||||||
|
const char eu_prefix_88[] PROGMEM = "SQ";
|
||||||
|
const char eu_prefix_89[] PROGMEM = "SR";
|
||||||
|
const char eu_prefix_90[] PROGMEM = "SS";
|
||||||
|
const char eu_prefix_91[] PROGMEM = "ST";
|
||||||
|
const char eu_prefix_92[] PROGMEM = "SU";
|
||||||
|
const char eu_prefix_93[] PROGMEM = "SV";
|
||||||
|
const char eu_prefix_94[] PROGMEM = "SW";
|
||||||
|
const char eu_prefix_95[] PROGMEM = "SX";
|
||||||
|
const char eu_prefix_96[] PROGMEM = "SY";
|
||||||
|
const char eu_prefix_97[] PROGMEM = "SZ";
|
||||||
|
const char eu_prefix_98[] PROGMEM = "OE";
|
||||||
|
const char eu_prefix_99[] PROGMEM = "OF";
|
||||||
|
const char eu_prefix_100[] PROGMEM = "OG";
|
||||||
|
const char eu_prefix_101[] PROGMEM = "OH";
|
||||||
|
const char eu_prefix_102[] PROGMEM = "OI";
|
||||||
|
const char eu_prefix_103[] PROGMEM = "OJ";
|
||||||
|
const char eu_prefix_104[] PROGMEM = "OK";
|
||||||
|
const char eu_prefix_105[] PROGMEM = "OL";
|
||||||
|
const char eu_prefix_106[] PROGMEM = "OM";
|
||||||
|
const char eu_prefix_107[] PROGMEM = "ON";
|
||||||
|
const char eu_prefix_108[] PROGMEM = "OO";
|
||||||
|
const char eu_prefix_109[] PROGMEM = "OP";
|
||||||
|
const char eu_prefix_110[] PROGMEM = "OQ";
|
||||||
|
const char eu_prefix_111[] PROGMEM = "OR";
|
||||||
|
const char eu_prefix_112[] PROGMEM = "OS";
|
||||||
|
const char eu_prefix_113[] PROGMEM = "OT";
|
||||||
|
const char eu_prefix_114[] PROGMEM = "PA";
|
||||||
|
const char eu_prefix_115[] PROGMEM = "PB";
|
||||||
|
const char eu_prefix_116[] PROGMEM = "PC";
|
||||||
|
const char eu_prefix_117[] PROGMEM = "PD";
|
||||||
|
const char eu_prefix_118[] PROGMEM = "PE";
|
||||||
|
const char eu_prefix_119[] PROGMEM = "PF";
|
||||||
|
const char eu_prefix_120[] PROGMEM = "PG";
|
||||||
|
const char eu_prefix_121[] PROGMEM = "PH";
|
||||||
|
const char eu_prefix_122[] PROGMEM = "PI";
|
||||||
|
const char eu_prefix_123[] PROGMEM = "UA";
|
||||||
|
const char eu_prefix_124[] PROGMEM = "UB";
|
||||||
|
const char eu_prefix_125[] PROGMEM = "UC";
|
||||||
|
const char eu_prefix_126[] PROGMEM = "UD";
|
||||||
|
const char eu_prefix_127[] PROGMEM = "UE";
|
||||||
|
const char eu_prefix_128[] PROGMEM = "UF";
|
||||||
|
const char eu_prefix_129[] PROGMEM = "UG";
|
||||||
|
const char eu_prefix_130[] PROGMEM = "UH";
|
||||||
|
const char eu_prefix_131[] PROGMEM = "UI";
|
||||||
|
const char eu_prefix_132[] PROGMEM = "RA";
|
||||||
|
const char eu_prefix_133[] PROGMEM = "RB";
|
||||||
|
const char eu_prefix_134[] PROGMEM = "RC";
|
||||||
|
const char eu_prefix_135[] PROGMEM = "RD";
|
||||||
|
const char eu_prefix_136[] PROGMEM = "RE";
|
||||||
|
const char eu_prefix_137[] PROGMEM = "RF";
|
||||||
|
const char eu_prefix_138[] PROGMEM = "RG";
|
||||||
|
const char eu_prefix_139[] PROGMEM = "RH";
|
||||||
|
const char eu_prefix_140[] PROGMEM = "RI";
|
||||||
|
const char eu_prefix_141[] PROGMEM = "RJ";
|
||||||
|
const char eu_prefix_142[] PROGMEM = "RK";
|
||||||
|
const char eu_prefix_143[] PROGMEM = "RL";
|
||||||
|
const char eu_prefix_144[] PROGMEM = "RM";
|
||||||
|
const char eu_prefix_145[] PROGMEM = "RN";
|
||||||
|
const char eu_prefix_146[] PROGMEM = "RO";
|
||||||
|
const char eu_prefix_147[] PROGMEM = "RP";
|
||||||
|
const char eu_prefix_148[] PROGMEM = "RQ";
|
||||||
|
const char eu_prefix_149[] PROGMEM = "RR";
|
||||||
|
const char eu_prefix_150[] PROGMEM = "RS";
|
||||||
|
const char eu_prefix_151[] PROGMEM = "RT";
|
||||||
|
const char eu_prefix_152[] PROGMEM = "RU";
|
||||||
|
const char eu_prefix_153[] PROGMEM = "RV";
|
||||||
|
const char eu_prefix_154[] PROGMEM = "RW";
|
||||||
|
const char eu_prefix_155[] PROGMEM = "RX";
|
||||||
|
const char eu_prefix_156[] PROGMEM = "RY";
|
||||||
|
const char eu_prefix_157[] PROGMEM = "RZ";
|
||||||
|
const char eu_prefix_158[] PROGMEM = "UR";
|
||||||
|
const char eu_prefix_159[] PROGMEM = "US";
|
||||||
|
const char eu_prefix_160[] PROGMEM = "UT";
|
||||||
|
const char eu_prefix_161[] PROGMEM = "UU";
|
||||||
|
const char eu_prefix_162[] PROGMEM = "UV";
|
||||||
|
const char eu_prefix_163[] PROGMEM = "UW";
|
||||||
|
const char eu_prefix_164[] PROGMEM = "UX";
|
||||||
|
const char eu_prefix_165[] PROGMEM = "UY";
|
||||||
|
const char eu_prefix_166[] PROGMEM = "UZ";
|
||||||
|
const char eu_prefix_167[] PROGMEM = "EA";
|
||||||
|
const char eu_prefix_168[] PROGMEM = "EB";
|
||||||
|
const char eu_prefix_169[] PROGMEM = "EC";
|
||||||
|
const char eu_prefix_170[] PROGMEM = "ED";
|
||||||
|
const char eu_prefix_171[] PROGMEM = "EE";
|
||||||
|
const char eu_prefix_172[] PROGMEM = "EF";
|
||||||
|
const char eu_prefix_173[] PROGMEM = "EG";
|
||||||
|
const char eu_prefix_174[] PROGMEM = "EH";
|
||||||
|
const char eu_prefix_175[] PROGMEM = "EJ";
|
||||||
|
const char eu_prefix_176[] PROGMEM = "HA";
|
||||||
|
const char eu_prefix_177[] PROGMEM = "HG";
|
||||||
|
const char eu_prefix_178[] PROGMEM = "LA";
|
||||||
|
const char eu_prefix_179[] PROGMEM = "LC";
|
||||||
|
const char eu_prefix_180[] PROGMEM = "LD";
|
||||||
|
const char eu_prefix_181[] PROGMEM = "LE";
|
||||||
|
const char eu_prefix_182[] PROGMEM = "LF";
|
||||||
|
const char eu_prefix_183[] PROGMEM = "LG";
|
||||||
|
const char eu_prefix_184[] PROGMEM = "LH";
|
||||||
|
const char eu_prefix_185[] PROGMEM = "LI";
|
||||||
|
const char eu_prefix_186[] PROGMEM = "LJ";
|
||||||
|
const char eu_prefix_187[] PROGMEM = "LK";
|
||||||
|
const char eu_prefix_188[] PROGMEM = "LL";
|
||||||
|
const char eu_prefix_189[] PROGMEM = "LM";
|
||||||
|
const char eu_prefix_190[] PROGMEM = "LN";
|
||||||
|
/*const char eu_prefix_191[] PROGMEM = "LB"; see note above about "LB"*/
|
||||||
|
const byte eu_prefix_size = 190;
|
||||||
|
const char* const eu_prefix_table[] PROGMEM = {
|
||||||
|
eu_prefix_1,
|
||||||
|
eu_prefix_2,
|
||||||
|
eu_prefix_3,
|
||||||
|
eu_prefix_4,
|
||||||
|
eu_prefix_5,
|
||||||
|
eu_prefix_6,
|
||||||
|
eu_prefix_7,
|
||||||
|
eu_prefix_8,
|
||||||
|
eu_prefix_9,
|
||||||
|
eu_prefix_10,
|
||||||
|
eu_prefix_11,
|
||||||
|
eu_prefix_12,
|
||||||
|
eu_prefix_13,
|
||||||
|
eu_prefix_14,
|
||||||
|
eu_prefix_15,
|
||||||
|
eu_prefix_16,
|
||||||
|
eu_prefix_17,
|
||||||
|
eu_prefix_18,
|
||||||
|
eu_prefix_19,
|
||||||
|
eu_prefix_20,
|
||||||
|
eu_prefix_21,
|
||||||
|
eu_prefix_22,
|
||||||
|
eu_prefix_23,
|
||||||
|
eu_prefix_24,
|
||||||
|
eu_prefix_25,
|
||||||
|
eu_prefix_26,
|
||||||
|
eu_prefix_27,
|
||||||
|
eu_prefix_28,
|
||||||
|
eu_prefix_29,
|
||||||
|
eu_prefix_30,
|
||||||
|
eu_prefix_31,
|
||||||
|
eu_prefix_32,
|
||||||
|
eu_prefix_33,
|
||||||
|
eu_prefix_34,
|
||||||
|
eu_prefix_35,
|
||||||
|
eu_prefix_36,
|
||||||
|
eu_prefix_37,
|
||||||
|
eu_prefix_38,
|
||||||
|
eu_prefix_39,
|
||||||
|
eu_prefix_40,
|
||||||
|
eu_prefix_41,
|
||||||
|
eu_prefix_42,
|
||||||
|
eu_prefix_43,
|
||||||
|
eu_prefix_44,
|
||||||
|
eu_prefix_45,
|
||||||
|
eu_prefix_46,
|
||||||
|
eu_prefix_47,
|
||||||
|
eu_prefix_48,
|
||||||
|
eu_prefix_49,
|
||||||
|
eu_prefix_50,
|
||||||
|
eu_prefix_51,
|
||||||
|
eu_prefix_52,
|
||||||
|
eu_prefix_53,
|
||||||
|
eu_prefix_54,
|
||||||
|
eu_prefix_55,
|
||||||
|
eu_prefix_56,
|
||||||
|
eu_prefix_57,
|
||||||
|
eu_prefix_58,
|
||||||
|
eu_prefix_59,
|
||||||
|
eu_prefix_60,
|
||||||
|
eu_prefix_61,
|
||||||
|
eu_prefix_62,
|
||||||
|
eu_prefix_63,
|
||||||
|
eu_prefix_64,
|
||||||
|
eu_prefix_65,
|
||||||
|
eu_prefix_66,
|
||||||
|
eu_prefix_67,
|
||||||
|
eu_prefix_68,
|
||||||
|
eu_prefix_69,
|
||||||
|
eu_prefix_70,
|
||||||
|
eu_prefix_71,
|
||||||
|
eu_prefix_72,
|
||||||
|
eu_prefix_73,
|
||||||
|
eu_prefix_74,
|
||||||
|
eu_prefix_75,
|
||||||
|
eu_prefix_76,
|
||||||
|
eu_prefix_77,
|
||||||
|
eu_prefix_78,
|
||||||
|
eu_prefix_79,
|
||||||
|
eu_prefix_80,
|
||||||
|
eu_prefix_81,
|
||||||
|
eu_prefix_82,
|
||||||
|
eu_prefix_83,
|
||||||
|
eu_prefix_84,
|
||||||
|
eu_prefix_85,
|
||||||
|
eu_prefix_86,
|
||||||
|
eu_prefix_87,
|
||||||
|
eu_prefix_88,
|
||||||
|
eu_prefix_89,
|
||||||
|
eu_prefix_90,
|
||||||
|
eu_prefix_91,
|
||||||
|
eu_prefix_92,
|
||||||
|
eu_prefix_93,
|
||||||
|
eu_prefix_94,
|
||||||
|
eu_prefix_95,
|
||||||
|
eu_prefix_96,
|
||||||
|
eu_prefix_97,
|
||||||
|
eu_prefix_98,
|
||||||
|
eu_prefix_99,
|
||||||
|
eu_prefix_100,
|
||||||
|
eu_prefix_101,
|
||||||
|
eu_prefix_102,
|
||||||
|
eu_prefix_103,
|
||||||
|
eu_prefix_104,
|
||||||
|
eu_prefix_105,
|
||||||
|
eu_prefix_106,
|
||||||
|
eu_prefix_107,
|
||||||
|
eu_prefix_108,
|
||||||
|
eu_prefix_109,
|
||||||
|
eu_prefix_110,
|
||||||
|
eu_prefix_111,
|
||||||
|
eu_prefix_112,
|
||||||
|
eu_prefix_113,
|
||||||
|
eu_prefix_114,
|
||||||
|
eu_prefix_115,
|
||||||
|
eu_prefix_116,
|
||||||
|
eu_prefix_117,
|
||||||
|
eu_prefix_118,
|
||||||
|
eu_prefix_119,
|
||||||
|
eu_prefix_120,
|
||||||
|
eu_prefix_121,
|
||||||
|
eu_prefix_122,
|
||||||
|
eu_prefix_123,
|
||||||
|
eu_prefix_124,
|
||||||
|
eu_prefix_125,
|
||||||
|
eu_prefix_126,
|
||||||
|
eu_prefix_127,
|
||||||
|
eu_prefix_128,
|
||||||
|
eu_prefix_129,
|
||||||
|
eu_prefix_130,
|
||||||
|
eu_prefix_131,
|
||||||
|
eu_prefix_132,
|
||||||
|
eu_prefix_133,
|
||||||
|
eu_prefix_134,
|
||||||
|
eu_prefix_135,
|
||||||
|
eu_prefix_136,
|
||||||
|
eu_prefix_137,
|
||||||
|
eu_prefix_138,
|
||||||
|
eu_prefix_139,
|
||||||
|
eu_prefix_140,
|
||||||
|
eu_prefix_141,
|
||||||
|
eu_prefix_142,
|
||||||
|
eu_prefix_143,
|
||||||
|
eu_prefix_144,
|
||||||
|
eu_prefix_145,
|
||||||
|
eu_prefix_146,
|
||||||
|
eu_prefix_147,
|
||||||
|
eu_prefix_148,
|
||||||
|
eu_prefix_149,
|
||||||
|
eu_prefix_150,
|
||||||
|
eu_prefix_151,
|
||||||
|
eu_prefix_152,
|
||||||
|
eu_prefix_153,
|
||||||
|
eu_prefix_154,
|
||||||
|
eu_prefix_155,
|
||||||
|
eu_prefix_156,
|
||||||
|
eu_prefix_157,
|
||||||
|
eu_prefix_158,
|
||||||
|
eu_prefix_159,
|
||||||
|
eu_prefix_160,
|
||||||
|
eu_prefix_161,
|
||||||
|
eu_prefix_162,
|
||||||
|
eu_prefix_163,
|
||||||
|
eu_prefix_164,
|
||||||
|
eu_prefix_165,
|
||||||
|
eu_prefix_166,
|
||||||
|
eu_prefix_167,
|
||||||
|
eu_prefix_168,
|
||||||
|
eu_prefix_169,
|
||||||
|
eu_prefix_170,
|
||||||
|
eu_prefix_171,
|
||||||
|
eu_prefix_172,
|
||||||
|
eu_prefix_173,
|
||||||
|
eu_prefix_174,
|
||||||
|
eu_prefix_175,
|
||||||
|
eu_prefix_176,
|
||||||
|
eu_prefix_177,
|
||||||
|
eu_prefix_178,
|
||||||
|
eu_prefix_179,
|
||||||
|
eu_prefix_180,
|
||||||
|
eu_prefix_181,
|
||||||
|
eu_prefix_182,
|
||||||
|
eu_prefix_183,
|
||||||
|
eu_prefix_184,
|
||||||
|
eu_prefix_185,
|
||||||
|
eu_prefix_186,
|
||||||
|
eu_prefix_187,
|
||||||
|
eu_prefix_188,
|
||||||
|
eu_prefix_189,
|
||||||
|
eu_prefix_190/*,
|
||||||
|
eu_prefix_191*/
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
63
k3ng_keyer/keyer_debug.h
Executable file
63
k3ng_keyer/keyer_debug.h
Executable file
|
@ -0,0 +1,63 @@
|
||||||
|
// don't touch these unless you know what the hell you are doing or you're asked to uncomment these for debug dumps
|
||||||
|
// #define DEBUG_STARTUP
|
||||||
|
// #define DEBUG_STARTUP_BLINKS
|
||||||
|
// #define DEBUG_LOOP
|
||||||
|
// #define DEBUG_EEPROM
|
||||||
|
// #define DEBUG_MEMORIES
|
||||||
|
// #define DEBUG_PLAY_MEMORY
|
||||||
|
// #define DEBUG_SEND_CHAR
|
||||||
|
// #define DEBUG_MEMORY_WRITE
|
||||||
|
// #define DEBUG_MEMORYCHECK
|
||||||
|
// #define DEBUG_MEMORY_LOCATIONS
|
||||||
|
// #define DEBUG_CAPTURE_COM_PORT
|
||||||
|
// #define DEBUG_HELL_TEST
|
||||||
|
// #define DEBUG_WINKEY_PROTOCOL_USING_CW
|
||||||
|
// #define DEBUG_CHECK_SERIAL
|
||||||
|
// #define DEBUG_PS2_KEYBOARD
|
||||||
|
// #define DEBUG_VARIABLE_DUMP
|
||||||
|
// #define DEBUG_BUTTONS
|
||||||
|
// #define DEBUG_COMMAND_MODE
|
||||||
|
// #define DEBUG_GET_CW_INPUT_FROM_USER
|
||||||
|
// #define DEBUG_POTENTIOMETER
|
||||||
|
// #define DEBUG_CW_DECODER
|
||||||
|
// #define DEBUG_CW_DECODER_WPM
|
||||||
|
// #define DEBUG_SERIAL_SEND_CW_CALLOUT
|
||||||
|
// #define DEBUG_SLEEP
|
||||||
|
// #define DEBUG_BACKLIGHT
|
||||||
|
// #define DEBUG_BUTTON_ARRAY
|
||||||
|
// #define DEBUG_USB
|
||||||
|
// #define DEBUG_USB_KEYBOARD
|
||||||
|
// #define DEBUG_CAPACITIVE_PADDLE
|
||||||
|
// #define DEBUG_DISPLAY_SCROLL_PRINT_CHAR
|
||||||
|
// #define DEBUG_WINKEY // <- to use this you must have a multi-serial port Arduino and use FEATURE_COMMAND_LINE_INTERFACE_ON_SECONDARY_PORT
|
||||||
|
// #define DEBUG_WINKEY_SEND_ERRANT_BYTE
|
||||||
|
// #define DEBUG_WINKEY_PORT_WRITE
|
||||||
|
// #define DEBUG_CW_COMPUTER_KEYBOARD
|
||||||
|
// #define DEBUG_CW_DECODER_WITH_TONE
|
||||||
|
// #define DEBUG_OPTION_CW_DECODER_GOERTZEL_AUDIO_DETECTOR
|
||||||
|
// #define DEBUG_FEATURE_COMPETITION_COMPRESSION_DETECTION
|
||||||
|
// #define DEBUG_FEATURE_STRAIGHT_KEY_ECHO
|
||||||
|
// #define DEBUG_UDP
|
||||||
|
// #define DEBUG_UDP_WRITE
|
||||||
|
// #define DEBUG_WEB_SERVER
|
||||||
|
// #define DEBUG_WEB_PARSE_GET
|
||||||
|
// #define DEBUG_WEB_SERVER_READS
|
||||||
|
// #define DEBUG_INTERNET_LINKING_RECEIVE
|
||||||
|
// #define DEBUG_INTERNET_LINKING_SEND
|
||||||
|
// #define DEBUG_UDP_PACKET_RECEIVE
|
||||||
|
// #define DEBUG_FORCE_RESET
|
||||||
|
// #define DEBUG_WINKEY_DISABLE_LEAD_IN_TIME_SETTING
|
||||||
|
// #define DEBUG_KEYPAD_SERIAL
|
||||||
|
// #define DEBUG_CALLSIGN_PRACTICE_SHOW_CALLSIGN
|
||||||
|
// #define DEBUG_WORDSWORTH
|
||||||
|
// #define DEBUG_PRACTICE_SERIAL
|
||||||
|
// #define DEBUG_PRACTICE_CMD_MODE
|
||||||
|
// #define DEBUG_SD_CARD
|
||||||
|
// #define DEBUG_FARNSWORTH
|
||||||
|
// #define DEBUG_FARNSWORTH_TIMING
|
||||||
|
// #define DEBUG_ASYNC_EEPROM_WRITE
|
||||||
|
// #define DEBUG_SERVICE_SEND_BUFFER
|
||||||
|
// #define DEBUG_EEPROM_READ_SETTINGS
|
||||||
|
// #define DEBUG_LOOP_ELEMENT_LENGTHS
|
||||||
|
|
||||||
|
// #define OPTION_WINKEY_IGNORE_FIRST_STATUS_REQUEST
|
49
k3ng_keyer/keyer_dependencies.h
Executable file
49
k3ng_keyer/keyer_dependencies.h
Executable file
|
@ -0,0 +1,49 @@
|
||||||
|
#if defined(FEATURE_LCD_4BIT) || defined(FEATURE_LCD_8BIT) || defined(FEATURE_LCD_ADAFRUIT_I2C) || defined(FEATURE_LCD_ADAFRUIT_BACKPACK) || defined(FEATURE_LCD_YDv1) ||defined(FEATURE_LCD1602_N07DH) || defined(FEATURE_LCD_SAINSMART_I2C) || defined(FEATURE_LCD_FABO_PCF8574) || defined(FEATURE_LCD_MATHERTEL_PCF8574) || defined(FEATURE_LCD_HD44780) || defined(FEATURE_LCD_I2C_FDEBRABANDER)
|
||||||
|
#define FEATURE_DISPLAY
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_COMMAND_LINE_INTERFACE_ON_SECONDARY_PORT) && !defined(FEATURE_COMMAND_LINE_INTERFACE)
|
||||||
|
#define FEATURE_COMMAND_LINE_INTERFACE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_COMMAND_LINE_INTERFACE) || defined(FEATURE_WINKEY_EMULATION)
|
||||||
|
#define FEATURE_SERIAL
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//#if defined(HARDWARE_ARDUINO_DUE) && !defined(FEATURE_EEPROM_E24C1024) && defined(FEATURE_MEMORIES)
|
||||||
|
#if defined(ARDUINO_SAM_DUE) && !defined(FEATURE_EEPROM_E24C1024) && defined(FEATURE_MEMORIES)
|
||||||
|
#error "In order to use FEATURE_MEMORIES with HARDWARE_ARDUINO_DUE you need FEATURE_EEPROM_E24C1024"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_DISPLAY) || defined(FEATURE_COMMAND_LINE_INTERFACE) || defined(FEATURE_CW_COMPUTER_KEYBOARD)
|
||||||
|
#define FEATURE_PADDLE_ECHO
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#if defined(FEATURE_STRAIGHT_KEY) && (defined(FEATURE_STRAIGHT_KEY_ECHO) || defined(FEATURE_MEMORIES) || defined(FEATURE_CW_COMPUTER_KEYBOARD))
|
||||||
|
#define FEATURE_STRAIGHT_KEY_DECODE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_WEB_SERVER) || defined(FEATURE_INTERNET_LINK)
|
||||||
|
#define FEATURE_ETHERNET
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_INTERNET_LINK)
|
||||||
|
#define FEATURE_UDP
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_4x4_KEYPAD) && defined(FEATURE_3x4_KEYPAD)
|
||||||
|
#error "You can't use both FEATURE_4x4_KEYPAD and FEATURE_3x4_KEYPAD simultaneously"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_TRAINING_COMMAND_LINE_INTERFACE) && defined(OPTION_WORDSWORTH_NORSK) && !defined(OPTION_NON_ENGLISH_EXTENSIONS)
|
||||||
|
#define OPTION_NON_ENGLISH_EXTENSIONS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_BEACON_SETTING) && !defined(FEATURE_MEMORIES)
|
||||||
|
#error "FEATURE_BEACON_SETTING requires FEATURE_MEMORIES and you may also want FEATURE_MEMORY_MACROS"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_COMMAND_MODE) && !defined(FEATURE_BUTTONS)
|
||||||
|
#error "FEATURE_COMMAND_MODE requires FEATURE_BUTTONS"
|
||||||
|
#endif
|
134
k3ng_keyer/keyer_features_and_options.h
Executable file
134
k3ng_keyer/keyer_features_and_options.h
Executable file
|
@ -0,0 +1,134 @@
|
||||||
|
// compile time features and options - comment or uncomment to add or delete features
|
||||||
|
// FEATURES add more bytes to the compiled binary, OPTIONS change code behavior
|
||||||
|
|
||||||
|
|
||||||
|
#define FEATURE_BUTTONS
|
||||||
|
#define FEATURE_COMMAND_MODE
|
||||||
|
// #define FEATURE_COMMAND_LINE_INTERFACE // Command Line Interface functionality
|
||||||
|
// #define FEATURE_MEMORIES // on the Arduino Due, you must have FEATURE_EEPROM_E24C1024 and E24C1024 EEPROM hardware in order to compile this
|
||||||
|
// #define FEATURE_MEMORY_MACROS
|
||||||
|
// #define FEATURE_WINKEY_EMULATION // disabling Automatic Software Reset is highly recommended (see documentation)
|
||||||
|
// #define FEATURE_BEACON // Go into beacon mode if paddle_left pin is LOW at boot up
|
||||||
|
// #define FEATURE_BEACON_SETTING // Go into beacon mode at boot up if EEPROM setting is enabled (\_ CLI Command)
|
||||||
|
// #define FEATURE_TRAINING_COMMAND_LINE_INTERFACE
|
||||||
|
#define FEATURE_POTENTIOMETER // do not enable unless you have a potentiometer connected, otherwise noise will falsely trigger wpm changes
|
||||||
|
// #define FEATURE_SIDETONE_SWITCH // adds switch control for the sidetone output. requires an external toggle switch (assigned to an arduino pin - see keyer_pin_settings.h).
|
||||||
|
// #define FEATURE_SIDETONE_NEWTONE // Use the NewTone library, ~1k smaller code size than the standard tone library. Uses timer1 (pins 9 or 10) https://bitbucket.org/teckel12/arduino-new-tone/wiki/Home
|
||||||
|
// #define FEATURE_SERIAL_HELP
|
||||||
|
// #define FEATURE_HELL
|
||||||
|
// #define FEATURE_PS2_KEYBOARD // Use a PS2 keyboard to send code - Change keyboard layout (non-US) in K3NG_PS2Keyboard.h. Additional options below.
|
||||||
|
// #define FEATURE_USB_KEYBOARD // Use a USB keyboard to send code - Uncomment three lines in k3ng_keyer.ino (search for note_usb_uncomment_lines)
|
||||||
|
// #define FEATURE_CW_COMPUTER_KEYBOARD // Have an Arduino Due or Leonardo act as a USB HID (Human Interface Device) keyboard and use the paddle to "type" characters on the computer -- uncomment this line in ino file: #include <Keyboard.h>
|
||||||
|
// #define FEATURE_DEAD_OP_WATCHDOG
|
||||||
|
// #define FEATURE_AUTOSPACE
|
||||||
|
// #define FEATURE_FARNSWORTH
|
||||||
|
// #define FEATURE_DL2SBA_BANKSWITCH // Switch memory banks feature as described here: http://dl2sba.com/index.php?option=com_content&view=article&id=131:nanokeyer&catid=15:shack&Itemid=27#english
|
||||||
|
// #define FEATURE_LCD_4BIT // classic LCD disidefplay using 4 I/O lines
|
||||||
|
// #define FEATURE_LCD_8BIT // classic LCD display using 8 I/O lines
|
||||||
|
// #define FEATURE_LCD_ADAFRUIT_I2C // Adafruit I2C LCD display using MCP23017 at addr 0x20
|
||||||
|
// #define FEATURE_LCD_ADAFRUIT_BACKPACK // Adafruit I2C LCD Backup using MCP23008 (courtesy Josiah Ritchie, KE0BLL)
|
||||||
|
// #define FEATURE_LCD_YDv1 // YourDuino I2C LCD display with old LCM 1602 V1 ic
|
||||||
|
// #define FEATURE_LCD1602_N07DH // http://linksprite.com/wiki/index.php5?title=16_X_2_LCD_Keypad_Shield_for_Arduino
|
||||||
|
// #define FEATURE_LCD_SAINSMART_I2C
|
||||||
|
// #define FEATURE_LCD_FABO_PCF8574 // https://github.com/FaBoPlatform/FaBoLCD-PCF8574-Library
|
||||||
|
// #define FEATURE_LCD_MATHERTEL_PCF8574 // https://github.com/mathertel/LiquidCrystal_PCF8574
|
||||||
|
// #define FEATURE_LCD_I2C_FDEBRABANDER //https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library
|
||||||
|
#define FEATURE_LCD_HD44780
|
||||||
|
// #define FEATURE_CW_DECODER // https://github.com/k3ng/k3ng_cw_keyer/wiki/385-Feature:-CW-Decoder
|
||||||
|
// #define FEATURE_SLEEP // go to sleep after x minutes to conserve battery power (not compatible with Arduino DUE, may have mixed results with Mega and Mega ADK)
|
||||||
|
// #define FEATURE_LCD_BACKLIGHT_AUTO_DIM // turn off LCD backlight and/or dim Power Indicator LED after x minutes (LED requires a PWM pin)
|
||||||
|
// #define FEATURE_ROTARY_ENCODER // rotary encoder speed control
|
||||||
|
// #define FEATURE_CMOS_SUPER_KEYER_IAMBIC_B_TIMING
|
||||||
|
// #define FEATURE_USB_MOUSE // Uncomment three lines in k3ng_keyer.ino (search for note_usb_uncomment_lines)
|
||||||
|
// #define FEATURE_CAPACITIVE_PADDLE_PINS // remove the bypass capacitors on the paddle_left and paddle_right lines when using capactive paddles
|
||||||
|
// #define FEATURE_LED_RING // Mayhew Labs Led Ring support
|
||||||
|
// #define FEATURE_ALPHABET_SEND_PRACTICE // enables command mode S command - created by Ryan, KC2ZWM
|
||||||
|
// #define FEATURE_COMMAND_MODE_PROGRESSIVE_5_CHAR_ECHO_PRACTICE // enables command mode U
|
||||||
|
// #define FEATURE_PTT_INTERLOCK
|
||||||
|
// #define FEATURE_QLF
|
||||||
|
// #define FEATURE_EEPROM_E24C1024
|
||||||
|
// #define FEATURE_STRAIGHT_KEY
|
||||||
|
// #define FEATURE_DYNAMIC_DAH_TO_DIT_RATIO
|
||||||
|
// #define FEATURE_PADDLE_ECHO // you may also need to comment out line 19 in the file keyer_dependencies.h
|
||||||
|
// #define FEATURE_STRAIGHT_KEY_ECHO
|
||||||
|
// #define FEATURE_AMERICAN_MORSE
|
||||||
|
// #define FEATURE_4x4_KEYPAD // code contributed by Jack, W0XR - documentation: https://github.com/k3ng/k3ng_cw_keyer/wiki/380-Feature:-Keypad
|
||||||
|
// #define FEATURE_3x4_KEYPAD // code contributed by Jack, W0XR - documentation: https://github.com/k3ng/k3ng_cw_keyer/wiki/380-Feature:-Keypad
|
||||||
|
// #define FEATURE_SEQUENCER
|
||||||
|
// #define FEATURE_WEB_SERVER // Details: https://github.com/k3ng/k3ng_cw_keyer/wiki/390-Feature:-Ethernet,-Web-Server,-and-Internet-Linking
|
||||||
|
// #define FEATURE_INTERNET_LINK // Details: https://github.com/k3ng/k3ng_cw_keyer/wiki/390-Feature:-Ethernet,-Web-Server,-and-Internet-Linking
|
||||||
|
|
||||||
|
// #define FEATURE_COMMAND_LINE_INTERFACE_ON_SECONDARY_PORT // Activate the Command Line interface on the secondary serial port
|
||||||
|
#define OPTION_PRIMARY_SERIAL_PORT_DEFAULT_WINKEY_EMULATION // Use when activating both FEATURE_WINKEY_EMULATION and FEATURE_COMMAND_LINE_INTERFACE
|
||||||
|
// simultaneously. This will make Winkey emulation be the default at boot up;
|
||||||
|
// hold command button down at boot up to activate CLI mode
|
||||||
|
|
||||||
|
// #define OPTION_SUPPRESS_SERIAL_BOOT_MSG
|
||||||
|
#define OPTION_INCLUDE_PTT_TAIL_FOR_MANUAL_SENDING
|
||||||
|
#define OPTION_EXCLUDE_PTT_HANG_TIME_FOR_MANUAL_SENDING
|
||||||
|
// #define OPTION_WINKEY_DISCARD_BYTES_AT_STARTUP // if ASR is not disabled, you may need this to discard errant serial port bytes at startup
|
||||||
|
// #define OPTION_WINKEY_STRICT_EEPROM_WRITES_MAY_WEAR_OUT_EEPROM // with this activated the unit will write non-volatile settings to EEPROM when set by Winkey commands
|
||||||
|
// #define OPTION_WINKEY_SEND_WORDSPACE_AT_END_OF_BUFFER
|
||||||
|
#define OPTION_WINKEY_STRICT_HOST_OPEN // require an admin host open Winkey command before doing any other commands
|
||||||
|
#define OPTION_WINKEY_2_SUPPORT // comment out to revert to Winkey version 1 emulation
|
||||||
|
#define OPTION_WINKEY_INTERRUPTS_MEMORY_REPEAT
|
||||||
|
//#define OPTION_WINKEY_UCXLOG_9600_BAUD // use this only with UCXLog configured for Winkey 9600 baud mode
|
||||||
|
#define OPTION_WINKEY_2_HOST_CLOSE_NO_SERIAL_PORT_RESET // (Required for Win-Test to function)
|
||||||
|
// #define OPTION_WINKEY_FREQUENT_STATUS_REPORT // activate this to make Winkey emulation play better with RUMlog and RUMped
|
||||||
|
#define OPTION_WINKEY_IGNORE_LOWERCASE // Enable for typical K1EL Winkeyer behavior (use for SkookumLogger version 1.10.14 and prior to workaround "r" bug)
|
||||||
|
// #define OPTION_WINKEY_BLINK_PTT_ON_HOST_OPEN
|
||||||
|
// #define OPTION_WINKEY_SEND_VERSION_ON_HOST_CLOSE
|
||||||
|
// #define OPTION_WINKEY_PINCONFIG_PTT_CONTROLS_PTT_LINE // Have Winkeyer PTT setting activate/deactivate PTT line rather than control buffered character PTT hold
|
||||||
|
// #define OPTION_REVERSE_BUTTON_ORDER // This is mainly for the DJ0MY NanoKeyer http://nanokeyer.wordpress.com/
|
||||||
|
#define OPTION_PROG_MEM_TRIM_TRAILING_SPACES // trim trailing spaces from memory when programming in command mode
|
||||||
|
#define OPTION_DIT_PADDLE_NO_SEND_ON_MEM_RPT // this makes dit paddle memory interruption a little smoother
|
||||||
|
// #define OPTION_MORE_DISPLAY_MSGS // additional optional display messages - comment out to save memory
|
||||||
|
// #define OPTION_WATCHDOG_TIMER // this enables a four second ATmega48/88/168/328 watchdog timer; use for unattended/remote operation only
|
||||||
|
// #define OPTION_MOUSE_MOVEMENT_PADDLE // experimental (just fooling around) - mouse movement will act like a paddle
|
||||||
|
// #define OPTION_NON_ENGLISH_EXTENSIONS // add support for additional CW characters (i.e. À, Å, Þ, etc.)
|
||||||
|
// #define OPTION_DISPLAY_NON_ENGLISH_EXTENSIONS // LCD display suport for non-English (NO/DK/DE) characters - Courtesy of OZ1JHM
|
||||||
|
// #define OPTION_UNKNOWN_CHARACTER_ERROR_TONE
|
||||||
|
// #define OPTION_DO_NOT_SAY_HI
|
||||||
|
// #define OPTION_PS2_NON_ENGLISH_CHAR_LCD_DISPLAY_SUPPORT // makes some non-English characters from the PS2 keyboard display correctly in the LCD display (donated by Marcin sp5iou)
|
||||||
|
// #define OPTION_PS2_KEYBOARD_RESET // reset the PS2 keyboard upon startup with 0xFF (contributed by Bill, W9BEL)
|
||||||
|
// #define OPTION_SAVE_MEMORY_NANOKEYER
|
||||||
|
#define OPTION_CW_KEYBOARD_CAPSLOCK_BEEP
|
||||||
|
// #define OPTION_CW_KEYBOARD_ITALIAN
|
||||||
|
// #define OPTION_CW_KEYBOARD_GERMAN
|
||||||
|
// #define OPTION_CW_DECODER_GOERTZEL_AUDIO_DETECTOR // https://github.com/k3ng/k3ng_cw_keyer/wiki/385-Feature:-CW-Decoder
|
||||||
|
// #define OPTION_INVERT_PADDLE_PIN_LOGIC
|
||||||
|
// #define OPTION_ADVANCED_SPEED_DISPLAY //enables "nerd" speed visualization on display: wpm, cpm (char per min), duration of dit and dah in milliseconds and ratio (contributed by Giorgio, IZ2XBZ)
|
||||||
|
// #define OPTION_PROSIGN_SUPPORT // additional prosign support for paddle and straight key echo on display, CLI, and in memory storage
|
||||||
|
// #define OPTION_RUSSIAN_LANGUAGE_SEND_CLI // Russian language CLI sending support (contributed by Павел Бирюков, UA1AQC)
|
||||||
|
#define OPTION_DO_NOT_SEND_UNKNOWN_CHAR_QUESTION
|
||||||
|
// #define OPTION_CMOS_SUPER_KEYER_IAMBIC_B_TIMING_ON_BY_DEFAULT
|
||||||
|
// #define OPTION_SIDETONE_DIGITAL_OUTPUT_NO_SQUARE_WAVE
|
||||||
|
// #define FEATURE_SD_CARD_SUPPORT
|
||||||
|
// #define FEATURE_SO2R_BASE // SO2R Box base protocol extensions
|
||||||
|
// #define FEATURE_SO2R_SWITCHES // SO2R Box TX and RX switches
|
||||||
|
// #define FEATURE_SO2R_ANTENNA // SO2R Box antenna selection (not fully implemented)
|
||||||
|
// #define FEATURE_COMMAND_MODE_ENHANCED_CMD_ACKNOWLEDGEMENT
|
||||||
|
|
||||||
|
// #define OPTION_DIRECT_PADDLE_PIN_READS_MEGA // only works with Mega and pins 2 and 5 - minor performance increase
|
||||||
|
// #define OPTION_DIRECT_PADDLE_PIN_READS_UNO // Unos or Nanos pins 2 and 5 - do not enable on a nanoKeyer, it uses different pins
|
||||||
|
|
||||||
|
// #define OPTION_WORDSWORTH_CZECH
|
||||||
|
// #define OPTION_WORDSWORTH_DEUTSCH
|
||||||
|
// #define OPTION_WORDSWORTH_NORSK
|
||||||
|
|
||||||
|
#define OPTION_EXCLUDE_EXTENDED_CLI_COMMANDS
|
||||||
|
|
||||||
|
// #define OPTION_DFROBOT_LCD_COMMAND_BUTTONS
|
||||||
|
|
||||||
|
// #define OPTION_EXCLUDE_MILL_MODE
|
||||||
|
// #define OPTION_NO_ULTIMATIC // reduce memory usage by removing ultimatic code.
|
||||||
|
|
||||||
|
// #define OPTION_DISABLE_SERIAL_PORT_CHECKING_WHILE_SENDING_CW
|
||||||
|
|
||||||
|
// #define OPTION_PERSONALIZED_STARTUP_SCREEN // displays a user defined string of characters on the second or fourth row of the screen during startup. 1602 display requires OPTION_DO_NOT_SAY_HI
|
||||||
|
// #define OPTION_SWAP_PADDLE_PARAMETER_CHANGE_DIRECTION // reverses the up/down direction when using the paddles to change the wpm or sidetone frequency
|
||||||
|
#define OPTION_DISPLAY_MEMORY_CONTENTS_COMMAND_MODE
|
||||||
|
// #define OPTION_BEACON_MODE_MEMORY_REPEAT_TIME // to space out the repeated playing of memory 1 when in beacon mode
|
||||||
|
// #define OPTION_BEACON_MODE_PTT_TAIL_TIME // adds the ptt tail time to each playing of memory 1 in beacon mode
|
||||||
|
|
||||||
|
// #define OPTION_WINKEY_PROSIGN_COMPATIBILITY // Additional character mappings to support K1EL Winkey emulation prosigns
|
148
k3ng_keyer/keyer_features_and_options_fk_10.h
Executable file
148
k3ng_keyer/keyer_features_and_options_fk_10.h
Executable file
|
@ -0,0 +1,148 @@
|
||||||
|
// compile time features and options - comment or uncomment to add or delete features
|
||||||
|
// FEATURES add more bytes to the compiled binary, OPTIONS change code behavior
|
||||||
|
|
||||||
|
// ######## ## ## ## ## ## ## ######## ## ## ######## ########
|
||||||
|
// ## ## ## ### ## ## ## ## ## ## ## ## ##
|
||||||
|
// ## ## ## #### ## ## ## ## #### ## ## ##
|
||||||
|
// ###### ## ## ## ## ## ##### ###### ## ###### ########
|
||||||
|
// ## ## ## ## #### ## ## ## ## ## ## ##
|
||||||
|
// ## ## ## ## ### ## ## ## ## ## ## ##
|
||||||
|
// ## ####### ## ## ## ## ######## ## ######## ## ##
|
||||||
|
|
||||||
|
|
||||||
|
// ######## ## ## ## #####
|
||||||
|
// ## ## ## #### ## ##
|
||||||
|
// ## ## ## ## ## ##
|
||||||
|
// ###### ##### ## ## ##
|
||||||
|
// ## ## ## ## ## ##
|
||||||
|
// ## ## ## ## ## ##
|
||||||
|
// ## ## ## ###### #####
|
||||||
|
|
||||||
|
// Contributed by Disneysw
|
||||||
|
|
||||||
|
#define FEATURE_BUTTONS
|
||||||
|
#define FEATURE_COMMAND_MODE
|
||||||
|
#define FEATURE_COMMAND_LINE_INTERFACE // Command Line Interface functionality
|
||||||
|
#define FEATURE_MEMORIES // on the Arduino Due, you must have FEATURE_EEPROM_E24C1024 and E24C1024 EEPROM hardware in order to compile this
|
||||||
|
#define FEATURE_MEMORY_MACROS
|
||||||
|
#define FEATURE_WINKEY_EMULATION // disabling Automatic Software Reset is highly recommended (see documentation)
|
||||||
|
#define FEATURE_BEACON // Go into beacon mode if paddle_left pin is LOW at boot up
|
||||||
|
// #define FEATURE_BEACON_SETTING // Go into beacon mode at boot up if EEPROM setting is enabled (\_ CLI Command)
|
||||||
|
#define FEATURE_TRAINING_COMMAND_LINE_INTERFACE
|
||||||
|
// #define FEATURE_POTENTIOMETER // do not enable unless you have a potentiometer connected, otherwise noise will falsely trigger wpm changes
|
||||||
|
// #define FEATURE_SIDETONE_SWITCH // adds switch control for the sidetone output. requires an external toggle switch (assigned to an arduino pin - see keyer_pin_settings.h).
|
||||||
|
// #define FEATURE_SIDETONE_NEWTONE // Use the NewTone library, ~1k smaller code size than the standard tone library. Uses timer1 (pins 9 or 10) https://bitbucket.org/teckel12/arduino-new-tone/wiki/Home
|
||||||
|
#define FEATURE_SERIAL_HELP
|
||||||
|
#define FEATURE_HELL
|
||||||
|
// #define FEATURE_PS2_KEYBOARD // Use a PS2 keyboard to send code - Change keyboard layout (non-US) in K3NG_PS2Keyboard.h. Additional options below.
|
||||||
|
#define FEATURE_USB_KEYBOARD // Use a USB keyboard to send code - Uncomment three lines in k3ng_keyer.ino (search for note_usb_uncomment_lines)
|
||||||
|
// #define FEATURE_CW_COMPUTER_KEYBOARD // Have an Arduino Due or Leonardo act as a USB HID (Human Interface Device) keyboard and use the paddle to "type" characters on the computer
|
||||||
|
#define FEATURE_DEAD_OP_WATCHDOG
|
||||||
|
#define FEATURE_AUTOSPACE
|
||||||
|
#define FEATURE_FARNSWORTH
|
||||||
|
// #define FEATURE_DL2SBA_BANKSWITCH // Switch memory banks feature as described here: http://dl2sba.com/index.php?option=com_content&view=article&id=131:nanokeyer&catid=15:shack&Itemid=27#english
|
||||||
|
#define FEATURE_LCD_4BIT // classic LCD disidefplay using 4 I/O lines
|
||||||
|
// #define FEATURE_LCD_8BIT // classic LCD display using 8 I/O lines
|
||||||
|
// #define FEATURE_LCD_ADAFRUIT_I2C // Adafruit I2C LCD display using MCP23017 at addr 0x20
|
||||||
|
// #define FEATURE_LCD_ADAFRUIT_BACKPACK // Adafruit I2C LCD Backup using MCP23008 (courtesy Josiah Ritchie, KE0BLL)
|
||||||
|
// #define FEATURE_LCD_YDv1 // YourDuino I2C LCD display with old LCM 1602 V1 ic
|
||||||
|
// #define FEATURE_LCD1602_N07DH // http://linksprite.com/wiki/index.php5?title=16_X_2_LCD_Keypad_Shield_for_Arduino
|
||||||
|
// #define FEATURE_LCD_SAINSMART_I2C
|
||||||
|
// #define FEATURE_LCD_FABO_PCF8574 // https://github.com/FaBoPlatform/FaBoLCD-PCF8574-Library
|
||||||
|
// #define FEATURE_LCD_I2C_FDEBRABANDER //https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library
|
||||||
|
#define FEATURE_CW_DECODER // https://github.com/k3ng/k3ng_cw_keyer/wiki/385-Feature:-CW-Decoder
|
||||||
|
// #define FEATURE_SLEEP // go to sleep after x minutes to conserve battery power (not compatible with Arduino DUE, may have mixed results with Mega and Mega ADK)
|
||||||
|
// #define FEATURE_LCD_BACKLIGHT_AUTO_DIM // turn off LCD backlight and/or dim Power Indicator LED after x minutes (LED requires a PWM pin)
|
||||||
|
#define FEATURE_ROTARY_ENCODER // rotary encoder speed control
|
||||||
|
#define FEATURE_CMOS_SUPER_KEYER_IAMBIC_B_TIMING
|
||||||
|
#define FEATURE_USB_MOUSE // Uncomment three lines in k3ng_keyer.ino (search for note_usb_uncomment_lines)
|
||||||
|
// #define FEATURE_CAPACITIVE_PADDLE_PINS // remove the bypass capacitors on the paddle_left and paddle_right lines when using capactive paddles
|
||||||
|
// #define FEATURE_LED_RING // Mayhew Labs Led Ring support
|
||||||
|
#define FEATURE_ALPHABET_SEND_PRACTICE // enables command mode S command - created by Ryan, KC2ZWM
|
||||||
|
//#define FEATURE_COMMAND_MODE_PROGRESSIVE_5_CHAR_ECHO_PRACTICE // enables command mode U
|
||||||
|
// #define FEATURE_PTT_INTERLOCK
|
||||||
|
// #define FEATURE_QLF
|
||||||
|
// #define FEATURE_EEPROM_E24C1024
|
||||||
|
// #define FEATURE_STRAIGHT_KEY
|
||||||
|
// #define FEATURE_DYNAMIC_DAH_TO_DIT_RATIO
|
||||||
|
// #define FEATURE_PADDLE_ECHO
|
||||||
|
// #define FEATURE_STRAIGHT_KEY_ECHO
|
||||||
|
// #define FEATURE_AMERICAN_MORSE
|
||||||
|
// #define FEATURE_4x4_KEYPAD // code contributed by Jack, W0XR - documentation: https://github.com/k3ng/k3ng_cw_keyer/wiki/380-Feature:-Keypad
|
||||||
|
// #define FEATURE_3x4_KEYPAD // code contributed by Jack, W0XR - documentation: https://github.com/k3ng/k3ng_cw_keyer/wiki/380-Feature:-Keypad
|
||||||
|
// #define FEATURE_SEQUENCER
|
||||||
|
// #define FEATURE_SD_CARD_SUPPORT
|
||||||
|
// #define FEATURE_COMMAND_MODE_ENHANCED_CMD_ACKNOWLEDGEMENT
|
||||||
|
// #define FEATURE_WEB_SERVER // Details: https://github.com/k3ng/k3ng_cw_keyer/wiki/390-Feature:-Ethernet,-Web-Server,-and-Internet-Linking
|
||||||
|
// #define FEATURE_INTERNET_LINK // Details: https://github.com/k3ng/k3ng_cw_keyer/wiki/390-Feature:-Ethernet,-Web-Server,-and-Internet-Linking
|
||||||
|
|
||||||
|
// #define FEATURE_COMMAND_LINE_INTERFACE_ON_SECONDARY_PORT // Activate the Command Line interface on the secondary serial port
|
||||||
|
#define OPTION_PRIMARY_SERIAL_PORT_DEFAULT_WINKEY_EMULATION // Use when activating both FEATURE_WINKEY_EMULATION and FEATURE_COMMAND_LINE_INTERFACE
|
||||||
|
// simultaneously. This will make Winkey emulation be the default at boot up;
|
||||||
|
// hold command button down at boot up to activate CLI mode
|
||||||
|
|
||||||
|
// #define OPTION_SUPPRESS_SERIAL_BOOT_MSG
|
||||||
|
#define OPTION_INCLUDE_PTT_TAIL_FOR_MANUAL_SENDING
|
||||||
|
#define OPTION_EXCLUDE_PTT_HANG_TIME_FOR_MANUAL_SENDING
|
||||||
|
// #define OPTION_WINKEY_DISCARD_BYTES_AT_STARTUP // if ASR is not disabled, you may need this to discard errant serial port bytes at startup
|
||||||
|
// #define OPTION_WINKEY_STRICT_EEPROM_WRITES_MAY_WEAR_OUT_EEPROM // with this activated the unit will write non-volatile settings to EEPROM when set by Winkey commands
|
||||||
|
// #define OPTION_WINKEY_SEND_WORDSPACE_AT_END_OF_BUFFER
|
||||||
|
#define OPTION_WINKEY_STRICT_HOST_OPEN // require an admin host open Winkey command before doing any other commands
|
||||||
|
#define OPTION_WINKEY_2_SUPPORT // comment out to revert to Winkey version 1 emulation
|
||||||
|
#define OPTION_WINKEY_INTERRUPTS_MEMORY_REPEAT
|
||||||
|
//#define OPTION_WINKEY_UCXLOG_9600_BAUD // use this only with UCXLog configured for Winkey 9600 baud mode
|
||||||
|
#define OPTION_WINKEY_2_HOST_CLOSE_NO_SERIAL_PORT_RESET // (Required for Win-Test to function)
|
||||||
|
// #define OPTION_WINKEY_FREQUENT_STATUS_REPORT // activate this to make Winkey emulation play better with RUMlog and RUMped
|
||||||
|
#define OPTION_WINKEY_IGNORE_LOWERCASE // Enable for typical K1EL Winkeyer behavior (use for SkookumLogger version 1.10.14 and prior to workaround "r" bug)
|
||||||
|
// #define OPTION_WINKEY_BLINK_PTT_ON_HOST_OPEN
|
||||||
|
// #define OPTION_WINKEY_PINCONFIG_PTT_CONTROLS_PTT_LINE // Have Winkeyer PTT setting activate/deactivate PTT line rather than control buffered character PTT hold
|
||||||
|
// #define OPTION_REVERSE_BUTTON_ORDER // This is mainly for the DJ0MY NanoKeyer http://nanokeyer.wordpress.com/
|
||||||
|
// #define OPTION_WINKEY_SEND_VERSION_ON_HOST_CLOSE
|
||||||
|
#define OPTION_PROG_MEM_TRIM_TRAILING_SPACES // trim trailing spaces from memory when programming in command mode
|
||||||
|
#define OPTION_DIT_PADDLE_NO_SEND_ON_MEM_RPT // this makes dit paddle memory interruption a little smoother
|
||||||
|
#define OPTION_MORE_DISPLAY_MSGS // additional optional display messages - comment out to save memory
|
||||||
|
#define OPTION_N1MM_WINKEY_TAB_BUG_WORKAROUND // enable this to ignore the TAB key in the Send CW window (this breaks SO2R functionality in N1MM)
|
||||||
|
#define OPTION_WATCHDOG_TIMER // this enables a four second ATmega48/88/168/328 watchdog timer; use for unattended/remote operation only
|
||||||
|
#define OPTION_MOUSE_MOVEMENT_PADDLE // experimental (just fooling around) - mouse movement will act like a paddle
|
||||||
|
// #define OPTION_NON_ENGLISH_EXTENSIONS // add support for additional CW characters (i.e. À, Å, Þ, etc.)
|
||||||
|
// #define OPTION_DISPLAY_NON_ENGLISH_EXTENSIONS // LCD display suport for non-English (NO/DK/DE) characters - Courtesy of OZ1JHM
|
||||||
|
// #define OPTION_UNKNOWN_CHARACTER_ERROR_TONE
|
||||||
|
// #define OPTION_DO_NOT_SAY_HI
|
||||||
|
// #define OPTION_PS2_NON_ENGLISH_CHAR_LCD_DISPLAY_SUPPORT // makes some non-English characters from the PS2 keyboard display correctly in the LCD display (donated by Marcin sp5iou)
|
||||||
|
// #define OPTION_PS2_KEYBOARD_RESET // reset the PS2 keyboard upon startup with 0xFF (contributed by Bill, W9BEL)
|
||||||
|
// #define OPTION_SAVE_MEMORY_NANOKEYER
|
||||||
|
// #define OPTION_CW_KEYBOARD_CAPSLOCK_BEEP
|
||||||
|
// #define OPTION_CW_KEYBOARD_ITALIAN
|
||||||
|
// #define OPTION_CW_KEYBOARD_GERMAN
|
||||||
|
#define OPTION_CW_DECODER_GOERTZEL_AUDIO_DETECTOR
|
||||||
|
// #define OPTION_INVERT_PADDLE_PIN_LOGIC
|
||||||
|
#define OPTION_ADVANCED_SPEED_DISPLAY //enables "nerd" speed visualization on display: wpm, cpm (char per min), duration of dit and dah in milliseconds and ratio (contributed by Giorgio, IZ2XBZ)
|
||||||
|
#define OPTION_PROSIGN_SUPPORT // additional prosign support for paddle and straight key echo on display, CLI, and in memory storage
|
||||||
|
// #define OPTION_RUSSIAN_LANGUAGE_SEND_CLI // Russian language CLI sending support (contributed by Павел Бирюков, UA1AQC)
|
||||||
|
#define OPTION_DO_NOT_SEND_UNKNOWN_CHAR_QUESTION
|
||||||
|
// #define OPTION_CMOS_SUPER_KEYER_IAMBIC_B_TIMING_ON_BY_DEFAULT
|
||||||
|
// #define OPTION_SIDETONE_DIGITAL_OUTPUT_NO_SQUARE_WAVE
|
||||||
|
|
||||||
|
// #define OPTION_DIRECT_PADDLE_PIN_READS_MEGA // only works with Mega and pins 2 and 5 - minor performance increase
|
||||||
|
// #define OPTION_DIRECT_PADDLE_PIN_READS_UNO // Unos or Nanos pins 2 and 5 - do not enable on a nanoKeyer, it uses different pins
|
||||||
|
|
||||||
|
// #define OPTION_WORDSWORTH_CZECH
|
||||||
|
// #define OPTION_WORDSWORTH_DEUTSCH
|
||||||
|
// #define OPTION_WORDSWORTH_NORSK
|
||||||
|
|
||||||
|
#define OPTION_EXCLUDE_EXTENDED_CLI_COMMANDS
|
||||||
|
|
||||||
|
// #define OPTION_DFROBOT_LCD_COMMAND_BUTTONS
|
||||||
|
|
||||||
|
// #define OPTION_EXCLUDE_MILL_MODE
|
||||||
|
// #define OPTION_NO_ULTIMATIC // reduce memory usage by removing ultimatic code.
|
||||||
|
|
||||||
|
// #define OPTION_DISABLE_SERIAL_PORT_CHECKING_WHILE_SENDING_CW
|
||||||
|
// #define OPTION_PERSONALIZED_STARTUP_SCREEN // displays a user defined string of characters on the second or fourth row of the screen during startup. 1602 display requires OPTION_DO_NOT_SAY_HI
|
||||||
|
// #define OPTION_SWAP_PADDLE_PARAMETER_CHANGE_DIRECTION // reverses the up/down direction when using the paddles to change the wpm or sidetone frequency
|
||||||
|
// #define OPTION_DISPLAY_MEMORY_CONTENTS_COMMAND_MODE
|
||||||
|
|
||||||
|
// #define OPTION_BEACON_MODE_MEMORY_REPEAT_TIME // to space out the repeated playing of memory 1 when in beacon mode
|
||||||
|
// #define OPTION_BEACON_MODE_PTT_TAIL_TIME // adds the ptt tail time to each playing of memory 1 in beacon mode
|
||||||
|
|
||||||
|
// #define OPTION_WINKEY_PROSIGN_COMPATIBILITY // Additional character mappings to support K1EL Winkey emulation prosigns
|
135
k3ng_keyer/keyer_features_and_options_fk_11.h
Executable file
135
k3ng_keyer/keyer_features_and_options_fk_11.h
Executable file
|
@ -0,0 +1,135 @@
|
||||||
|
// compile time features and options - comment or uncomment to add or delete features
|
||||||
|
// FEATURES add more bytes to the compiled binary, OPTIONS change code behavior
|
||||||
|
|
||||||
|
// Funtronics FK-11
|
||||||
|
|
||||||
|
#define FEATURE_BUTTONS
|
||||||
|
#define FEATURE_COMMAND_MODE
|
||||||
|
#define FEATURE_COMMAND_LINE_INTERFACE // Command Line Interface functionality
|
||||||
|
#define FEATURE_MEMORIES // on the Arduino Due, you must have FEATURE_EEPROM_E24C1024 and E24C1024 EEPROM hardware in order to compile this
|
||||||
|
#define FEATURE_MEMORY_MACROS
|
||||||
|
#define FEATURE_WINKEY_EMULATION // disabling Automatic Software Reset is highly recommended (see documentation)
|
||||||
|
#define FEATURE_BEACON // Go into beacon mode if paddle_left pin is LOW at boot up
|
||||||
|
#define FEATURE_BEACON_SETTING // Go into beacon mode at boot up if EEPROM setting is enabled (\_ CLI Command)
|
||||||
|
#define FEATURE_TRAINING_COMMAND_LINE_INTERFACE
|
||||||
|
// #define FEATURE_POTENTIOMETER // do not enable unless you have a potentiometer connected, otherwise noise will falsely trigger wpm changes
|
||||||
|
// #define FEATURE_SIDETONE_SWITCH // adds switch control for the sidetone output. requires an external toggle switch (assigned to an arduino pin - see keyer_pin_settings.h).
|
||||||
|
// #define FEATURE_SIDETONE_NEWTONE // Use the NewTone library, ~1k smaller code size than the standard tone library. Uses timer1 (pins 9 or 10) https://bitbucket.org/teckel12/arduino-new-tone/wiki/Home
|
||||||
|
#define FEATURE_SERIAL_HELP
|
||||||
|
#define FEATURE_HELL
|
||||||
|
// #define FEATURE_PS2_KEYBOARD // Use a PS2 keyboard to send code - Change keyboard layout (non-US) in K3NG_PS2Keyboard.h. Additional options below.
|
||||||
|
#define FEATURE_USB_KEYBOARD // Use a USB keyboard to send code - Uncomment three lines in k3ng_keyer.ino (search for note_usb_uncomment_lines)
|
||||||
|
// #define FEATURE_CW_COMPUTER_KEYBOARD // Have an Arduino Due or Leonardo act as a USB HID (Human Interface Device) keyboard and use the paddle to "type" characters on the computer -- uncomment this line in ino file: #include <Keyboard.h>
|
||||||
|
#define FEATURE_DEAD_OP_WATCHDOG
|
||||||
|
#define FEATURE_AUTOSPACE
|
||||||
|
#define FEATURE_FARNSWORTH
|
||||||
|
// #define FEATURE_DL2SBA_BANKSWITCH // Switch memory banks feature as described here: http://dl2sba.com/index.php?option=com_content&view=article&id=131:nanokeyer&catid=15:shack&Itemid=27#english
|
||||||
|
// #define FEATURE_LCD_4BIT // classic LCD disidefplay using 4 I/O lines
|
||||||
|
// #define FEATURE_LCD_8BIT // classic LCD display using 8 I/O lines
|
||||||
|
// #define FEATURE_LCD_ADAFRUIT_I2C // Adafruit I2C LCD display using MCP23017 at addr 0x20
|
||||||
|
// #define FEATURE_LCD_ADAFRUIT_BACKPACK // Adafruit I2C LCD Backup using MCP23008 (courtesy Josiah Ritchie, KE0BLL)
|
||||||
|
// #define FEATURE_LCD_YDv1 // YourDuino I2C LCD display with old LCM 1602 V1 ic
|
||||||
|
// #define FEATURE_LCD1602_N07DH // http://linksprite.com/wiki/index.php5?title=16_X_2_LCD_Keypad_Shield_for_Arduino
|
||||||
|
// #define FEATURE_LCD_SAINSMART_I2C
|
||||||
|
#define FEATURE_LCD_FABO_PCF8574 // https://github.com/FaBoPlatform/FaBoLCD-PCF8574-Library
|
||||||
|
// #define FEATURE_LCD_MATHERTEL_PCF8574 // https://github.com/mathertel/LiquidCrystal_PCF8574
|
||||||
|
// #define FEATURE_LCD_I2C_FDEBRABANDER //https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library
|
||||||
|
// #define FEATURE_LCD_HD44780
|
||||||
|
#define FEATURE_CW_DECODER // https://github.com/k3ng/k3ng_cw_keyer/wiki/385-Feature:-CW-Decoder
|
||||||
|
// #define FEATURE_SLEEP // go to sleep after x minutes to conserve battery power (not compatible with Arduino DUE, may have mixed results with Mega and Mega ADK)
|
||||||
|
// #define FEATURE_LCD_BACKLIGHT_AUTO_DIM // turn off LCD backlight and/or dim Power Indicator LED after x minutes (LED requires a PWM pin)
|
||||||
|
#define FEATURE_ROTARY_ENCODER // rotary encoder speed control
|
||||||
|
#define FEATURE_CMOS_SUPER_KEYER_IAMBIC_B_TIMING
|
||||||
|
#define FEATURE_USB_MOUSE // Uncomment three lines in k3ng_keyer.ino (search for note_usb_uncomment_lines)
|
||||||
|
// #define FEATURE_CAPACITIVE_PADDLE_PINS // remove the bypass capacitors on the paddle_left and paddle_right lines when using capactive paddles
|
||||||
|
// #define FEATURE_LED_RING // Mayhew Labs Led Ring support
|
||||||
|
#define FEATURE_ALPHABET_SEND_PRACTICE // enables command mode S command - created by Ryan, KC2ZWM
|
||||||
|
// #define FEATURE_COMMAND_MODE_PROGRESSIVE_5_CHAR_ECHO_PRACTICE // enables command mode U
|
||||||
|
// #define FEATURE_PTT_INTERLOCK
|
||||||
|
// #define FEATURE_QLF
|
||||||
|
// #define FEATURE_EEPROM_E24C1024
|
||||||
|
// #define FEATURE_STRAIGHT_KEY
|
||||||
|
// #define FEATURE_DYNAMIC_DAH_TO_DIT_RATIO
|
||||||
|
// #define FEATURE_PADDLE_ECHO
|
||||||
|
// #define FEATURE_STRAIGHT_KEY_ECHO
|
||||||
|
// #define FEATURE_AMERICAN_MORSE
|
||||||
|
// #define FEATURE_4x4_KEYPAD // code contributed by Jack, W0XR - documentation: https://github.com/k3ng/k3ng_cw_keyer/wiki/380-Feature:-Keypad
|
||||||
|
// #define FEATURE_3x4_KEYPAD // code contributed by Jack, W0XR - documentation: https://github.com/k3ng/k3ng_cw_keyer/wiki/380-Feature:-Keypad
|
||||||
|
// #define FEATURE_SEQUENCER
|
||||||
|
// #define FEATURE_COMMAND_MODE_ENHANCED_CMD_ACKNOWLEDGEMENT
|
||||||
|
// #define FEATURE_WEB_SERVER // Details: https://github.com/k3ng/k3ng_cw_keyer/wiki/390-Feature:-Ethernet,-Web-Server,-and-Internet-Linking
|
||||||
|
// #define FEATURE_INTERNET_LINK // Details: https://github.com/k3ng/k3ng_cw_keyer/wiki/390-Feature:-Ethernet,-Web-Server,-and-Internet-Linking
|
||||||
|
|
||||||
|
#define FEATURE_COMMAND_LINE_INTERFACE_ON_SECONDARY_PORT // Activate the Command Line interface on the secondary serial port
|
||||||
|
#define OPTION_PRIMARY_SERIAL_PORT_DEFAULT_WINKEY_EMULATION // Use when activating both FEATURE_WINKEY_EMULATION and FEATURE_COMMAND_LINE_INTERFACE
|
||||||
|
// simultaneously. This will make Winkey emulation be the default at boot up;
|
||||||
|
// hold command button down at boot up to activate CLI mode
|
||||||
|
|
||||||
|
// #define OPTION_SUPPRESS_SERIAL_BOOT_MSG
|
||||||
|
#define OPTION_INCLUDE_PTT_TAIL_FOR_MANUAL_SENDING
|
||||||
|
#define OPTION_EXCLUDE_PTT_HANG_TIME_FOR_MANUAL_SENDING
|
||||||
|
// #define OPTION_WINKEY_DISCARD_BYTES_AT_STARTUP // if ASR is not disabled, you may need this to discard errant serial port bytes at startup
|
||||||
|
// #define OPTION_WINKEY_STRICT_EEPROM_WRITES_MAY_WEAR_OUT_EEPROM // with this activated the unit will write non-volatile settings to EEPROM when set by Winkey commands
|
||||||
|
// #define OPTION_WINKEY_SEND_WORDSPACE_AT_END_OF_BUFFER
|
||||||
|
#define OPTION_WINKEY_STRICT_HOST_OPEN // require an admin host open Winkey command before doing any other commands
|
||||||
|
#define OPTION_WINKEY_2_SUPPORT // comment out to revert to Winkey version 1 emulation
|
||||||
|
#define OPTION_WINKEY_INTERRUPTS_MEMORY_REPEAT
|
||||||
|
//#define OPTION_WINKEY_UCXLOG_9600_BAUD // use this only with UCXLog configured for Winkey 9600 baud mode
|
||||||
|
#define OPTION_WINKEY_2_HOST_CLOSE_NO_SERIAL_PORT_RESET // (Required for Win-Test to function)
|
||||||
|
// #define OPTION_WINKEY_FREQUENT_STATUS_REPORT // activate this to make Winkey emulation play better with RUMlog and RUMped
|
||||||
|
#define OPTION_WINKEY_IGNORE_LOWERCASE // Enable for typical K1EL Winkeyer behavior (use for SkookumLogger version 1.10.14 and prior to workaround "r" bug)
|
||||||
|
// #define OPTION_WINKEY_BLINK_PTT_ON_HOST_OPEN
|
||||||
|
// #define OPTION_WINKEY_SEND_VERSION_ON_HOST_CLOSE
|
||||||
|
// #define OPTION_WINKEY_PINCONFIG_PTT_CONTROLS_PTT_LINE // Have Winkeyer PTT setting activate/deactivate PTT line rather than control buffered character PTT hold
|
||||||
|
// #define OPTION_REVERSE_BUTTON_ORDER // This is mainly for the DJ0MY NanoKeyer http://nanokeyer.wordpress.com/
|
||||||
|
#define OPTION_PROG_MEM_TRIM_TRAILING_SPACES // trim trailing spaces from memory when programming in command mode
|
||||||
|
#define OPTION_DIT_PADDLE_NO_SEND_ON_MEM_RPT // this makes dit paddle memory interruption a little smoother
|
||||||
|
#define OPTION_MORE_DISPLAY_MSGS // additional optional display messages - comment out to save memory
|
||||||
|
#define OPTION_WATCHDOG_TIMER // this enables a four second ATmega48/88/168/328 watchdog timer; use for unattended/remote operation only
|
||||||
|
#define OPTION_MOUSE_MOVEMENT_PADDLE // experimental (just fooling around) - mouse movement will act like a paddle
|
||||||
|
// #define OPTION_NON_ENGLISH_EXTENSIONS // add support for additional CW characters (i.e. À, Å, Þ, etc.)
|
||||||
|
// #define OPTION_DISPLAY_NON_ENGLISH_EXTENSIONS // LCD display suport for non-English (NO/DK/DE) characters - Courtesy of OZ1JHM
|
||||||
|
// #define OPTION_UNKNOWN_CHARACTER_ERROR_TONE
|
||||||
|
// #define OPTION_DO_NOT_SAY_HI
|
||||||
|
// #define OPTION_PS2_NON_ENGLISH_CHAR_LCD_DISPLAY_SUPPORT // makes some non-English characters from the PS2 keyboard display correctly in the LCD display (donated by Marcin sp5iou)
|
||||||
|
// #define OPTION_PS2_KEYBOARD_RESET // reset the PS2 keyboard upon startup with 0xFF (contributed by Bill, W9BEL)
|
||||||
|
// #define OPTION_SAVE_MEMORY_NANOKEYER
|
||||||
|
// #define OPTION_CW_KEYBOARD_CAPSLOCK_BEEP
|
||||||
|
// #define OPTION_CW_KEYBOARD_ITALIAN
|
||||||
|
// #define OPTION_CW_KEYBOARD_GERMAN
|
||||||
|
#define OPTION_CW_DECODER_GOERTZEL_AUDIO_DETECTOR
|
||||||
|
// #define OPTION_INVERT_PADDLE_PIN_LOGIC
|
||||||
|
#define OPTION_ADVANCED_SPEED_DISPLAY //enables "nerd" speed visualization on display: wpm, cpm (char per min), duration of dit and dah in milliseconds and ratio (contributed by Giorgio, IZ2XBZ)
|
||||||
|
#define OPTION_PROSIGN_SUPPORT // additional prosign support for paddle and straight key echo on display, CLI, and in memory storage
|
||||||
|
// #define OPTION_RUSSIAN_LANGUAGE_SEND_CLI // Russian language CLI sending support (contributed by Павел Бирюков, UA1AQC)
|
||||||
|
#define OPTION_DO_NOT_SEND_UNKNOWN_CHAR_QUESTION
|
||||||
|
// #define OPTION_CMOS_SUPER_KEYER_IAMBIC_B_TIMING_ON_BY_DEFAULT
|
||||||
|
// #define OPTION_SIDETONE_DIGITAL_OUTPUT_NO_SQUARE_WAVE
|
||||||
|
// #define FEATURE_SD_CARD_SUPPORT
|
||||||
|
// #define FEATURE_SO2R_BASE // SO2R Box base protocol extensions
|
||||||
|
// #define FEATURE_SO2R_SWITCHES // SO2R Box TX and RX switches
|
||||||
|
// #define FEATURE_SO2R_ANTENNA // SO2R Box antenna selection (not fully implemented)
|
||||||
|
|
||||||
|
#define OPTION_DIRECT_PADDLE_PIN_READS_MEGA // only works with Mega and pins 2 and 5 - minor performance increase
|
||||||
|
// #define OPTION_DIRECT_PADDLE_PIN_READS_UNO // Unos or Nanos pins 2 and 5 - do not enable on a nanoKeyer, it uses different pins
|
||||||
|
|
||||||
|
// #define OPTION_WORDSWORTH_CZECH
|
||||||
|
// #define OPTION_WORDSWORTH_DEUTSCH
|
||||||
|
// #define OPTION_WORDSWORTH_NORSK
|
||||||
|
|
||||||
|
#define OPTION_EXCLUDE_EXTENDED_CLI_COMMANDS
|
||||||
|
|
||||||
|
// #define OPTION_DFROBOT_LCD_COMMAND_BUTTONS
|
||||||
|
|
||||||
|
// #define OPTION_EXCLUDE_MILL_MODE
|
||||||
|
// #define OPTION_NO_ULTIMATIC // reduce memory usage by removing ultimatic code.
|
||||||
|
|
||||||
|
// #define OPTION_DISABLE_SERIAL_PORT_CHECKING_WHILE_SENDING_CW
|
||||||
|
// #define OPTION_PERSONALIZED_STARTUP_SCREEN // displays a user defined string of characters on the second or fourth row of the screen during startup. 1602 display requires OPTION_DO_NOT_SAY_HI
|
||||||
|
// #define OPTION_SWAP_PADDLE_PARAMETER_CHANGE_DIRECTION // reverses the up/down direction when using the paddles to change the wpm or sidetone frequency
|
||||||
|
// #define OPTION_DISPLAY_MEMORY_CONTENTS_COMMAND_MODE
|
||||||
|
|
||||||
|
// #define OPTION_BEACON_MODE_MEMORY_REPEAT_TIME // to space out the repeated playing of memory 1 when in beacon mode
|
||||||
|
// #define OPTION_BEACON_MODE_PTT_TAIL_TIME // adds the ptt tail time to each playing of memory 1 in beacon mode
|
||||||
|
|
||||||
|
// #define OPTION_WINKEY_PROSIGN_COMPATIBILITY // Additional character mappings to support K1EL Winkey emulation prosigns
|
135
k3ng_keyer/keyer_features_and_options_generic_STM32F103C.h
Executable file
135
k3ng_keyer/keyer_features_and_options_generic_STM32F103C.h
Executable file
|
@ -0,0 +1,135 @@
|
||||||
|
/*
|
||||||
|
Generic STM32F103C "Blue Pill"
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// compile time features and options - comment or uncomment to add or delete features
|
||||||
|
// FEATURES add more bytes to the compiled binary, OPTIONS change code behavior
|
||||||
|
|
||||||
|
|
||||||
|
#define FEATURE_BUTTONS
|
||||||
|
#define FEATURE_COMMAND_MODE
|
||||||
|
#define FEATURE_COMMAND_LINE_INTERFACE // Command Line Interface functionality
|
||||||
|
#define FEATURE_MEMORIES // on the Arduino Due, you must have FEATURE_EEPROM_E24C1024 and E24C1024 EEPROM hardware in order to compile this
|
||||||
|
#define FEATURE_MEMORY_MACROS
|
||||||
|
#define FEATURE_WINKEY_EMULATION // disabling Automatic Software Reset is highly recommended (see documentation)
|
||||||
|
#define FEATURE_BEACON // Go into beacon mode if paddle_left pin is LOW at boot up
|
||||||
|
#define FEATURE_BEACON_SETTING // Go into beacon mode at boot up if EEPROM setting is enabled (\_ CLI Command)
|
||||||
|
// #define FEATURE_TRAINING_COMMAND_LINE_INTERFACE
|
||||||
|
// #define FEATURE_POTENTIOMETER // do not enable unless you have a potentiometer connected, otherwise noise will falsely trigger wpm changes
|
||||||
|
// #define FEATURE_SIDETONE_SWITCH // adds switch control for the sidetone output. requires an external toggle switch (assigned to an arduino pin - see keyer_pin_settings.h).
|
||||||
|
// #define FEATURE_SIDETONE_NEWTONE // Use the NewTone library, ~1k smaller code size than the standard tone library. Uses timer1 (pins 9 or 10) https://bitbucket.org/teckel12/arduino-new-tone/wiki/Home
|
||||||
|
#define FEATURE_SERIAL_HELP
|
||||||
|
#define FEATURE_HELL
|
||||||
|
// #define FEATURE_PS2_KEYBOARD // Use a PS2 keyboard to send code - Change keyboard layout (non-US) in K3NG_PS2Keyboard.h. Additional options below.
|
||||||
|
// #define FEATURE_USB_KEYBOARD // Use a USB keyboard to send code - Uncomment three lines in k3ng_keyer.ino (search for note_usb_uncomment_lines)
|
||||||
|
// #define FEATURE_CW_COMPUTER_KEYBOARD // Have an Arduino Due or Leonardo act as a USB HID (Human Interface Device) keyboard and use the paddle to "type" characters on the computer -- uncomment this line in ino file: #include <Keyboard.h>
|
||||||
|
#define FEATURE_DEAD_OP_WATCHDOG
|
||||||
|
#define FEATURE_AUTOSPACE
|
||||||
|
#define FEATURE_FARNSWORTH
|
||||||
|
// #define FEATURE_DL2SBA_BANKSWITCH // Switch memory banks feature as described here: http://dl2sba.com/index.php?option=com_content&view=article&id=131:nanokeyer&catid=15:shack&Itemid=27#english
|
||||||
|
#define FEATURE_LCD_4BIT // classic LCD disidefplay using 4 I/O lines
|
||||||
|
// #define FEATURE_LCD_8BIT // classic LCD display using 8 I/O lines
|
||||||
|
// #define FEATURE_LCD_ADAFRUIT_I2C // Adafruit I2C LCD display using MCP23017 at addr 0x20
|
||||||
|
// #define FEATURE_LCD_ADAFRUIT_BACKPACK // Adafruit I2C LCD Backup using MCP23008 (courtesy Josiah Ritchie, KE0BLL)
|
||||||
|
// #define FEATURE_LCD_YDv1 // YourDuino I2C LCD display with old LCM 1602 V1 ic
|
||||||
|
// #define FEATURE_LCD1602_N07DH // http://linksprite.com/wiki/index.php5?title=16_X_2_LCD_Keypad_Shield_for_Arduino
|
||||||
|
// #define FEATURE_LCD_SAINSMART_I2C
|
||||||
|
// #define FEATURE_LCD_FABO_PCF8574 // https://github.com/FaBoPlatform/FaBoLCD-PCF8574-Library
|
||||||
|
// #define FEATURE_LCD_I2C_FDEBRABANDER //https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library
|
||||||
|
// #define FEATURE_CW_DECODER // https://github.com/k3ng/k3ng_cw_keyer/wiki/385-Feature:-CW-Decoder
|
||||||
|
// #define FEATURE_SLEEP // go to sleep after x minutes to conserve battery power (not compatible with Arduino DUE, may have mixed results with Mega and Mega ADK)
|
||||||
|
// #define FEATURE_LCD_BACKLIGHT_AUTO_DIM // turn off LCD backlight and/or dim Power Indicator LED after x minutes (LED requires a PWM pin)
|
||||||
|
#define FEATURE_ROTARY_ENCODER // rotary encoder speed control
|
||||||
|
// #define FEATURE_CMOS_SUPER_KEYER_IAMBIC_B_TIMING
|
||||||
|
// #define FEATURE_USB_MOUSE // Uncomment three lines in k3ng_keyer.ino (search for note_usb_uncomment_lines)
|
||||||
|
// #define FEATURE_CAPACITIVE_PADDLE_PINS // remove the bypass capacitors on the paddle_left and paddle_right lines when using capactive paddles
|
||||||
|
// #define FEATURE_LED_RING // Mayhew Labs Led Ring support
|
||||||
|
#define FEATURE_ALPHABET_SEND_PRACTICE // enables command mode S command - created by Ryan, KC2ZWM
|
||||||
|
// #define FEATURE_COMMAND_MODE_PROGRESSIVE_5_CHAR_ECHO_PRACTICE // enables command mode U
|
||||||
|
// #define FEATURE_PTT_INTERLOCK
|
||||||
|
#define FEATURE_QLF
|
||||||
|
// #define FEATURE_EEPROM_E24C1024
|
||||||
|
// #define FEATURE_STRAIGHT_KEY
|
||||||
|
// #define FEATURE_DYNAMIC_DAH_TO_DIT_RATIO
|
||||||
|
// #define FEATURE_PADDLE_ECHO
|
||||||
|
// #define FEATURE_STRAIGHT_KEY_ECHO
|
||||||
|
// #define FEATURE_AMERICAN_MORSE
|
||||||
|
// #define FEATURE_4x4_KEYPAD // code contributed by Jack, W0XR - documentation: https://github.com/k3ng/k3ng_cw_keyer/wiki/380-Feature:-Keypad
|
||||||
|
// #define FEATURE_3x4_KEYPAD // code contributed by Jack, W0XR - documentation: https://github.com/k3ng/k3ng_cw_keyer/wiki/380-Feature:-Keypad
|
||||||
|
// #define FEATURE_SEQUENCER
|
||||||
|
// #define FEATURE_COMMAND_MODE_ENHANCED_CMD_ACKNOWLEDGEMENT
|
||||||
|
// #define FEATURE_WEB_SERVER // Details: https://github.com/k3ng/k3ng_cw_keyer/wiki/390-Feature:-Ethernet,-Web-Server,-and-Internet-Linking
|
||||||
|
// #define FEATURE_INTERNET_LINK // Details: https://github.com/k3ng/k3ng_cw_keyer/wiki/390-Feature:-Ethernet,-Web-Server,-and-Internet-Linking
|
||||||
|
|
||||||
|
// #define FEATURE_COMMAND_LINE_INTERFACE_ON_SECONDARY_PORT // Activate the Command Line interface on the secondary serial port
|
||||||
|
#define OPTION_PRIMARY_SERIAL_PORT_DEFAULT_WINKEY_EMULATION // Use when activating both FEATURE_WINKEY_EMULATION and FEATURE_COMMAND_LINE_INTERFACE
|
||||||
|
// simultaneously. This will make Winkey emulation be the default at boot up;
|
||||||
|
// hold command button down at boot up to activate CLI mode
|
||||||
|
|
||||||
|
//#define OPTION_SUPPRESS_SERIAL_BOOT_MSG
|
||||||
|
#define OPTION_INCLUDE_PTT_TAIL_FOR_MANUAL_SENDING
|
||||||
|
#define OPTION_EXCLUDE_PTT_HANG_TIME_FOR_MANUAL_SENDING
|
||||||
|
// #define OPTION_WINKEY_DISCARD_BYTES_AT_STARTUP // if ASR is not disabled, you may need this to discard errant serial port bytes at startup
|
||||||
|
// #define OPTION_WINKEY_STRICT_EEPROM_WRITES_MAY_WEAR_OUT_EEPROM // with this activated the unit will write non-volatile settings to EEPROM when set by Winkey commands
|
||||||
|
// #define OPTION_WINKEY_SEND_WORDSPACE_AT_END_OF_BUFFER
|
||||||
|
//#define OPTION_WINKEY_STRICT_HOST_OPEN // require an admin host open Winkey command before doing any other commands
|
||||||
|
//#define OPTION_WINKEY_2_SUPPORT // comment out to revert to Winkey version 1 emulation
|
||||||
|
//#define OPTION_WINKEY_INTERRUPTS_MEMORY_REPEAT
|
||||||
|
//#define OPTION_WINKEY_UCXLOG_9600_BAUD // use this only with UCXLog configured for Winkey 9600 baud mode
|
||||||
|
#define OPTION_WINKEY_2_HOST_CLOSE_NO_SERIAL_PORT_RESET // (Required for Win-Test to function)
|
||||||
|
// #define OPTION_WINKEY_FREQUENT_STATUS_REPORT // activate this to make Winkey emulation play better with RUMlog and RUMped
|
||||||
|
// #define OPTION_WINKEY_IGNORE_LOWERCASE // Enable for typical K1EL Winkeyer behavior (use for SkookumLogger version 1.10.14 and prior to workaround "r" bug)
|
||||||
|
// #define OPTION_WINKEY_BLINK_PTT_ON_HOST_OPEN
|
||||||
|
// #define OPTION_WINKEY_SEND_VERSION_ON_HOST_CLOSE
|
||||||
|
// #define OPTION_WINKEY_PINCONFIG_PTT_CONTROLS_PTT_LINE // Have Winkeyer PTT setting activate/deactivate PTT line rather than control buffered character PTT hold
|
||||||
|
// #define OPTION_REVERSE_BUTTON_ORDER // This is mainly for the DJ0MY NanoKeyer http://nanokeyer.wordpress.com/
|
||||||
|
#define OPTION_PROG_MEM_TRIM_TRAILING_SPACES // trim trailing spaces from memory when programming in command mode
|
||||||
|
#define OPTION_DIT_PADDLE_NO_SEND_ON_MEM_RPT // this makes dit paddle memory interruption a little smoother
|
||||||
|
#define OPTION_MORE_DISPLAY_MSGS // additional optional display messages - comment out to save memory
|
||||||
|
// #define OPTION_WATCHDOG_TIMER // this enables a four second ATmega48/88/168/328 watchdog timer; use for unattended/remote operation only
|
||||||
|
// #define OPTION_MOUSE_MOVEMENT_PADDLE // experimental (just fooling around) - mouse movement will act like a paddle
|
||||||
|
// #define OPTION_NON_ENGLISH_EXTENSIONS // add support for additional CW characters (i.e. À, Å, Þ, etc.)
|
||||||
|
// #define OPTION_DISPLAY_NON_ENGLISH_EXTENSIONS // LCD display suport for non-English (NO/DK/DE) characters - Courtesy of OZ1JHM
|
||||||
|
// #define OPTION_UNKNOWN_CHARACTER_ERROR_TONE
|
||||||
|
// #define OPTION_DO_NOT_SAY_HI
|
||||||
|
// #define OPTION_PS2_NON_ENGLISH_CHAR_LCD_DISPLAY_SUPPORT // makes some non-English characters from the PS2 keyboard display correctly in the LCD display (donated by Marcin sp5iou)
|
||||||
|
// #define OPTION_PS2_KEYBOARD_RESET // reset the PS2 keyboard upon startup with 0xFF (contributed by Bill, W9BEL)
|
||||||
|
// #define OPTION_SAVE_MEMORY_NANOKEYER
|
||||||
|
// #define OPTION_CW_KEYBOARD_CAPSLOCK_BEEP
|
||||||
|
// #define OPTION_CW_KEYBOARD_ITALIAN
|
||||||
|
// #define OPTION_CW_KEYBOARD_GERMAN
|
||||||
|
// #define OPTION_CW_DECODER_GOERTZEL_AUDIO_DETECTOR
|
||||||
|
// #define OPTION_INVERT_PADDLE_PIN_LOGIC
|
||||||
|
// #define OPTION_ADVANCED_SPEED_DISPLAY //enables "nerd" speed visualization on display: wpm, cpm (char per min), duration of dit and dah in milliseconds and ratio (contributed by Giorgio, IZ2XBZ)
|
||||||
|
#define OPTION_PROSIGN_SUPPORT // additional prosign support for paddle and straight key echo on display, CLI, and in memory storage
|
||||||
|
// #define OPTION_RUSSIAN_LANGUAGE_SEND_CLI // Russian language CLI sending support (contributed by Павел Бирюков, UA1AQC)
|
||||||
|
#define OPTION_DO_NOT_SEND_UNKNOWN_CHAR_QUESTION
|
||||||
|
#define OPTION_CMOS_SUPER_KEYER_IAMBIC_B_TIMING_ON_BY_DEFAULT
|
||||||
|
// #define OPTION_SIDETONE_DIGITAL_OUTPUT_NO_SQUARE_WAVE
|
||||||
|
|
||||||
|
// #define OPTION_DIRECT_PADDLE_PIN_READS_MEGA // only works with Mega and pins 2 and 5 - minor performance increase
|
||||||
|
// #define OPTION_DIRECT_PADDLE_PIN_READS_UNO // Unos or Nanos pins 2 and 5 - do not enable on a nanoKeyer, it uses different pins
|
||||||
|
|
||||||
|
// #define OPTION_WORDSWORTH_CZECH
|
||||||
|
// #define OPTION_WORDSWORTH_DEUTSCH
|
||||||
|
// #define OPTION_WORDSWORTH_NORSK
|
||||||
|
|
||||||
|
// #define OPTION_EXCLUDE_EXTENDED_CLI_COMMANDS
|
||||||
|
|
||||||
|
// #define OPTION_DFROBOT_LCD_COMMAND_BUTTONS
|
||||||
|
|
||||||
|
// #define OPTION_EXCLUDE_MILL_MODE
|
||||||
|
// #define OPTION_NO_ULTIMATIC // reduce memory usage by removing ultimatic code.
|
||||||
|
|
||||||
|
// #define OPTION_DISABLE_SERIAL_PORT_CHECKING_WHILE_SENDING_CW
|
||||||
|
// #define OPTION_PERSONALIZED_STARTUP_SCREEN // displays a user defined string of characters on the second or fourth row of the screen during startup. 1602 display requires OPTION_DO_NOT_SAY_HI
|
||||||
|
// #define OPTION_SWAP_PADDLE_PARAMETER_CHANGE_DIRECTION // reverses the up/down direction when using the paddles to change the wpm or sidetone frequency
|
||||||
|
// #define OPTION_DISPLAY_MEMORY_CONTENTS_COMMAND_MODE
|
||||||
|
|
||||||
|
// #define OPTION_BEACON_MODE_MEMORY_REPEAT_TIME // to space out the repeated playing of memory 1 when in beacon mode
|
||||||
|
// #define OPTION_BEACON_MODE_PTT_TAIL_TIME // adds the ptt tail time to each playing of memory 1 in beacon mode
|
||||||
|
|
||||||
|
// #define OPTION_WINKEY_PROSIGN_COMPATIBILITY // Additional character mappings to support K1EL Winkey emulation prosigns
|
131
k3ng_keyer/keyer_features_and_options_iz3gme.h
Executable file
131
k3ng_keyer/keyer_features_and_options_iz3gme.h
Executable file
|
@ -0,0 +1,131 @@
|
||||||
|
// compile time features and options - comment or uncomment to add or delete features
|
||||||
|
// FEATURES add more bytes to the compiled binary, OPTIONS change code behavior
|
||||||
|
|
||||||
|
|
||||||
|
#define FEATURE_BUTTONS
|
||||||
|
#define FEATURE_COMMAND_MODE
|
||||||
|
#define FEATURE_COMMAND_LINE_INTERFACE // Command Line Interface functionality
|
||||||
|
#define FEATURE_MEMORIES // on the Arduino Due, you must have FEATURE_EEPROM_E24C1024 and E24C1024 EEPROM hardware in order to compile this
|
||||||
|
#define FEATURE_MEMORY_MACROS
|
||||||
|
#define FEATURE_WINKEY_EMULATION // disabling Automatic Software Reset is highly recommended (see documentation)
|
||||||
|
// #define FEATURE_BEACON // Go into beacon mode if paddle_left pin is LOW at boot up
|
||||||
|
// #define FEATURE_BEACON_SETTING // Go into beacon mode at boot up if EEPROM setting is enabled (\_ CLI Command)
|
||||||
|
// #define FEATURE_TRAINING_COMMAND_LINE_INTERFACE
|
||||||
|
#define FEATURE_POTENTIOMETER // do not enable unless you have a potentiometer connected, otherwise noise will falsely trigger wpm changes
|
||||||
|
// #define FEATURE_SIDETONE_SWITCH // adds switch control for the sidetone output. requires an external toggle switch (assigned to an arduino pin - see keyer_pin_settings.h).
|
||||||
|
// #define FEATURE_SIDETONE_NEWTONE // Use the NewTone library, ~1k smaller code size than the standard tone library. Uses timer1 (pins 9 or 10) https://bitbucket.org/teckel12/arduino-new-tone/wiki/Home
|
||||||
|
#define FEATURE_SERIAL_HELP
|
||||||
|
// #define FEATURE_HELL
|
||||||
|
// #define FEATURE_PS2_KEYBOARD // Use a PS2 keyboard to send code - Change keyboard layout (non-US) in K3NG_PS2Keyboard.h. Additional options below.
|
||||||
|
// #define FEATURE_USB_KEYBOARD // Use a USB keyboard to send code - Uncomment three lines in k3ng_keyer.ino (search for note_usb_uncomment_lines)
|
||||||
|
// #define FEATURE_CW_COMPUTER_KEYBOARD // Have an Arduino Due or Leonardo act as a USB HID (Human Interface Device) keyboard and use the paddle to "type" characters on the computer -- uncomment this line in ino file: #include <Keyboard.h>
|
||||||
|
// #define FEATURE_DEAD_OP_WATCHDOG
|
||||||
|
// #define FEATURE_AUTOSPACE
|
||||||
|
// #define FEATURE_FARNSWORTH
|
||||||
|
// #define FEATURE_DL2SBA_BANKSWITCH // Switch memory banks feature as described here: http://dl2sba.com/index.php?option=com_content&view=article&id=131:nanokeyer&catid=15:shack&Itemid=27#english
|
||||||
|
#define FEATURE_LCD_4BIT // classic LCD disidefplay using 4 I/O lines
|
||||||
|
// #define FEATURE_LCD_8BIT // classic LCD display using 8 I/O lines
|
||||||
|
// #define FEATURE_LCD_ADAFRUIT_I2C // Adafruit I2C LCD display using MCP23017 at addr 0x20
|
||||||
|
// #define FEATURE_LCD_ADAFRUIT_BACKPACK // Adafruit I2C LCD Backup using MCP23008 (courtesy Josiah Ritchie, KE0BLL)
|
||||||
|
// #define FEATURE_LCD_YDv1 // YourDuino I2C LCD display with old LCM 1602 V1 ic
|
||||||
|
// #define FEATURE_LCD1602_N07DH // http://linksprite.com/wiki/index.php5?title=16_X_2_LCD_Keypad_Shield_for_Arduino
|
||||||
|
// #define FEATURE_LCD_SAINSMART_I2C
|
||||||
|
// #define FEATURE_LCD_FABO_PCF8574 // https://github.com/FaBoPlatform/FaBoLCD-PCF8574-Library
|
||||||
|
// #define FEATURE_LCD_MATHERTEL_PCF8574 // https://github.com/mathertel/LiquidCrystal_PCF8574
|
||||||
|
// #define FEATURE_LCD_I2C_FDEBRABANDER //https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library
|
||||||
|
// #define FEATURE_LCD_HD44780
|
||||||
|
// #define FEATURE_CW_DECODER // https://github.com/k3ng/k3ng_cw_keyer/wiki/385-Feature:-CW-Decoder
|
||||||
|
// #define FEATURE_SLEEP // go to sleep after x minutes to conserve battery power (not compatible with Arduino DUE, may have mixed results with Mega and Mega ADK)
|
||||||
|
// #define FEATURE_LCD_BACKLIGHT_AUTO_DIM // turn off LCD backlight and/or dim Power Indicator LED after x minutes (LED requires a PWM pin)
|
||||||
|
// #define FEATURE_ROTARY_ENCODER // rotary encoder speed control
|
||||||
|
// #define FEATURE_CMOS_SUPER_KEYER_IAMBIC_B_TIMING
|
||||||
|
// #define FEATURE_USB_MOUSE // Uncomment three lines in k3ng_keyer.ino (search for note_usb_uncomment_lines)
|
||||||
|
// #define FEATURE_CAPACITIVE_PADDLE_PINS // remove the bypass capacitors on the paddle_left and paddle_right lines when using capactive paddles
|
||||||
|
// #define FEATURE_LED_RING // Mayhew Labs Led Ring support
|
||||||
|
// #define FEATURE_ALPHABET_SEND_PRACTICE // enables command mode S command - created by Ryan, KC2ZWM
|
||||||
|
// #define FEATURE_COMMAND_MODE_PROGRESSIVE_5_CHAR_ECHO_PRACTICE // enables command mode U
|
||||||
|
// #define FEATURE_PTT_INTERLOCK
|
||||||
|
// #define FEATURE_QLF
|
||||||
|
// #define FEATURE_EEPROM_E24C1024
|
||||||
|
// #define FEATURE_STRAIGHT_KEY
|
||||||
|
// #define FEATURE_DYNAMIC_DAH_TO_DIT_RATIO
|
||||||
|
// #define FEATURE_PADDLE_ECHO
|
||||||
|
// #define FEATURE_STRAIGHT_KEY_ECHO
|
||||||
|
// #define FEATURE_AMERICAN_MORSE
|
||||||
|
// #define FEATURE_4x4_KEYPAD // code contributed by Jack, W0XR - documentation: https://github.com/k3ng/k3ng_cw_keyer/wiki/380-Feature:-Keypad
|
||||||
|
// #define FEATURE_3x4_KEYPAD // code contributed by Jack, W0XR - documentation: https://github.com/k3ng/k3ng_cw_keyer/wiki/380-Feature:-Keypad
|
||||||
|
// #define FEATURE_SEQUENCER
|
||||||
|
// #define FEATURE_COMMAND_MODE_ENHANCED_CMD_ACKNOWLEDGEMENT
|
||||||
|
// #define FEATURE_WEB_SERVER // Details: https://github.com/k3ng/k3ng_cw_keyer/wiki/390-Feature:-Ethernet,-Web-Server,-and-Internet-Linking
|
||||||
|
// #define FEATURE_INTERNET_LINK // Details: https://github.com/k3ng/k3ng_cw_keyer/wiki/390-Feature:-Ethernet,-Web-Server,-and-Internet-Linking
|
||||||
|
|
||||||
|
// #define FEATURE_COMMAND_LINE_INTERFACE_ON_SECONDARY_PORT // Activate the Command Line interface on the secondary serial port
|
||||||
|
#define OPTION_PRIMARY_SERIAL_PORT_DEFAULT_WINKEY_EMULATION // Use when activating both FEATURE_WINKEY_EMULATION and FEATURE_COMMAND_LINE_INTERFACE
|
||||||
|
// simultaneously. This will make Winkey emulation be the default at boot up;
|
||||||
|
// hold command button down at boot up to activate CLI mode
|
||||||
|
|
||||||
|
// #define OPTION_SUPPRESS_SERIAL_BOOT_MSG
|
||||||
|
#define OPTION_INCLUDE_PTT_TAIL_FOR_MANUAL_SENDING
|
||||||
|
#define OPTION_EXCLUDE_PTT_HANG_TIME_FOR_MANUAL_SENDING
|
||||||
|
// #define OPTION_WINKEY_DISCARD_BYTES_AT_STARTUP // if ASR is not disabled, you may need this to discard errant serial port bytes at startup
|
||||||
|
// #define OPTION_WINKEY_STRICT_EEPROM_WRITES_MAY_WEAR_OUT_EEPROM // with this activated the unit will write non-volatile settings to EEPROM when set by Winkey commands
|
||||||
|
// #define OPTION_WINKEY_SEND_WORDSPACE_AT_END_OF_BUFFER
|
||||||
|
#define OPTION_WINKEY_STRICT_HOST_OPEN // require an admin host open Winkey command before doing any other commands
|
||||||
|
#define OPTION_WINKEY_2_SUPPORT // comment out to revert to Winkey version 1 emulation
|
||||||
|
#define OPTION_WINKEY_INTERRUPTS_MEMORY_REPEAT
|
||||||
|
//#define OPTION_WINKEY_UCXLOG_9600_BAUD // use this only with UCXLog configured for Winkey 9600 baud mode
|
||||||
|
#define OPTION_WINKEY_2_HOST_CLOSE_NO_SERIAL_PORT_RESET // (Required for Win-Test to function)
|
||||||
|
// #define OPTION_WINKEY_FREQUENT_STATUS_REPORT // activate this to make Winkey emulation play better with RUMlog and RUMped
|
||||||
|
#define OPTION_WINKEY_IGNORE_LOWERCASE // Enable for typical K1EL Winkeyer behavior (use for SkookumLogger version 1.10.14 and prior to workaround "r" bug)
|
||||||
|
// #define OPTION_WINKEY_BLINK_PTT_ON_HOST_OPEN
|
||||||
|
// #define OPTION_WINKEY_SEND_VERSION_ON_HOST_CLOSE
|
||||||
|
// #define OPTION_WINKEY_PINCONFIG_PTT_CONTROLS_PTT_LINE // Have Winkeyer PTT setting activate/deactivate PTT line rather than control buffered character PTT hold
|
||||||
|
// #define OPTION_REVERSE_BUTTON_ORDER // This is mainly for the DJ0MY NanoKeyer http://nanokeyer.wordpress.com/
|
||||||
|
#define OPTION_PROG_MEM_TRIM_TRAILING_SPACES // trim trailing spaces from memory when programming in command mode
|
||||||
|
#define OPTION_DIT_PADDLE_NO_SEND_ON_MEM_RPT // this makes dit paddle memory interruption a little smoother
|
||||||
|
#define OPTION_MORE_DISPLAY_MSGS // additional optional display messages - comment out to save memory
|
||||||
|
// #define OPTION_WATCHDOG_TIMER // this enables a four second ATmega48/88/168/328 watchdog timer; use for unattended/remote operation only
|
||||||
|
// #define OPTION_MOUSE_MOVEMENT_PADDLE // experimental (just fooling around) - mouse movement will act like a paddle
|
||||||
|
// #define OPTION_NON_ENGLISH_EXTENSIONS // add support for additional CW characters (i.e. À, Å, Þ, etc.)
|
||||||
|
// #define OPTION_DISPLAY_NON_ENGLISH_EXTENSIONS // LCD display suport for non-English (NO/DK/DE) characters - Courtesy of OZ1JHM
|
||||||
|
// #define OPTION_UNKNOWN_CHARACTER_ERROR_TONE
|
||||||
|
// #define OPTION_DO_NOT_SAY_HI
|
||||||
|
// #define OPTION_PS2_NON_ENGLISH_CHAR_LCD_DISPLAY_SUPPORT // makes some non-English characters from the PS2 keyboard display correctly in the LCD display (donated by Marcin sp5iou)
|
||||||
|
// #define OPTION_PS2_KEYBOARD_RESET // reset the PS2 keyboard upon startup with 0xFF (contributed by Bill, W9BEL)
|
||||||
|
// #define OPTION_SAVE_MEMORY_NANOKEYER
|
||||||
|
#define OPTION_CW_KEYBOARD_CAPSLOCK_BEEP
|
||||||
|
// #define OPTION_CW_KEYBOARD_ITALIAN
|
||||||
|
// #define OPTION_CW_KEYBOARD_GERMAN
|
||||||
|
// #define OPTION_CW_DECODER_GOERTZEL_AUDIO_DETECTOR
|
||||||
|
// #define OPTION_INVERT_PADDLE_PIN_LOGIC
|
||||||
|
// #define OPTION_ADVANCED_SPEED_DISPLAY //enables "nerd" speed visualization on display: wpm, cpm (char per min), duration of dit and dah in milliseconds and ratio (contributed by Giorgio, IZ2XBZ)
|
||||||
|
#define OPTION_PROSIGN_SUPPORT // additional prosign support for paddle and straight key echo on display, CLI, and in memory storage
|
||||||
|
// #define OPTION_RUSSIAN_LANGUAGE_SEND_CLI // Russian language CLI sending support (contributed by Павел Бирюков, UA1AQC)
|
||||||
|
#define OPTION_DO_NOT_SEND_UNKNOWN_CHAR_QUESTION
|
||||||
|
// #define OPTION_CMOS_SUPER_KEYER_IAMBIC_B_TIMING_ON_BY_DEFAULT
|
||||||
|
// #define OPTION_SIDETONE_DIGITAL_OUTPUT_NO_SQUARE_WAVE
|
||||||
|
// #define FEATURE_SD_CARD_SUPPORT
|
||||||
|
|
||||||
|
// #define OPTION_DIRECT_PADDLE_PIN_READS_MEGA // only works with Mega and pins 2 and 5 - minor performance increase
|
||||||
|
// #define OPTION_DIRECT_PADDLE_PIN_READS_UNO // Unos or Nanos pins 2 and 5 - do not enable on a nanoKeyer, it uses different pins
|
||||||
|
|
||||||
|
// #define OPTION_WORDSWORTH_CZECH
|
||||||
|
// #define OPTION_WORDSWORTH_DEUTSCH
|
||||||
|
// #define OPTION_WORDSWORTH_NORSK
|
||||||
|
|
||||||
|
#define OPTION_EXCLUDE_EXTENDED_CLI_COMMANDS
|
||||||
|
|
||||||
|
// #define OPTION_DFROBOT_LCD_COMMAND_BUTTONS
|
||||||
|
|
||||||
|
// #define OPTION_EXCLUDE_MILL_MODE
|
||||||
|
// #define OPTION_NO_ULTIMATIC // reduce memory usage by removing ultimatic code.
|
||||||
|
|
||||||
|
// #define OPTION_DISABLE_SERIAL_PORT_CHECKING_WHILE_SENDING_CW
|
||||||
|
// #define OPTION_PERSONALIZED_STARTUP_SCREEN // displays a user defined string of characters on the second or fourth row of the screen during startup. 1602 display requires OPTION_DO_NOT_SAY_HI
|
||||||
|
// #define OPTION_SWAP_PADDLE_PARAMETER_CHANGE_DIRECTION // reverses the up/down direction when using the paddles to change the wpm or sidetone frequency
|
||||||
|
// #define OPTION_DISPLAY_MEMORY_CONTENTS_COMMAND_MODE
|
||||||
|
|
||||||
|
// #define OPTION_BEACON_MODE_MEMORY_REPEAT_TIME // to space out the repeated playing of memory 1 when in beacon mode
|
||||||
|
// #define OPTION_BEACON_MODE_PTT_TAIL_TIME // adds the ptt tail time to each playing of memory 1 in beacon mode
|
||||||
|
|
||||||
|
// #define OPTION_WINKEY_PROSIGN_COMPATIBILITY // Additional character mappings to support K1EL Winkey emulation prosigns
|
130
k3ng_keyer/keyer_features_and_options_k5bcq.h
Executable file
130
k3ng_keyer/keyer_features_and_options_k5bcq.h
Executable file
|
@ -0,0 +1,130 @@
|
||||||
|
// compile time features and options - comment or uncomment to add or delete features
|
||||||
|
// FEATURES add more bytes to the compiled binary, OPTIONS change code behavior
|
||||||
|
|
||||||
|
|
||||||
|
#define FEATURE_BUTTONS
|
||||||
|
#define FEATURE_COMMAND_MODE
|
||||||
|
#define FEATURE_COMMAND_LINE_INTERFACE // Command Line Interface functionality
|
||||||
|
#define FEATURE_MEMORIES // on the Arduino Due, you must have FEATURE_EEPROM_E24C1024 and E24C1024 EEPROM hardware in order to compile this
|
||||||
|
#define FEATURE_MEMORY_MACROS
|
||||||
|
#define FEATURE_WINKEY_EMULATION // disabling Automatic Software Reset is highly recommended (see documentation)
|
||||||
|
#define FEATURE_BEACON // Go into beacon mode if paddle_left pin is LOW at boot up
|
||||||
|
#define FEATURE_BEACON_SETTING // Go into beacon mode at boot up if EEPROM setting is enabled (\_ CLI Command)
|
||||||
|
// #define FEATURE_TRAINING_COMMAND_LINE_INTERFACE
|
||||||
|
// #define FEATURE_POTENTIOMETER // do not enable unless you have a potentiometer connected, otherwise noise will falsely trigger wpm changes
|
||||||
|
// #define FEATURE_SIDETONE_SWITCH // adds switch control for the sidetone output. requires an external toggle switch (assigned to an arduino pin - see keyer_pin_settings.h).
|
||||||
|
// #define FEATURE_SIDETONE_NEWTONE // Use the NewTone library, ~1k smaller code size than the standard tone library. Uses timer1 (pins 9 or 10) https://bitbucket.org/teckel12/arduino-new-tone/wiki/Home
|
||||||
|
#define FEATURE_SERIAL_HELP
|
||||||
|
#define FEATURE_HELL
|
||||||
|
#define FEATURE_PS2_KEYBOARD // Use a PS2 keyboard to send code - Change keyboard layout (non-US) in K3NG_PS2Keyboard.h. Additional options below.
|
||||||
|
// #define FEATURE_USB_KEYBOARD // Use a USB keyboard to send code - Uncomment three lines in k3ng_keyer.ino (search for note_usb_uncomment_lines)
|
||||||
|
// #define FEATURE_CW_COMPUTER_KEYBOARD // Have an Arduino Due or Leonardo act as a USB HID (Human Interface Device) keyboard and use the paddle to "type" characters on the computer -- uncomment this line in ino file: #include <Keyboard.h>
|
||||||
|
#define FEATURE_DEAD_OP_WATCHDOG
|
||||||
|
#define FEATURE_AUTOSPACE
|
||||||
|
#define FEATURE_FARNSWORTH
|
||||||
|
// #define FEATURE_DL2SBA_BANKSWITCH // Switch memory banks feature as described here: http://dl2sba.com/index.php?option=com_content&view=article&id=131:nanokeyer&catid=15:shack&Itemid=27#english
|
||||||
|
#define FEATURE_LCD_4BIT // classic LCD disidefplay using 4 I/O lines
|
||||||
|
// #define FEATURE_LCD_8BIT // classic LCD display using 8 I/O lines
|
||||||
|
// #define FEATURE_LCD_ADAFRUIT_I2C // Adafruit I2C LCD display using MCP23017 at addr 0x20
|
||||||
|
// #define FEATURE_LCD_ADAFRUIT_BACKPACK // Adafruit I2C LCD Backup using MCP23008 (courtesy Josiah Ritchie, KE0BLL)
|
||||||
|
// #define FEATURE_LCD_YDv1 // YourDuino I2C LCD display with old LCM 1602 V1 ic
|
||||||
|
// #define FEATURE_LCD1602_N07DH // http://linksprite.com/wiki/index.php5?title=16_X_2_LCD_Keypad_Shield_for_Arduino
|
||||||
|
// #define FEATURE_LCD_SAINSMART_I2C
|
||||||
|
// #define FEATURE_LCD_FABO_PCF8574 // https://github.com/FaBoPlatform/FaBoLCD-PCF8574-Library
|
||||||
|
// #define FEATURE_LCD_I2C_FDEBRABANDER //https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library
|
||||||
|
#define FEATURE_CW_DECODER // https://github.com/k3ng/k3ng_cw_keyer/wiki/385-Feature:-CW-Decoder
|
||||||
|
// #define FEATURE_SLEEP // go to sleep after x minutes to conserve battery power (not compatible with Arduino DUE, may have mixed results with Mega and Mega ADK)
|
||||||
|
// #define FEATURE_LCD_BACKLIGHT_AUTO_DIM // turn off LCD backlight and/or dim Power Indicator LED after x minutes (LED requires a PWM pin)
|
||||||
|
#define FEATURE_ROTARY_ENCODER // rotary encoder speed control
|
||||||
|
// #define FEATURE_CMOS_SUPER_KEYER_IAMBIC_B_TIMING
|
||||||
|
// #define FEATURE_USB_MOUSE // Uncomment three lines in k3ng_keyer.ino (search for note_usb_uncomment_lines)
|
||||||
|
// #define FEATURE_CAPACITIVE_PADDLE_PINS // remove the bypass capacitors on the paddle_left and paddle_right lines when using capactive paddles
|
||||||
|
// #define FEATURE_LED_RING // Mayhew Labs Led Ring support
|
||||||
|
#define FEATURE_ALPHABET_SEND_PRACTICE // enables command mode S command - created by Ryan, KC2ZWM
|
||||||
|
#define FEATURE_COMMAND_MODE_PROGRESSIVE_5_CHAR_ECHO_PRACTICE // enables command mode U
|
||||||
|
// #define FEATURE_PTT_INTERLOCK
|
||||||
|
// #define FEATURE_QLF
|
||||||
|
// #define FEATURE_EEPROM_E24C1024
|
||||||
|
// #define FEATURE_STRAIGHT_KEY //Highly recommended to leave disabled. Booting with straight key plugged in works better (timing issues w/ this feature w/paddles)
|
||||||
|
// #define FEATURE_DYNAMIC_DAH_TO_DIT_RATIO
|
||||||
|
// #define FEATURE_PADDLE_ECHO
|
||||||
|
// #define FEATURE_STRAIGHT_KEY_ECHO
|
||||||
|
// #define FEATURE_AMERICAN_MORSE
|
||||||
|
// #define FEATURE_4x4_KEYPAD // code contributed by Jack, W0XR - documentation: https://github.com/k3ng/k3ng_cw_keyer/wiki/380-Feature:-Keypad
|
||||||
|
// #define FEATURE_3x4_KEYPAD // code contributed by Jack, W0XR - documentation: https://github.com/k3ng/k3ng_cw_keyer/wiki/380-Feature:-Keypad
|
||||||
|
// #define FEATURE_SEQUENCER
|
||||||
|
// #define FEATURE_SD_CARD_SUPPORT
|
||||||
|
// #define FEATURE_COMMAND_MODE_ENHANCED_CMD_ACKNOWLEDGEMENT
|
||||||
|
// #define FEATURE_WEB_SERVER // Details: https://github.com/k3ng/k3ng_cw_keyer/wiki/390-Feature:-Ethernet,-Web-Server,-and-Internet-Linking
|
||||||
|
// #define FEATURE_INTERNET_LINK // Details: https://github.com/k3ng/k3ng_cw_keyer/wiki/390-Feature:-Ethernet,-Web-Server,-and-Internet-Linking
|
||||||
|
|
||||||
|
// #define FEATURE_COMMAND_LINE_INTERFACE_ON_SECONDARY_PORT // Activate the Command Line interface on the secondary serial port
|
||||||
|
#define OPTION_PRIMARY_SERIAL_PORT_DEFAULT_WINKEY_EMULATION // Use when activating both FEATURE_WINKEY_EMULATION and FEATURE_COMMAND_LINE_INTERFACE
|
||||||
|
// simultaneously. This will make Winkey emulation be the default at boot up;
|
||||||
|
// hold command button down at boot up to activate CLI mode
|
||||||
|
|
||||||
|
// #define OPTION_SUPPRESS_SERIAL_BOOT_MSG
|
||||||
|
#define OPTION_INCLUDE_PTT_TAIL_FOR_MANUAL_SENDING
|
||||||
|
#define OPTION_EXCLUDE_PTT_HANG_TIME_FOR_MANUAL_SENDING
|
||||||
|
// #define OPTION_WINKEY_DISCARD_BYTES_AT_STARTUP // if ASR is not disabled, you may need this to discard errant serial port bytes at startup
|
||||||
|
// #define OPTION_WINKEY_STRICT_EEPROM_WRITES_MAY_WEAR_OUT_EEPROM // with this activated the unit will write non-volatile settings to EEPROM when set by Winkey commands
|
||||||
|
// #define OPTION_WINKEY_SEND_WORDSPACE_AT_END_OF_BUFFER
|
||||||
|
#define OPTION_WINKEY_STRICT_HOST_OPEN // require an admin host open Winkey command before doing any other commands
|
||||||
|
#define OPTION_WINKEY_2_SUPPORT // comment out to revert to Winkey version 1 emulation
|
||||||
|
#define OPTION_WINKEY_INTERRUPTS_MEMORY_REPEAT
|
||||||
|
//#define OPTION_WINKEY_UCXLOG_9600_BAUD // use this only with UCXLog configured for Winkey 9600 baud mode
|
||||||
|
#define OPTION_WINKEY_2_HOST_CLOSE_NO_SERIAL_PORT_RESET // (Required for Win-Test to function)
|
||||||
|
// #define OPTION_WINKEY_FREQUENT_STATUS_REPORT // activate this to make Winkey emulation play better with RUMlog and RUMped
|
||||||
|
#define OPTION_WINKEY_IGNORE_LOWERCASE // Enable for typical K1EL Winkeyer behavior (use for SkookumLogger version 1.10.14 and prior to workaround "r" bug)
|
||||||
|
// #define OPTION_WINKEY_BLINK_PTT_ON_HOST_OPEN
|
||||||
|
// #define OPTION_WINKEY_SEND_VERSION_ON_HOST_CLOSE
|
||||||
|
// #define OPTION_WINKEY_PINCONFIG_PTT_CONTROLS_PTT_LINE // Have Winkeyer PTT setting activate/deactivate PTT line rather than control buffered character PTT hold
|
||||||
|
// #define OPTION_REVERSE_BUTTON_ORDER // This is mainly for the DJ0MY NanoKeyer http://nanokeyer.wordpress.com/
|
||||||
|
#define OPTION_PROG_MEM_TRIM_TRAILING_SPACES // trim trailing spaces from memory when programming in command mode
|
||||||
|
#define OPTION_DIT_PADDLE_NO_SEND_ON_MEM_RPT // this makes dit paddle memory interruption a little smoother
|
||||||
|
#define OPTION_MORE_DISPLAY_MSGS // additional optional display messages - comment out to save memory
|
||||||
|
// #define OPTION_WATCHDOG_TIMER // this enables a four second ATmega48/88/168/328 watchdog timer; use for unattended/remote operation only
|
||||||
|
// #define OPTION_MOUSE_MOVEMENT_PADDLE // experimental (just fooling around) - mouse movement will act like a paddle
|
||||||
|
// #define OPTION_NON_ENGLISH_EXTENSIONS // add support for additional CW characters (i.e. À, Å, Þ, etc.)
|
||||||
|
// #define OPTION_DISPLAY_NON_ENGLISH_EXTENSIONS // LCD display suport for non-English (NO/DK/DE) characters - Courtesy of OZ1JHM
|
||||||
|
// #define OPTION_UNKNOWN_CHARACTER_ERROR_TONE
|
||||||
|
// #define OPTION_DO_NOT_SAY_HI
|
||||||
|
// #define OPTION_PS2_NON_ENGLISH_CHAR_LCD_DISPLAY_SUPPORT // makes some non-English characters from the PS2 keyboard display correctly in the LCD display (donated by Marcin sp5iou)
|
||||||
|
// #define OPTION_PS2_KEYBOARD_RESET // reset the PS2 keyboard upon startup with 0xFF (contributed by Bill, W9BEL)
|
||||||
|
// #define OPTION_SAVE_MEMORY_NANOKEYER
|
||||||
|
#define OPTION_CW_KEYBOARD_CAPSLOCK_BEEP
|
||||||
|
// #define OPTION_CW_KEYBOARD_ITALIAN
|
||||||
|
// #define OPTION_CW_KEYBOARD_GERMAN
|
||||||
|
#define OPTION_CW_DECODER_GOERTZEL_AUDIO_DETECTOR //Goertzel default is 558Hz, with 186Hz bandwidth. Edit goertzel.h in libraries as desired.
|
||||||
|
// #define OPTION_INVERT_PADDLE_PIN_LOGIC
|
||||||
|
#define OPTION_ADVANCED_SPEED_DISPLAY //enables "nerd" speed visualization on display: wpm, cpm (char per min), duration of dit and dah in milliseconds and ratio (contributed by Giorgio, IZ2XBZ)
|
||||||
|
#define OPTION_PROSIGN_SUPPORT // additional prosign support for paddle and straight key echo on display, CLI, and in memory storage
|
||||||
|
// #define OPTION_RUSSIAN_LANGUAGE_SEND_CLI // Russian language CLI sending support (contributed by Павел Бирюков, UA1AQC)
|
||||||
|
#define OPTION_DO_NOT_SEND_UNKNOWN_CHAR_QUESTION
|
||||||
|
// #define OPTION_CMOS_SUPER_KEYER_IAMBIC_B_TIMING_ON_BY_DEFAULT
|
||||||
|
#define OPTION_SIDETONE_DIGITAL_OUTPUT_NO_SQUARE_WAVE //comment out if not using the twin T oscillator. Remember to change audio out pin
|
||||||
|
|
||||||
|
// #define OPTION_DIRECT_PADDLE_PIN_READS_MEGA // only works with Mega and pins 2 and 5 - minor performance increase
|
||||||
|
// #define OPTION_DIRECT_PADDLE_PIN_READS_UNO // Unos or Nanos pins 2 and 5 - do not enable on a nanoKeyer, it uses different pins
|
||||||
|
|
||||||
|
// #define OPTION_WORDSWORTH_CZECH
|
||||||
|
// #define OPTION_WORDSWORTH_DEUTSCH
|
||||||
|
// #define OPTION_WORDSWORTH_NORSK
|
||||||
|
|
||||||
|
#define OPTION_EXCLUDE_EXTENDED_CLI_COMMANDS
|
||||||
|
|
||||||
|
// #define OPTION_DFROBOT_LCD_COMMAND_BUTTONS
|
||||||
|
|
||||||
|
// #define OPTION_EXCLUDE_MILL_MODE
|
||||||
|
// #define OPTION_NO_ULTIMATIC // reduce memory usage by removing ultimatic code.
|
||||||
|
|
||||||
|
// #define OPTION_DISABLE_SERIAL_PORT_CHECKING_WHILE_SENDING_CW
|
||||||
|
|
||||||
|
// #define OPTION_PERSONALIZED_STARTUP_SCREEN // displays a user defined string of characters on the second or fourth row of the screen during startup. 1602 display requires OPTION_DO_NOT_SAY_HI
|
||||||
|
// #define OPTION_SWAP_PADDLE_PARAMETER_CHANGE_DIRECTION // reverses the up/down direction when using the paddles to change the wpm or sidetone frequency
|
||||||
|
// #define OPTION_DISPLAY_MEMORY_CONTENTS_COMMAND_MODE
|
||||||
|
|
||||||
|
// #define OPTION_BEACON_MODE_MEMORY_REPEAT_TIME // to space out the repeated playing of memory 1 when in beacon mode
|
||||||
|
// #define OPTION_BEACON_MODE_PTT_TAIL_TIME // adds the ptt tail time to each playing of memory 1 in beacon mode
|
||||||
|
|
||||||
|
// #define OPTION_WINKEY_PROSIGN_COMPATIBILITY // Additional character mappings to support K1EL Winkey emulation prosigns
|
143
k3ng_keyer/keyer_features_and_options_maple_mini.h
Executable file
143
k3ng_keyer/keyer_features_and_options_maple_mini.h
Executable file
|
@ -0,0 +1,143 @@
|
||||||
|
/*
|
||||||
|
|
||||||
|
# # ## ##### # ###### # # # # # #
|
||||||
|
## ## # # # # # # ## ## # ## # #
|
||||||
|
# ## # # # # # # ##### # ## # # # # # #
|
||||||
|
# # ###### ##### # # # # # # # # #
|
||||||
|
# # # # # # # # # # # ## #
|
||||||
|
# # # # # ###### ###### # # # # # #
|
||||||
|
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// compile time features and options - comment or uncomment to add or delete features
|
||||||
|
// FEATURES add more bytes to the compiled binary, OPTIONS change code behavior
|
||||||
|
|
||||||
|
|
||||||
|
#define FEATURE_BUTTONS
|
||||||
|
#define FEATURE_COMMAND_MODE
|
||||||
|
#define FEATURE_COMMAND_LINE_INTERFACE // Command Line Interface functionality
|
||||||
|
#define FEATURE_MEMORIES // on the Arduino Due, you must have FEATURE_EEPROM_E24C1024 and E24C1024 EEPROM hardware in order to compile this
|
||||||
|
#define FEATURE_MEMORY_MACROS
|
||||||
|
#define FEATURE_WINKEY_EMULATION // disabling Automatic Software Reset is highly recommended (see documentation)
|
||||||
|
#define FEATURE_BEACON // Go into beacon mode if paddle_left pin is LOW at boot up
|
||||||
|
#define FEATURE_BEACON_SETTING // Go into beacon mode at boot up if EEPROM setting is enabled (\_ CLI Command)
|
||||||
|
// #define FEATURE_TRAINING_COMMAND_LINE_INTERFACE
|
||||||
|
#define FEATURE_POTENTIOMETER // do not enable unless you have a potentiometer connected, otherwise noise will falsely trigger wpm changes
|
||||||
|
// #define FEATURE_SIDETONE_SWITCH // adds switch control for the sidetone output. requires an external toggle switch (assigned to an arduino pin - see keyer_pin_settings.h).
|
||||||
|
// #define FEATURE_SIDETONE_NEWTONE // Use the NewTone library, ~1k smaller code size than the standard tone library. Uses timer1 (pins 9 or 10) https://bitbucket.org/teckel12/arduino-new-tone/wiki/Home
|
||||||
|
#define FEATURE_SERIAL_HELP
|
||||||
|
#define FEATURE_HELL
|
||||||
|
// #define FEATURE_PS2_KEYBOARD // Use a PS2 keyboard to send code - Change keyboard layout (non-US) in K3NG_PS2Keyboard.h. Additional options below.
|
||||||
|
// #define FEATURE_USB_KEYBOARD // Use a USB keyboard to send code - Uncomment three lines in k3ng_keyer.ino (search for note_usb_uncomment_lines)
|
||||||
|
// #define FEATURE_CW_COMPUTER_KEYBOARD // Have an Arduino Due or Leonardo act as a USB HID (Human Interface Device) keyboard and use the paddle to "type" characters on the computer -- uncomment this line in ino file: #include <Keyboard.h>
|
||||||
|
#define FEATURE_DEAD_OP_WATCHDOG
|
||||||
|
#define FEATURE_AUTOSPACE
|
||||||
|
#define FEATURE_FARNSWORTH
|
||||||
|
// #define FEATURE_DL2SBA_BANKSWITCH // Switch memory banks feature as described here: http://dl2sba.com/index.php?option=com_content&view=article&id=131:nanokeyer&catid=15:shack&Itemid=27#english
|
||||||
|
#define FEATURE_LCD_4BIT // classic LCD disidefplay using 4 I/O lines
|
||||||
|
// #define FEATURE_LCD_8BIT // classic LCD display using 8 I/O lines
|
||||||
|
// #define FEATURE_LCD_ADAFRUIT_I2C // Adafruit I2C LCD display using MCP23017 at addr 0x20
|
||||||
|
// #define FEATURE_LCD_ADAFRUIT_BACKPACK // Adafruit I2C LCD Backup using MCP23008 (courtesy Josiah Ritchie, KE0BLL)
|
||||||
|
// #define FEATURE_LCD_YDv1 // YourDuino I2C LCD display with old LCM 1602 V1 ic
|
||||||
|
// #define FEATURE_LCD1602_N07DH // http://linksprite.com/wiki/index.php5?title=16_X_2_LCD_Keypad_Shield_for_Arduino
|
||||||
|
// #define FEATURE_LCD_SAINSMART_I2C
|
||||||
|
// #define FEATURE_LCD_FABO_PCF8574 // https://github.com/FaBoPlatform/FaBoLCD-PCF8574-Library
|
||||||
|
// #define FEATURE_LCD_I2C_FDEBRABANDER //https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library
|
||||||
|
// #define FEATURE_CW_DECODER // https://github.com/k3ng/k3ng_cw_keyer/wiki/385-Feature:-CW-Decoder
|
||||||
|
// #define FEATURE_SLEEP // go to sleep after x minutes to conserve battery power (not compatible with Arduino DUE, may have mixed results with Mega and Mega ADK)
|
||||||
|
// #define FEATURE_LCD_BACKLIGHT_AUTO_DIM // turn off LCD backlight and/or dim Power Indicator LED after x minutes (LED requires a PWM pin)
|
||||||
|
// #define FEATURE_ROTARY_ENCODER // rotary encoder speed control
|
||||||
|
// #define FEATURE_CMOS_SUPER_KEYER_IAMBIC_B_TIMING
|
||||||
|
// #define FEATURE_USB_MOUSE // Uncomment three lines in k3ng_keyer.ino (search for note_usb_uncomment_lines)
|
||||||
|
// #define FEATURE_CAPACITIVE_PADDLE_PINS // remove the bypass capacitors on the paddle_left and paddle_right lines when using capactive paddles
|
||||||
|
// #define FEATURE_LED_RING // Mayhew Labs Led Ring support
|
||||||
|
#define FEATURE_ALPHABET_SEND_PRACTICE // enables command mode S command - created by Ryan, KC2ZWM
|
||||||
|
#define FEATURE_COMMAND_MODE_PROGRESSIVE_5_CHAR_ECHO_PRACTICE // enables command mode U
|
||||||
|
// #define FEATURE_PTT_INTERLOCK
|
||||||
|
#define FEATURE_QLF
|
||||||
|
// #define FEATURE_EEPROM_E24C1024
|
||||||
|
// #define FEATURE_STRAIGHT_KEY
|
||||||
|
// #define FEATURE_DYNAMIC_DAH_TO_DIT_RATIO
|
||||||
|
// #define FEATURE_PADDLE_ECHO
|
||||||
|
// #define FEATURE_STRAIGHT_KEY_ECHO
|
||||||
|
// #define FEATURE_AMERICAN_MORSE
|
||||||
|
// #define FEATURE_4x4_KEYPAD // code contributed by Jack, W0XR - documentation: https://github.com/k3ng/k3ng_cw_keyer/wiki/380-Feature:-Keypad
|
||||||
|
// #define FEATURE_3x4_KEYPAD // code contributed by Jack, W0XR - documentation: https://github.com/k3ng/k3ng_cw_keyer/wiki/380-Feature:-Keypad
|
||||||
|
// #define FEATURE_SEQUENCER
|
||||||
|
// #define FEATURE_SD_CARD_SUPPORT
|
||||||
|
// #define FEATURE_COMMAND_MODE_ENHANCED_CMD_ACKNOWLEDGEMENT
|
||||||
|
// #define FEATURE_WEB_SERVER // Details: https://github.com/k3ng/k3ng_cw_keyer/wiki/390-Feature:-Ethernet,-Web-Server,-and-Internet-Linking
|
||||||
|
// #define FEATURE_INTERNET_LINK // Details: https://github.com/k3ng/k3ng_cw_keyer/wiki/390-Feature:-Ethernet,-Web-Server,-and-Internet-Linking
|
||||||
|
|
||||||
|
// #define FEATURE_COMMAND_LINE_INTERFACE_ON_SECONDARY_PORT // Activate the Command Line interface on the secondary serial port
|
||||||
|
#define OPTION_PRIMARY_SERIAL_PORT_DEFAULT_WINKEY_EMULATION // Use when activating both FEATURE_WINKEY_EMULATION and FEATURE_COMMAND_LINE_INTERFACE
|
||||||
|
// simultaneously. This will make Winkey emulation be the default at boot up;
|
||||||
|
// hold command button down at boot up to activate CLI mode
|
||||||
|
|
||||||
|
//#define OPTION_SUPPRESS_SERIAL_BOOT_MSG
|
||||||
|
#define OPTION_INCLUDE_PTT_TAIL_FOR_MANUAL_SENDING
|
||||||
|
#define OPTION_EXCLUDE_PTT_HANG_TIME_FOR_MANUAL_SENDING
|
||||||
|
// #define OPTION_WINKEY_DISCARD_BYTES_AT_STARTUP // if ASR is not disabled, you may need this to discard errant serial port bytes at startup
|
||||||
|
// #define OPTION_WINKEY_STRICT_EEPROM_WRITES_MAY_WEAR_OUT_EEPROM // with this activated the unit will write non-volatile settings to EEPROM when set by Winkey commands
|
||||||
|
// #define OPTION_WINKEY_SEND_WORDSPACE_AT_END_OF_BUFFER
|
||||||
|
//#define OPTION_WINKEY_STRICT_HOST_OPEN // require an admin host open Winkey command before doing any other commands
|
||||||
|
#define OPTION_WINKEY_2_SUPPORT // comment out to revert to Winkey version 1 emulation
|
||||||
|
#define OPTION_WINKEY_INTERRUPTS_MEMORY_REPEAT
|
||||||
|
//#define OPTION_WINKEY_UCXLOG_9600_BAUD // use this only with UCXLog configured for Winkey 9600 baud mode
|
||||||
|
#define OPTION_WINKEY_2_HOST_CLOSE_NO_SERIAL_PORT_RESET // (Required for Win-Test to function)
|
||||||
|
// #define OPTION_WINKEY_FREQUENT_STATUS_REPORT // activate this to make Winkey emulation play better with RUMlog and RUMped
|
||||||
|
// #define OPTION_WINKEY_IGNORE_LOWERCASE // Enable for typical K1EL Winkeyer behavior (use for SkookumLogger version 1.10.14 and prior to workaround "r" bug)
|
||||||
|
// #define OPTION_WINKEY_BLINK_PTT_ON_HOST_OPEN
|
||||||
|
// #define OPTION_WINKEY_SEND_VERSION_ON_HOST_CLOSE
|
||||||
|
// #define OPTION_WINKEY_PINCONFIG_PTT_CONTROLS_PTT_LINE // Have Winkeyer PTT setting activate/deactivate PTT line rather than control buffered character PTT hold
|
||||||
|
// #define OPTION_REVERSE_BUTTON_ORDER // This is mainly for the DJ0MY NanoKeyer http://nanokeyer.wordpress.com/
|
||||||
|
#define OPTION_PROG_MEM_TRIM_TRAILING_SPACES // trim trailing spaces from memory when programming in command mode
|
||||||
|
#define OPTION_DIT_PADDLE_NO_SEND_ON_MEM_RPT // this makes dit paddle memory interruption a little smoother
|
||||||
|
#define OPTION_MORE_DISPLAY_MSGS // additional optional display messages - comment out to save memory
|
||||||
|
// #define OPTION_WATCHDOG_TIMER // this enables a four second ATmega48/88/168/328 watchdog timer; use for unattended/remote operation only
|
||||||
|
// #define OPTION_MOUSE_MOVEMENT_PADDLE // experimental (just fooling around) - mouse movement will act like a paddle
|
||||||
|
// #define OPTION_NON_ENGLISH_EXTENSIONS // add support for additional CW characters (i.e. À, Å, Þ, etc.)
|
||||||
|
// #define OPTION_DISPLAY_NON_ENGLISH_EXTENSIONS // LCD display suport for non-English (NO/DK/DE) characters - Courtesy of OZ1JHM
|
||||||
|
// #define OPTION_UNKNOWN_CHARACTER_ERROR_TONE
|
||||||
|
// #define OPTION_DO_NOT_SAY_HI
|
||||||
|
// #define OPTION_PS2_NON_ENGLISH_CHAR_LCD_DISPLAY_SUPPORT // makes some non-English characters from the PS2 keyboard display correctly in the LCD display (donated by Marcin sp5iou)
|
||||||
|
// #define OPTION_PS2_KEYBOARD_RESET // reset the PS2 keyboard upon startup with 0xFF (contributed by Bill, W9BEL)
|
||||||
|
// #define OPTION_SAVE_MEMORY_NANOKEYER
|
||||||
|
#define OPTION_CW_KEYBOARD_CAPSLOCK_BEEP
|
||||||
|
// #define OPTION_CW_KEYBOARD_ITALIAN
|
||||||
|
// #define OPTION_CW_KEYBOARD_GERMAN
|
||||||
|
// #define OPTION_CW_DECODER_GOERTZEL_AUDIO_DETECTOR
|
||||||
|
// #define OPTION_INVERT_PADDLE_PIN_LOGIC
|
||||||
|
// #define OPTION_ADVANCED_SPEED_DISPLAY //enables "nerd" speed visualization on display: wpm, cpm (char per min), duration of dit and dah in milliseconds and ratio (contributed by Giorgio, IZ2XBZ)
|
||||||
|
#define OPTION_PROSIGN_SUPPORT // additional prosign support for paddle and straight key echo on display, CLI, and in memory storage
|
||||||
|
// #define OPTION_RUSSIAN_LANGUAGE_SEND_CLI // Russian language CLI sending support (contributed by Павел Бирюков, UA1AQC)
|
||||||
|
#define OPTION_DO_NOT_SEND_UNKNOWN_CHAR_QUESTION
|
||||||
|
#define OPTION_CMOS_SUPER_KEYER_IAMBIC_B_TIMING_ON_BY_DEFAULT
|
||||||
|
// #define OPTION_SIDETONE_DIGITAL_OUTPUT_NO_SQUARE_WAVE
|
||||||
|
|
||||||
|
// #define OPTION_DIRECT_PADDLE_PIN_READS_MEGA // only works with Mega and pins 2 and 5 - minor performance increase
|
||||||
|
// #define OPTION_DIRECT_PADDLE_PIN_READS_UNO // Unos or Nanos pins 2 and 5 - do not enable on a nanoKeyer, it uses different pins
|
||||||
|
|
||||||
|
// #define OPTION_WORDSWORTH_CZECH
|
||||||
|
// #define OPTION_WORDSWORTH_DEUTSCH
|
||||||
|
// #define OPTION_WORDSWORTH_NORSK
|
||||||
|
|
||||||
|
// #define OPTION_EXCLUDE_EXTENDED_CLI_COMMANDS
|
||||||
|
|
||||||
|
// #define OPTION_DFROBOT_LCD_COMMAND_BUTTONS
|
||||||
|
|
||||||
|
// #define OPTION_EXCLUDE_MILL_MODE
|
||||||
|
// #define OPTION_NO_ULTIMATIC // reduce memory usage by removing ultimatic code.
|
||||||
|
|
||||||
|
// #define OPTION_DISABLE_SERIAL_PORT_CHECKING_WHILE_SENDING_CW
|
||||||
|
// #define OPTION_PERSONALIZED_STARTUP_SCREEN // displays a user defined string of characters on the second or fourth row of the screen during startup. 1602 display requires OPTION_DO_NOT_SAY_HI
|
||||||
|
// #define OPTION_SWAP_PADDLE_PARAMETER_CHANGE_DIRECTION // reverses the up/down direction when using the paddles to change the wpm or sidetone frequency
|
||||||
|
// #define OPTION_DISPLAY_MEMORY_CONTENTS_COMMAND_MODE
|
||||||
|
|
||||||
|
// #define OPTION_BEACON_MODE_MEMORY_REPEAT_TIME // to space out the repeated playing of memory 1 when in beacon mode
|
||||||
|
// #define OPTION_BEACON_MODE_PTT_TAIL_TIME // adds the ptt tail time to each playing of memory 1 in beacon mode
|
||||||
|
|
||||||
|
// #define OPTION_WINKEY_PROSIGN_COMPATIBILITY // Additional character mappings to support K1EL Winkey emulation prosigns
|
135
k3ng_keyer/keyer_features_and_options_megakeyer.h
Executable file
135
k3ng_keyer/keyer_features_and_options_megakeyer.h
Executable file
|
@ -0,0 +1,135 @@
|
||||||
|
//
|
||||||
|
// Features for W6IPA megakeyer v1.1 (CC) BY-NC-SA
|
||||||
|
// Project files are available here https://github.com/w6ipa/megakeyer
|
||||||
|
//
|
||||||
|
|
||||||
|
// FEATURES add more bytes to the compiled binary, OPTIONS change code behavior
|
||||||
|
|
||||||
|
|
||||||
|
#define FEATURE_BUTTONS
|
||||||
|
#define FEATURE_COMMAND_MODE
|
||||||
|
#define FEATURE_COMMAND_LINE_INTERFACE // Command Line Interface functionality
|
||||||
|
#define FEATURE_MEMORIES // on the Arduino Due, you must have FEATURE_EEPROM_E24C1024 and E24C1024 EEPROM hardware in order to compile this
|
||||||
|
#define FEATURE_MEMORY_MACROS
|
||||||
|
#define FEATURE_WINKEY_EMULATION // disabling Automatic Software Reset is highly recommended (see documentation)
|
||||||
|
#define FEATURE_BEACON // Go into beacon mode if paddle_left pin is LOW at boot up
|
||||||
|
#define FEATURE_BEACON_SETTING // Go into beacon mode at boot up if EEPROM setting is enabled (\_ CLI Command)
|
||||||
|
#define FEATURE_TRAINING_COMMAND_LINE_INTERFACE
|
||||||
|
// #define FEATURE_POTENTIOMETER // do not enable unless you have a potentiometer connected, otherwise noise will falsely trigger wpm changes
|
||||||
|
// #define FEATURE_SIDETONE_SWITCH // adds switch control for the sidetone output. requires an external toggle switch (assigned to an arduino pin - see keyer_pin_settings.h).
|
||||||
|
// #define FEATURE_SIDETONE_NEWTONE // Use the NewTone library, ~1k smaller code size than the standard tone library. Uses timer1 (pins 9 or 10) https://bitbucket.org/teckel12/arduino-new-tone/wiki/Home
|
||||||
|
#define FEATURE_SERIAL_HELP
|
||||||
|
// #define FEATURE_HELL
|
||||||
|
#define FEATURE_PS2_KEYBOARD // Use a PS2 keyboard to send code - Change keyboard layout (non-US) in K3NG_PS2Keyboard.h. Additional options below.
|
||||||
|
// #define FEATURE_USB_KEYBOARD // Use a USB keyboard to send code - Uncomment three lines in k3ng_keyer.ino (search for note_usb_uncomment_lines)
|
||||||
|
// #define FEATURE_CW_COMPUTER_KEYBOARD // Have an Arduino Due or Leonardo act as a USB HID (Human Interface Device) keyboard and use the paddle to "type" characters on the computer -- uncomment this line in ino file: #include <Keyboard.h>
|
||||||
|
// #define FEATURE_DEAD_OP_WATCHDOG
|
||||||
|
// #define FEATURE_AUTOSPACE
|
||||||
|
// #define FEATURE_FARNSWORTH
|
||||||
|
// #define FEATURE_DL2SBA_BANKSWITCH // Switch memory banks feature as described here: http://dl2sba.com/index.php?option=com_content&view=article&id=131:nanokeyer&catid=15:shack&Itemid=27#english
|
||||||
|
// #define FEATURE_LCD_4BIT // classic LCD disidefplay using 4 I/O lines
|
||||||
|
// #define FEATURE_LCD_8BIT // classic LCD display using 8 I/O lines
|
||||||
|
// #define FEATURE_LCD_ADAFRUIT_I2C // Adafruit I2C LCD display using MCP23017 at addr 0x20
|
||||||
|
// #define FEATURE_LCD_ADAFRUIT_BACKPACK // Adafruit I2C LCD Backup using MCP23008 (courtesy Josiah Ritchie, KE0BLL)
|
||||||
|
// #define FEATURE_LCD_YDv1 // YourDuino I2C LCD display with old LCM 1602 V1 ic
|
||||||
|
// #define FEATURE_LCD1602_N07DH // http://linksprite.com/wiki/index.php5?title=16_X_2_LCD_Keypad_Shield_for_Arduino
|
||||||
|
// #define FEATURE_LCD_SAINSMART_I2C
|
||||||
|
// #define FEATURE_LCD_FABO_PCF8574 // https://github.com/FaBoPlatform/FaBoLCD-PCF8574-Library
|
||||||
|
#define FEATURE_LCD_HD44780
|
||||||
|
// #define FEATURE_LCD_MATHERTEL_PCF8574 // https://github.com/mathertel/LiquidCrystal_PCF8574
|
||||||
|
// #define FEATURE_LCD_I2C_FDEBRABANDER //https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library
|
||||||
|
// #define FEATURE_CW_DECODER // https://github.com/k3ng/k3ng_cw_keyer/wiki/385-Feature:-CW-Decoder
|
||||||
|
// #define FEATURE_SLEEP // go to sleep after x minutes to conserve battery power (not compatible with Arduino DUE, may have mixed results with Mega and Mega ADK)
|
||||||
|
// #define FEATURE_LCD_BACKLIGHT_AUTO_DIM // turn off LCD backlight and/or dim Power Indicator LED after x minutes (LED requires a PWM pin)
|
||||||
|
#define FEATURE_ROTARY_ENCODER // rotary encoder speed control
|
||||||
|
#define FEATURE_CMOS_SUPER_KEYER_IAMBIC_B_TIMING
|
||||||
|
// #define FEATURE_USB_MOUSE // Uncomment three lines in k3ng_keyer.ino (search for note_usb_uncomment_lines)
|
||||||
|
// #define FEATURE_CAPACITIVE_PADDLE_PINS // remove the bypass capacitors on the paddle_left and paddle_right lines when using capactive paddles
|
||||||
|
// #define FEATURE_LED_RING // Mayhew Labs Led Ring support
|
||||||
|
#define FEATURE_ALPHABET_SEND_PRACTICE // enables command mode S command - created by Ryan, KC2ZWM
|
||||||
|
#define FEATURE_COMMAND_MODE_PROGRESSIVE_5_CHAR_ECHO_PRACTICE // enables command mode U
|
||||||
|
// #define FEATURE_PTT_INTERLOCK
|
||||||
|
// #define FEATURE_QLF
|
||||||
|
// #define FEATURE_EEPROM_E24C1024
|
||||||
|
// #define FEATURE_STRAIGHT_KEY
|
||||||
|
// #define FEATURE_DYNAMIC_DAH_TO_DIT_RATIO
|
||||||
|
// #define FEATURE_PADDLE_ECHO
|
||||||
|
// #define FEATURE_STRAIGHT_KEY_ECHO
|
||||||
|
// #define FEATURE_AMERICAN_MORSE
|
||||||
|
// #define FEATURE_4x4_KEYPAD // code contributed by Jack, W0XR - documentation: https://github.com/k3ng/k3ng_cw_keyer/wiki/380-Feature:-Keypad
|
||||||
|
// #define FEATURE_3x4_KEYPAD // code contributed by Jack, W0XR - documentation: https://github.com/k3ng/k3ng_cw_keyer/wiki/380-Feature:-Keypad
|
||||||
|
// #define FEATURE_SEQUENCER
|
||||||
|
// #define FEATURE_SD_CARD_SUPPORT
|
||||||
|
// #define FEATURE_COMMAND_MODE_ENHANCED_CMD_ACKNOWLEDGEMENT
|
||||||
|
// #define FEATURE_WEB_SERVER // Details: https://github.com/k3ng/k3ng_cw_keyer/wiki/390-Feature:-Ethernet,-Web-Server,-and-Internet-Linking
|
||||||
|
// #define FEATURE_INTERNET_LINK // Details: https://github.com/k3ng/k3ng_cw_keyer/wiki/390-Feature:-Ethernet,-Web-Server,-and-Internet-Linking
|
||||||
|
|
||||||
|
// #define FEATURE_COMMAND_LINE_INTERFACE_ON_SECONDARY_PORT // Activate the Command Line interface on the secondary serial port
|
||||||
|
#define OPTION_PRIMARY_SERIAL_PORT_DEFAULT_WINKEY_EMULATION // Use when activating both FEATURE_WINKEY_EMULATION and FEATURE_COMMAND_LINE_INTERFACE
|
||||||
|
// simultaneously. This will make Winkey emulation be the default at boot up;
|
||||||
|
// hold command button down at boot up to activate CLI mode
|
||||||
|
|
||||||
|
// #define OPTION_SUPPRESS_SERIAL_BOOT_MSG
|
||||||
|
#define OPTION_INCLUDE_PTT_TAIL_FOR_MANUAL_SENDING
|
||||||
|
#define OPTION_EXCLUDE_PTT_HANG_TIME_FOR_MANUAL_SENDING
|
||||||
|
// #define OPTION_WINKEY_DISCARD_BYTES_AT_STARTUP // if ASR is not disabled, you may need this to discard errant serial port bytes at startup
|
||||||
|
// #define OPTION_WINKEY_STRICT_EEPROM_WRITES_MAY_WEAR_OUT_EEPROM // with this activated the unit will write non-volatile settings to EEPROM when set by Winkey commands
|
||||||
|
// #define OPTION_WINKEY_SEND_WORDSPACE_AT_END_OF_BUFFER
|
||||||
|
#define OPTION_WINKEY_STRICT_HOST_OPEN // require an admin host open Winkey command before doing any other commands
|
||||||
|
#define OPTION_WINKEY_2_SUPPORT // comment out to revert to Winkey version 1 emulation
|
||||||
|
#define OPTION_WINKEY_INTERRUPTS_MEMORY_REPEAT
|
||||||
|
//#define OPTION_WINKEY_UCXLOG_9600_BAUD // use this only with UCXLog configured for Winkey 9600 baud mode
|
||||||
|
#define OPTION_WINKEY_2_HOST_CLOSE_NO_SERIAL_PORT_RESET // (Required for Win-Test to function)
|
||||||
|
// #define OPTION_WINKEY_FREQUENT_STATUS_REPORT // activate this to make Winkey emulation play better with RUMlog and RUMped
|
||||||
|
#define OPTION_WINKEY_IGNORE_LOWERCASE // Enable for typical K1EL Winkeyer behavior (use for SkookumLogger version 1.10.14 and prior to workaround "r" bug)
|
||||||
|
#define OPTION_WINKEY_BLINK_PTT_ON_HOST_OPEN
|
||||||
|
// #define OPTION_WINKEY_SEND_VERSION_ON_HOST_CLOSE
|
||||||
|
// #define OPTION_WINKEY_PINCONFIG_PTT_CONTROLS_PTT_LINE // Have Winkeyer PTT setting activate/deactivate PTT line rather than control buffered character PTT hold
|
||||||
|
// #define OPTION_REVERSE_BUTTON_ORDER // This is mainly for the DJ0MY NanoKeyer http://nanokeyer.wordpress.com/
|
||||||
|
#define OPTION_PROG_MEM_TRIM_TRAILING_SPACES // trim trailing spaces from memory when programming in command mode
|
||||||
|
#define OPTION_DIT_PADDLE_NO_SEND_ON_MEM_RPT // this makes dit paddle memory interruption a little smoother
|
||||||
|
#define OPTION_MORE_DISPLAY_MSGS // additional optional display messages - comment out to save memory
|
||||||
|
// #define OPTION_WATCHDOG_TIMER // this enables a four second ATmega48/88/168/328 watchdog timer; use for unattended/remote operation only
|
||||||
|
// #define OPTION_MOUSE_MOVEMENT_PADDLE // experimental (just fooling around) - mouse movement will act like a paddle
|
||||||
|
// #define OPTION_NON_ENGLISH_EXTENSIONS // add support for additional CW characters (i.e. À, Å, Þ, etc.)
|
||||||
|
// #define OPTION_DISPLAY_NON_ENGLISH_EXTENSIONS // LCD display suport for non-English (NO/DK/DE) characters - Courtesy of OZ1JHM
|
||||||
|
// #define OPTION_UNKNOWN_CHARACTER_ERROR_TONE
|
||||||
|
// #define OPTION_DO_NOT_SAY_HI
|
||||||
|
// #define OPTION_PS2_NON_ENGLISH_CHAR_LCD_DISPLAY_SUPPORT // makes some non-English characters from the PS2 keyboard display correctly in the LCD display (donated by Marcin sp5iou)
|
||||||
|
// #define OPTION_PS2_KEYBOARD_RESET // reset the PS2 keyboard upon startup with 0xFF (contributed by Bill, W9BEL)
|
||||||
|
// #define OPTION_SAVE_MEMORY_NANOKEYER
|
||||||
|
#define OPTION_CW_KEYBOARD_CAPSLOCK_BEEP
|
||||||
|
// #define OPTION_CW_KEYBOARD_ITALIAN
|
||||||
|
// #define OPTION_CW_KEYBOARD_GERMAN
|
||||||
|
// #define OPTION_CW_DECODER_GOERTZEL_AUDIO_DETECTOR
|
||||||
|
// #define OPTION_INVERT_PADDLE_PIN_LOGIC
|
||||||
|
#define OPTION_ADVANCED_SPEED_DISPLAY //enables "nerd" speed visualization on display: wpm, cpm (char per min), duration of dit and dah in milliseconds and ratio (contributed by Giorgio, IZ2XBZ)
|
||||||
|
#define OPTION_PROSIGN_SUPPORT // additional prosign support for paddle and straight key echo on display, CLI, and in memory storage
|
||||||
|
// #define OPTION_RUSSIAN_LANGUAGE_SEND_CLI // Russian language CLI sending support (contributed by Павел Бирюков, UA1AQC)
|
||||||
|
#define OPTION_DO_NOT_SEND_UNKNOWN_CHAR_QUESTION
|
||||||
|
#define OPTION_CMOS_SUPER_KEYER_IAMBIC_B_TIMING_ON_BY_DEFAULT
|
||||||
|
// #define OPTION_SIDETONE_DIGITAL_OUTPUT_NO_SQUARE_WAVE
|
||||||
|
|
||||||
|
// #define OPTION_DIRECT_PADDLE_PIN_READS_MEGA // only works with Mega and pins 2 and 5 - minor performance increase
|
||||||
|
// #define OPTION_DIRECT_PADDLE_PIN_READS_UNO // Unos or Nanos pins 2 and 5 - do not enable on a nanoKeyer, it uses different pins
|
||||||
|
|
||||||
|
// #define OPTION_WORDSWORTH_CZECH
|
||||||
|
// #define OPTION_WORDSWORTH_DEUTSCH
|
||||||
|
// #define OPTION_WORDSWORTH_NORSK
|
||||||
|
|
||||||
|
#define OPTION_EXCLUDE_EXTENDED_CLI_COMMANDS
|
||||||
|
|
||||||
|
// #define OPTION_DFROBOT_LCD_COMMAND_BUTTONS
|
||||||
|
|
||||||
|
// #define OPTION_EXCLUDE_MILL_MODE
|
||||||
|
// #define OPTION_NO_ULTIMATIC // reduce memory usage by removing ultimatic code.
|
||||||
|
|
||||||
|
// #define OPTION_DISABLE_SERIAL_PORT_CHECKING_WHILE_SENDING_CW
|
||||||
|
// #define OPTION_PERSONALIZED_STARTUP_SCREEN // displays a user defined string of characters on the second or fourth row of the screen during startup. 1602 display requires OPTION_DO_NOT_SAY_HI
|
||||||
|
// #define OPTION_SWAP_PADDLE_PARAMETER_CHANGE_DIRECTION // reverses the up/down direction when using the paddles to change the wpm or sidetone frequency
|
||||||
|
// #define OPTION_DISPLAY_MEMORY_CONTENTS_COMMAND_MODE
|
||||||
|
|
||||||
|
// #define OPTION_BEACON_MODE_MEMORY_REPEAT_TIME // to space out the repeated playing of memory 1 when in beacon mode
|
||||||
|
// #define OPTION_BEACON_MODE_PTT_TAIL_TIME // adds the ptt tail time to each playing of memory 1 in beacon mode
|
||||||
|
|
||||||
|
// #define OPTION_WINKEY_PROSIGN_COMPATIBILITY // Additional character mappings to support K1EL Winkey emulation prosigns
|
122
k3ng_keyer/keyer_features_and_options_mortty.h
Executable file
122
k3ng_keyer/keyer_features_and_options_mortty.h
Executable file
|
@ -0,0 +1,122 @@
|
||||||
|
// compile time features and options - comment or uncomment to add or delete features
|
||||||
|
// FEATURES add more bytes to the compiled binary, OPTIONS change code behavior
|
||||||
|
|
||||||
|
|
||||||
|
// #define FEATURE_BUTTONS
|
||||||
|
// #define FEATURE_COMMAND_MODE
|
||||||
|
// #define FEATURE_COMMAND_LINE_INTERFACE // Command Line Interface functionality
|
||||||
|
// #define FEATURE_MEMORIES // on the Arduino Due, you must have FEATURE_EEPROM_E24C1024 and E24C1024 EEPROM hardware in order to compile this
|
||||||
|
// #define FEATURE_MEMORY_MACROS
|
||||||
|
#define FEATURE_WINKEY_EMULATION // disabling Automatic Software Reset is highly recommended (see documentation)
|
||||||
|
// #define FEATURE_BEACON // Go into beacon mode if paddle_left pin is LOW at boot up
|
||||||
|
// #define FEATURE_BEACON_SETTING // Go into beacon mode at boot up if EEPROM setting is enabled (\_ CLI Command)
|
||||||
|
// #define FEATURE_TRAINING_COMMAND_LINE_INTERFACE
|
||||||
|
// #define FEATURE_POTENTIOMETER // do not enable unless you have a potentiometer connected, otherwise noise will falsely trigger wpm changes
|
||||||
|
// #define FEATURE_SIDETONE_SWITCH // adds switch control for the sidetone output. requires an external toggle switch (assigned to an arduino pin - see keyer_pin_settings.h).
|
||||||
|
// #define FEATURE_SIDETONE_NEWTONE // Use the NewTone library, ~1k smaller code size than the standard tone library. Uses timer1 (pins 9 or 10) https://bitbucket.org/teckel12/arduino-new-tone/wiki/Home
|
||||||
|
// #define FEATURE_SERIAL_HELP
|
||||||
|
// #define FEATURE_HELL
|
||||||
|
// #define FEATURE_PS2_KEYBOARD // Use a PS2 keyboard to send code - Change keyboard layout (non-US) in K3NG_PS2Keyboard.h. Additional options below.
|
||||||
|
// #define FEATURE_USB_KEYBOARD // Use a USB keyboard to send code - Uncomment three lines in k3ng_keyer.ino (search for note_usb_uncomment_lines)
|
||||||
|
// #define FEATURE_CW_COMPUTER_KEYBOARD // Have an Arduino Due or Leonardo act as a USB HID (Human Interface Device) keyboard and use the paddle to "type" characters on the computer -- uncomment this line in ino file: #include <Keyboard.h>
|
||||||
|
// #define FEATURE_DEAD_OP_WATCHDOG
|
||||||
|
// #define FEATURE_AUTOSPACE
|
||||||
|
// #define FEATURE_FARNSWORTH
|
||||||
|
// #define FEATURE_DL2SBA_BANKSWITCH // Switch memory banks feature as described here: http://dl2sba.com/index.php?option=com_content&view=article&id=131:nanokeyer&catid=15:shack&Itemid=27#english
|
||||||
|
// #define FEATURE_LCD_4BIT // classic LCD disidefplay using 4 I/O lines
|
||||||
|
// #define FEATURE_LCD_ADAFRUIT_I2C // Adafruit I2C LCD display using MCP23017 at addr 0x20
|
||||||
|
// #define FEATURE_LCD_ADAFRUIT_BACKPACK // Adafruit I2C LCD Backup using MCP23008 (courtesy Josiah Ritchie, KE0BLL)
|
||||||
|
// #define FEATURE_LCD_YDv1 // YourDuino I2C LCD display with old LCM 1602 V1 ic
|
||||||
|
// #define FEATURE_LCD1602_N07DH // http://linksprite.com/wiki/index.php5?title=16_X_2_LCD_Keypad_Shield_for_Arduino
|
||||||
|
// #define FEATURE_LCD_SAINSMART_I2C
|
||||||
|
// #define FEATURE_LCD_I2C_FDEBRABANDER //https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library
|
||||||
|
// #define FEATURE_CW_DECODER // https://github.com/k3ng/k3ng_cw_keyer/wiki/385-Feature:-CW-Decoder
|
||||||
|
// #define FEATURE_SLEEP // go to sleep after x minutes to conserve battery power (not compatible with Arduino DUE, may have mixed results with Mega and Mega ADK)
|
||||||
|
// #define FEATURE_LCD_BACKLIGHT_AUTO_DIM // turn off LCD backlight and/or dim Power Indicator LED after x minutes (LED requires a PWM pin)
|
||||||
|
// #define FEATURE_ROTARY_ENCODER // rotary encoder speed control
|
||||||
|
// #define FEATURE_CMOS_SUPER_KEYER_IAMBIC_B_TIMING
|
||||||
|
// #define FEATURE_USB_MOUSE // Uncomment three lines in k3ng_keyer.ino (search for note_usb_uncomment_lines)
|
||||||
|
// #define FEATURE_CAPACITIVE_PADDLE_PINS // remove the bypass capacitors on the paddle_left and paddle_right lines when using capactive paddles
|
||||||
|
// #define FEATURE_LED_RING // Mayhew Labs Led Ring support
|
||||||
|
// #define FEATURE_ALPHABET_SEND_PRACTICE // enables command mode S command - created by Ryan, KC2ZWM
|
||||||
|
// #define FEATURE_COMMAND_MODE_PROGRESSIVE_5_CHAR_ECHO_PRACTICE // enables command mode U
|
||||||
|
// #define FEATURE_PTT_INTERLOCK
|
||||||
|
// #define FEATURE_QLF
|
||||||
|
// #define FEATURE_EEPROM_E24C1024
|
||||||
|
// #define FEATURE_STRAIGHT_KEY
|
||||||
|
// #define FEATURE_DYNAMIC_DAH_TO_DIT_RATIO
|
||||||
|
// #define FEATURE_PADDLE_ECHO
|
||||||
|
// #define FEATURE_STRAIGHT_KEY_ECHO
|
||||||
|
// #define FEATURE_AMERICAN_MORSE
|
||||||
|
// #define FEATURE_4x4_KEYPAD // code contributed by Jack, W0XR - documentation: https://github.com/k3ng/k3ng_cw_keyer/wiki/380-Feature:-Keypad
|
||||||
|
// #define FEATURE_3x4_KEYPAD // code contributed by Jack, W0XR - documentation: https://github.com/k3ng/k3ng_cw_keyer/wiki/380-Feature:-Keypad
|
||||||
|
// #define FEATURE_COMMAND_MODE_ENHANCED_CMD_ACKNOWLEDGEMENT
|
||||||
|
// #define FEATURE_WEB_SERVER // Details: https://github.com/k3ng/k3ng_cw_keyer/wiki/390-Feature:-Ethernet,-Web-Server,-and-Internet-Linking
|
||||||
|
// #define FEATURE_INTERNET_LINK // Details: https://github.com/k3ng/k3ng_cw_keyer/wiki/390-Feature:-Ethernet,-Web-Server,-and-Internet-Linking
|
||||||
|
|
||||||
|
// #define FEATURE_COMMAND_LINE_INTERFACE_ON_SECONDARY_PORT // Activate the Command Line interface on the secondary serial port
|
||||||
|
#define OPTION_PRIMARY_SERIAL_PORT_DEFAULT_WINKEY_EMULATION // Use when activating both FEATURE_WINKEY_EMULATION and FEATURE_COMMAND_LINE_INTERFACE
|
||||||
|
// simultaneously. This will make Winkey emulation be the default at boot up;
|
||||||
|
// hold command button down at boot up to activate CLI mode
|
||||||
|
|
||||||
|
// #define OPTION_SUPPRESS_SERIAL_BOOT_MSG
|
||||||
|
#define OPTION_INCLUDE_PTT_TAIL_FOR_MANUAL_SENDING
|
||||||
|
#define OPTION_EXCLUDE_PTT_HANG_TIME_FOR_MANUAL_SENDING
|
||||||
|
//#define OPTION_WINKEY_DISCARD_BYTES_AT_STARTUP // if ASR is not disabled, you may need this to discard errant serial port bytes at startup
|
||||||
|
// #define OPTION_WINKEY_STRICT_EEPROM_WRITES_MAY_WEAR_OUT_EEPROM // with this activated the unit will write non-volatile settings to EEPROM when set by Winkey commands
|
||||||
|
// #define OPTION_WINKEY_SEND_WORDSPACE_AT_END_OF_BUFFER
|
||||||
|
// #define OPTION_WINKEY_STRICT_HOST_OPEN // require an admin host open Winkey command before doing any other commands
|
||||||
|
#define OPTION_WINKEY_2_SUPPORT // comment out to revert to Winkey version 1 emulation
|
||||||
|
#define OPTION_WINKEY_INTERRUPTS_MEMORY_REPEAT
|
||||||
|
//#define OPTION_WINKEY_UCXLOG_9600_BAUD // use this only with UCXLog configured for Winkey 9600 baud mode
|
||||||
|
#define OPTION_WINKEY_2_HOST_CLOSE_NO_SERIAL_PORT_RESET // activate this when using Winkey 2 emulation and Win-Test
|
||||||
|
// #define OPTION_WINKEY_FREQUENT_STATUS_REPORT // activate this to make Winkey emulation play better with RUMlog and RUMped
|
||||||
|
#define OPTION_WINKEY_IGNORE_LOWERCASE // Enable for typical K1EL Winkeyer behavior (use for SkookumLogger version 1.10.14 and prior to workaround "r" bug)
|
||||||
|
#define OPTION_WINKEY_BLINK_PTT_ON_HOST_OPEN
|
||||||
|
// #define OPTION_WINKEY_SEND_VERSION_ON_HOST_CLOSE
|
||||||
|
// #define OPTION_WINKEY_PINCONFIG_PTT_CONTROLS_PTT_LINE // Have Winkeyer PTT setting activate/deactivate PTT line rather than control buffered character PTT hold
|
||||||
|
// #define OPTION_REVERSE_BUTTON_ORDER // This is mainly for the DJ0MY NanoKeyer http://nanokeyer.wordpress.com/
|
||||||
|
#define OPTION_PROG_MEM_TRIM_TRAILING_SPACES // trim trailing spaces from memory when programming in command mode
|
||||||
|
#define OPTION_DIT_PADDLE_NO_SEND_ON_MEM_RPT // this makes dit paddle memory interruption a little smoother
|
||||||
|
// #define OPTION_MORE_DISPLAY_MSGS // additional optional display messages - comment out to save memory
|
||||||
|
// #define OPTION_WATCHDOG_TIMER // this enables a four second ATmega48/88/168/328 watchdog timer; use for unattended/remote operation only
|
||||||
|
// #define OPTION_MOUSE_MOVEMENT_PADDLE // experimental (just fooling around) - mouse movement will act like a paddle
|
||||||
|
// #define OPTION_NON_ENGLISH_EXTENSIONS // add support for additional CW characters (i.e. À, Å, Þ, etc.)
|
||||||
|
// #define OPTION_DISPLAY_NON_ENGLISH_EXTENSIONS // LCD display suport for non-English (NO/DK/DE) characters - Courtesy of OZ1JHM
|
||||||
|
// #define OPTION_UNKNOWN_CHARACTER_ERROR_TONE
|
||||||
|
#define OPTION_DO_NOT_SAY_HI
|
||||||
|
#define OPTION_BLINK_HI_ON_PTT
|
||||||
|
// #define OPTION_PS2_NON_ENGLISH_CHAR_LCD_DISPLAY_SUPPORT // makes some non-English characters from the PS2 keyboard display correctly in the LCD display (donated by Marcin sp5iou)
|
||||||
|
// #define OPTION_PS2_KEYBOARD_RESET // reset the PS2 keyboard upon startup with 0xFF (contributed by Bill, W9BEL)
|
||||||
|
// #define OPTION_SAVE_MEMORY_NANOKEYER
|
||||||
|
// #define OPTION_CW_KEYBOARD_CAPSLOCK_BEEP
|
||||||
|
// #define OPTION_CW_KEYBOARD_ITALIAN
|
||||||
|
// #define OPTION_CW_KEYBOARD_GERMAN
|
||||||
|
// #define OPTION_CW_DECODER_GOERTZEL_AUDIO_DETECTOR
|
||||||
|
// #define OPTION_INVERT_PADDLE_PIN_LOGIC
|
||||||
|
// #define OPTION_ADVANCED_SPEED_DISPLAY //enables "nerd" speed visualization on display: wpm, cpm (char per min), duration of dit and dah in milliseconds and ratio (contributed by Giorgio, IZ2XBZ)
|
||||||
|
// #define OPTION_PROSIGN_SUPPORT // additional prosign support for paddle and straight key echo on display, CLI, and in memory storage
|
||||||
|
// #define OPTION_RUSSIAN_LANGUAGE_SEND_CLI // Russian language CLI sending support (contributed by Павел Бирюков, UA1AQC)
|
||||||
|
#define OPTION_DO_NOT_SEND_UNKNOWN_CHAR_QUESTION
|
||||||
|
// #define OPTION_CMOS_SUPER_KEYER_IAMBIC_B_TIMING_ON_BY_DEFAULT
|
||||||
|
#define OPTION_SIDETONE_DIGITAL_OUTPUT_NO_SQUARE_WAVE
|
||||||
|
|
||||||
|
// #define OPTION_DIRECT_PADDLE_PIN_READS_MEGA // only works with Mega and pins 2 and 5 - minor performance increase
|
||||||
|
// #define OPTION_DIRECT_PADDLE_PIN_READS_UNO // Unos or Nanos pins 2 and 5 - do not enable on a nanoKeyer, it uses different pins
|
||||||
|
|
||||||
|
// #define OPTION_WORDSWORTH_CZECH
|
||||||
|
// #define OPTION_WORDSWORTH_DEUTSCH
|
||||||
|
// #define OPTION_WORDSWORTH_NORSK
|
||||||
|
|
||||||
|
#define OPTION_EXCLUDE_EXTENDED_CLI_COMMANDS
|
||||||
|
// #define OPTION_NO_ULTIMATIC // reduce memory usage by removing ultimatic code.
|
||||||
|
|
||||||
|
// #define OPTION_DISABLE_SERIAL_PORT_CHECKING_WHILE_SENDING_CW
|
||||||
|
// #define OPTION_PERSONALIZED_STARTUP_SCREEN // displays a user defined string of characters on the second or fourth row of the screen during startup. 1602 display requires OPTION_DO_NOT_SAY_HI
|
||||||
|
// #define OPTION_SWAP_PADDLE_PARAMETER_CHANGE_DIRECTION // reverses the up/down direction when using the paddles to change the wpm or sidetone frequency
|
||||||
|
// #define OPTION_DISPLAY_MEMORY_CONTENTS_COMMAND_MODE
|
||||||
|
|
||||||
|
// #define OPTION_BEACON_MODE_MEMORY_REPEAT_TIME // to space out the repeated playing of memory 1 when in beacon mode
|
||||||
|
// #define OPTION_BEACON_MODE_PTT_TAIL_TIME // adds the ptt tail time to each playing of memory 1 in beacon mode
|
||||||
|
|
||||||
|
// #define OPTION_WINKEY_PROSIGN_COMPATIBILITY // Additional character mappings to support K1EL Winkey emulation prosigns
|
119
k3ng_keyer/keyer_features_and_options_mortty_regular.h
Executable file
119
k3ng_keyer/keyer_features_and_options_mortty_regular.h
Executable file
|
@ -0,0 +1,119 @@
|
||||||
|
// compile time features and options - comment or uncomment to add or delete features
|
||||||
|
// FEATURES add more bytes to the compiled binary, OPTIONS change code behavior
|
||||||
|
|
||||||
|
|
||||||
|
// #define FEATURE_BUTTONS
|
||||||
|
// #define FEATURE_COMMAND_MODE
|
||||||
|
// #define FEATURE_COMMAND_LINE_INTERFACE // Command Line Interface functionality
|
||||||
|
// #define FEATURE_MEMORIES // on the Arduino Due, you must have FEATURE_EEPROM_E24C1024 and E24C1024 EEPROM hardware in order to compile this
|
||||||
|
// #define FEATURE_MEMORY_MACROS
|
||||||
|
#define FEATURE_WINKEY_EMULATION // disabling Automatic Software Reset is highly recommended (see documentation)
|
||||||
|
// #define FEATURE_BEACON // Go into beacon mode if paddle_left pin is LOW at boot up
|
||||||
|
// #define FEATURE_BEACON_SETTING // Go into beacon mode at boot up if EEPROM setting is enabled (\_ CLI Command)
|
||||||
|
// #define FEATURE_TRAINING_COMMAND_LINE_INTERFACE
|
||||||
|
// #define FEATURE_POTENTIOMETER // do not enable unless you have a potentiometer connected, otherwise noise will falsely trigger wpm changes
|
||||||
|
// #define FEATURE_SIDETONE_SWITCH // adds switch control for the sidetone output. requires an external toggle switch (assigned to an arduino pin - see keyer_pin_settings.h).
|
||||||
|
// #define FEATURE_SIDETONE_NEWTONE // Use the NewTone library, ~1k smaller code size than the standard tone library. Uses timer1 (pins 9 or 10) https://bitbucket.org/teckel12/arduino-new-tone/wiki/Home
|
||||||
|
// #define FEATURE_SERIAL_HELP
|
||||||
|
// #define FEATURE_HELL
|
||||||
|
// #define FEATURE_PS2_KEYBOARD // Use a PS2 keyboard to send code - Change keyboard layout (non-US) in K3NG_PS2Keyboard.h. Additional options below.
|
||||||
|
// #define FEATURE_USB_KEYBOARD // Use a USB keyboard to send code - Uncomment three lines in k3ng_keyer.ino (search for note_usb_uncomment_lines)
|
||||||
|
// #define FEATURE_CW_COMPUTER_KEYBOARD // Have an Arduino Due or Leonardo act as a USB HID (Human Interface Device) keyboard and use the paddle to "type" characters on the computer -- uncomment this line in ino file: #include <Keyboard.h>
|
||||||
|
// #define FEATURE_DEAD_OP_WATCHDOG
|
||||||
|
// #define FEATURE_AUTOSPACE
|
||||||
|
// #define FEATURE_FARNSWORTH
|
||||||
|
// #define FEATURE_DL2SBA_BANKSWITCH // Switch memory banks feature as described here: http://dl2sba.com/index.php?option=com_content&view=article&id=131:nanokeyer&catid=15:shack&Itemid=27#english
|
||||||
|
// #define FEATURE_LCD_4BIT // classic LCD disidefplay using 4 I/O lines
|
||||||
|
// #define FEATURE_LCD_ADAFRUIT_I2C // Adafruit I2C LCD display using MCP23017 at addr 0x20
|
||||||
|
// #define FEATURE_LCD_ADAFRUIT_BACKPACK // Adafruit I2C LCD Backup using MCP23008 (courtesy Josiah Ritchie, KE0BLL)
|
||||||
|
// #define FEATURE_LCD_YDv1 // YourDuino I2C LCD display with old LCM 1602 V1 ic
|
||||||
|
// #define FEATURE_LCD1602_N07DH // http://linksprite.com/wiki/index.php5?title=16_X_2_LCD_Keypad_Shield_for_Arduino
|
||||||
|
// #define FEATURE_LCD_SAINSMART_I2C
|
||||||
|
// #define FEATURE_LCD_I2C_FDEBRABANDER //https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library
|
||||||
|
// #define FEATURE_CW_DECODER // https://github.com/k3ng/k3ng_cw_keyer/wiki/385-Feature:-CW-Decoder
|
||||||
|
// #define FEATURE_SLEEP // go to sleep after x minutes to conserve battery power (not compatible with Arduino DUE, may have mixed results with Mega and Mega ADK)
|
||||||
|
// #define FEATURE_LCD_BACKLIGHT_AUTO_DIM // turn off LCD backlight and/or dim Power Indicator LED after x minutes (LED requires a PWM pin)
|
||||||
|
// #define FEATURE_ROTARY_ENCODER // rotary encoder speed control
|
||||||
|
// #define FEATURE_CMOS_SUPER_KEYER_IAMBIC_B_TIMING
|
||||||
|
// #define FEATURE_USB_MOUSE // Uncomment three lines in k3ng_keyer.ino (search for note_usb_uncomment_lines)
|
||||||
|
// #define FEATURE_CAPACITIVE_PADDLE_PINS // remove the bypass capacitors on the paddle_left and paddle_right lines when using capactive paddles
|
||||||
|
// #define FEATURE_LED_RING // Mayhew Labs Led Ring support
|
||||||
|
// #define FEATURE_ALPHABET_SEND_PRACTICE // enables command mode S command - created by Ryan, KC2ZWM
|
||||||
|
// #define FEATURE_COMMAND_MODE_PROGRESSIVE_5_CHAR_ECHO_PRACTICE // enables command mode U
|
||||||
|
// #define FEATURE_PTT_INTERLOCK
|
||||||
|
// #define FEATURE_QLF
|
||||||
|
// #define FEATURE_EEPROM_E24C1024
|
||||||
|
// #define FEATURE_STRAIGHT_KEY
|
||||||
|
// #define FEATURE_DYNAMIC_DAH_TO_DIT_RATIO
|
||||||
|
// #define FEATURE_PADDLE_ECHO
|
||||||
|
// #define FEATURE_STRAIGHT_KEY_ECHO
|
||||||
|
// #define FEATURE_AMERICAN_MORSE
|
||||||
|
// #define FEATURE_4x4_KEYPAD // code contributed by Jack, W0XR - documentation: https://github.com/k3ng/k3ng_cw_keyer/wiki/380-Feature:-Keypad
|
||||||
|
// #define FEATURE_3x4_KEYPAD // code contributed by Jack, W0XR - documentation: https://github.com/k3ng/k3ng_cw_keyer/wiki/380-Feature:-Keypad
|
||||||
|
// #define FEATURE_COMMAND_MODE_ENHANCED_CMD_ACKNOWLEDGEMENT
|
||||||
|
// #define FEATURE_WEB_SERVER // Details: https://github.com/k3ng/k3ng_cw_keyer/wiki/390-Feature:-Ethernet,-Web-Server,-and-Internet-Linking
|
||||||
|
// #define FEATURE_INTERNET_LINK // Details: https://github.com/k3ng/k3ng_cw_keyer/wiki/390-Feature:-Ethernet,-Web-Server,-and-Internet-Linking
|
||||||
|
|
||||||
|
// #define FEATURE_COMMAND_LINE_INTERFACE_ON_SECONDARY_PORT // Activate the Command Line interface on the secondary serial port
|
||||||
|
#define OPTION_PRIMARY_SERIAL_PORT_DEFAULT_WINKEY_EMULATION // Use when activating both FEATURE_WINKEY_EMULATION and FEATURE_COMMAND_LINE_INTERFACE
|
||||||
|
// simultaneously. This will make Winkey emulation be the default at boot up;
|
||||||
|
// hold command button down at boot up to activate CLI mode
|
||||||
|
|
||||||
|
// #define OPTION_SUPPRESS_SERIAL_BOOT_MSG
|
||||||
|
#define OPTION_INCLUDE_PTT_TAIL_FOR_MANUAL_SENDING
|
||||||
|
#define OPTION_EXCLUDE_PTT_HANG_TIME_FOR_MANUAL_SENDING
|
||||||
|
//#define OPTION_WINKEY_DISCARD_BYTES_AT_STARTUP // if ASR is not disabled, you may need this to discard errant serial port bytes at startup
|
||||||
|
// #define OPTION_WINKEY_STRICT_EEPROM_WRITES_MAY_WEAR_OUT_EEPROM // with this activated the unit will write non-volatile settings to EEPROM when set by Winkey commands
|
||||||
|
// #define OPTION_WINKEY_SEND_WORDSPACE_AT_END_OF_BUFFER
|
||||||
|
// #define OPTION_WINKEY_STRICT_HOST_OPEN // require an admin host open Winkey command before doing any other commands
|
||||||
|
#define OPTION_WINKEY_2_SUPPORT // comment out to revert to Winkey version 1 emulation
|
||||||
|
#define OPTION_WINKEY_INTERRUPTS_MEMORY_REPEAT
|
||||||
|
//#define OPTION_WINKEY_UCXLOG_9600_BAUD // use this only with UCXLog configured for Winkey 9600 baud mode
|
||||||
|
#define OPTION_WINKEY_2_HOST_CLOSE_NO_SERIAL_PORT_RESET // activate this when using Winkey 2 emulation and Win-Test
|
||||||
|
// #define OPTION_WINKEY_FREQUENT_STATUS_REPORT // activate this to make Winkey emulation play better with RUMlog and RUMped
|
||||||
|
#define OPTION_WINKEY_IGNORE_LOWERCASE // Enable for typical K1EL Winkeyer behavior (use for SkookumLogger version 1.10.14 and prior to workaround "r" bug)
|
||||||
|
#define OPTION_WINKEY_BLINK_PTT_ON_HOST_OPEN
|
||||||
|
// #define OPTION_WINKEY_SEND_VERSION_ON_HOST_CLOSE
|
||||||
|
// #define OPTION_WINKEY_PINCONFIG_PTT_CONTROLS_PTT_LINE // Have Winkeyer PTT setting activate/deactivate PTT line rather than control buffered character PTT hold
|
||||||
|
// #define OPTION_REVERSE_BUTTON_ORDER // This is mainly for the DJ0MY NanoKeyer http://nanokeyer.wordpress.com/
|
||||||
|
#define OPTION_PROG_MEM_TRIM_TRAILING_SPACES // trim trailing spaces from memory when programming in command mode
|
||||||
|
#define OPTION_DIT_PADDLE_NO_SEND_ON_MEM_RPT // this makes dit paddle memory interruption a little smoother
|
||||||
|
// #define OPTION_MORE_DISPLAY_MSGS // additional optional display messages - comment out to save memory
|
||||||
|
// #define OPTION_N1MM_WINKEY_TAB_BUG_WORKAROUND // enable this to ignore the TAB key in the Send CW window (this breaks SO2R functionality in N1MM)
|
||||||
|
// #define OPTION_WATCHDOG_TIMER // this enables a four second ATmega48/88/168/328 watchdog timer; use for unattended/remote operation only
|
||||||
|
// #define OPTION_MOUSE_MOVEMENT_PADDLE // experimental (just fooling around) - mouse movement will act like a paddle
|
||||||
|
// #define OPTION_NON_ENGLISH_EXTENSIONS // add support for additional CW characters (i.e. À, Å, Þ, etc.)
|
||||||
|
// #define OPTION_DISPLAY_NON_ENGLISH_EXTENSIONS // LCD display suport for non-English (NO/DK/DE) characters - Courtesy of OZ1JHM
|
||||||
|
// #define OPTION_UNKNOWN_CHARACTER_ERROR_TONE
|
||||||
|
#define OPTION_DO_NOT_SAY_HI
|
||||||
|
#define OPTION_BLINK_HI_ON_PTT
|
||||||
|
// #define OPTION_PS2_NON_ENGLISH_CHAR_LCD_DISPLAY_SUPPORT // makes some non-English characters from the PS2 keyboard display correctly in the LCD display (donated by Marcin sp5iou)
|
||||||
|
// #define OPTION_PS2_KEYBOARD_RESET // reset the PS2 keyboard upon startup with 0xFF (contributed by Bill, W9BEL)
|
||||||
|
// #define OPTION_SAVE_MEMORY_NANOKEYER
|
||||||
|
// #define OPTION_CW_KEYBOARD_CAPSLOCK_BEEP
|
||||||
|
// #define OPTION_CW_KEYBOARD_ITALIAN
|
||||||
|
// #define OPTION_CW_KEYBOARD_GERMAN
|
||||||
|
// #define OPTION_CW_DECODER_GOERTZEL_AUDIO_DETECTOR
|
||||||
|
// #define OPTION_INVERT_PADDLE_PIN_LOGIC
|
||||||
|
// #define OPTION_ADVANCED_SPEED_DISPLAY //enables "nerd" speed visualization on display: wpm, cpm (char per min), duration of dit and dah in milliseconds and ratio (contributed by Giorgio, IZ2XBZ)
|
||||||
|
// #define OPTION_PROSIGN_SUPPORT // additional prosign support for paddle and straight key echo on display, CLI, and in memory storage
|
||||||
|
// #define OPTION_RUSSIAN_LANGUAGE_SEND_CLI // Russian language CLI sending support (contributed by Павел Бирюков, UA1AQC)
|
||||||
|
#define OPTION_DO_NOT_SEND_UNKNOWN_CHAR_QUESTION
|
||||||
|
// #define OPTION_CMOS_SUPER_KEYER_IAMBIC_B_TIMING_ON_BY_DEFAULT
|
||||||
|
#define OPTION_SIDETONE_DIGITAL_OUTPUT_NO_SQUARE_WAVE
|
||||||
|
|
||||||
|
// #define OPTION_WORDSWORTH_CZECH
|
||||||
|
// #define OPTION_WORDSWORTH_DEUTSCH
|
||||||
|
// #define OPTION_WORDSWORTH_NORSK
|
||||||
|
|
||||||
|
#define OPTION_EXCLUDE_EXTENDED_CLI_COMMANDS
|
||||||
|
// #define OPTION_NO_ULTIMATIC // reduce memory usage by removing ultimatic code.
|
||||||
|
|
||||||
|
// #define OPTION_PERSONALIZED_STARTUP_SCREEN // displays a user defined string of characters on the second or fourth row of the screen during startup. 1602 display requires OPTION_DO_NOT_SAY_HI
|
||||||
|
// #define OPTION_SWAP_PADDLE_PARAMETER_CHANGE_DIRECTION // reverses the up/down direction when using the paddles to change the wpm or sidetone frequency
|
||||||
|
// #define OPTION_DISPLAY_MEMORY_CONTENTS_COMMAND_MODE
|
||||||
|
|
||||||
|
// #define OPTION_BEACON_MODE_MEMORY_REPEAT_TIME // to space out the repeated playing of memory 1 when in beacon mode
|
||||||
|
// #define OPTION_BEACON_MODE_PTT_TAIL_TIME // adds the ptt tail time to each playing of memory 1 in beacon mode
|
||||||
|
|
||||||
|
// #define OPTION_WINKEY_PROSIGN_COMPATIBILITY // Additional character mappings to support K1EL Winkey emulation prosigns
|
119
k3ng_keyer/keyer_features_and_options_mortty_regular_with_potentiometer.h
Executable file
119
k3ng_keyer/keyer_features_and_options_mortty_regular_with_potentiometer.h
Executable file
|
@ -0,0 +1,119 @@
|
||||||
|
// compile time features and options - comment or uncomment to add or delete features
|
||||||
|
// FEATURES add more bytes to the compiled binary, OPTIONS change code behavior
|
||||||
|
|
||||||
|
|
||||||
|
// #define FEATURE_BUTTONS
|
||||||
|
// #define FEATURE_COMMAND_MODE
|
||||||
|
// #define FEATURE_COMMAND_LINE_INTERFACE // Command Line Interface functionality
|
||||||
|
// #define FEATURE_MEMORIES // on the Arduino Due, you must have FEATURE_EEPROM_E24C1024 and E24C1024 EEPROM hardware in order to compile this
|
||||||
|
// #define FEATURE_MEMORY_MACROS
|
||||||
|
#define FEATURE_WINKEY_EMULATION // disabling Automatic Software Reset is highly recommended (see documentation)
|
||||||
|
// #define FEATURE_BEACON // Go into beacon mode if paddle_left pin is LOW at boot up
|
||||||
|
// #define FEATURE_BEACON_SETTING // Go into beacon mode at boot up if EEPROM setting is enabled (\_ CLI Command)
|
||||||
|
// #define FEATURE_TRAINING_COMMAND_LINE_INTERFACE
|
||||||
|
#define FEATURE_POTENTIOMETER // do not enable unless you have a potentiometer connected, otherwise noise will falsely trigger wpm changes
|
||||||
|
// #define FEATURE_SIDETONE_SWITCH // adds switch control for the sidetone output. requires an external toggle switch (assigned to an arduino pin - see keyer_pin_settings.h).
|
||||||
|
// #define FEATURE_SIDETONE_NEWTONE // Use the NewTone library, ~1k smaller code size than the standard tone library. Uses timer1 (pins 9 or 10) https://bitbucket.org/teckel12/arduino-new-tone/wiki/Home
|
||||||
|
// #define FEATURE_SERIAL_HELP
|
||||||
|
// #define FEATURE_HELL
|
||||||
|
// #define FEATURE_PS2_KEYBOARD // Use a PS2 keyboard to send code - Change keyboard layout (non-US) in K3NG_PS2Keyboard.h. Additional options below.
|
||||||
|
// #define FEATURE_USB_KEYBOARD // Use a USB keyboard to send code - Uncomment three lines in k3ng_keyer.ino (search for note_usb_uncomment_lines)
|
||||||
|
// #define FEATURE_CW_COMPUTER_KEYBOARD // Have an Arduino Due or Leonardo act as a USB HID (Human Interface Device) keyboard and use the paddle to "type" characters on the computer -- uncomment this line in ino file: #include <Keyboard.h>
|
||||||
|
// #define FEATURE_DEAD_OP_WATCHDOG
|
||||||
|
// #define FEATURE_AUTOSPACE
|
||||||
|
// #define FEATURE_FARNSWORTH
|
||||||
|
// #define FEATURE_DL2SBA_BANKSWITCH // Switch memory banks feature as described here: http://dl2sba.com/index.php?option=com_content&view=article&id=131:nanokeyer&catid=15:shack&Itemid=27#english
|
||||||
|
// #define FEATURE_LCD_4BIT // classic LCD disidefplay using 4 I/O lines
|
||||||
|
// #define FEATURE_LCD_ADAFRUIT_I2C // Adafruit I2C LCD display using MCP23017 at addr 0x20
|
||||||
|
// #define FEATURE_LCD_ADAFRUIT_BACKPACK // Adafruit I2C LCD Backup using MCP23008 (courtesy Josiah Ritchie, KE0BLL)
|
||||||
|
// #define FEATURE_LCD_YDv1 // YourDuino I2C LCD display with old LCM 1602 V1 ic
|
||||||
|
// #define FEATURE_LCD1602_N07DH // http://linksprite.com/wiki/index.php5?title=16_X_2_LCD_Keypad_Shield_for_Arduino
|
||||||
|
// #define FEATURE_LCD_SAINSMART_I2C
|
||||||
|
// #define FEATURE_LCD_I2C_FDEBRABANDER //https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library
|
||||||
|
// #define FEATURE_CW_DECODER // https://github.com/k3ng/k3ng_cw_keyer/wiki/385-Feature:-CW-Decoder
|
||||||
|
// #define FEATURE_SLEEP // go to sleep after x minutes to conserve battery power (not compatible with Arduino DUE, may have mixed results with Mega and Mega ADK)
|
||||||
|
// #define FEATURE_LCD_BACKLIGHT_AUTO_DIM // turn off LCD backlight and/or dim Power Indicator LED after x minutes (LED requires a PWM pin)
|
||||||
|
// #define FEATURE_ROTARY_ENCODER // rotary encoder speed control
|
||||||
|
// #define FEATURE_CMOS_SUPER_KEYER_IAMBIC_B_TIMING
|
||||||
|
// #define FEATURE_USB_MOUSE // Uncomment three lines in k3ng_keyer.ino (search for note_usb_uncomment_lines)
|
||||||
|
// #define FEATURE_CAPACITIVE_PADDLE_PINS // remove the bypass capacitors on the paddle_left and paddle_right lines when using capactive paddles
|
||||||
|
// #define FEATURE_LED_RING // Mayhew Labs Led Ring support
|
||||||
|
// #define FEATURE_ALPHABET_SEND_PRACTICE // enables command mode S command - created by Ryan, KC2ZWM
|
||||||
|
// #define FEATURE_COMMAND_MODE_PROGRESSIVE_5_CHAR_ECHO_PRACTICE // enables command mode U
|
||||||
|
// #define FEATURE_PTT_INTERLOCK
|
||||||
|
// #define FEATURE_QLF
|
||||||
|
// #define FEATURE_EEPROM_E24C1024
|
||||||
|
// #define FEATURE_STRAIGHT_KEY
|
||||||
|
// #define FEATURE_DYNAMIC_DAH_TO_DIT_RATIO
|
||||||
|
// #define FEATURE_PADDLE_ECHO
|
||||||
|
// #define FEATURE_STRAIGHT_KEY_ECHO
|
||||||
|
// #define FEATURE_AMERICAN_MORSE
|
||||||
|
// #define FEATURE_4x4_KEYPAD // code contributed by Jack, W0XR - documentation: https://github.com/k3ng/k3ng_cw_keyer/wiki/380-Feature:-Keypad
|
||||||
|
// #define FEATURE_3x4_KEYPAD // code contributed by Jack, W0XR - documentation: https://github.com/k3ng/k3ng_cw_keyer/wiki/380-Feature:-Keypad
|
||||||
|
// #define FEATURE_COMMAND_MODE_ENHANCED_CMD_ACKNOWLEDGEMENT
|
||||||
|
// #define FEATURE_WEB_SERVER // Details: https://github.com/k3ng/k3ng_cw_keyer/wiki/390-Feature:-Ethernet,-Web-Server,-and-Internet-Linking
|
||||||
|
// #define FEATURE_INTERNET_LINK // Details: https://github.com/k3ng/k3ng_cw_keyer/wiki/390-Feature:-Ethernet,-Web-Server,-and-Internet-Linking
|
||||||
|
|
||||||
|
// #define FEATURE_COMMAND_LINE_INTERFACE_ON_SECONDARY_PORT // Activate the Command Line interface on the secondary serial port
|
||||||
|
#define OPTION_PRIMARY_SERIAL_PORT_DEFAULT_WINKEY_EMULATION // Use when activating both FEATURE_WINKEY_EMULATION and FEATURE_COMMAND_LINE_INTERFACE
|
||||||
|
// simultaneously. This will make Winkey emulation be the default at boot up;
|
||||||
|
// hold command button down at boot up to activate CLI mode
|
||||||
|
|
||||||
|
// #define OPTION_SUPPRESS_SERIAL_BOOT_MSG
|
||||||
|
#define OPTION_INCLUDE_PTT_TAIL_FOR_MANUAL_SENDING
|
||||||
|
#define OPTION_EXCLUDE_PTT_HANG_TIME_FOR_MANUAL_SENDING
|
||||||
|
//#define OPTION_WINKEY_DISCARD_BYTES_AT_STARTUP // if ASR is not disabled, you may need this to discard errant serial port bytes at startup
|
||||||
|
// #define OPTION_WINKEY_STRICT_EEPROM_WRITES_MAY_WEAR_OUT_EEPROM // with this activated the unit will write non-volatile settings to EEPROM when set by Winkey commands
|
||||||
|
// #define OPTION_WINKEY_SEND_WORDSPACE_AT_END_OF_BUFFER
|
||||||
|
// #define OPTION_WINKEY_STRICT_HOST_OPEN // require an admin host open Winkey command before doing any other commands
|
||||||
|
#define OPTION_WINKEY_2_SUPPORT // comment out to revert to Winkey version 1 emulation
|
||||||
|
#define OPTION_WINKEY_INTERRUPTS_MEMORY_REPEAT
|
||||||
|
//#define OPTION_WINKEY_UCXLOG_9600_BAUD // use this only with UCXLog configured for Winkey 9600 baud mode
|
||||||
|
#define OPTION_WINKEY_2_HOST_CLOSE_NO_SERIAL_PORT_RESET // activate this when using Winkey 2 emulation and Win-Test
|
||||||
|
// #define OPTION_WINKEY_FREQUENT_STATUS_REPORT // activate this to make Winkey emulation play better with RUMlog and RUMped
|
||||||
|
#define OPTION_WINKEY_IGNORE_LOWERCASE // Enable for typical K1EL Winkeyer behavior (use for SkookumLogger version 1.10.14 and prior to workaround "r" bug)
|
||||||
|
#define OPTION_WINKEY_BLINK_PTT_ON_HOST_OPEN
|
||||||
|
// #define OPTION_WINKEY_SEND_VERSION_ON_HOST_CLOSE
|
||||||
|
// #define OPTION_WINKEY_PINCONFIG_PTT_CONTROLS_PTT_LINE // Have Winkeyer PTT setting activate/deactivate PTT line rather than control buffered character PTT hold
|
||||||
|
// #define OPTION_REVERSE_BUTTON_ORDER // This is mainly for the DJ0MY NanoKeyer http://nanokeyer.wordpress.com/
|
||||||
|
#define OPTION_PROG_MEM_TRIM_TRAILING_SPACES // trim trailing spaces from memory when programming in command mode
|
||||||
|
#define OPTION_DIT_PADDLE_NO_SEND_ON_MEM_RPT // this makes dit paddle memory interruption a little smoother
|
||||||
|
// #define OPTION_MORE_DISPLAY_MSGS // additional optional display messages - comment out to save memory
|
||||||
|
// #define OPTION_N1MM_WINKEY_TAB_BUG_WORKAROUND // enable this to ignore the TAB key in the Send CW window (this breaks SO2R functionality in N1MM)
|
||||||
|
// #define OPTION_WATCHDOG_TIMER // this enables a four second ATmega48/88/168/328 watchdog timer; use for unattended/remote operation only
|
||||||
|
// #define OPTION_MOUSE_MOVEMENT_PADDLE // experimental (just fooling around) - mouse movement will act like a paddle
|
||||||
|
// #define OPTION_NON_ENGLISH_EXTENSIONS // add support for additional CW characters (i.e. À, Å, Þ, etc.)
|
||||||
|
// #define OPTION_DISPLAY_NON_ENGLISH_EXTENSIONS // LCD display suport for non-English (NO/DK/DE) characters - Courtesy of OZ1JHM
|
||||||
|
// #define OPTION_UNKNOWN_CHARACTER_ERROR_TONE
|
||||||
|
#define OPTION_DO_NOT_SAY_HI
|
||||||
|
#define OPTION_BLINK_HI_ON_PTT
|
||||||
|
// #define OPTION_PS2_NON_ENGLISH_CHAR_LCD_DISPLAY_SUPPORT // makes some non-English characters from the PS2 keyboard display correctly in the LCD display (donated by Marcin sp5iou)
|
||||||
|
// #define OPTION_PS2_KEYBOARD_RESET // reset the PS2 keyboard upon startup with 0xFF (contributed by Bill, W9BEL)
|
||||||
|
// #define OPTION_SAVE_MEMORY_NANOKEYER
|
||||||
|
// #define OPTION_CW_KEYBOARD_CAPSLOCK_BEEP
|
||||||
|
// #define OPTION_CW_KEYBOARD_ITALIAN
|
||||||
|
// #define OPTION_CW_KEYBOARD_GERMAN
|
||||||
|
// #define OPTION_CW_DECODER_GOERTZEL_AUDIO_DETECTOR
|
||||||
|
// #define OPTION_INVERT_PADDLE_PIN_LOGIC
|
||||||
|
// #define OPTION_ADVANCED_SPEED_DISPLAY //enables "nerd" speed visualization on display: wpm, cpm (char per min), duration of dit and dah in milliseconds and ratio (contributed by Giorgio, IZ2XBZ)
|
||||||
|
// #define OPTION_PROSIGN_SUPPORT // additional prosign support for paddle and straight key echo on display, CLI, and in memory storage
|
||||||
|
// #define OPTION_RUSSIAN_LANGUAGE_SEND_CLI // Russian language CLI sending support (contributed by Павел Бирюков, UA1AQC)
|
||||||
|
#define OPTION_DO_NOT_SEND_UNKNOWN_CHAR_QUESTION
|
||||||
|
// #define OPTION_CMOS_SUPER_KEYER_IAMBIC_B_TIMING_ON_BY_DEFAULT
|
||||||
|
#define OPTION_SIDETONE_DIGITAL_OUTPUT_NO_SQUARE_WAVE
|
||||||
|
|
||||||
|
// #define OPTION_WORDSWORTH_CZECH
|
||||||
|
// #define OPTION_WORDSWORTH_DEUTSCH
|
||||||
|
// #define OPTION_WORDSWORTH_NORSK
|
||||||
|
|
||||||
|
#define OPTION_EXCLUDE_EXTENDED_CLI_COMMANDS
|
||||||
|
// #define OPTION_NO_ULTIMATIC // reduce memory usage by removing ultimatic code.
|
||||||
|
|
||||||
|
// #define OPTION_PERSONALIZED_STARTUP_SCREEN // displays a user defined string of characters on the second or fourth row of the screen during startup. 1602 display requires OPTION_DO_NOT_SAY_HI
|
||||||
|
// #define OPTION_SWAP_PADDLE_PARAMETER_CHANGE_DIRECTION // reverses the up/down direction when using the paddles to change the wpm or sidetone frequency
|
||||||
|
// #define OPTION_DISPLAY_MEMORY_CONTENTS_COMMAND_MODE
|
||||||
|
|
||||||
|
// #define OPTION_BEACON_MODE_MEMORY_REPEAT_TIME // to space out the repeated playing of memory 1 when in beacon mode
|
||||||
|
// #define OPTION_BEACON_MODE_PTT_TAIL_TIME // adds the ptt tail time to each playing of memory 1 in beacon mode
|
||||||
|
|
||||||
|
// #define OPTION_WINKEY_PROSIGN_COMPATIBILITY // Additional character mappings to support K1EL Winkey emulation prosigns
|
119
k3ng_keyer/keyer_features_and_options_mortty_so2r.h
Executable file
119
k3ng_keyer/keyer_features_and_options_mortty_so2r.h
Executable file
|
@ -0,0 +1,119 @@
|
||||||
|
// compile time features and options - comment or uncomment to add or delete features
|
||||||
|
// FEATURES add more bytes to the compiled binary, OPTIONS change code behavior
|
||||||
|
|
||||||
|
|
||||||
|
// #define FEATURE_BUTTONS
|
||||||
|
// #define FEATURE_COMMAND_MODE
|
||||||
|
// #define FEATURE_COMMAND_LINE_INTERFACE // Command Line Interface functionality
|
||||||
|
// #define FEATURE_MEMORIES // on the Arduino Due, you must have FEATURE_EEPROM_E24C1024 and E24C1024 EEPROM hardware in order to compile this
|
||||||
|
// #define FEATURE_MEMORY_MACROS
|
||||||
|
#define FEATURE_WINKEY_EMULATION // disabling Automatic Software Reset is highly recommended (see documentation)
|
||||||
|
// #define FEATURE_BEACON // Go into beacon mode if paddle_left pin is LOW at boot up
|
||||||
|
// #define FEATURE_BEACON_SETTING // Go into beacon mode at boot up if EEPROM setting is enabled (\_ CLI Command)
|
||||||
|
// #define FEATURE_TRAINING_COMMAND_LINE_INTERFACE
|
||||||
|
// #define FEATURE_POTENTIOMETER // do not enable unless you have a potentiometer connected, otherwise noise will falsely trigger wpm changes
|
||||||
|
// #define FEATURE_SIDETONE_SWITCH // adds switch control for the sidetone output. requires an external toggle switch (assigned to an arduino pin - see keyer_pin_settings.h).
|
||||||
|
// #define FEATURE_SIDETONE_NEWTONE // Use the NewTone library, ~1k smaller code size than the standard tone library. Uses timer1 (pins 9 or 10) https://bitbucket.org/teckel12/arduino-new-tone/wiki/Home
|
||||||
|
// #define FEATURE_SERIAL_HELP
|
||||||
|
// #define FEATURE_HELL
|
||||||
|
// #define FEATURE_PS2_KEYBOARD // Use a PS2 keyboard to send code - Change keyboard layout (non-US) in K3NG_PS2Keyboard.h. Additional options below.
|
||||||
|
// #define FEATURE_USB_KEYBOARD // Use a USB keyboard to send code - Uncomment three lines in k3ng_keyer.ino (search for note_usb_uncomment_lines)
|
||||||
|
// #define FEATURE_CW_COMPUTER_KEYBOARD // Have an Arduino Due or Leonardo act as a USB HID (Human Interface Device) keyboard and use the paddle to "type" characters on the computer -- uncomment this line in ino file: #include <Keyboard.h>
|
||||||
|
// #define FEATURE_DEAD_OP_WATCHDOG
|
||||||
|
// #define FEATURE_AUTOSPACE
|
||||||
|
// #define FEATURE_FARNSWORTH
|
||||||
|
// #define FEATURE_DL2SBA_BANKSWITCH // Switch memory banks feature as described here: http://dl2sba.com/index.php?option=com_content&view=article&id=131:nanokeyer&catid=15:shack&Itemid=27#english
|
||||||
|
// #define FEATURE_LCD_4BIT // classic LCD disidefplay using 4 I/O lines
|
||||||
|
// #define FEATURE_LCD_ADAFRUIT_I2C // Adafruit I2C LCD display using MCP23017 at addr 0x20
|
||||||
|
// #define FEATURE_LCD_ADAFRUIT_BACKPACK // Adafruit I2C LCD Backup using MCP23008 (courtesy Josiah Ritchie, KE0BLL)
|
||||||
|
// #define FEATURE_LCD_YDv1 // YourDuino I2C LCD display with old LCM 1602 V1 ic
|
||||||
|
// #define FEATURE_LCD1602_N07DH // http://linksprite.com/wiki/index.php5?title=16_X_2_LCD_Keypad_Shield_for_Arduino
|
||||||
|
// #define FEATURE_LCD_SAINSMART_I2C
|
||||||
|
// #define FEATURE_LCD_I2C_FDEBRABANDER //https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library
|
||||||
|
// #define FEATURE_CW_DECODER // https://github.com/k3ng/k3ng_cw_keyer/wiki/385-Feature:-CW-Decoder
|
||||||
|
// #define FEATURE_SLEEP // go to sleep after x minutes to conserve battery power (not compatible with Arduino DUE, may have mixed results with Mega and Mega ADK)
|
||||||
|
// #define FEATURE_LCD_BACKLIGHT_AUTO_DIM // turn off LCD backlight and/or dim Power Indicator LED after x minutes (LED requires a PWM pin)
|
||||||
|
// #define FEATURE_ROTARY_ENCODER // rotary encoder speed control
|
||||||
|
// #define FEATURE_CMOS_SUPER_KEYER_IAMBIC_B_TIMING
|
||||||
|
// #define FEATURE_USB_MOUSE // Uncomment three lines in k3ng_keyer.ino (search for note_usb_uncomment_lines)
|
||||||
|
// #define FEATURE_CAPACITIVE_PADDLE_PINS // remove the bypass capacitors on the paddle_left and paddle_right lines when using capactive paddles
|
||||||
|
// #define FEATURE_LED_RING // Mayhew Labs Led Ring support
|
||||||
|
// #define FEATURE_ALPHABET_SEND_PRACTICE // enables command mode S command - created by Ryan, KC2ZWM
|
||||||
|
// #define FEATURE_COMMAND_MODE_PROGRESSIVE_5_CHAR_ECHO_PRACTICE // enables command mode U
|
||||||
|
// #define FEATURE_PTT_INTERLOCK
|
||||||
|
// #define FEATURE_QLF
|
||||||
|
// #define FEATURE_EEPROM_E24C1024
|
||||||
|
// #define FEATURE_STRAIGHT_KEY
|
||||||
|
// #define FEATURE_DYNAMIC_DAH_TO_DIT_RATIO
|
||||||
|
// #define FEATURE_PADDLE_ECHO
|
||||||
|
// #define FEATURE_STRAIGHT_KEY_ECHO
|
||||||
|
// #define FEATURE_AMERICAN_MORSE
|
||||||
|
// #define FEATURE_4x4_KEYPAD // code contributed by Jack, W0XR - documentation: https://github.com/k3ng/k3ng_cw_keyer/wiki/380-Feature:-Keypad
|
||||||
|
// #define FEATURE_3x4_KEYPAD // code contributed by Jack, W0XR - documentation: https://github.com/k3ng/k3ng_cw_keyer/wiki/380-Feature:-Keypad
|
||||||
|
// #define FEATURE_COMMAND_MODE_ENHANCED_CMD_ACKNOWLEDGEMENT
|
||||||
|
// #define FEATURE_WEB_SERVER // Details: https://github.com/k3ng/k3ng_cw_keyer/wiki/390-Feature:-Ethernet,-Web-Server,-and-Internet-Linking
|
||||||
|
// #define FEATURE_INTERNET_LINK // Details: https://github.com/k3ng/k3ng_cw_keyer/wiki/390-Feature:-Ethernet,-Web-Server,-and-Internet-Linking
|
||||||
|
|
||||||
|
// #define FEATURE_COMMAND_LINE_INTERFACE_ON_SECONDARY_PORT // Activate the Command Line interface on the secondary serial port
|
||||||
|
#define OPTION_PRIMARY_SERIAL_PORT_DEFAULT_WINKEY_EMULATION // Use when activating both FEATURE_WINKEY_EMULATION and FEATURE_COMMAND_LINE_INTERFACE
|
||||||
|
// simultaneously. This will make Winkey emulation be the default at boot up;
|
||||||
|
// hold command button down at boot up to activate CLI mode
|
||||||
|
|
||||||
|
// #define OPTION_SUPPRESS_SERIAL_BOOT_MSG
|
||||||
|
#define OPTION_INCLUDE_PTT_TAIL_FOR_MANUAL_SENDING
|
||||||
|
#define OPTION_EXCLUDE_PTT_HANG_TIME_FOR_MANUAL_SENDING
|
||||||
|
//#define OPTION_WINKEY_DISCARD_BYTES_AT_STARTUP // if ASR is not disabled, you may need this to discard errant serial port bytes at startup
|
||||||
|
// #define OPTION_WINKEY_STRICT_EEPROM_WRITES_MAY_WEAR_OUT_EEPROM // with this activated the unit will write non-volatile settings to EEPROM when set by Winkey commands
|
||||||
|
// #define OPTION_WINKEY_SEND_WORDSPACE_AT_END_OF_BUFFER
|
||||||
|
// #define OPTION_WINKEY_STRICT_HOST_OPEN // require an admin host open Winkey command before doing any other commands
|
||||||
|
#define OPTION_WINKEY_2_SUPPORT // comment out to revert to Winkey version 1 emulation
|
||||||
|
#define OPTION_WINKEY_INTERRUPTS_MEMORY_REPEAT
|
||||||
|
//#define OPTION_WINKEY_UCXLOG_9600_BAUD // use this only with UCXLog configured for Winkey 9600 baud mode
|
||||||
|
#define OPTION_WINKEY_2_HOST_CLOSE_NO_SERIAL_PORT_RESET // activate this when using Winkey 2 emulation and Win-Test
|
||||||
|
// #define OPTION_WINKEY_FREQUENT_STATUS_REPORT // activate this to make Winkey emulation play better with RUMlog and RUMped
|
||||||
|
#define OPTION_WINKEY_IGNORE_LOWERCASE // Enable for typical K1EL Winkeyer behavior (use for SkookumLogger version 1.10.14 and prior to workaround "r" bug)
|
||||||
|
#define OPTION_WINKEY_BLINK_PTT_ON_HOST_OPEN
|
||||||
|
// #define OPTION_WINKEY_SEND_VERSION_ON_HOST_CLOSE
|
||||||
|
// #define OPTION_WINKEY_PINCONFIG_PTT_CONTROLS_PTT_LINE // Have Winkeyer PTT setting activate/deactivate PTT line rather than control buffered character PTT hold
|
||||||
|
// #define OPTION_REVERSE_BUTTON_ORDER // This is mainly for the DJ0MY NanoKeyer http://nanokeyer.wordpress.com/
|
||||||
|
#define OPTION_PROG_MEM_TRIM_TRAILING_SPACES // trim trailing spaces from memory when programming in command mode
|
||||||
|
#define OPTION_DIT_PADDLE_NO_SEND_ON_MEM_RPT // this makes dit paddle memory interruption a little smoother
|
||||||
|
// #define OPTION_MORE_DISPLAY_MSGS // additional optional display messages - comment out to save memory
|
||||||
|
// #define OPTION_N1MM_WINKEY_TAB_BUG_WORKAROUND // enable this to ignore the TAB key in the Send CW window (this breaks SO2R functionality in N1MM)
|
||||||
|
// #define OPTION_WATCHDOG_TIMER // this enables a four second ATmega48/88/168/328 watchdog timer; use for unattended/remote operation only
|
||||||
|
// #define OPTION_MOUSE_MOVEMENT_PADDLE // experimental (just fooling around) - mouse movement will act like a paddle
|
||||||
|
// #define OPTION_NON_ENGLISH_EXTENSIONS // add support for additional CW characters (i.e. À, Å, Þ, etc.)
|
||||||
|
// #define OPTION_DISPLAY_NON_ENGLISH_EXTENSIONS // LCD display suport for non-English (NO/DK/DE) characters - Courtesy of OZ1JHM
|
||||||
|
// #define OPTION_UNKNOWN_CHARACTER_ERROR_TONE
|
||||||
|
#define OPTION_DO_NOT_SAY_HI
|
||||||
|
#define OPTION_BLINK_HI_ON_PTT
|
||||||
|
// #define OPTION_PS2_NON_ENGLISH_CHAR_LCD_DISPLAY_SUPPORT // makes some non-English characters from the PS2 keyboard display correctly in the LCD display (donated by Marcin sp5iou)
|
||||||
|
// #define OPTION_PS2_KEYBOARD_RESET // reset the PS2 keyboard upon startup with 0xFF (contributed by Bill, W9BEL)
|
||||||
|
// #define OPTION_SAVE_MEMORY_NANOKEYER
|
||||||
|
// #define OPTION_CW_KEYBOARD_CAPSLOCK_BEEP
|
||||||
|
// #define OPTION_CW_KEYBOARD_ITALIAN
|
||||||
|
// #define OPTION_CW_KEYBOARD_GERMAN
|
||||||
|
// #define OPTION_CW_DECODER_GOERTZEL_AUDIO_DETECTOR
|
||||||
|
// #define OPTION_INVERT_PADDLE_PIN_LOGIC
|
||||||
|
// #define OPTION_ADVANCED_SPEED_DISPLAY //enables "nerd" speed visualization on display: wpm, cpm (char per min), duration of dit and dah in milliseconds and ratio (contributed by Giorgio, IZ2XBZ)
|
||||||
|
// #define OPTION_PROSIGN_SUPPORT // additional prosign support for paddle and straight key echo on display, CLI, and in memory storage
|
||||||
|
// #define OPTION_RUSSIAN_LANGUAGE_SEND_CLI // Russian language CLI sending support (contributed by Павел Бирюков, UA1AQC)
|
||||||
|
#define OPTION_DO_NOT_SEND_UNKNOWN_CHAR_QUESTION
|
||||||
|
// #define OPTION_CMOS_SUPER_KEYER_IAMBIC_B_TIMING_ON_BY_DEFAULT
|
||||||
|
#define OPTION_SIDETONE_DIGITAL_OUTPUT_NO_SQUARE_WAVE
|
||||||
|
|
||||||
|
// #define OPTION_WORDSWORTH_CZECH
|
||||||
|
// #define OPTION_WORDSWORTH_DEUTSCH
|
||||||
|
// #define OPTION_WORDSWORTH_NORSK
|
||||||
|
|
||||||
|
#define OPTION_EXCLUDE_EXTENDED_CLI_COMMANDS
|
||||||
|
// #define OPTION_NO_ULTIMATIC // reduce memory usage by removing ultimatic code.
|
||||||
|
|
||||||
|
// #define OPTION_PERSONALIZED_STARTUP_SCREEN // displays a user defined string of characters on the second or fourth row of the screen during startup. 1602 display requires OPTION_DO_NOT_SAY_HI
|
||||||
|
// #define OPTION_SWAP_PADDLE_PARAMETER_CHANGE_DIRECTION // reverses the up/down direction when using the paddles to change the wpm or sidetone frequency
|
||||||
|
// #define OPTION_DISPLAY_MEMORY_CONTENTS_COMMAND_MODE
|
||||||
|
|
||||||
|
// #define OPTION_BEACON_MODE_MEMORY_REPEAT_TIME // to space out the repeated playing of memory 1 when in beacon mode
|
||||||
|
// #define OPTION_BEACON_MODE_PTT_TAIL_TIME // adds the ptt tail time to each playing of memory 1 in beacon mode
|
||||||
|
|
||||||
|
// #define OPTION_WINKEY_PROSIGN_COMPATIBILITY // Additional character mappings to support K1EL Winkey emulation prosigns
|
120
k3ng_keyer/keyer_features_and_options_mortty_so2r_with_potentiometer.h
Executable file
120
k3ng_keyer/keyer_features_and_options_mortty_so2r_with_potentiometer.h
Executable file
|
@ -0,0 +1,120 @@
|
||||||
|
// compile time features and options - comment or uncomment to add or delete features
|
||||||
|
// FEATURES add more bytes to the compiled binary, OPTIONS change code behavior
|
||||||
|
|
||||||
|
|
||||||
|
// #define FEATURE_BUTTONS
|
||||||
|
// #define FEATURE_COMMAND_MODE
|
||||||
|
// #define FEATURE_COMMAND_LINE_INTERFACE // Command Line Interface functionality
|
||||||
|
// #define FEATURE_MEMORIES // on the Arduino Due, you must have FEATURE_EEPROM_E24C1024 and E24C1024 EEPROM hardware in order to compile this
|
||||||
|
// #define FEATURE_MEMORY_MACROS
|
||||||
|
#define FEATURE_WINKEY_EMULATION // disabling Automatic Software Reset is highly recommended (see documentation)
|
||||||
|
// #define FEATURE_BEACON // Go into beacon mode if paddle_left pin is LOW at boot up
|
||||||
|
// #define FEATURE_BEACON_SETTING // Go into beacon mode at boot up if EEPROM setting is enabled (\_ CLI Command)
|
||||||
|
// #define FEATURE_TRAINING_COMMAND_LINE_INTERFACE
|
||||||
|
#define FEATURE_POTENTIOMETER // do not enable unless you have a potentiometer connected, otherwise noise will falsely trigger wpm changes
|
||||||
|
// #define FEATURE_SIDETONE_SWITCH // adds switch control for the sidetone output. requires an external toggle switch (assigned to an arduino pin - see keyer_pin_settings.h).
|
||||||
|
// #define FEATURE_SERIAL_HELP
|
||||||
|
// #define FEATURE_HELL
|
||||||
|
// #define FEATURE_PS2_KEYBOARD // Use a PS2 keyboard to send code - Change keyboard layout (non-US) in K3NG_PS2Keyboard.h. Additional options below.
|
||||||
|
// #define FEATURE_USB_KEYBOARD // Use a USB keyboard to send code - Uncomment three lines in k3ng_keyer.ino (search for note_usb_uncomment_lines)
|
||||||
|
// #define FEATURE_CW_COMPUTER_KEYBOARD // Have an Arduino Due or Leonardo act as a USB HID (Human Interface Device) keyboard and use the paddle to "type" characters on the computer -- uncomment this line in ino file: #include <Keyboard.h>
|
||||||
|
// #define FEATURE_DEAD_OP_WATCHDOG
|
||||||
|
// #define FEATURE_AUTOSPACE
|
||||||
|
// #define FEATURE_FARNSWORTH
|
||||||
|
// #define FEATURE_DL2SBA_BANKSWITCH // Switch memory banks feature as described here: http://dl2sba.com/index.php?option=com_content&view=article&id=131:nanokeyer&catid=15:shack&Itemid=27#english
|
||||||
|
// #define FEATURE_LCD_4BIT // classic LCD disidefplay using 4 I/O lines
|
||||||
|
// #define FEATURE_LCD_ADAFRUIT_I2C // Adafruit I2C LCD display using MCP23017 at addr 0x20
|
||||||
|
// #define FEATURE_LCD_ADAFRUIT_BACKPACK // Adafruit I2C LCD Backup using MCP23008 (courtesy Josiah Ritchie, KE0BLL)
|
||||||
|
// #define FEATURE_LCD_YDv1 // YourDuino I2C LCD display with old LCM 1602 V1 ic
|
||||||
|
// #define FEATURE_LCD1602_N07DH // http://linksprite.com/wiki/index.php5?title=16_X_2_LCD_Keypad_Shield_for_Arduino
|
||||||
|
// #define FEATURE_LCD_SAINSMART_I2C
|
||||||
|
// #define FEATURE_LCD_I2C_FDEBRABANDER //https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library
|
||||||
|
// #define FEATURE_CW_DECODER // https://github.com/k3ng/k3ng_cw_keyer/wiki/385-Feature:-CW-Decoder
|
||||||
|
// #define FEATURE_SLEEP // go to sleep after x minutes to conserve battery power (not compatible with Arduino DUE, may have mixed results with Mega and Mega ADK)
|
||||||
|
// #define FEATURE_LCD_BACKLIGHT_AUTO_DIM // turn off LCD backlight and/or dim Power Indicator LED after x minutes (LED requires a PWM pin)
|
||||||
|
// #define FEATURE_ROTARY_ENCODER // rotary encoder speed control
|
||||||
|
// #define FEATURE_CMOS_SUPER_KEYER_IAMBIC_B_TIMING
|
||||||
|
// #define FEATURE_USB_MOUSE // Uncomment three lines in k3ng_keyer.ino (search for note_usb_uncomment_lines)
|
||||||
|
// #define FEATURE_CAPACITIVE_PADDLE_PINS // remove the bypass capacitors on the paddle_left and paddle_right lines when using capactive paddles
|
||||||
|
// #define FEATURE_LED_RING // Mayhew Labs Led Ring support
|
||||||
|
// #define FEATURE_ALPHABET_SEND_PRACTICE // enables command mode S command - created by Ryan, KC2ZWM
|
||||||
|
// #define FEATURE_COMMAND_MODE_PROGRESSIVE_5_CHAR_ECHO_PRACTICE // enables command mode U
|
||||||
|
// #define FEATURE_PTT_INTERLOCK
|
||||||
|
// #define FEATURE_QLF
|
||||||
|
// #define FEATURE_EEPROM_E24C1024
|
||||||
|
// #define FEATURE_STRAIGHT_KEY
|
||||||
|
// #define FEATURE_DYNAMIC_DAH_TO_DIT_RATIO
|
||||||
|
// #define FEATURE_PADDLE_ECHO
|
||||||
|
// #define FEATURE_STRAIGHT_KEY_ECHO
|
||||||
|
// #define FEATURE_WEB_SERVER // Details: https://github.com/k3ng/k3ng_cw_keyer/wiki/390-Feature:-Ethernet,-Web-Server,-and-Internet-Linking
|
||||||
|
// #define FEATURE_INTERNET_LINK // Details: https://github.com/k3ng/k3ng_cw_keyer/wiki/390-Feature:-Ethernet,-Web-Server,-and-Internet-Linking
|
||||||
|
// #define FEATURE_AMERICAN_MORSE
|
||||||
|
// #define FEATURE_4x4_KEYPAD // code contributed by Jack, W0XR - documentation: https://github.com/k3ng/k3ng_cw_keyer/wiki/380-Feature:-Keypad
|
||||||
|
// #define FEATURE_3x4_KEYPAD // code contributed by Jack, W0XR - documentation: https://github.com/k3ng/k3ng_cw_keyer/wiki/380-Feature:-Keypad
|
||||||
|
// #define FEATURE_COMMAND_MODE_ENHANCED_CMD_ACKNOWLEDGEMENT
|
||||||
|
// #define FEATURE_WEB_SERVER // Details: https://github.com/k3ng/k3ng_cw_keyer/wiki/390-Feature:-Ethernet,-Web-Server,-and-Internet-Linking
|
||||||
|
// #define FEATURE_INTERNET_LINK // Details: https://github.com/k3ng/k3ng_cw_keyer/wiki/390-Feature:-Ethernet,-Web-Server,-and-Internet-Linking
|
||||||
|
|
||||||
|
// #define FEATURE_COMMAND_LINE_INTERFACE_ON_SECONDARY_PORT // Activate the Command Line interface on the secondary serial port
|
||||||
|
#define OPTION_PRIMARY_SERIAL_PORT_DEFAULT_WINKEY_EMULATION // Use when activating both FEATURE_WINKEY_EMULATION and FEATURE_COMMAND_LINE_INTERFACE
|
||||||
|
// simultaneously. This will make Winkey emulation be the default at boot up;
|
||||||
|
// hold command button down at boot up to activate CLI mode
|
||||||
|
|
||||||
|
// #define OPTION_SUPPRESS_SERIAL_BOOT_MSG
|
||||||
|
#define OPTION_INCLUDE_PTT_TAIL_FOR_MANUAL_SENDING
|
||||||
|
#define OPTION_EXCLUDE_PTT_HANG_TIME_FOR_MANUAL_SENDING
|
||||||
|
//#define OPTION_WINKEY_DISCARD_BYTES_AT_STARTUP // if ASR is not disabled, you may need this to discard errant serial port bytes at startup
|
||||||
|
// #define OPTION_WINKEY_STRICT_EEPROM_WRITES_MAY_WEAR_OUT_EEPROM // with this activated the unit will write non-volatile settings to EEPROM when set by Winkey commands
|
||||||
|
// #define OPTION_WINKEY_SEND_WORDSPACE_AT_END_OF_BUFFER
|
||||||
|
// #define OPTION_WINKEY_STRICT_HOST_OPEN // require an admin host open Winkey command before doing any other commands
|
||||||
|
#define OPTION_WINKEY_2_SUPPORT // comment out to revert to Winkey version 1 emulation
|
||||||
|
#define OPTION_WINKEY_INTERRUPTS_MEMORY_REPEAT
|
||||||
|
//#define OPTION_WINKEY_UCXLOG_9600_BAUD // use this only with UCXLog configured for Winkey 9600 baud mode
|
||||||
|
#define OPTION_WINKEY_2_HOST_CLOSE_NO_SERIAL_PORT_RESET // activate this when using Winkey 2 emulation and Win-Test
|
||||||
|
// #define OPTION_WINKEY_FREQUENT_STATUS_REPORT // activate this to make Winkey emulation play better with RUMlog and RUMped
|
||||||
|
#define OPTION_WINKEY_IGNORE_LOWERCASE // Enable for typical K1EL Winkeyer behavior (use for SkookumLogger version 1.10.14 and prior to workaround "r" bug)
|
||||||
|
#define OPTION_WINKEY_BLINK_PTT_ON_HOST_OPEN
|
||||||
|
// #define OPTION_WINKEY_SEND_VERSION_ON_HOST_CLOSE
|
||||||
|
// #define OPTION_WINKEY_PINCONFIG_PTT_CONTROLS_PTT_LINE // Have Winkeyer PTT setting activate/deactivate PTT line rather than control buffered character PTT hold
|
||||||
|
// #define OPTION_REVERSE_BUTTON_ORDER // This is mainly for the DJ0MY NanoKeyer http://nanokeyer.wordpress.com/
|
||||||
|
#define OPTION_PROG_MEM_TRIM_TRAILING_SPACES // trim trailing spaces from memory when programming in command mode
|
||||||
|
#define OPTION_DIT_PADDLE_NO_SEND_ON_MEM_RPT // this makes dit paddle memory interruption a little smoother
|
||||||
|
// #define OPTION_MORE_DISPLAY_MSGS // additional optional display messages - comment out to save memory
|
||||||
|
// #define OPTION_N1MM_WINKEY_TAB_BUG_WORKAROUND // enable this to ignore the TAB key in the Send CW window (this breaks SO2R functionality in N1MM)
|
||||||
|
// #define OPTION_WATCHDOG_TIMER // this enables a four second ATmega48/88/168/328 watchdog timer; use for unattended/remote operation only
|
||||||
|
// #define OPTION_MOUSE_MOVEMENT_PADDLE // experimental (just fooling around) - mouse movement will act like a paddle
|
||||||
|
// #define OPTION_NON_ENGLISH_EXTENSIONS // add support for additional CW characters (i.e. À, Å, Þ, etc.)
|
||||||
|
// #define OPTION_DISPLAY_NON_ENGLISH_EXTENSIONS // LCD display suport for non-English (NO/DK/DE) characters - Courtesy of OZ1JHM
|
||||||
|
// #define OPTION_UNKNOWN_CHARACTER_ERROR_TONE
|
||||||
|
#define OPTION_DO_NOT_SAY_HI
|
||||||
|
#define OPTION_BLINK_HI_ON_PTT
|
||||||
|
// #define OPTION_PS2_NON_ENGLISH_CHAR_LCD_DISPLAY_SUPPORT // makes some non-English characters from the PS2 keyboard display correctly in the LCD display (donated by Marcin sp5iou)
|
||||||
|
// #define OPTION_PS2_KEYBOARD_RESET // reset the PS2 keyboard upon startup with 0xFF (contributed by Bill, W9BEL)
|
||||||
|
// #define OPTION_SAVE_MEMORY_NANOKEYER
|
||||||
|
// #define OPTION_CW_KEYBOARD_CAPSLOCK_BEEP
|
||||||
|
// #define OPTION_CW_KEYBOARD_ITALIAN
|
||||||
|
// #define OPTION_CW_KEYBOARD_GERMAN
|
||||||
|
// #define OPTION_CW_DECODER_GOERTZEL_AUDIO_DETECTOR
|
||||||
|
// #define OPTION_INVERT_PADDLE_PIN_LOGIC
|
||||||
|
// #define OPTION_ADVANCED_SPEED_DISPLAY //enables "nerd" speed visualization on display: wpm, cpm (char per min), duration of dit and dah in milliseconds and ratio (contributed by Giorgio, IZ2XBZ)
|
||||||
|
// #define OPTION_PROSIGN_SUPPORT // additional prosign support for paddle and straight key echo on display, CLI, and in memory storage
|
||||||
|
// #define OPTION_RUSSIAN_LANGUAGE_SEND_CLI // Russian language CLI sending support (contributed by Павел Бирюков, UA1AQC)
|
||||||
|
#define OPTION_DO_NOT_SEND_UNKNOWN_CHAR_QUESTION
|
||||||
|
// #define OPTION_CMOS_SUPER_KEYER_IAMBIC_B_TIMING_ON_BY_DEFAULT
|
||||||
|
#define OPTION_SIDETONE_DIGITAL_OUTPUT_NO_SQUARE_WAVE
|
||||||
|
|
||||||
|
// #define OPTION_WORDSWORTH_CZECH
|
||||||
|
// #define OPTION_WORDSWORTH_DEUTSCH
|
||||||
|
// #define OPTION_WORDSWORTH_NORSK
|
||||||
|
|
||||||
|
#define OPTION_EXCLUDE_EXTENDED_CLI_COMMANDS
|
||||||
|
// #define OPTION_NO_ULTIMATIC // reduce memory usage by removing ultimatic code.
|
||||||
|
|
||||||
|
// #define OPTION_PERSONALIZED_STARTUP_SCREEN // displays a user defined string of characters on the second or fourth row of the screen during startup. 1602 display requires OPTION_DO_NOT_SAY_HI
|
||||||
|
// #define OPTION_SWAP_PADDLE_PARAMETER_CHANGE_DIRECTION // reverses the up/down direction when using the paddles to change the wpm or sidetone frequency
|
||||||
|
// #define OPTION_DISPLAY_MEMORY_CONTENTS_COMMAND_MODE
|
||||||
|
|
||||||
|
// #define OPTION_BEACON_MODE_MEMORY_REPEAT_TIME // to space out the repeated playing of memory 1 when in beacon mode
|
||||||
|
// #define OPTION_BEACON_MODE_PTT_TAIL_TIME // adds the ptt tail time to each playing of memory 1 in beacon mode
|
||||||
|
|
||||||
|
// #define OPTION_WINKEY_PROSIGN_COMPATIBILITY // Additional character mappings to support K1EL Winkey emulation prosigns
|
113
k3ng_keyer/keyer_features_and_options_nanokeyer_rev_b.h
Executable file
113
k3ng_keyer/keyer_features_and_options_nanokeyer_rev_b.h
Executable file
|
@ -0,0 +1,113 @@
|
||||||
|
// compile time features and options - comment or uncomment to add or delete features
|
||||||
|
// FEATURES add more bytes to the compiled binary, OPTIONS change code behavior
|
||||||
|
|
||||||
|
#define FEATURE_BUTTONS
|
||||||
|
#define FEATURE_COMMAND_MODE
|
||||||
|
//#define FEATURE_COMMAND_LINE_INTERFACE // (this no longer requires FEATURE_SERIAL)
|
||||||
|
#define FEATURE_MEMORIES
|
||||||
|
//#define FEATURE_MEMORY_MACROS
|
||||||
|
#define FEATURE_WINKEY_EMULATION // disabling Automatic Software Reset is highly recommended (see documentation)
|
||||||
|
//#define FEATURE_BEACON // Go into beacon mode if paddle_left pin is LOW at boot up
|
||||||
|
//#define FEATURE_BEACON_SETTING // Go into beacon mode at boot up if EEPROM setting is enabled (\_ CLI Command)
|
||||||
|
//#define FEATURE_TRAINING_COMMAND_LINE_INTERFACE
|
||||||
|
#define FEATURE_POTENTIOMETER // do not enable unless you have a potentiometer connected, otherwise noise will falsely trigger wpm changes
|
||||||
|
//#define FEATURE_SIDETONE_SWITCH // adds switch control for the sidetone output. requires an external toggle switch (assigned to an arduino pin - see keyer_pin_settings.h).
|
||||||
|
//#define FEATURE_SIDETONE_NEWTONE // Use the NewTone library, ~1k smaller code size than the standard tone library. Uses timer1 (pins 9 or 10) https://bitbucket.org/teckel12/arduino-new-tone/wiki/Home
|
||||||
|
//#define FEATURE_SERIAL_HELP
|
||||||
|
//#define FEATURE_HELL
|
||||||
|
//#define FEATURE_PS2_KEYBOARD // Change keyboard layout (non-US in K3NG_PS2Keyboard.h). Additional options below.
|
||||||
|
//#define FEATURE_USB_KEYBOARD
|
||||||
|
//#define FEATURE_DEAD_OP_WATCHDOG
|
||||||
|
//#define FEATURE_AUTOSPACE
|
||||||
|
//#define FEATURE_FARNSWORTH
|
||||||
|
//#define FEATURE_DL2SBA_BANKSWITCH // Switch memory banks feature as described here: http://dl2sba.com/index.php?option=com_content&view=article&id=131:nanokeyer&catid=15:shack&Itemid=27#english
|
||||||
|
//#define FEATURE_LCD_4BIT // classic LCD disidefplay using 4 I/O lines
|
||||||
|
//#define FEATURE_LCD_ADAFRUIT_I2C // Adafruit I2C LCD display using MCP23017 at addr 0x20
|
||||||
|
//#define FEATURE_LCD_YDv1 // YourDuino I2C LCD display with old LCM 1602 V1 ic
|
||||||
|
//#define FEATURE_LCD_I2C_FDEBRABANDER //https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library
|
||||||
|
// #define FEATURE_CW_DECODER // https://github.com/k3ng/k3ng_cw_keyer/wiki/385-Feature:-CW-Decoder
|
||||||
|
//#define FEATURE_SLEEP // go to sleep after x minutes to conserve battery power (not compatible with Arduino DUE, may have mixed results with Mega and Mega ADK)
|
||||||
|
//#define FEATURE_LCD_BACKLIGHT_AUTO_DIM // turn off LCD backlight and/or dim Power Indicator LED after x minutes (LED requires a PWM pin)
|
||||||
|
//#define FEATURE_ROTARY_ENCODER // rotary encoder speed control
|
||||||
|
//#define FEATURE_CMOS_SUPER_KEYER_IAMBIC_B_TIMING
|
||||||
|
//#define FEATURE_USB_MOUSE // Uncomment three lines in k3ng_keyer.ino (search for note_usb_uncomment_lines)
|
||||||
|
//#define FEATURE_CAPACITIVE_PADDLE_PINS // remove the bypass capacitors on the paddle_left and paddle_right lines when using capactive paddles
|
||||||
|
//#define FEATURE_LED_RING // Mayhew Labs Led Ring support
|
||||||
|
//#define FEATURE_ALPHABET_SEND_PRACTICE // enables command mode S command - created by Ryan, KC2ZWM
|
||||||
|
//#define FEATURE_COMMAND_MODE_PROGRESSIVE_5_CHAR_ECHO_PRACTICE // enables command mode U
|
||||||
|
//#define FEATURE_PTT_INTERLOCK
|
||||||
|
//#define FEATURE_QLF
|
||||||
|
//#define FEATURE_EEPROM_E24C1024
|
||||||
|
//#define FEATURE_STRAIGHT_KEY
|
||||||
|
//#define FEATURE_DYNAMIC_DAH_TO_DIT_RATIO
|
||||||
|
//#define FEATURE_PADDLE_ECHO
|
||||||
|
//#define FEATURE_STRAIGHT_KEY_ECHO
|
||||||
|
//#define FEATURE_AMERICAN_MORSE
|
||||||
|
//#define FEATURE_4x4_KEYPAD // code contributed by Jack, W0XR - documentation: https://github.com/k3ng/k3ng_cw_keyer/wiki/380-Feature:-Keypad
|
||||||
|
//#define FEATURE_3x4_KEYPAD // code contributed by Jack, W0XR - documentation: https://github.com/k3ng/k3ng_cw_keyer/wiki/380-Feature:-Keypad
|
||||||
|
//#define FEATURE_SEQUENCER
|
||||||
|
//#define FEATURE_SD_CARD_SUPPORT
|
||||||
|
//#define FEATURE_COMMAND_MODE_ENHANCED_CMD_ACKNOWLEDGEMENT
|
||||||
|
// #define FEATURE_WEB_SERVER // Details: https://github.com/k3ng/k3ng_cw_keyer/wiki/390-Feature:-Ethernet,-Web-Server,-and-Internet-Linking
|
||||||
|
// #define FEATURE_INTERNET_LINK // Details: https://github.com/k3ng/k3ng_cw_keyer/wiki/390-Feature:-Ethernet,-Web-Server,-and-Internet-Linking
|
||||||
|
|
||||||
|
//#define OPTION_SUPPRESS_SERIAL_BOOT_MSG
|
||||||
|
#define OPTION_INCLUDE_PTT_TAIL_FOR_MANUAL_SENDING
|
||||||
|
#define OPTION_EXCLUDE_PTT_HANG_TIME_FOR_MANUAL_SENDING
|
||||||
|
//#define OPTION_SERIAL_PORT_DEFAULT_WINKEY_EMULATION // Use when activating both FEATURE_WINKEY_EMULATION and FEATURE_COMMAND_LINE_INTERFACE simultaneously. This will make Winkey emulation be the default at boot up; hold command button down at boot up to activate CLI mode
|
||||||
|
//#define OPTION_WINKEY_DISCARD_BYTES_AT_STARTUP // if ASR is not disabled, you may need this to discard errant serial port bytes at startup
|
||||||
|
//#define OPTION_WINKEY_STRICT_EEPROM_WRITES_MAY_WEAR_OUT_EEPROM // with this activated the unit will write non-volatile settings to EEPROM when set by Winkey commands
|
||||||
|
//#define OPTION_WINKEY_SEND_WORDSPACE_AT_END_OF_BUFFER
|
||||||
|
#define OPTION_WINKEY_STRICT_HOST_OPEN // require an admin host open Winkey command before doing any other commands
|
||||||
|
#define OPTION_WINKEY_2_SUPPORT // comment out to revert to Winkey version 1 emulation
|
||||||
|
#define OPTION_WINKEY_INTERRUPTS_MEMORY_REPEAT
|
||||||
|
//#define OPTION_WINKEY_UCXLOG_9600_BAUD // use this only with UCXLog configured for Winkey 9600 baud mode
|
||||||
|
#define OPTION_WINKEY_2_HOST_CLOSE_NO_SERIAL_PORT_RESET // (Required for Win-Test to function)
|
||||||
|
//#define OPTION_WINKEY_FREQUENT_STATUS_REPORT // activate this to make Winkey emulation play better with RUMlog and RUMped
|
||||||
|
#define OPTION_WINKEY_IGNORE_LOWERCASE // Enable for typical K1EL Winkeyer behavior (use for SkookumLogger version 1.10.14 and prior to workaround bug)
|
||||||
|
//#define OPTION_WINKEY_BLINK_PTT_ON_HOST_OPEN
|
||||||
|
//#define OPTION_WINKEY_SEND_VERSION_ON_HOST_CLOSE
|
||||||
|
//#define OPTION_WINKEY_PINCONFIG_PTT_CONTROLS_PTT_LINE // Have Winkeyer PTT setting activate/deactivate PTT line rather than control buffered character PTT hold
|
||||||
|
//#define OPTION_REVERSE_BUTTON_ORDER // This is mainly for the DJ0MY NanoKeyer http://nanokeyer.wordpress.com/
|
||||||
|
#define OPTION_PROG_MEM_TRIM_TRAILING_SPACES // trim trailing spaces from memory when programming in command mode
|
||||||
|
#define OPTION_DIT_PADDLE_NO_SEND_ON_MEM_RPT // this makes dit paddle memory interruption a little smoother
|
||||||
|
//#define OPTION_MORE_DISPLAY_MSGS // additional optional display messages - comment out to save memory
|
||||||
|
//#define OPTION_WATCHDOG_TIMER // this enables a four second ATmega48/88/168/328 watchdog timer; use for unattended/remote operation only
|
||||||
|
//#define OPTION_MOUSE_MOVEMENT_PADDLE // experimental (just fooling around) - mouse movement will act like a paddle
|
||||||
|
//#define OPTION_NON_ENGLISH_EXTENSIONS // add support for additional CW characters (i.e. À, Å, Þ, etc.)
|
||||||
|
//#define OPTION_DISPLAY_NON_ENGLISH_EXTENSIONS // LCD display suport for non-English (NO/DK/DE) characters - Courtesy of OZ1JHM
|
||||||
|
//#define OPTION_UNKNOWN_CHARACTER_ERROR_TONE
|
||||||
|
//#define OPTION_DO_NOT_SAY_HI
|
||||||
|
//#define OPTION_PS2_NON_ENGLISH_CHAR_LCD_DISPLAY_SUPPORT // makes some non-English characters from the PS2 keyboard display correctly in the LCD display (donated by Marcin sp5iou)
|
||||||
|
//#define OPTION_PS2_KEYBOARD_RESET // reset the PS2 keyboard upon startup with 0xFF (contributed by Bill, W9BEL)
|
||||||
|
#define OPTION_SAVE_MEMORY_NANOKEYER
|
||||||
|
//#define OPTION_INVERT_PADDLE_PIN_LOGIC
|
||||||
|
//#define OPTION_ADVANCED_SPEED_DISPLAY //enables "nerd" speed visualization on display: wpm, cpm (char per min), duration of dit and dah in milliseconds and ratio (contributed by Giorgio, IZ2XBZ)
|
||||||
|
//#define OPTION_RUSSIAN_LANGUAGE_SEND_CLI // Russian language CLI sending support (contributed by Павел Бирюков, UA1AQC)
|
||||||
|
#define OPTION_DO_NOT_SEND_UNKNOWN_CHAR_QUESTION
|
||||||
|
//#define OPTION_CMOS_SUPER_KEYER_IAMBIC_B_TIMING_ON_BY_DEFAULT
|
||||||
|
//#define OPTION_SIDETONE_DIGITAL_OUTPUT_NO_SQUARE_WAVE
|
||||||
|
|
||||||
|
// #define OPTION_DIRECT_PADDLE_PIN_READS_MEGA // only works with Mega and pins 2 and 5 - minor performance increase
|
||||||
|
// #define OPTION_DIRECT_PADDLE_PIN_READS_UNO // Unos or Nanos pins 2 and 5 - do not enable on a nanoKeyer, it uses different pins
|
||||||
|
|
||||||
|
// #define OPTION_WORDSWORTH_CZECH
|
||||||
|
// #define OPTION_WORDSWORTH_DEUTSCH
|
||||||
|
// #define OPTION_WORDSWORTH_NORSK
|
||||||
|
|
||||||
|
#define OPTION_EXCLUDE_EXTENDED_CLI_COMMANDS
|
||||||
|
|
||||||
|
// #define OPTION_DFROBOT_LCD_COMMAND_BUTTONS
|
||||||
|
|
||||||
|
#define OPTION_EXCLUDE_MILL_MODE
|
||||||
|
// #define OPTION_NO_ULTIMATIC // reduce memory usage by removing ultimatic code.
|
||||||
|
|
||||||
|
// #define OPTION_DISABLE_SERIAL_PORT_CHECKING_WHILE_SENDING_CW
|
||||||
|
// #define OPTION_PERSONALIZED_STARTUP_SCREEN // displays a user defined string of characters on the second or fourth row of the screen during startup. 1602 display requires OPTION_DO_NOT_SAY_HI
|
||||||
|
// #define OPTION_SWAP_PADDLE_PARAMETER_CHANGE_DIRECTION // reverses the up/down direction when using the paddles to change the wpm or sidetone frequency
|
||||||
|
// #define OPTION_DISPLAY_MEMORY_CONTENTS_COMMAND_MODE
|
||||||
|
|
||||||
|
// #define OPTION_BEACON_MODE_MEMORY_REPEAT_TIME // to space out the repeated playing of memory 1 when in beacon mode
|
||||||
|
// #define OPTION_BEACON_MODE_PTT_TAIL_TIME // adds the ptt tail time to each playing of memory 1 in beacon mode
|
||||||
|
|
||||||
|
// #define OPTION_WINKEY_PROSIGN_COMPATIBILITY // Additional character mappings to support K1EL Winkey emulation prosigns
|
113
k3ng_keyer/keyer_features_and_options_nanokeyer_rev_d.h
Executable file
113
k3ng_keyer/keyer_features_and_options_nanokeyer_rev_d.h
Executable file
|
@ -0,0 +1,113 @@
|
||||||
|
// compile time features and options - comment or uncomment to add or delete features
|
||||||
|
// FEATURES add more bytes to the compiled binary, OPTIONS change code behavior
|
||||||
|
|
||||||
|
#define FEATURE_BUTTONS
|
||||||
|
#define FEATURE_COMMAND_MODE
|
||||||
|
//#define FEATURE_COMMAND_LINE_INTERFACE // (this no longer requires FEATURE_SERIAL)
|
||||||
|
#define FEATURE_MEMORIES
|
||||||
|
//#define FEATURE_MEMORY_MACROS
|
||||||
|
#define FEATURE_WINKEY_EMULATION // disabling Automatic Software Reset is highly recommended (see documentation)
|
||||||
|
//#define FEATURE_BEACON // Go into beacon mode if paddle_left pin is LOW at boot up
|
||||||
|
//#define FEATURE_BEACON_SETTING // Go into beacon mode at boot up if EEPROM setting is enabled (\_ CLI Command)
|
||||||
|
//#define FEATURE_TRAINING_COMMAND_LINE_INTERFACE
|
||||||
|
#define FEATURE_POTENTIOMETER // do not enable unless you have a potentiometer connected, otherwise noise will falsely trigger wpm changes
|
||||||
|
//#define FEATURE_SIDETONE_SWITCH // adds switch control for the sidetone output. requires an external toggle switch (assigned to an arduino pin - see keyer_pin_settings.h).
|
||||||
|
//#define FEATURE_SERIAL_HELP
|
||||||
|
//#define FEATURE_HELL
|
||||||
|
//#define FEATURE_PS2_KEYBOARD // Change keyboard layout (non-US in K3NG_PS2Keyboard.h). Additional options below.
|
||||||
|
//#define FEATURE_USB_KEYBOARD
|
||||||
|
//#define FEATURE_DEAD_OP_WATCHDOG
|
||||||
|
//#define FEATURE_AUTOSPACE
|
||||||
|
//#define FEATURE_FARNSWORTH
|
||||||
|
//#define FEATURE_DL2SBA_BANKSWITCH // Switch memory banks feature as described here: http://dl2sba.com/index.php?option=com_content&view=article&id=131:nanokeyer&catid=15:shack&Itemid=27#english
|
||||||
|
//#define FEATURE_LCD_4BIT // classic LCD disidefplay using 4 I/O lines
|
||||||
|
//#define FEATURE_LCD_ADAFRUIT_I2C // Adafruit I2C LCD display using MCP23017 at addr 0x20
|
||||||
|
//#define FEATURE_LCD_YDv1 // YourDuino I2C LCD display with old LCM 1602 V1 ic
|
||||||
|
//#define FEATURE_LCD_I2C_FDEBRABANDER //https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library
|
||||||
|
// #define FEATURE_CW_DECODER // https://github.com/k3ng/k3ng_cw_keyer/wiki/385-Feature:-CW-Decoder
|
||||||
|
//#define FEATURE_SLEEP // go to sleep after x minutes to conserve battery power
|
||||||
|
//#define FEATURE_LCD_BACKLIGHT_AUTO_DIM // turn off LCD backlight and/or dim Power Indicator LED after x minutes (LED requires a PWM pin)
|
||||||
|
//#define FEATURE_ROTARY_ENCODER // rotary encoder speed control
|
||||||
|
//#define FEATURE_CMOS_SUPER_KEYER_IAMBIC_B_TIMING
|
||||||
|
//#define FEATURE_USB_MOUSE
|
||||||
|
//#define FEATURE_CAPACITIVE_PADDLE_PINS // remove the bypass capacitors on the paddle_left and paddle_right lines when using capactive paddles
|
||||||
|
//#define FEATURE_LED_RING // Mayhew Labs Led Ring support
|
||||||
|
//#define FEATURE_ALPHABET_SEND_PRACTICE // enables command mode S command - created by Ryan, KC2ZWM
|
||||||
|
//#define FEATURE_COMMAND_MODE_PROGRESSIVE_5_CHAR_ECHO_PRACTICE // enables command mode U
|
||||||
|
//#define FEATURE_PTT_INTERLOCK
|
||||||
|
//#define FEATURE_QLF
|
||||||
|
//#define FEATURE_EEPROM_E24C1024
|
||||||
|
//#define FEATURE_STRAIGHT_KEY
|
||||||
|
//#define FEATURE_WEB_SERVER // Details: https://github.com/k3ng/k3ng_cw_keyer/wiki/390-Feature:-Ethernet,-Web-Server,-and-Internet-Linking
|
||||||
|
//#define FEATURE_INTERNET_LINK // Details: https://github.com/k3ng/k3ng_cw_keyer/wiki/390-Feature:-Ethernet,-Web-Server,-and-Internet-Linking
|
||||||
|
//#define FEATURE_DYNAMIC_DAH_TO_DIT_RATIO
|
||||||
|
//#define FEATURE_AMERICAN_MORSE
|
||||||
|
//#define FEATURE_4x4_KEYPAD // code contributed by Jack, W0XR - documentation: https://github.com/k3ng/k3ng_cw_keyer/wiki/380-Feature:-Keypad
|
||||||
|
//#define FEATURE_3x4_KEYPAD // code contributed by Jack, W0XR - documentation: https://github.com/k3ng/k3ng_cw_keyer/wiki/380-Feature:-Keypad
|
||||||
|
//#define FEATURE_SEQUENCER
|
||||||
|
//#define FEATURE_SD_CARD_SUPPORT
|
||||||
|
//#define FEATURE_COMMAND_MODE_ENHANCED_CMD_ACKNOWLEDGEMENT
|
||||||
|
// #define FEATURE_WEB_SERVER // Details: https://github.com/k3ng/k3ng_cw_keyer/wiki/390-Feature:-Ethernet,-Web-Server,-and-Internet-Linking
|
||||||
|
// #define FEATURE_INTERNET_LINK // Details: https://github.com/k3ng/k3ng_cw_keyer/wiki/390-Feature:-Ethernet,-Web-Server,-and-Internet-Linking
|
||||||
|
|
||||||
|
//#define OPTION_SUPPRESS_SERIAL_BOOT_MSG
|
||||||
|
#define OPTION_INCLUDE_PTT_TAIL_FOR_MANUAL_SENDING
|
||||||
|
#define OPTION_EXCLUDE_PTT_HANG_TIME_FOR_MANUAL_SENDING
|
||||||
|
//#define OPTION_SERIAL_PORT_DEFAULT_WINKEY_EMULATION // Use when activating both FEATURE_WINKEY_EMULATION and FEATURE_COMMAND_LINE_INTERFACE simultaneously. This will make Winkey emulation be the default at boot up; hold command button down at boot up to activate CLI mode
|
||||||
|
//#define OPTION_WINKEY_DISCARD_BYTES_AT_STARTUP // if ASR is not disabled, you may need this to discard errant serial port bytes at startup
|
||||||
|
//#define OPTION_WINKEY_STRICT_EEPROM_WRITES_MAY_WEAR_OUT_EEPROM // with this activated the unit will write non-volatile settings to EEPROM when set by Winkey commands
|
||||||
|
//#define OPTION_WINKEY_SEND_WORDSPACE_AT_END_OF_BUFFER
|
||||||
|
#define OPTION_WINKEY_STRICT_HOST_OPEN // require an admin host open Winkey command before doing any other commands
|
||||||
|
#define OPTION_WINKEY_2_SUPPORT // comment out to revert to Winkey version 1 emulation
|
||||||
|
#define OPTION_WINKEY_INTERRUPTS_MEMORY_REPEAT
|
||||||
|
//#define OPTION_WINKEY_UCXLOG_9600_BAUD // use this only with UCXLog configured for Winkey 9600 baud mode
|
||||||
|
#define OPTION_WINKEY_2_HOST_CLOSE_NO_SERIAL_PORT_RESET // (Required for Win-Test to function)
|
||||||
|
//#define OPTION_WINKEY_FREQUENT_STATUS_REPORT // activate this to make Winkey emulation play better with RUMlog and RUMped
|
||||||
|
#define OPTION_WINKEY_IGNORE_LOWERCASE // Enable for typical K1EL Winkeyer behavior (use for SkookumLogger version 1.10.14 and prior to workaround bug)
|
||||||
|
//#define OPTION_WINKEY_BLINK_PTT_ON_HOST_OPEN
|
||||||
|
//#define OPTION_WINKEY_SEND_VERSION_ON_HOST_CLOSE
|
||||||
|
//#define OPTION_WINKEY_PINCONFIG_PTT_CONTROLS_PTT_LINE // Have Winkeyer PTT setting activate/deactivate PTT line rather than control buffered character PTT hold
|
||||||
|
#define OPTION_REVERSE_BUTTON_ORDER // This is mainly for the DJ0MY NanoKeyer http://nanokeyer.wordpress.com/
|
||||||
|
#define OPTION_PROG_MEM_TRIM_TRAILING_SPACES // trim trailing spaces from memory when programming in command mode
|
||||||
|
#define OPTION_DIT_PADDLE_NO_SEND_ON_MEM_RPT // this makes dit paddle memory interruption a little smoother
|
||||||
|
//#define OPTION_MORE_DISPLAY_MSGS // additional optional display messages - comment out to save memory
|
||||||
|
//#define OPTION_WATCHDOG_TIMER // this enables a four second ATmega48/88/168/328 watchdog timer; use for unattended/remote operation only
|
||||||
|
//#define OPTION_MOUSE_MOVEMENT_PADDLE // experimental (just fooling around) - mouse movement will act like a paddle
|
||||||
|
//#define OPTION_NON_ENGLISH_EXTENSIONS // add support for additional CW characters (i.e. À, Å, Þ, etc.)
|
||||||
|
//#define OPTION_DISPLAY_NON_ENGLISH_EXTENSIONS // LCD display suport for non-English (NO/DK/DE) characters - Courtesy of OZ1JHM
|
||||||
|
//#define OPTION_UNKNOWN_CHARACTER_ERROR_TONE
|
||||||
|
//#define OPTION_DO_NOT_SAY_HI
|
||||||
|
//#define OPTION_PS2_NON_ENGLISH_CHAR_LCD_DISPLAY_SUPPORT // makes some non-English characters from the PS2 keyboard display correctly in the LCD display (donated by Marcin sp5iou)
|
||||||
|
//#define OPTION_PS2_KEYBOARD_RESET // reset the PS2 keyboard upon startup with 0xFF (contributed by Bill, W9BEL)
|
||||||
|
#define OPTION_SAVE_MEMORY_NANOKEYER
|
||||||
|
//#define OPTION_INVERT_PADDLE_PIN_LOGIC
|
||||||
|
//#define OPTION_ADVANCED_SPEED_DISPLAY //enables "nerd" speed visualization on display: wpm, cpm (char per min), duration of dit and dah in milliseconds and ratio (contributed by Giorgio, IZ2XBZ)
|
||||||
|
//#define OPTION_RUSSIAN_LANGUAGE_SEND_CLI // Russian language CLI sending support (contributed by Павел Бирюков, UA1AQC)
|
||||||
|
#define OPTION_DO_NOT_SEND_UNKNOWN_CHAR_QUESTION
|
||||||
|
//#define OPTION_CMOS_SUPER_KEYER_IAMBIC_B_TIMING_ON_BY_DEFAULT
|
||||||
|
//#define OPTION_SIDETONE_DIGITAL_OUTPUT_NO_SQUARE_WAVE
|
||||||
|
|
||||||
|
// #define OPTION_DIRECT_PADDLE_PIN_READS_MEGA // only works with Mega and pins 2 and 5 - minor performance increase
|
||||||
|
// #define OPTION_DIRECT_PADDLE_PIN_READS_UNO // Unos or Nanos pins 2 and 5 - do not enable on a nanoKeyer, it uses different pins
|
||||||
|
|
||||||
|
// #define OPTION_WORDSWORTH_CZECH
|
||||||
|
// #define OPTION_WORDSWORTH_DEUTSCH
|
||||||
|
// #define OPTION_WORDSWORTH_NORSK
|
||||||
|
|
||||||
|
#define OPTION_EXCLUDE_EXTENDED_CLI_COMMANDS
|
||||||
|
|
||||||
|
// #define OPTION_DFROBOT_LCD_COMMAND_BUTTONS
|
||||||
|
|
||||||
|
#define OPTION_EXCLUDE_MILL_MODE
|
||||||
|
// #define OPTION_NO_ULTIMATIC // reduce memory usage by removing ultimatic code.
|
||||||
|
|
||||||
|
// #define OPTION_DISABLE_SERIAL_PORT_CHECKING_WHILE_SENDING_CW
|
||||||
|
// #define OPTION_PERSONALIZED_STARTUP_SCREEN // displays a user defined string of characters on the second or fourth row of the screen during startup. 1602 display requires OPTION_DO_NOT_SAY_HI
|
||||||
|
// #define OPTION_SWAP_PADDLE_PARAMETER_CHANGE_DIRECTION // reverses the up/down direction when using the paddles to change the wpm or sidetone frequency
|
||||||
|
// #define OPTION_DISPLAY_MEMORY_CONTENTS_COMMAND_MODE
|
||||||
|
|
||||||
|
// #define OPTION_BEACON_MODE_MEMORY_REPEAT_TIME // to space out the repeated playing of memory 1 when in beacon mode
|
||||||
|
// #define OPTION_BEACON_MODE_PTT_TAIL_TIME // adds the ptt tail time to each playing of memory 1 in beacon mode
|
||||||
|
|
||||||
|
// #define OPTION_WINKEY_PROSIGN_COMPATIBILITY // Additional character mappings to support K1EL Winkey emulation prosigns
|
||||||
|
|
117
k3ng_keyer/keyer_features_and_options_open_interface.h
Executable file
117
k3ng_keyer/keyer_features_and_options_open_interface.h
Executable file
|
@ -0,0 +1,117 @@
|
||||||
|
// This file is for the Open Interface http://remoteqth.com/open-interface.php
|
||||||
|
|
||||||
|
// compile time features and options - comment or uncomment to add or delete features
|
||||||
|
// FEATURES add more bytes to the compiled binary, OPTIONS change code behavior
|
||||||
|
|
||||||
|
#define FEATURE_BUTTONS
|
||||||
|
#define FEATURE_COMMAND_MODE
|
||||||
|
#define FEATURE_COMMAND_LINE_INTERFACE // (this no longer requires FEATURE_SERIAL)
|
||||||
|
#define FEATURE_MEMORIES
|
||||||
|
#define FEATURE_MEMORY_MACROS
|
||||||
|
#define FEATURE_WINKEY_EMULATION // disabling Automatic Software Reset is highly recommended (see documentation)
|
||||||
|
//#define FEATURE_BEACON // Go into beacon mode if paddle_left pin is LOW at boot up
|
||||||
|
//#define FEATURE_BEACON_SETTING // Go into beacon mode at boot up if EEPROM setting is enabled (\_ CLI Command)
|
||||||
|
#define FEATURE_TRAINING_COMMAND_LINE_INTERFACE
|
||||||
|
#define FEATURE_POTENTIOMETER // do not enable unless you have a potentiometer connected, otherwise noise will falsely trigger wpm changes
|
||||||
|
// #define FEATURE_SIDETONE_SWITCH // adds switch control for the sidetone output. requires an external toggle switch (assigned to an arduino pin - see keyer_pin_settings.h).
|
||||||
|
// #define FEATURE_SIDETONE_NEWTONE // Use the NewTone library, ~1k smaller code size than the standard tone library. Uses timer1 (pins 9 or 10) https://bitbucket.org/teckel12/arduino-new-tone/wiki/Home
|
||||||
|
#define FEATURE_SERIAL_HELP
|
||||||
|
//#define FEATURE_HELL
|
||||||
|
//#define FEATURE_PS2_KEYBOARD // Use a PS2 keyboard to send code - Change keyboard layout (non-US) in K3NG_PS2Keyboard.h. Additional options below.
|
||||||
|
//#define FEATURE_USB_KEYBOARD // Use a USB keyboard to send code - Uncomment three lines in k3ng_keyer.ino (search for note_usb_uncomment_lines)
|
||||||
|
//#define FEATURE_DEAD_OP_WATCHDOG
|
||||||
|
//#define FEATURE_AUTOSPACE
|
||||||
|
#define FEATURE_FARNSWORTH
|
||||||
|
//#define FEATURE_DL2SBA_BANKSWITCH // Switch memory banks feature as described here: http://dl2sba.com/index.php?option=com_content&view=article&id=131:nanokeyer&catid=15:shack&Itemid=27#english
|
||||||
|
#define FEATURE_LCD_4BIT // classic LCD disidefplay using 4 I/O lines
|
||||||
|
//#define FEATURE_LCD_ADAFRUIT_I2C // Adafruit I2C LCD display using MCP23017 at addr 0x20
|
||||||
|
//#define FEATURE_LCD_YDv1 // YourDuino I2C LCD display with old LCM 1602 V1 ic
|
||||||
|
//#define FEATURE_LCD_FABO_PCF8574 // https://github.com/FaBoPlatform/FaBoLCD-PCF8574-Library
|
||||||
|
// #define FEATURE_LCD_I2C_FDEBRABANDER //https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library
|
||||||
|
// #define FEATURE_CW_DECODER // https://github.com/k3ng/k3ng_cw_keyer/wiki/385-Feature:-CW-Decoder
|
||||||
|
//#define FEATURE_SLEEP // go to sleep after x minutes to conserve battery power
|
||||||
|
//#define FEATURE_LCD_BACKLIGHT_AUTO_DIM // turn off LCD backlight and/or dim Power Indicator LED after x minutes (LED requires a PWM pin)
|
||||||
|
//#define FEATURE_ROTARY_ENCODER // rotary encoder speed control
|
||||||
|
#define FEATURE_CMOS_SUPER_KEYER_IAMBIC_B_TIMING
|
||||||
|
//#define FEATURE_USB_MOUSE // Uncomment three lines in k3ng_keyer.ino (search for note_usb_uncomment_lines)
|
||||||
|
//#define FEATURE_CAPACITIVE_PADDLE_PINS // remove the bypass capacitors on the paddle_left and paddle_right lines when using capactive paddles
|
||||||
|
//#define FEATURE_LED_RING // Mayhew Labs Led Ring support
|
||||||
|
#define FEATURE_ALPHABET_SEND_PRACTICE // enables command mode S command - created by Ryan, KC2ZWM
|
||||||
|
#define FEATURE_COMMAND_MODE_PROGRESSIVE_5_CHAR_ECHO_PRACTICE // enables command mode U
|
||||||
|
//#define FEATURE_PTT_INTERLOCK
|
||||||
|
//#define FEATURE_QLF
|
||||||
|
//#define FEATURE_EEPROM_E24C1024
|
||||||
|
//#define FEATURE_STRAIGHT_KEY
|
||||||
|
//#define FEATURE_DYNAMIC_DAH_TO_DIT_RATIO
|
||||||
|
//#define FEATURE_PADDLE_ECHO
|
||||||
|
//#define FEATURE_STRAIGHT_KEY_ECHO
|
||||||
|
//#define FEATURE_AMERICAN_MORSE
|
||||||
|
//#define FEATURE_4x4_KEYPAD // code contributed by Jack, W0XR - documentation: https://github.com/k3ng/k3ng_cw_keyer/wiki/380-Feature:-Keypad
|
||||||
|
//#define FEATURE_3x4_KEYPAD // code contributed by Jack, W0XR - documentation: https://github.com/k3ng/k3ng_cw_keyer/wiki/380-Feature:-Keypad
|
||||||
|
//#define FEATURE_SEQUENCER
|
||||||
|
//#define FEATURE_SD_CARD_SUPPORT
|
||||||
|
//#define FEATURE_COMMAND_MODE_ENHANCED_CMD_ACKNOWLEDGEMENT
|
||||||
|
// #define FEATURE_WEB_SERVER // Details: https://github.com/k3ng/k3ng_cw_keyer/wiki/390-Feature:-Ethernet,-Web-Server,-and-Internet-Linking
|
||||||
|
// #define FEATURE_INTERNET_LINK // Details: https://github.com/k3ng/k3ng_cw_keyer/wiki/390-Feature:-Ethernet,-Web-Server,-and-Internet-Linking
|
||||||
|
|
||||||
|
//#define OPTION_SUPPRESS_SERIAL_BOOT_MSG
|
||||||
|
#define OPTION_INCLUDE_PTT_TAIL_FOR_MANUAL_SENDING
|
||||||
|
#define OPTION_EXCLUDE_PTT_HANG_TIME_FOR_MANUAL_SENDING
|
||||||
|
#define OPTION_SERIAL_PORT_DEFAULT_WINKEY_EMULATION // Use when activating both FEATURE_WINKEY_EMULATION and FEATURE_COMMAND_LINE_INTERFACE simultaneously. This will make Winkey emulation be the default at boot up; hold command button down at boot up to activate CLI mode
|
||||||
|
//#define OPTION_WINKEY_DISCARD_BYTES_AT_STARTUP // if ASR is not disabled, you may need this to discard errant serial port bytes at startup
|
||||||
|
//#define OPTION_WINKEY_STRICT_EEPROM_WRITES_MAY_WEAR_OUT_EEPROM // with this activated the unit will write non-volatile settings to EEPROM when set by Winkey commands
|
||||||
|
//#define OPTION_WINKEY_SEND_WORDSPACE_AT_END_OF_BUFFER
|
||||||
|
#define OPTION_WINKEY_STRICT_HOST_OPEN // require an admin host open Winkey command before doing any other commands
|
||||||
|
// #define OPTION_WINKEY_2_SUPPORT // comment out to revert to Winkey version 1 emulation
|
||||||
|
#define OPTION_WINKEY_INTERRUPTS_MEMORY_REPEAT
|
||||||
|
//#define OPTION_WINKEY_UCXLOG_9600_BAUD // use this only with UCXLog configured for Winkey 9600 baud mode
|
||||||
|
#define OPTION_WINKEY_2_HOST_CLOSE_NO_SERIAL_PORT_RESET // (Required for Win-Test to function)
|
||||||
|
// #define OPTION_WINKEY_FREQUENT_STATUS_REPORT // activate this to make Winkey emulation play better with RUMlog and RUMped
|
||||||
|
#define OPTION_WINKEY_IGNORE_LOWERCASE // Enable for typical K1EL Winkeyer behavior (use for SkookumLogger version 1.10.14 and prior to workaround bug)
|
||||||
|
//#define OPTION_WINKEY_BLINK_PTT_ON_HOST_OPEN
|
||||||
|
//#define OPTION_WINKEY_SEND_VERSION_ON_HOST_CLOSE
|
||||||
|
//#define OPTION_WINKEY_PINCONFIG_PTT_CONTROLS_PTT_LINE // Have Winkeyer PTT setting activate/deactivate PTT line rather than control buffered character PTT hold
|
||||||
|
//#define OPTION_REVERSE_BUTTON_ORDER // This is mainly for the DJ0MY NanoKeyer http://nanokeyer.wordpress.com/
|
||||||
|
#define OPTION_PROG_MEM_TRIM_TRAILING_SPACES // trim trailing spaces from memory when programming in command mode
|
||||||
|
#define OPTION_DIT_PADDLE_NO_SEND_ON_MEM_RPT // this makes dit paddle memory interruption a little smoother
|
||||||
|
#define OPTION_MORE_DISPLAY_MSGS // additional optional display messages - comment out to save memory
|
||||||
|
//#define OPTION_WATCHDOG_TIMER // this enables a four second ATmega48/88/168/328 watchdog timer; use for unattended/remote operation only
|
||||||
|
//#define OPTION_MOUSE_MOVEMENT_PADDLE // experimental (just fooling around) - mouse movement will act like a paddle
|
||||||
|
//#define OPTION_NON_ENGLISH_EXTENSIONS // add support for additional CW characters (i.e. À, Å, Þ, etc.)
|
||||||
|
//#define OPTION_DISPLAY_NON_ENGLISH_EXTENSIONS // LCD display suport for non-English (NO/DK/DE) characters - Courtesy of OZ1JHM
|
||||||
|
//#define OPTION_UNKNOWN_CHARACTER_ERROR_TONE
|
||||||
|
// #define OPTION_DO_NOT_SAY_HI
|
||||||
|
//#define OPTION_PS2_NON_ENGLISH_CHAR_LCD_DISPLAY_SUPPORT // makes some non-English characters from the PS2 keyboard display correctly in the LCD display (donated by Marcin sp5iou)
|
||||||
|
//#define OPTION_PS2_KEYBOARD_RESET // reset the PS2 keyboard upon startup with 0xFF (contributed by Bill, W9BEL)
|
||||||
|
//#define OPTION_SAVE_MEMORY_NANOKEYER
|
||||||
|
//#define OPTION_INVERT_PADDLE_PIN_LOGIC
|
||||||
|
//#define OPTION_CW_DECODER_GOERTZEL_AUDIO_DETECTOR
|
||||||
|
//#define OPTION_ADVANCED_SPEED_DISPLAY //enables "nerd" speed visualization on display: wpm, cpm (char per min), duration of dit and dah in milliseconds and ratio (contributed by Giorgio, IZ2XBZ)
|
||||||
|
//#define OPTION_RUSSIAN_LANGUAGE_SEND_CLI // Russian language CLI sending support (contributed by Павел Бирюков, UA1AQC)
|
||||||
|
#define OPTION_DO_NOT_SEND_UNKNOWN_CHAR_QUESTION
|
||||||
|
//#define OPTION_CMOS_SUPER_KEYER_IAMBIC_B_TIMING_ON_BY_DEFAULT
|
||||||
|
//#define OPTION_SIDETONE_DIGITAL_OUTPUT_NO_SQUARE_WAVE
|
||||||
|
|
||||||
|
// #define OPTION_DIRECT_PADDLE_PIN_READS_MEGA // only works with Mega and pins 2 and 5 - minor performance increase
|
||||||
|
// #define OPTION_DIRECT_PADDLE_PIN_READS_UNO // Unos or Nanos pins 2 and 5 - do not enable on a nanoKeyer, it uses different pins
|
||||||
|
|
||||||
|
// #define OPTION_WORDSWORTH_CZECH
|
||||||
|
// #define OPTION_WORDSWORTH_DEUTSCH
|
||||||
|
// #define OPTION_WORDSWORTH_NORSK
|
||||||
|
|
||||||
|
#define OPTION_EXCLUDE_EXTENDED_CLI_COMMANDS
|
||||||
|
|
||||||
|
// #define OPTION_DFROBOT_LCD_COMMAND_BUTTONS
|
||||||
|
|
||||||
|
// #define OPTION_EXCLUDE_MILL_MODE
|
||||||
|
// #define OPTION_NO_ULTIMATIC // reduce memory usage by removing ultimatic code.
|
||||||
|
|
||||||
|
// #define OPTION_DISABLE_SERIAL_PORT_CHECKING_WHILE_SENDING_CW
|
||||||
|
// #define OPTION_PERSONALIZED_STARTUP_SCREEN // displays a user defined string of characters on the second or fourth row of the screen during startup. 1602 display requires OPTION_DO_NOT_SAY_HI
|
||||||
|
// #define OPTION_SWAP_PADDLE_PARAMETER_CHANGE_DIRECTION // reverses the up/down direction when using the paddles to change the wpm or sidetone frequency
|
||||||
|
#define OPTION_DISPLAY_MEMORY_CONTENTS_COMMAND_MODE
|
||||||
|
|
||||||
|
// #define OPTION_BEACON_MODE_MEMORY_REPEAT_TIME // to space out the repeated playing of memory 1 when in beacon mode
|
||||||
|
// #define OPTION_BEACON_MODE_PTT_TAIL_TIME // adds the ptt tail time to each playing of memory 1 in beacon mode
|
||||||
|
|
||||||
|
// #define OPTION_WINKEY_PROSIGN_COMPATIBILITY // Additional character mappings to support K1EL Winkey emulation prosigns
|
131
k3ng_keyer/keyer_features_and_options_opencwkeyer_mk2.h
Executable file
131
k3ng_keyer/keyer_features_and_options_opencwkeyer_mk2.h
Executable file
|
@ -0,0 +1,131 @@
|
||||||
|
// compile time features and options - comment or uncomment to add or delete features
|
||||||
|
// FEATURES add more bytes to the compiled binary, OPTIONS change code behavior
|
||||||
|
|
||||||
|
|
||||||
|
#define FEATURE_BUTTONS
|
||||||
|
#define FEATURE_COMMAND_MODE
|
||||||
|
// #define FEATURE_COMMAND_LINE_INTERFACE // Command Line Interface functionality
|
||||||
|
#define FEATURE_MEMORIES // on the Arduino Due, you must have FEATURE_EEPROM_E24C1024 and E24C1024 EEPROM hardware in order to compile this
|
||||||
|
// #define FEATURE_MEMORY_MACROS
|
||||||
|
#define FEATURE_WINKEY_EMULATION // disabling Automatic Software Reset is highly recommended (see documentation)
|
||||||
|
// #define FEATURE_BEACON // Go into beacon mode if paddle_left pin is LOW at boot up
|
||||||
|
// #define FEATURE_BEACON_SETTING // Go into beacon mode at boot up if EEPROM setting is enabled (\_ CLI Command)
|
||||||
|
// #define FEATURE_TRAINING_COMMAND_LINE_INTERFACE
|
||||||
|
#define FEATURE_POTENTIOMETER // do not enable unless you have a potentiometer connected, otherwise noise will falsely trigger wpm changes
|
||||||
|
// #define FEATURE_SIDETONE_SWITCH // adds switch control for the sidetone output. requires an external toggle switch (assigned to an arduino pin - see keyer_pin_settings.h).
|
||||||
|
// #define FEATURE_SIDETONE_NEWTONE // Use the NewTone library, ~1k smaller code size than the standard tone library. Uses timer1 (pins 9 or 10) https://bitbucket.org/teckel12/arduino-new-tone/wiki/Home
|
||||||
|
// #define FEATURE_SERIAL_HELP
|
||||||
|
// #define FEATURE_HELL
|
||||||
|
// #define FEATURE_PS2_KEYBOARD // Use a PS2 keyboard to send code - Change keyboard layout (non-US) in K3NG_PS2Keyboard.h. Additional options below.
|
||||||
|
// #define FEATURE_USB_KEYBOARD // Use a USB keyboard to send code - Uncomment three lines in k3ng_keyer.ino (search for note_usb_uncomment_lines)
|
||||||
|
// #define FEATURE_CW_COMPUTER_KEYBOARD // Have an Arduino Due or Leonardo act as a USB HID (Human Interface Device) keyboard and use the paddle to "type" characters on the computer -- uncomment this line in ino file: #include <Keyboard.h>
|
||||||
|
// #define FEATURE_DEAD_OP_WATCHDOG
|
||||||
|
// #define FEATURE_AUTOSPACE
|
||||||
|
// #define FEATURE_FARNSWORTH
|
||||||
|
// #define FEATURE_DL2SBA_BANKSWITCH // Switch memory banks feature as described here: http://dl2sba.com/index.php?option=com_content&view=article&id=131:nanokeyer&catid=15:shack&Itemid=27#english
|
||||||
|
// #define FEATURE_LCD_4BIT // classic LCD disidefplay using 4 I/O lines
|
||||||
|
// #define FEATURE_LCD_8BIT // classic LCD display using 8 I/O lines
|
||||||
|
// #define FEATURE_LCD_ADAFRUIT_I2C // Adafruit I2C LCD display using MCP23017 at addr 0x20
|
||||||
|
// #define FEATURE_LCD_ADAFRUIT_BACKPACK // Adafruit I2C LCD Backup using MCP23008 (courtesy Josiah Ritchie, KE0BLL)
|
||||||
|
// #define FEATURE_LCD_YDv1 // YourDuino I2C LCD display with old LCM 1602 V1 ic
|
||||||
|
// #define FEATURE_LCD1602_N07DH // http://linksprite.com/wiki/index.php5?title=16_X_2_LCD_Keypad_Shield_for_Arduino
|
||||||
|
// #define FEATURE_LCD_SAINSMART_I2C
|
||||||
|
// #define FEATURE_LCD_FABO_PCF8574 // https://github.com/FaBoPlatform/FaBoLCD-PCF8574-Library
|
||||||
|
// #define FEATURE_LCD_MATHERTEL_PCF8574 // https://github.com/mathertel/LiquidCrystal_PCF8574
|
||||||
|
// #define FEATURE_LCD_I2C_FDEBRABANDER //https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library
|
||||||
|
// #define FEATURE_LCD_HD44780
|
||||||
|
// #define FEATURE_CW_DECODER // https://github.com/k3ng/k3ng_cw_keyer/wiki/385-Feature:-CW-Decoder
|
||||||
|
// #define FEATURE_SLEEP // go to sleep after x minutes to conserve battery power (not compatible with Arduino DUE, may have mixed results with Mega and Mega ADK)
|
||||||
|
// #define FEATURE_LCD_BACKLIGHT_AUTO_DIM // turn off LCD backlight and/or dim Power Indicator LED after x minutes (LED requires a PWM pin)
|
||||||
|
// #define FEATURE_ROTARY_ENCODER // rotary encoder speed control
|
||||||
|
// #define FEATURE_CMOS_SUPER_KEYER_IAMBIC_B_TIMING
|
||||||
|
// #define FEATURE_USB_MOUSE // Uncomment three lines in k3ng_keyer.ino (search for note_usb_uncomment_lines)
|
||||||
|
// #define FEATURE_CAPACITIVE_PADDLE_PINS // remove the bypass capacitors on the paddle_left and paddle_right lines when using capactive paddles
|
||||||
|
// #define FEATURE_LED_RING // Mayhew Labs Led Ring support
|
||||||
|
// #define FEATURE_ALPHABET_SEND_PRACTICE // enables command mode S command - created by Ryan, KC2ZWM
|
||||||
|
// #define FEATURE_COMMAND_MODE_PROGRESSIVE_5_CHAR_ECHO_PRACTICE // enables command mode U
|
||||||
|
// #define FEATURE_PTT_INTERLOCK
|
||||||
|
// #define FEATURE_QLF
|
||||||
|
// #define FEATURE_EEPROM_E24C1024
|
||||||
|
// #define FEATURE_STRAIGHT_KEY
|
||||||
|
// #define FEATURE_DYNAMIC_DAH_TO_DIT_RATIO
|
||||||
|
// #define FEATURE_PADDLE_ECHO
|
||||||
|
// #define FEATURE_STRAIGHT_KEY_ECHO
|
||||||
|
// #define FEATURE_AMERICAN_MORSE
|
||||||
|
// #define FEATURE_4x4_KEYPAD // code contributed by Jack, W0XR - documentation: https://github.com/k3ng/k3ng_cw_keyer/wiki/380-Feature:-Keypad
|
||||||
|
// #define FEATURE_3x4_KEYPAD // code contributed by Jack, W0XR - documentation: https://github.com/k3ng/k3ng_cw_keyer/wiki/380-Feature:-Keypad
|
||||||
|
// #define FEATURE_SEQUENCER
|
||||||
|
// #define FEATURE_SD_CARD_SUPPORT
|
||||||
|
// #define FEATURE_COMMAND_MODE_ENHANCED_CMD_ACKNOWLEDGEMENT
|
||||||
|
// #define FEATURE_WEB_SERVER // Details: https://github.com/k3ng/k3ng_cw_keyer/wiki/390-Feature:-Ethernet,-Web-Server,-and-Internet-Linking
|
||||||
|
// #define FEATURE_INTERNET_LINK // Details: https://github.com/k3ng/k3ng_cw_keyer/wiki/390-Feature:-Ethernet,-Web-Server,-and-Internet-Linking
|
||||||
|
|
||||||
|
// #define FEATURE_COMMAND_LINE_INTERFACE_ON_SECONDARY_PORT // Activate the Command Line interface on the secondary serial port
|
||||||
|
#define OPTION_PRIMARY_SERIAL_PORT_DEFAULT_WINKEY_EMULATION // Use when activating both FEATURE_WINKEY_EMULATION and FEATURE_COMMAND_LINE_INTERFACE
|
||||||
|
// simultaneously. This will make Winkey emulation be the default at boot up;
|
||||||
|
// hold command button down at boot up to activate CLI mode
|
||||||
|
|
||||||
|
// #define OPTION_SUPPRESS_SERIAL_BOOT_MSG
|
||||||
|
#define OPTION_INCLUDE_PTT_TAIL_FOR_MANUAL_SENDING
|
||||||
|
#define OPTION_EXCLUDE_PTT_HANG_TIME_FOR_MANUAL_SENDING
|
||||||
|
// #define OPTION_WINKEY_DISCARD_BYTES_AT_STARTUP // if ASR is not disabled, you may need this to discard errant serial port bytes at startup
|
||||||
|
// #define OPTION_WINKEY_STRICT_EEPROM_WRITES_MAY_WEAR_OUT_EEPROM // with this activated the unit will write non-volatile settings to EEPROM when set by Winkey commands
|
||||||
|
// #define OPTION_WINKEY_SEND_WORDSPACE_AT_END_OF_BUFFER
|
||||||
|
#define OPTION_WINKEY_STRICT_HOST_OPEN // require an admin host open Winkey command before doing any other commands
|
||||||
|
#define OPTION_WINKEY_2_SUPPORT // comment out to revert to Winkey version 1 emulation
|
||||||
|
#define OPTION_WINKEY_INTERRUPTS_MEMORY_REPEAT
|
||||||
|
//#define OPTION_WINKEY_UCXLOG_9600_BAUD // use this only with UCXLog configured for Winkey 9600 baud mode
|
||||||
|
#define OPTION_WINKEY_2_HOST_CLOSE_NO_SERIAL_PORT_RESET // (Required for Win-Test to function)
|
||||||
|
// #define OPTION_WINKEY_FREQUENT_STATUS_REPORT // activate this to make Winkey emulation play better with RUMlog and RUMped
|
||||||
|
#define OPTION_WINKEY_IGNORE_LOWERCASE // Enable for typical K1EL Winkeyer behavior (use for SkookumLogger version 1.10.14 and prior to workaround "r" bug)
|
||||||
|
// #define OPTION_WINKEY_BLINK_PTT_ON_HOST_OPEN
|
||||||
|
// #define OPTION_WINKEY_SEND_VERSION_ON_HOST_CLOSE
|
||||||
|
// #define OPTION_WINKEY_PINCONFIG_PTT_CONTROLS_PTT_LINE // Have Winkeyer PTT setting activate/deactivate PTT line rather than control buffered character PTT hold
|
||||||
|
// #define OPTION_REVERSE_BUTTON_ORDER // This is mainly for the DJ0MY NanoKeyer http://nanokeyer.wordpress.com/
|
||||||
|
#define OPTION_PROG_MEM_TRIM_TRAILING_SPACES // trim trailing spaces from memory when programming in command mode
|
||||||
|
#define OPTION_DIT_PADDLE_NO_SEND_ON_MEM_RPT // this makes dit paddle memory interruption a little smoother
|
||||||
|
// #define OPTION_MORE_DISPLAY_MSGS // additional optional display messages - comment out to save memory
|
||||||
|
// #define OPTION_WATCHDOG_TIMER // this enables a four second ATmega48/88/168/328 watchdog timer; use for unattended/remote operation only
|
||||||
|
// #define OPTION_MOUSE_MOVEMENT_PADDLE // experimental (just fooling around) - mouse movement will act like a paddle
|
||||||
|
// #define OPTION_NON_ENGLISH_EXTENSIONS // add support for additional CW characters (i.e. À, Å, Þ, etc.)
|
||||||
|
// #define OPTION_DISPLAY_NON_ENGLISH_EXTENSIONS // LCD display suport for non-English (NO/DK/DE) characters - Courtesy of OZ1JHM
|
||||||
|
// #define OPTION_UNKNOWN_CHARACTER_ERROR_TONE
|
||||||
|
// #define OPTION_DO_NOT_SAY_HI
|
||||||
|
// #define OPTION_PS2_NON_ENGLISH_CHAR_LCD_DISPLAY_SUPPORT // makes some non-English characters from the PS2 keyboard display correctly in the LCD display (donated by Marcin sp5iou)
|
||||||
|
// #define OPTION_PS2_KEYBOARD_RESET // reset the PS2 keyboard upon startup with 0xFF (contributed by Bill, W9BEL)
|
||||||
|
// #define OPTION_SAVE_MEMORY_NANOKEYER
|
||||||
|
#define OPTION_CW_KEYBOARD_CAPSLOCK_BEEP
|
||||||
|
// #define OPTION_CW_KEYBOARD_ITALIAN
|
||||||
|
// #define OPTION_CW_KEYBOARD_GERMAN
|
||||||
|
// #define OPTION_CW_DECODER_GOERTZEL_AUDIO_DETECTOR
|
||||||
|
// #define OPTION_INVERT_PADDLE_PIN_LOGIC
|
||||||
|
// #define OPTION_ADVANCED_SPEED_DISPLAY //enables "nerd" speed visualization on display: wpm, cpm (char per min), duration of dit and dah in milliseconds and ratio (contributed by Giorgio, IZ2XBZ)
|
||||||
|
// #define OPTION_PROSIGN_SUPPORT // additional prosign support for paddle and straight key echo on display, CLI, and in memory storage
|
||||||
|
// #define OPTION_RUSSIAN_LANGUAGE_SEND_CLI // Russian language CLI sending support (contributed by Павел Бирюков, UA1AQC)
|
||||||
|
#define OPTION_DO_NOT_SEND_UNKNOWN_CHAR_QUESTION
|
||||||
|
// #define OPTION_CMOS_SUPER_KEYER_IAMBIC_B_TIMING_ON_BY_DEFAULT
|
||||||
|
// #define OPTION_SIDETONE_DIGITAL_OUTPUT_NO_SQUARE_WAVE
|
||||||
|
|
||||||
|
// #define OPTION_DIRECT_PADDLE_PIN_READS_MEGA // only works with Mega and pins 2 and 5 - minor performance increase
|
||||||
|
// #define OPTION_DIRECT_PADDLE_PIN_READS_UNO // Unos or Nanos pins 2 and 5 - do not enable on a nanoKeyer, it uses different pins
|
||||||
|
|
||||||
|
// #define OPTION_WORDSWORTH_CZECH
|
||||||
|
// #define OPTION_WORDSWORTH_DEUTSCH
|
||||||
|
// #define OPTION_WORDSWORTH_NORSK
|
||||||
|
|
||||||
|
#define OPTION_EXCLUDE_EXTENDED_CLI_COMMANDS
|
||||||
|
|
||||||
|
// #define OPTION_DFROBOT_LCD_COMMAND_BUTTONS
|
||||||
|
|
||||||
|
// #define OPTION_EXCLUDE_MILL_MODE
|
||||||
|
// #define OPTION_NO_ULTIMATIC // reduce memory usage by removing ultimatic code.
|
||||||
|
|
||||||
|
// #define OPTION_DISABLE_SERIAL_PORT_CHECKING_WHILE_SENDING_CW
|
||||||
|
// #define OPTION_PERSONALIZED_STARTUP_SCREEN // displays a user defined string of characters on the second or fourth row of the screen during startup. 1602 display requires OPTION_DO_NOT_SAY_HI
|
||||||
|
// #define OPTION_SWAP_PADDLE_PARAMETER_CHANGE_DIRECTION // reverses the up/down direction when using the paddles to change the wpm or sidetone frequency
|
||||||
|
// #define OPTION_DISPLAY_MEMORY_CONTENTS_COMMAND_MODE
|
||||||
|
|
||||||
|
// #define OPTION_BEACON_MODE_MEMORY_REPEAT_TIME // to space out the repeated playing of memory 1 when in beacon mode
|
||||||
|
// #define OPTION_BEACON_MODE_PTT_TAIL_TIME // adds the ptt tail time to each playing of memory 1 in beacon mode
|
||||||
|
|
||||||
|
// #define OPTION_WINKEY_PROSIGN_COMPATIBILITY // Additional character mappings to support K1EL Winkey emulation prosigns
|
187
k3ng_keyer/keyer_features_and_options_test.h
Executable file
187
k3ng_keyer/keyer_features_and_options_test.h
Executable file
|
@ -0,0 +1,187 @@
|
||||||
|
|
||||||
|
// ######## ######## ###### ########
|
||||||
|
// ## ## ## ## ##
|
||||||
|
// ## ## ## ##
|
||||||
|
// ## ###### ###### ##
|
||||||
|
// ## ## ## ##
|
||||||
|
// ## ## ## ## ##
|
||||||
|
// ## ######## ###### ##
|
||||||
|
|
||||||
|
#define TEST_CONFIG_1
|
||||||
|
// #define TEST_CONFIG_2
|
||||||
|
|
||||||
|
#if defined(TEST_CONFIG_1)
|
||||||
|
|
||||||
|
|
||||||
|
#define FEATURE_BUTTONS
|
||||||
|
#define FEATURE_COMMAND_MODE
|
||||||
|
#define FEATURE_COMMAND_LINE_INTERFACE // Command Line Interface functionality
|
||||||
|
#define FEATURE_MEMORIES // on the Arduino Due, you must have FEATURE_EEPROM_E24C1024 and E24C1024 EEPROM hardware in order to compile this
|
||||||
|
#define FEATURE_MEMORY_MACROS
|
||||||
|
// #define FEATURE_WINKEY_EMULATION // disabling Automatic Software Reset is highly recommended (see documentation)
|
||||||
|
// #define FEATURE_BEACON // Go into beacon mode if paddle_left pin is LOW at boot up
|
||||||
|
// #define FEATURE_BEACON_SETTING // Go into beacon mode at boot up if EEPROM setting is enabled (\_ CLI Command)
|
||||||
|
// #define FEATURE_TRAINING_COMMAND_LINE_INTERFACE
|
||||||
|
// #define FEATURE_POTENTIOMETER // do not enable unless you have a potentiometer connected, otherwise noise will falsely trigger wpm changes
|
||||||
|
// #define FEATURE_SIDETONE_SWITCH // adds switch control for the sidetone output. requires an external toggle switch (assigned to an arduino pin - see keyer_pin_settings.h).
|
||||||
|
// #define FEATURE_SIDETONE_NEWTONE // Use the NewTone library, ~1k smaller code size than the standard tone library. Uses timer1 (pins 9 or 10) https://bitbucket.org/teckel12/arduino-new-tone/wiki/Home
|
||||||
|
// #define FEATURE_SERIAL_HELP
|
||||||
|
// #define FEATURE_HELL
|
||||||
|
// #define FEATURE_PS2_KEYBOARD // Use a PS2 keyboard to send code - Change keyboard layout (non-US) in K3NG_PS2Keyboard.h. Additional options below.
|
||||||
|
// #define FEATURE_USB_KEYBOARD // Use a USB keyboard to send code - Uncomment three lines in k3ng_keyer.ino (search for note_usb_uncomment_lines)
|
||||||
|
// #define FEATURE_CW_COMPUTER_KEYBOARD // Have an Arduino Due or Leonardo act as a USB HID (Human Interface Device) keyboard and use the paddle to "type" characters on the computer
|
||||||
|
// #define FEATURE_DEAD_OP_WATCHDOG
|
||||||
|
#define FEATURE_AUTOSPACE
|
||||||
|
// #define FEATURE_FARNSWORTH
|
||||||
|
// #define FEATURE_DL2SBA_BANKSWITCH // Switch memory banks feature as described here: http://dl2sba.com/index.php?option=com_content&view=article&id=131:nanokeyer&catid=15:shack&Itemid=27#english
|
||||||
|
// #define FEATURE_LCD_4BIT // classic LCD display using 4 I/O lines
|
||||||
|
// #define FEATURE_LCD_8BIT // classic LCD display using 8 I/O lines
|
||||||
|
// #define FEATURE_LCD_ADAFRUIT_I2C // Adafruit I2C LCD display using MCP23017 at addr 0x20
|
||||||
|
// #define FEATURE_LCD_ADAFRUIT_BACKPACK // Adafruit I2C LCD Backup using MCP23008 (courtesy Josiah Ritchie, KE0BLL)
|
||||||
|
// #define FEATURE_LCD_YDv1 // YourDuino I2C LCD display with old LCM 1602 V1 ic
|
||||||
|
// #define FEATURE_LCD1602_N07DH // http://linksprite.com/wiki/index.php5?title=16_X_2_LCD_Keypad_Shield_for_Arduino
|
||||||
|
// #define FEATURE_LCD_SAINSMART_I2C
|
||||||
|
// #define FEATURE_LCD_FABO_PCF8574 // https://github.com/FaBoPlatform/FaBoLCD-PCF8574-Library
|
||||||
|
// #define FEATURE_LCD_MATHERTEL_PCF8574 // https://github.com/mathertel/LiquidCrystal_PCF8574
|
||||||
|
// #define FEATURE_LCD_I2C_FDEBRABANDER //https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library
|
||||||
|
// #define FEATURE_CW_DECODER // https://github.com/k3ng/k3ng_cw_keyer/wiki/385-Feature:-CW-Decoder
|
||||||
|
// #define FEATURE_SLEEP // go to sleep after x minutes to conserve battery power (not compatible with Arduino DUE, may have mixed results with Mega and Mega ADK)
|
||||||
|
// #define FEATURE_LCD_BACKLIGHT_AUTO_DIM // turn off LCD backlight and/or dim Power Indicator LED after x minutes (LED requires a PWM pin)
|
||||||
|
// #define FEATURE_ROTARY_ENCODER // rotary encoder speed control
|
||||||
|
// #define FEATURE_CMOS_SUPER_KEYER_IAMBIC_B_TIMING
|
||||||
|
// #define FEATURE_USB_MOUSE // Uncomment three lines in k3ng_keyer.ino (search for note_usb_uncomment_lines)
|
||||||
|
// #define FEATURE_CAPACITIVE_PADDLE_PINS // remove the bypass capacitors on the paddle_left and paddle_right lines when using capactive paddles
|
||||||
|
// #define FEATURE_LED_RING // Mayhew Labs Led Ring support
|
||||||
|
// #define FEATURE_ALPHABET_SEND_PRACTICE // enables command mode S command - created by Ryan, KC2ZWM
|
||||||
|
// #define FEATURE_COMMAND_MODE_PROGRESSIVE_5_CHAR_ECHO_PRACTICE // enables command mode U
|
||||||
|
// #define FEATURE_PTT_INTERLOCK
|
||||||
|
// #define FEATURE_QLF
|
||||||
|
// #define FEATURE_EEPROM_E24C1024
|
||||||
|
// #define FEATURE_STRAIGHT_KEY
|
||||||
|
// #define FEATURE_DYNAMIC_DAH_TO_DIT_RATIO
|
||||||
|
#define FEATURE_PADDLE_ECHO
|
||||||
|
// #define FEATURE_STRAIGHT_KEY_ECHO
|
||||||
|
// #define FEATURE_AMERICAN_MORSE
|
||||||
|
// #define FEATURE_4x4_KEYPAD // code contributed by Jack, W0XR - documentation: https://github.com/k3ng/k3ng_cw_keyer/wiki/380-Feature:-Keypad
|
||||||
|
// #define FEATURE_3x4_KEYPAD // code contributed by Jack, W0XR - documentation: https://github.com/k3ng/k3ng_cw_keyer/wiki/380-Feature:-Keypad
|
||||||
|
// #define FEATURE_EXPERIMENTAL_DDS_SINEWAVE_SIDETONE_MEGA // DDS output Mega Digital Pin 46
|
||||||
|
// #define FEATURE_CLOCK // NOT FINISHED YET
|
||||||
|
// #define FEATURE_SEQUENCER
|
||||||
|
// #define FEATURE_SD_CARD_SUPPORT
|
||||||
|
// #define FEATURE_SO2R_BASE // SO2R Box base protocol extensions
|
||||||
|
// #define FEATURE_SO2R_SWITCHES // SO2R Box TX and RX switches
|
||||||
|
// #define FEATURE_SO2R_ANTENNA // SO2R Box antenna selection (not fully implemented)
|
||||||
|
#define FEATURE_COMMAND_MODE_ENHANCED_CMD_ACKNOWLEDGEMENT
|
||||||
|
// #define FEATURE_WEB_SERVER // Details: https://github.com/k3ng/k3ng_cw_keyer/wiki/390-Feature:-Ethernet,-Web-Server,-and-Internet-Linking
|
||||||
|
// #define FEATURE_INTERNET_LINK // Details: https://github.com/k3ng/k3ng_cw_keyer/wiki/390-Feature:-Ethernet,-Web-Server,-and-Internet-Linking
|
||||||
|
|
||||||
|
// UNDER DEVELOPMENT
|
||||||
|
// #define FEATURE_SINEWAVE_SIDETONE_USING_TIMER_1 // Arduino Uno: sidetone_line = 9 or 10 ; Mega: sidetone_line = 11, 12, or 13 (Further info: https://www.pjrc.com/teensy/td_libs_TimerOne.html )
|
||||||
|
// #define FEATURE_SINEWAVE_SIDETONE_USING_TIMER_3 // Arduino Mega: sidetone_line = 2, 3, or 5 (Further info: https://www.pjrc.com/teensy/td_libs_TimerOne.html)
|
||||||
|
|
||||||
|
|
||||||
|
#define FEATURE_COMMAND_LINE_INTERFACE_ON_SECONDARY_PORT // Activate the Command Line interface on the secondary serial port
|
||||||
|
#define OPTION_PRIMARY_SERIAL_PORT_DEFAULT_WINKEY_EMULATION // Use when activating both FEATURE_WINKEY_EMULATION and FEATURE_COMMAND_LINE_INTERFACE
|
||||||
|
// simultaneously. This will make Winkey emulation be the default at boot up;
|
||||||
|
// hold command button down at boot up to activate CLI mode
|
||||||
|
|
||||||
|
// #define OPTION_SUPPRESS_SERIAL_BOOT_MSG
|
||||||
|
#define OPTION_INCLUDE_PTT_TAIL_FOR_MANUAL_SENDING
|
||||||
|
#define OPTION_EXCLUDE_PTT_HANG_TIME_FOR_MANUAL_SENDING
|
||||||
|
// #define OPTION_WINKEY_DISCARD_BYTES_AT_STARTUP // if ASR is not disabled, you may need this to discard errant serial port bytes at startup
|
||||||
|
// #define OPTION_WINKEY_STRICT_EEPROM_WRITES_MAY_WEAR_OUT_EEPROM // with this activated the unit will write non-volatile settings to EEPROM when set by Winkey commands
|
||||||
|
// #define OPTION_WINKEY_SEND_WORDSPACE_AT_END_OF_BUFFER
|
||||||
|
#define OPTION_WINKEY_STRICT_HOST_OPEN // require an admin host open Winkey command before doing any other commands
|
||||||
|
#define OPTION_WINKEY_2_SUPPORT // comment out to revert to Winkey version 1 emulation
|
||||||
|
//this is removed from other features files - may depricate totally - 2016-09-28 - #define OPTION_WINKEY_SEND_BREAKIN_STATUS_BYTE // additional code to check_dit_paddle() and check_dah_paddle() to send 0xC2 status byte when paddles are hit
|
||||||
|
#define OPTION_WINKEY_INTERRUPTS_MEMORY_REPEAT
|
||||||
|
// #define OPTION_WINKEY_UCXLOG_9600_BAUD // use this only with UCXLog configured for Winkey 9600 baud mode
|
||||||
|
// #define OPTION_WINKEY_UCXLOG_SUPRESS_C4_STATUS_BYTE // use this only with UCXlog if having issues with function key macros
|
||||||
|
#define OPTION_WINKEY_2_HOST_CLOSE_NO_SERIAL_PORT_RESET // activate this when using Winkey 2 emulation and Win-Test
|
||||||
|
// #define OPTION_WINKEY_FREQUENT_STATUS_REPORT // activate this to make Winkey emulation play better with RUMlog and RUMped
|
||||||
|
// #define OPTION_WINKEY_EXTENDED_COMMANDS_WITH_DOLLAR_SIGNS // experimental
|
||||||
|
#define OPTION_WINKEY_IGNORE_LOWERCASE // Enable for typical K1EL Winkeyer behavior (use for SkookumLogger version 1.10.14 and prior to workaround "r" bug)
|
||||||
|
// #define OPTION_WINKEY_BLINK_PTT_ON_HOST_OPEN
|
||||||
|
// #define OPTION_WINKEY_ECHO_7C_BYTE // For debugging purposes only (only in this test feature and options file) (7C = half space character)
|
||||||
|
// #define OPTION_WINKEY_DO_NOT_SEND_7C_BYTE_HALF_SPACE // For debugging purposes only (only in this test feature and options file)
|
||||||
|
// #define OPTION_WINKEY_SEND_VERSION_ON_HOST_CLOSE
|
||||||
|
// #define OPTION_WINKEY_PINCONFIG_PTT_CONTROLS_PTT_LINE // Have Winkeyer PTT setting activate/deactivate PTT line rather than control buffered character PTT hold
|
||||||
|
// #define OPTION_REVERSE_BUTTON_ORDER // This is mainly for the DJ0MY NanoKeyer http://nanokeyer.wordpress.com/
|
||||||
|
#define OPTION_PROG_MEM_TRIM_TRAILING_SPACES // trim trailing spaces from memory when programming in command mode
|
||||||
|
#define OPTION_DIT_PADDLE_NO_SEND_ON_MEM_RPT // this makes dit paddle memory interruption a little smoother
|
||||||
|
// #define OPTION_MORE_DISPLAY_MSGS // additional optional display messages - comment out to save memory
|
||||||
|
// #define OPTION_WATCHDOG_TIMER // this enables a four second ATmega48/88/168/328 watchdog timer; use for unattended/remote operation only
|
||||||
|
// #define OPTION_MOUSE_MOVEMENT_PADDLE // experimental (just fooling around) - mouse movement will act like a paddle
|
||||||
|
// #define OPTION_NON_ENGLISH_EXTENSIONS // add support for additional CW characters (i.e. À, Å, Þ, etc.)
|
||||||
|
// #define OPTION_DISPLAY_NON_ENGLISH_EXTENSIONS // LCD display suport for non-English (NO/DK/DE) characters - Courtesy of OZ1JHM
|
||||||
|
// #define OPTION_UNKNOWN_CHARACTER_ERROR_TONE
|
||||||
|
// #define OPTION_DO_NOT_SAY_HI
|
||||||
|
// #define OPTION_BLINK_HI_ON_PTT
|
||||||
|
// #define OPTION_PS2_NON_ENGLISH_CHAR_LCD_DISPLAY_SUPPORT // makes some non-English characters from the PS2 keyboard display correctly in the LCD display (donated by Marcin sp5iou)
|
||||||
|
// #define OPTION_PS2_KEYBOARD_RESET // reset the PS2 keyboard upon startup with 0xFF (contributed by Bill, W9BEL)
|
||||||
|
// #define OPTION_SAVE_MEMORY_NANOKEYER
|
||||||
|
#define OPTION_CW_KEYBOARD_CAPSLOCK_BEEP
|
||||||
|
// #define OPTION_CW_KEYBOARD_ITALIAN
|
||||||
|
// #define OPTION_CW_KEYBOARD_GERMAN
|
||||||
|
#define OPTION_CW_DECODER_GOERTZEL_AUDIO_DETECTOR
|
||||||
|
// #define OPTION_INVERT_PADDLE_PIN_LOGIC
|
||||||
|
#define OPTION_ADVANCED_SPEED_DISPLAY //enables "nerd" speed visualization on display: wpm, cpm (char per min), duration of dit and dah in milliseconds and ratio (contributed by Giorgio, IZ2XBZ)
|
||||||
|
// #define OPTION_PROSIGN_SUPPORT // additional prosign support for paddle and straight key echo on display, CLI, and in memory storage
|
||||||
|
// #define OPTION_RUSSIAN_LANGUAGE_SEND_CLI // Russian language CLI sending support (contributed by Павел Бирюков, UA1AQC)
|
||||||
|
#define OPTION_DO_NOT_SEND_UNKNOWN_CHAR_QUESTION
|
||||||
|
// #define OPTION_INTERNET_LINK_NO_UDP_SVC_DURING_KEY_DOWN
|
||||||
|
// #define OPTION_CMOS_SUPER_KEYER_IAMBIC_B_TIMING_ON_BY_DEFAULT
|
||||||
|
// #define OPTION_SIDETONE_DIGITAL_OUTPUT_NO_SQUARE_WAVE
|
||||||
|
|
||||||
|
// #define OPTION_WORDSWORTH_CZECH
|
||||||
|
// #define OPTION_WORDSWORTH_DEUTSCH
|
||||||
|
// #define OPTION_WORDSWORTH_NORSK
|
||||||
|
|
||||||
|
// #define FEATURE_COMPETITION_COMPRESSION_DETECTION //(Experimental)
|
||||||
|
|
||||||
|
// #define OPTION_DIRECT_PADDLE_PIN_READS_MEGA // only works with Mega and pins 2 and 5 - minor performance increase
|
||||||
|
// #define OPTION_DIRECT_PADDLE_PIN_READS_UNO // Unos or Nanos pins 2 and 5 - do not enable on a nanoKeyer, it uses different pins
|
||||||
|
|
||||||
|
// #define OPTION_EXCLUDE_EXTENDED_CLI_COMMANDS
|
||||||
|
|
||||||
|
// #define OPTION_DFROBOT_LCD_COMMAND_BUTTONS
|
||||||
|
|
||||||
|
#define OPTION_EXCLUDE_MILL_MODE
|
||||||
|
// #define OPTION_NO_ULTIMATIC // reduce memory usage by removing ultimatic code.
|
||||||
|
|
||||||
|
|
||||||
|
// #define OPTION_DISABLE_SERIAL_PORT_CHECKING_WHILE_SENDING_CW
|
||||||
|
// #define OPTION_PERSONALIZED_STARTUP_SCREEN // displays a user defined string of characters on the second or fourth row of the screen during startup. 1602 display requires OPTION_DO_NOT_SAY_HI
|
||||||
|
// #define OPTION_SWAP_PADDLE_PARAMETER_CHANGE_DIRECTION // reverses the up/down direction when using the paddles to change the wpm or sidetone frequency
|
||||||
|
// #define OPTION_DISPLAY_MEMORY_CONTENTS_COMMAND_MODE
|
||||||
|
|
||||||
|
// #define OPTION_BEACON_MODE_MEMORY_REPEAT_TIME // to space out the repeated playing of memory 1 when in beacon mode
|
||||||
|
// #define OPTION_BEACON_MODE_PTT_TAIL_TIME // adds the ptt tail time to each playing of memory 1 in beacon mode
|
||||||
|
|
||||||
|
// #define OPTION_WINKEY_PROSIGN_COMPATIBILITY // Additional character mappings to support K1EL Winkey emulation prosigns
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//*********************************************************************************************************************
|
||||||
|
//*********************************************************************************************************************
|
||||||
|
//*********************************************************************************************************************
|
||||||
|
//*********************************************************************************************************************
|
||||||
|
//*********************************************************************************************************************
|
||||||
|
|
||||||
|
#if defined(TEST_CONFIG_2)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#endif //TEST_CONFIG_2
|
||||||
|
|
||||||
|
// ######## ######## ###### ########
|
||||||
|
// ## ## ## ## ##
|
||||||
|
// ## ## ## ##
|
||||||
|
// ## ###### ###### ##
|
||||||
|
// ## ## ## ##
|
||||||
|
// ## ## ## ## ##
|
||||||
|
// ## ######## ###### ##
|
145
k3ng_keyer/keyer_features_and_options_test_everything.h
Executable file
145
k3ng_keyer/keyer_features_and_options_test_everything.h
Executable file
|
@ -0,0 +1,145 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#define FEATURE_BUTTONS
|
||||||
|
#define FEATURE_COMMAND_MODE
|
||||||
|
#define FEATURE_COMMAND_LINE_INTERFACE // Command Line Interface functionality
|
||||||
|
#define FEATURE_MEMORIES // on the Arduino Due, you must have FEATURE_EEPROM_E24C1024 and E24C1024 EEPROM hardware in order to compile this
|
||||||
|
#define FEATURE_MEMORY_MACROS
|
||||||
|
#define FEATURE_WINKEY_EMULATION // disabling Automatic Software Reset is highly recommended (see documentation)
|
||||||
|
#define FEATURE_BEACON // Go into beacon mode if paddle_left pin is LOW at boot up
|
||||||
|
#define FEATURE_BEACON_SETTING // Go into beacon mode at boot up if EEPROM setting is enabled (\_ CLI Command)
|
||||||
|
#define FEATURE_TRAINING_COMMAND_LINE_INTERFACE
|
||||||
|
#define FEATURE_POTENTIOMETER // do not enable unless you have a potentiometer connected, otherwise noise will falsely trigger wpm changes
|
||||||
|
#define FEATURE_SIDETONE_SWITCH // adds switch control for the sidetone output. requires an external toggle switch (assigned to an arduino pin - see keyer_pin_settings.h).
|
||||||
|
#define FEATURE_SIDETONE_NEWTONE // Use the NewTone library, ~1k smaller code size than the standard tone library. Uses timer1 (pins 9 or 10) https://bitbucket.org/teckel12/arduino-new-tone/wiki/Home
|
||||||
|
#define FEATURE_SERIAL_HELP
|
||||||
|
#define FEATURE_HELL
|
||||||
|
#define FEATURE_PS2_KEYBOARD // Use a PS2 keyboard to send code - Change keyboard layout (non-US) in K3NG_PS2Keyboard.h. Additional options below.
|
||||||
|
// #define FEATURE_USB_KEYBOARD // Use a USB keyboard to send code - Uncomment three lines in k3ng_keyer.ino (search for note_usb_uncomment_lines)
|
||||||
|
// #define FEATURE_CW_COMPUTER_KEYBOARD // Have an Arduino Due or Leonardo act as a USB HID (Human Interface Device) keyboard and use the paddle to "type" characters on the computer
|
||||||
|
#define FEATURE_DEAD_OP_WATCHDOG
|
||||||
|
#define FEATURE_AUTOSPACE
|
||||||
|
#define FEATURE_FARNSWORTH
|
||||||
|
// #define FEATURE_DL2SBA_BANKSWITCH // Switch memory banks feature as described here: http://dl2sba.com/index.php?option=com_content&view=article&id=131:nanokeyer&catid=15:shack&Itemid=27#english
|
||||||
|
#define FEATURE_LCD_4BIT // classic LCD display using 4 I/O lines
|
||||||
|
// #define FEATURE_LCD_8BIT // classic LCD display using 8 I/O lines
|
||||||
|
// #define FEATURE_LCD_ADAFRUIT_I2C // Adafruit I2C LCD display using MCP23017 at addr 0x20
|
||||||
|
// #define FEATURE_LCD_ADAFRUIT_BACKPACK // Adafruit I2C LCD Backup using MCP23008 (courtesy Josiah Ritchie, KE0BLL)
|
||||||
|
// #define FEATURE_LCD_YDv1 // YourDuino I2C LCD display with old LCM 1602 V1 ic
|
||||||
|
// #define FEATURE_LCD1602_N07DH // http://linksprite.com/wiki/index.php5?title=16_X_2_LCD_Keypad_Shield_for_Arduino
|
||||||
|
// #define FEATURE_LCD_SAINSMART_I2C
|
||||||
|
// #define FEATURE_LCD_I2C_FDEBRABANDER //https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library
|
||||||
|
#define FEATURE_CW_DECODER // https://github.com/k3ng/k3ng_cw_keyer/wiki/385-Feature:-CW-Decoder
|
||||||
|
#define FEATURE_SLEEP // go to sleep after x minutes to conserve battery power (not compatible with Arduino DUE, may have mixed results with Mega and Mega ADK)
|
||||||
|
// #define FEATURE_LCD_BACKLIGHT_AUTO_DIM // turn off LCD backlight and/or dim Power Indicator LED after x minutes (LED requires a PWM pin)
|
||||||
|
#define FEATURE_ROTARY_ENCODER // rotary encoder speed control
|
||||||
|
#define FEATURE_CMOS_SUPER_KEYER_IAMBIC_B_TIMING
|
||||||
|
// #define FEATURE_USB_MOUSE // Uncomment three lines in k3ng_keyer.ino (search for note_usb_uncomment_lines)
|
||||||
|
#define FEATURE_CAPACITIVE_PADDLE_PINS // remove the bypass capacitors on the paddle_left and paddle_right lines when using capactive paddles
|
||||||
|
#define FEATURE_LED_RING // Mayhew Labs Led Ring support
|
||||||
|
#define FEATURE_ALPHABET_SEND_PRACTICE // enables command mode S command - created by Ryan, KC2ZWM
|
||||||
|
#define FEATURE_COMMAND_MODE_PROGRESSIVE_5_CHAR_ECHO_PRACTICE // enables command mode U
|
||||||
|
#define FEATURE_PTT_INTERLOCK
|
||||||
|
#define FEATURE_QLF
|
||||||
|
// #define FEATURE_EEPROM_E24C1024
|
||||||
|
#define FEATURE_STRAIGHT_KEY
|
||||||
|
#define FEATURE_DYNAMIC_DAH_TO_DIT_RATIO
|
||||||
|
#define FEATURE_PADDLE_ECHO
|
||||||
|
#define FEATURE_STRAIGHT_KEY_ECHO
|
||||||
|
#define FEATURE_WEB_SERVER
|
||||||
|
#define FEATURE_INTERNET_LINK
|
||||||
|
#define FEATURE_AMERICAN_MORSE
|
||||||
|
// #define FEATURE_4x4_KEYPAD // code contributed by Jack, W0XR - documentation: https://github.com/k3ng/k3ng_cw_keyer/wiki/380-Feature:-Keypad
|
||||||
|
// #define FEATURE_3x4_KEYPAD // code contributed by Jack, W0XR - documentation: https://github.com/k3ng/k3ng_cw_keyer/wiki/380-Feature:-Keypad
|
||||||
|
// #define FEATURE_EXPERIMENTAL_DDS_SINEWAVE_SIDETONE_MEGA // DDS output Mega Digital Pin 46
|
||||||
|
// #define FEATURE_CLOCK // NOT FINISHED YET
|
||||||
|
#define FEATURE_SD_CARD_SUPPORT
|
||||||
|
#define FEATURE_SEQUENCER
|
||||||
|
#define FEATURE_COMMAND_MODE_ENHANCED_CMD_ACKNOWLEDGEMENT
|
||||||
|
// #define FEATURE_WEB_SERVER // Details: https://github.com/k3ng/k3ng_cw_keyer/wiki/390-Feature:-Ethernet,-Web-Server,-and-Internet-Linking
|
||||||
|
// #define FEATURE_INTERNET_LINK // Details: https://github.com/k3ng/k3ng_cw_keyer/wiki/390-Feature:-Ethernet,-Web-Server,-and-Internet-Linking
|
||||||
|
|
||||||
|
#define FEATURE_COMMAND_LINE_INTERFACE_ON_SECONDARY_PORT // Activate the Command Line interface on the secondary serial port
|
||||||
|
#define OPTION_PRIMARY_SERIAL_PORT_DEFAULT_WINKEY_EMULATION // Use when activating both FEATURE_WINKEY_EMULATION and FEATURE_COMMAND_LINE_INTERFACE
|
||||||
|
// simultaneously. This will make Winkey emulation be the default at boot up;
|
||||||
|
// hold command button down at boot up to activate CLI mode
|
||||||
|
|
||||||
|
// #define OPTION_SUPPRESS_SERIAL_BOOT_MSG
|
||||||
|
#define OPTION_INCLUDE_PTT_TAIL_FOR_MANUAL_SENDING
|
||||||
|
#define OPTION_EXCLUDE_PTT_HANG_TIME_FOR_MANUAL_SENDING
|
||||||
|
// #define OPTION_WINKEY_DISCARD_BYTES_AT_STARTUP // if ASR is not disabled, you may need this to discard errant serial port bytes at startup
|
||||||
|
// #define OPTION_WINKEY_STRICT_EEPROM_WRITES_MAY_WEAR_OUT_EEPROM // with this activated the unit will write non-volatile settings to EEPROM when set by Winkey commands
|
||||||
|
// #define OPTION_WINKEY_SEND_WORDSPACE_AT_END_OF_BUFFER
|
||||||
|
#define OPTION_WINKEY_STRICT_HOST_OPEN // require an admin host open Winkey command before doing any other commands
|
||||||
|
#define OPTION_WINKEY_2_SUPPORT // comment out to revert to Winkey version 1 emulation
|
||||||
|
//this is removed from other features files - may depricate totally - 2016-09-28 - #define OPTION_WINKEY_SEND_BREAKIN_STATUS_BYTE // additional code to check_dit_paddle() and check_dah_paddle() to send 0xC2 status byte when paddles are hit
|
||||||
|
#define OPTION_WINKEY_INTERRUPTS_MEMORY_REPEAT
|
||||||
|
#define OPTION_WINKEY_UCXLOG_9600_BAUD // use this only with UCXLog configured for Winkey 9600 baud mode
|
||||||
|
#define OPTION_WINKEY_UCXLOG_SUPRESS_C4_STATUS_BYTE // use this only with UCXlog if having issues with function key macros
|
||||||
|
#define OPTION_WINKEY_2_HOST_CLOSE_NO_SERIAL_PORT_RESET // activate this when using Winkey 2 emulation and Win-Test
|
||||||
|
#define OPTION_WINKEY_FREQUENT_STATUS_REPORT // activate this to make Winkey emulation play better with RUMlog and RUMped
|
||||||
|
// #define OPTION_WINKEY_EXTENDED_COMMANDS_WITH_DOLLAR_SIGNS // experimental
|
||||||
|
#define OPTION_WINKEY_IGNORE_LOWERCASE // Enable for typical K1EL Winkeyer behavior (use for SkookumLogger version 1.10.14 and prior to workaround "r" bug)
|
||||||
|
#define OPTION_WINKEY_BLINK_PTT_ON_HOST_OPEN
|
||||||
|
#define OPTION_WINKEY_ECHO_7C_BYTE // For debugging purposes only (only in this test feature and options file) (7C = half space character)
|
||||||
|
// #define OPTION_WINKEY_DO_NOT_SEND_7C_BYTE_HALF_SPACE // For debugging purposes only (only in this test feature and options file)
|
||||||
|
#define OPTION_WINKEY_SEND_VERSION_ON_HOST_CLOSE
|
||||||
|
// #define OPTION_WINKEY_PINCONFIG_PTT_CONTROLS_PTT_LINE // Have Winkeyer PTT setting activate/deactivate PTT line rather than control buffered character PTT hold
|
||||||
|
// #define OPTION_REVERSE_BUTTON_ORDER // This is mainly for the DJ0MY NanoKeyer http://nanokeyer.wordpress.com/
|
||||||
|
#define OPTION_PROG_MEM_TRIM_TRAILING_SPACES // trim trailing spaces from memory when programming in command mode
|
||||||
|
#define OPTION_DIT_PADDLE_NO_SEND_ON_MEM_RPT // this makes dit paddle memory interruption a little smoother
|
||||||
|
#define OPTION_MORE_DISPLAY_MSGS // additional optional display messages - comment out to save memory
|
||||||
|
#define OPTION_WATCHDOG_TIMER // this enables a four second ATmega48/88/168/328 watchdog timer; use for unattended/remote operation only
|
||||||
|
// #define OPTION_MOUSE_MOVEMENT_PADDLE // experimental (just fooling around) - mouse movement will act like a paddle
|
||||||
|
#define OPTION_NON_ENGLISH_EXTENSIONS // add support for additional CW characters (i.e. À, Å, Þ, etc.)
|
||||||
|
#define OPTION_KEEP_PTT_KEYED_WHEN_CHARS_BUFFERED // this option keeps PTT high if there are characters buffered from the keyboard, the serial interface, or Winkey
|
||||||
|
#define OPTION_DISPLAY_NON_ENGLISH_EXTENSIONS // LCD display suport for non-English (NO/DK/DE) characters - Courtesy of OZ1JHM
|
||||||
|
#define OPTION_UNKNOWN_CHARACTER_ERROR_TONE
|
||||||
|
// #define OPTION_DO_NOT_SAY_HI
|
||||||
|
#define OPTION_PS2_NON_ENGLISH_CHAR_LCD_DISPLAY_SUPPORT // makes some non-English characters from the PS2 keyboard display correctly in the LCD display (donated by Marcin sp5iou)
|
||||||
|
#define OPTION_PS2_KEYBOARD_RESET // reset the PS2 keyboard upon startup with 0xFF (contributed by Bill, W9BEL)
|
||||||
|
// #define OPTION_SAVE_MEMORY_NANOKEYER
|
||||||
|
#define OPTION_CW_KEYBOARD_CAPSLOCK_BEEP
|
||||||
|
// #define OPTION_CW_KEYBOARD_ITALIAN
|
||||||
|
// #define OPTION_CW_KEYBOARD_GERMAN
|
||||||
|
#define OPTION_CW_DECODER_GOERTZEL_AUDIO_DETECTOR
|
||||||
|
// #define OPTION_INVERT_PADDLE_PIN_LOGIC
|
||||||
|
#define OPTION_ADVANCED_SPEED_DISPLAY //enables "nerd" speed visualization on display: wpm, cpm (char per min), duration of dit and dah in milliseconds and ratio (contributed by Giorgio, IZ2XBZ)
|
||||||
|
#define OPTION_PROSIGN_SUPPORT // additional prosign support for paddle and straight key echo on display, CLI, and in memory storage
|
||||||
|
// #define OPTION_RUSSIAN_LANGUAGE_SEND_CLI // Russian language CLI sending support (contributed by Павел Бирюков, UA1AQC)
|
||||||
|
#define OPTION_DO_NOT_SEND_UNKNOWN_CHAR_QUESTION
|
||||||
|
// #define OPTION_INTERNET_LINK_NO_UDP_SVC_DURING_KEY_DOWN
|
||||||
|
// #define OPTION_CMOS_SUPER_KEYER_IAMBIC_B_TIMING_ON_BY_DEFAULT
|
||||||
|
// #define OPTION_SIDETONE_DIGITAL_OUTPUT_NO_SQUARE_WAVE
|
||||||
|
#define FEATURE_SD_CARD_SUPPORT
|
||||||
|
#define FEATURE_SO2R_BASE // SO2R Box base protocol extensions
|
||||||
|
#define FEATURE_SO2R_SWITCHES // SO2R Box TX and RX switches
|
||||||
|
#define FEATURE_SO2R_ANTENNA // SO2R Box antenna selection (not fully implemented)
|
||||||
|
|
||||||
|
// #define OPTION_DIRECT_PADDLE_PIN_READS_MEGA // only works with Mega and pins 2 and 5 - minor performance increase
|
||||||
|
// #define OPTION_DIRECT_PADDLE_PIN_READS_UNO // Unos or Nanos
|
||||||
|
|
||||||
|
// #define OPTION_WORDSWORTH_CZECH
|
||||||
|
// #define OPTION_WORDSWORTH_DEUTSCH
|
||||||
|
// #define OPTION_WORDSWORTH_NORSK
|
||||||
|
|
||||||
|
// #define FEATURE_COMPETITION_COMPRESSION_DETECTION //(Experimental)
|
||||||
|
|
||||||
|
// #define OPTION_DIRECT_PADDLE_PIN_READS_MEGA // only works with Mega and pins 2 and 5 - minor performance increase... maybe?
|
||||||
|
|
||||||
|
// #define OPTION_DFROBOT_LCD_COMMAND_BUTTONS
|
||||||
|
|
||||||
|
// #define OPTION_EXCLUDE_MILL_MODE
|
||||||
|
// #define OPTION_NO_ULTIMATIC // reduce memory usage by removing ultimatic code.
|
||||||
|
|
||||||
|
|
||||||
|
// #define OPTION_DISABLE_SERIAL_PORT_CHECKING_WHILE_SENDING_CW
|
||||||
|
// #define OPTION_PERSONALIZED_STARTUP_SCREEN // displays a user defined string of characters on the second or fourth row of the screen during startup. 1602 display requires OPTION_DO_NOT_SAY_HI
|
||||||
|
// #define OPTION_SWAP_PADDLE_PARAMETER_CHANGE_DIRECTION // reverses the up/down direction when using the paddles to change the wpm or sidetone frequency
|
||||||
|
#define OPTION_DISPLAY_MEMORY_CONTENTS_COMMAND_MODE
|
||||||
|
|
||||||
|
#define OPTION_BEACON_MODE_MEMORY_REPEAT_TIME // to space out the repeated playing of memory 1 when in beacon mode
|
||||||
|
#define OPTION_BEACON_MODE_PTT_TAIL_TIME // adds the ptt tail time to each playing of memory 1 in beacon mode
|
||||||
|
|
||||||
|
#define OPTION_WINKEY_PROSIGN_COMPATIBILITY // Additional character mappings to support K1EL Winkey emulation prosigns
|
95
k3ng_keyer/keyer_features_and_options_tinykeyer.h
Executable file
95
k3ng_keyer/keyer_features_and_options_tinykeyer.h
Executable file
|
@ -0,0 +1,95 @@
|
||||||
|
// compile time features and options - comment or uncomment to add or delete features
|
||||||
|
// FEATURES add more bytes to the compiled binary, OPTIONS change code behavior
|
||||||
|
|
||||||
|
// features & options for TinyKeyer by OK1RR
|
||||||
|
|
||||||
|
#define FEATURE_BUTTONS
|
||||||
|
#define FEATURE_COMMAND_MODE
|
||||||
|
//#define FEATURE_COMMAND_LINE_INTERFACE // (this no longer requires FEATURE_SERIAL)
|
||||||
|
#define FEATURE_MEMORIES
|
||||||
|
//#define FEATURE_MEMORY_MACROS
|
||||||
|
#define FEATURE_WINKEY_EMULATION // disabling Automatic Software Reset is highly recommended (see documentation) (this no longer requires FEATURE_SERIAL)
|
||||||
|
//#define FEATURE_POTENTIOMETER // do not enable unless you have a potentiometer connected, otherwise noise will falsely trigger wpm changes
|
||||||
|
//#define FEATURE_BEACON // Go into beacon mode if paddle_left pin is LOW at boot up
|
||||||
|
//#define FEATURE_BEACON_SETTING // Go into beacon mode at boot up if EEPROM setting is enabled (\_ CLI Command)
|
||||||
|
//#define FEATURE_SIDETONE_SWITCH // adds switch control for the sidetone output. requires an external toggle switch (assigned to an arduino pin - see keyer_pin_settings.h).
|
||||||
|
//#define FEATURE_SIDETONE_NEWTONE // Use the NewTone library, ~1k smaller code size than the standard tone library. Uses timer1 (pins 9 or 10) https://bitbucket.org/teckel12/arduino-new-tone/wiki/Home
|
||||||
|
//#define FEATURE_DEAD_OP_WATCHDOG
|
||||||
|
#define FEATURE_AUTOSPACE
|
||||||
|
//#define FEATURE_FARNSWORTH
|
||||||
|
//#define FEATURE_DL2SBA_BANKSWITCH // Switch memory banks feature as described here: http://dl2sba.com/index.php?option=com_content&view=article&id=131:nanokeyer&catid=15:shack&Itemid=27#english
|
||||||
|
//#define FEATURE_SLEEP // go to sleep after x minutes to conserve battery power
|
||||||
|
//#define FEATURE_LCD_BACKLIGHT_AUTO_DIM // turn off LCD backlight and/or dim Power Indicator LED after x minutes (LED requires a PWM pin)
|
||||||
|
#define FEATURE_ROTARY_ENCODER // rotary encoder speed control
|
||||||
|
//#define FEATURE_CMOS_SUPER_KEYER_IAMBIC_B_TIMING
|
||||||
|
//#define FEATURE_DIT_DAH_BUFFER_CONTROL
|
||||||
|
//#define FEATURE_ALPHABET_SEND_PRACTICE // enables command mode S command - created by Ryan, KC2ZWM
|
||||||
|
//#define FEATURE_COMMAND_MODE_PROGRESSIVE_5_CHAR_ECHO_PRACTICE // enables command mode U
|
||||||
|
//#define FEATURE_PTT_INTERLOCK
|
||||||
|
//#define FEATURE_QLF
|
||||||
|
//#define FEATURE_EEPROM_E24C1024
|
||||||
|
//#define FEATURE_STRAIGHT_KEY
|
||||||
|
//#define FEATURE_DYNAMIC_DAH_TO_DIT_RATIO
|
||||||
|
//#define FEATURE_AMERICAN_MORSE
|
||||||
|
// #define FEATURE_4x4_KEYPAD // code contributed by Jack, W0XR - documentation: https://github.com/k3ng/k3ng_cw_keyer/wiki/380-Feature:-Keypad
|
||||||
|
// #define FEATURE_3x4_KEYPAD // code contributed by Jack, W0XR - documentation: https://github.com/k3ng/k3ng_cw_keyer/wiki/380-Feature:-Keypad
|
||||||
|
// #define FEATURE_SEQUENCER
|
||||||
|
// #define FEATURE_COMMAND_MODE_ENHANCED_CMD_ACKNOWLEDGEMENT
|
||||||
|
// #define FEATURE_WEB_SERVER // Details: https://github.com/k3ng/k3ng_cw_keyer/wiki/390-Feature:-Ethernet,-Web-Server,-and-Internet-Linking
|
||||||
|
// #define FEATURE_INTERNET_LINK // Details: https://github.com/k3ng/k3ng_cw_keyer/wiki/390-Feature:-Ethernet,-Web-Server,-and-Internet-Linking
|
||||||
|
|
||||||
|
#define OPTION_SUPPRESS_SERIAL_BOOT_MSG
|
||||||
|
#define OPTION_INCLUDE_PTT_TAIL_FOR_MANUAL_SENDING
|
||||||
|
#define OPTION_EXCLUDE_PTT_HANG_TIME_FOR_MANUAL_SENDING
|
||||||
|
//#define OPTION_SERIAL_PORT_DEFAULT_WINKEY_EMULATION // Use when activating both FEATURE_WINKEY_EMULATION and FEATURE_COMMAND_LINE_INTERFACE simultaneously. This will make Winkey emulation be the default at boot up; hold command button down at boot up to activate CLI mode
|
||||||
|
//#define OPTION_WINKEY_DISCARD_BYTES_AT_STARTUP // if ASR is not disabled, you may need this to discard errant serial port bytes at startup
|
||||||
|
//#define OPTION_WINKEY_STRICT_EEPROM_WRITES_MAY_WEAR_OUT_EEPROM // with this activated the unit will write non-volatile settings to EEPROM when set by Winkey commands
|
||||||
|
#define OPTION_WINKEY_SEND_WORDSPACE_AT_END_OF_BUFFER
|
||||||
|
#define OPTION_WINKEY_STRICT_HOST_OPEN // require an admin host open Winkey command before doing any other commands
|
||||||
|
#define OPTION_WINKEY_2_SUPPORT // comment out to revert to Winkey version 1 emulation
|
||||||
|
#define OPTION_WINKEY_INTERRUPTS_MEMORY_REPEAT
|
||||||
|
//#define OPTION_WINKEY_UCXLOG_9600_BAUD // use this only with UCXLog configured for Winkey 9600 baud mode
|
||||||
|
#define OPTION_WINKEY_2_HOST_CLOSE_NO_SERIAL_PORT_RESET // (Required for Win-Test to function)
|
||||||
|
//#define OPTION_WINKEY_FREQUENT_STATUS_REPORT // activate this to make Winkey emulation play better with RUMlog and RUMped
|
||||||
|
//#define OPTION_WINKEY_IGNORE_LOWERCASE // Enable for typical K1EL Winkeyer behavior (use for SkookumLogger version 1.10.14 and prior to workaround bug)
|
||||||
|
// #define OPTION_WINKEY_BLINK_PTT_ON_HOST_OPEN
|
||||||
|
// #define OPTION_WINKEY_SEND_VERSION_ON_HOST_CLOSE
|
||||||
|
// #define OPTION_WINKEY_PINCONFIG_PTT_CONTROLS_PTT_LINE // Have Winkeyer PTT setting activate/deactivate PTT line rather than control buffered character PTT hold
|
||||||
|
#define OPTION_PROG_MEM_TRIM_TRAILING_SPACES // trim trailing spaces from memory when programming in command mode
|
||||||
|
#define OPTION_DIT_PADDLE_NO_SEND_ON_MEM_RPT // this makes dit paddle memory interruption a little smoother
|
||||||
|
//#define OPTION_WATCHDOG_TIMER // this enables a four second ATmega48/88/168/328 watchdog timer; use for unattended/remote operation only
|
||||||
|
//#define OPTION_NON_ENGLISH_EXTENSIONS // add support for additional CW characters (i.e. À, Å, Þ, etc.)
|
||||||
|
//#define OPTION_UNKNOWN_CHARACTER_ERROR_TONE
|
||||||
|
//#define OPTION_DO_NOT_SAY_HI
|
||||||
|
#define OPTION_SAVE_MEMORY_NANOKEYER
|
||||||
|
//#define OPTION_INVERT_PADDLE_PIN_LOGIC
|
||||||
|
//#define OPTION_DIT_DAH_BUFFERS_OFF_BY_DEFAULT_FOR_FEATURE_DIT_DAH_BUFFER_CONTROL
|
||||||
|
//#define OPTION_RUSSIAN_LANGUAGE_SEND_CLI // Russian language CLI sending support (contributed by Павел Бирюков, UA1AQC)
|
||||||
|
#define OPTION_DO_NOT_SEND_UNKNOWN_CHAR_QUESTION
|
||||||
|
//#define OPTION_CMOS_SUPER_KEYER_IAMBIC_B_TIMING_ON_BY_DEFAULT
|
||||||
|
//#define OPTION_SIDETONE_DIGITAL_OUTPUT_NO_SQUARE_WAVE
|
||||||
|
//#define FEATURE_SD_CARD_SUPPORT
|
||||||
|
|
||||||
|
// #define OPTION_DIRECT_PADDLE_PIN_READS_MEGA // only works with Mega and pins 2 and 5 - minor performance increase
|
||||||
|
// #define OPTION_DIRECT_PADDLE_PIN_READS_UNO // Unos or Nanos pins 2 and 5 - do not enable on a nanoKeyer, it uses different pins
|
||||||
|
|
||||||
|
// #define OPTION_WORDSWORTH_CZECH
|
||||||
|
// #define OPTION_WORDSWORTH_DEUTSCH
|
||||||
|
// #define OPTION_WORDSWORTH_NORSK
|
||||||
|
|
||||||
|
#define OPTION_EXCLUDE_EXTENDED_CLI_COMMANDS
|
||||||
|
|
||||||
|
// #define OPTION_DFROBOT_LCD_COMMAND_BUTTONS
|
||||||
|
|
||||||
|
#define OPTION_EXCLUDE_MILL_MODE
|
||||||
|
// #define OPTION_NO_ULTIMATIC // reduce memory usage by removing ultimatic code.
|
||||||
|
|
||||||
|
#define OPTION_DISABLE_SERIAL_PORT_CHECKING_WHILE_SENDING_CW
|
||||||
|
// #define OPTION_PERSONALIZED_STARTUP_SCREEN // displays a user defined string of characters on the second or fourth row of the screen during startup. 1602 display requires OPTION_DO_NOT_SAY_HI
|
||||||
|
// #define OPTION_SWAP_PADDLE_PARAMETER_CHANGE_DIRECTION // reverses the up/down direction when using the paddles to change the wpm or sidetone frequency
|
||||||
|
// #define OPTION_DISPLAY_MEMORY_CONTENTS_COMMAND_MODE
|
||||||
|
|
||||||
|
// #define OPTION_BEACON_MODE_MEMORY_REPEAT_TIME // to space out the repeated playing of memory 1 when in beacon mode
|
||||||
|
// #define OPTION_BEACON_MODE_PTT_TAIL_TIME // adds the ptt tail time to each playing of memory 1 in beacon mode
|
||||||
|
|
||||||
|
// #define OPTION_WINKEY_PROSIGN_COMPATIBILITY // Additional character mappings to support K1EL Winkey emulation prosigns
|
126
k3ng_keyer/keyer_features_and_options_yaacwk.h
Executable file
126
k3ng_keyer/keyer_features_and_options_yaacwk.h
Executable file
|
@ -0,0 +1,126 @@
|
||||||
|
// This file is for the Yaacwk interface http://i1cra.briata.org/yaacwk/
|
||||||
|
// YAACWK stands for Yet Another Arduino CW Keyer, it's based on AtMega 644p
|
||||||
|
// see http://i1cra.briata.org/yaacwk/ for more info
|
||||||
|
|
||||||
|
// compile time features and options - comment or uncomment to add or delete features
|
||||||
|
// FEATURES add more bytes to the compiled binary, OPTIONS change code behavior
|
||||||
|
|
||||||
|
#define FEATURE_BUTTONS
|
||||||
|
#define FEATURE_COMMAND_MODE
|
||||||
|
#define FEATURE_COMMAND_LINE_INTERFACE // (this no longer requires FEATURE_SERIAL)
|
||||||
|
#define FEATURE_MEMORIES
|
||||||
|
//#define FEATURE_MEMORY_MACROS
|
||||||
|
#define FEATURE_WINKEY_EMULATION // disabling Automatic Software Reset is highly recommended (see documentation) (this no longer requires FEATURE_SERIAL)
|
||||||
|
//#define FEATURE_BEACON // Go into beacon mode if paddle_left pin is LOW at boot up
|
||||||
|
//#define FEATURE_BEACON_SETTING // Go into beacon mode at boot up if EEPROM setting is enabled (\_ CLI Command)
|
||||||
|
//#define FEATURE_TRAINING_COMMAND_LINE_INTERFACE
|
||||||
|
#define FEATURE_POTENTIOMETER // do not enable unless you have a potentiometer connected, otherwise noise will falsely trigger wpm changes
|
||||||
|
//#define FEATURE_SIDETONE_SWITCH // adds switch control for the sidetone output. requires an external toggle switch (assigned to an arduino pin - see keyer_pin_settings.h).
|
||||||
|
//#define FEATURE_SIDETONE_NEWTONE // Use the NewTone library, ~1k smaller code size than the standard tone library. Uses timer1 (pins 9 or 10) https://bitbucket.org/teckel12/arduino-new-tone/wiki/Home
|
||||||
|
//#define FEATURE_SERIAL_HELP
|
||||||
|
//#define FEATURE_HELL
|
||||||
|
#define FEATURE_PS2_KEYBOARD // Use a PS2 keyboard to send code - Change keyboard layout (non-US) in K3NG_PS2Keyboard.h. Additional options below.
|
||||||
|
//#define FEATURE_USB_KEYBOARD // Use a USB keyboard to send code - Uncomment three lines in k3ng_keyer.ino (search for note_usb_uncomment_lines)
|
||||||
|
//#define FEATURE_DEAD_OP_WATCHDOG
|
||||||
|
//#define FEATURE_AUTOSPACE
|
||||||
|
//#define FEATURE_FARNSWORTH
|
||||||
|
//#define FEATURE_DL2SBA_BANKSWITCH // Switch memory banks feature as described here: http://dl2sba.com/index.php?option=com_content&view=article&id=131:nanokeyer&catid=15:shack&Itemid=27#english
|
||||||
|
#define FEATURE_LCD_4BIT // classic LCD disidefplay using 4 I/O lines
|
||||||
|
//#define FEATURE_LCD_ADAFRUIT_I2C // Adafruit I2C LCD display using MCP23017 at addr 0x20
|
||||||
|
//#define FEATURE_LCD_YDv1 // YourDuino I2C LCD display with old LCM 1602 V1 ic
|
||||||
|
//#define FEATURE_LCD_FABO_PCF8574 // https://github.com/FaBoPlatform/FaBoLCD-PCF8574-Library
|
||||||
|
#define FEATURE_CW_DECODER
|
||||||
|
//#define FEATURE_SLEEP // go to sleep after x minutes to conserve battery power
|
||||||
|
//#define FEATURE_LCD_BACKLIGHT_AUTO_DIM // turn off LCD backlight and/or dim Power Indicator LED after x minutes (LED requires a PWM pin)
|
||||||
|
//#define FEATURE_ROTARY_ENCODER // rotary encoder speed control
|
||||||
|
//#define FEATURE_CMOS_SUPER_KEYER_IAMBIC_B_TIMING
|
||||||
|
//#define FEATURE_USB_MOUSE // Uncomment three lines in k3ng_keyer.ino (search for note_usb_uncomment_lines)
|
||||||
|
//#define FEATURE_CAPACITIVE_PADDLE_PINS // remove the bypass capacitors on the paddle_left and paddle_right lines when using capactive paddles
|
||||||
|
//#define FEATURE_LED_RING // Mayhew Labs Led Ring support
|
||||||
|
#define FEATURE_ALPHABET_SEND_PRACTICE // enables command mode S command - created by Ryan, KC2ZWM
|
||||||
|
//#define FEATURE_COMMAND_MODE_PROGRESSIVE_5_CHAR_ECHO_PRACTICE // enables command mode U
|
||||||
|
//#define FEATURE_PTT_INTERLOCK
|
||||||
|
//#define FEATURE_QLF
|
||||||
|
//#define FEATURE_EEPROM_E24C1024
|
||||||
|
//#define FEATURE_STRAIGHT_KEY
|
||||||
|
//#define FEATURE_DYNAMIC_DAH_TO_DIT_RATIO
|
||||||
|
//#define FEATURE_PADDLE_ECHO
|
||||||
|
//#define FEATURE_STRAIGHT_KEY_ECHO
|
||||||
|
//#define FEATURE_AMERICAN_MORSE
|
||||||
|
//#define FEATURE_4x4_KEYPAD // code contributed by Jack, W0XR - documentation: https://github.com/k3ng/k3ng_cw_keyer/wiki/380-Feature:-Keypad
|
||||||
|
//#define FEATURE_3x4_KEYPAD // code contributed by Jack, W0XR - documentation: https://github.com/k3ng/k3ng_cw_keyer/wiki/380-Feature:-Keypad
|
||||||
|
//#define FEATURE_SEQUENCER
|
||||||
|
//#define FEATURE_SD_CARD_SUPPORT
|
||||||
|
// #define FEATURE_COMMAND_MODE_ENHANCED_CMD_ACKNOWLEDGEMENT
|
||||||
|
|
||||||
|
|
||||||
|
//#define FEATURE_COMMAND_LINE_INTERFACE_ON_SECONDARY_PORT // Activate the Command Line interface on the secondary serial port
|
||||||
|
#define OPTION_PRIMARY_SERIAL_PORT_DEFAULT_WINKEY_EMULATION // Use when activating both FEATURE_WINKEY_EMULATION and FEATURE_COMMAND_LINE_INTERFACE
|
||||||
|
// simultaneously. This will make Winkey emulation be the default at boot up;
|
||||||
|
// hold command button down at boot up to activate CLI mode
|
||||||
|
|
||||||
|
//#define OPTION_SUPPRESS_SERIAL_BOOT_MSG
|
||||||
|
#define OPTION_INCLUDE_PTT_TAIL_FOR_MANUAL_SENDING
|
||||||
|
#define OPTION_EXCLUDE_PTT_HANG_TIME_FOR_MANUAL_SENDING
|
||||||
|
#define OPTION_SERIAL_PORT_DEFAULT_WINKEY_EMULATION // Use when activating both FEATURE_WINKEY_EMULATION and FEATURE_COMMAND_LINE_INTERFACE simultaneously. This will make Winkey emulation be the default at boot up; hold command button down at boot up to activate CLI mode
|
||||||
|
//#define OPTION_WINKEY_DISCARD_BYTES_AT_STARTUP // if ASR is not disabled, you may need this to discard errant serial port bytes at startup
|
||||||
|
//#define OPTION_WINKEY_STRICT_EEPROM_WRITES_MAY_WEAR_OUT_EEPROM // with this activated the unit will write non-volatile settings to EEPROM when set by Winkey commands
|
||||||
|
//#define OPTION_WINKEY_SEND_WORDSPACE_AT_END_OF_BUFFER
|
||||||
|
#define OPTION_WINKEY_STRICT_HOST_OPEN // require an admin host open Winkey command before doing any other commands
|
||||||
|
#define OPTION_WINKEY_2_SUPPORT // comment out to revert to Winkey version 1 emulation
|
||||||
|
#define OPTION_WINKEY_INTERRUPTS_MEMORY_REPEAT
|
||||||
|
//#define OPTION_WINKEY_UCXLOG_9600_BAUD // use this only with UCXLog configured for Winkey 9600 baud mode
|
||||||
|
#define OPTION_WINKEY_2_HOST_CLOSE_NO_SERIAL_PORT_RESET // activate this when using Winkey 2 emulation and Win-Test
|
||||||
|
#define OPTION_WINKEY_FREQUENT_STATUS_REPORT // activate this to make Winkey emulation play better with RUMlog and RUMped
|
||||||
|
#define OPTION_WINKEY_IGNORE_LOWERCASE // Enable for typical K1EL Winkeyer behavior (use for SkookumLogger version 1.10.14 and prior to workaround bug)
|
||||||
|
//#define OPTION_WINKEY_SEND_VERSION_ON_HOST_CLOSE
|
||||||
|
//#define OPTION_WINKEY_PINCONFIG_PTT_CONTROLS_PTT_LINE // Have Winkeyer PTT setting activate/deactivate PTT line rather than control buffered character PTT hold
|
||||||
|
//#define OPTION_REVERSE_BUTTON_ORDER // This is mainly for the DJ0MY NanoKeyer http://nanokeyer.wordpress.com/
|
||||||
|
#define OPTION_PROG_MEM_TRIM_TRAILING_SPACES // trim trailing spaces from memory when programming in command mode
|
||||||
|
#define OPTION_DIT_PADDLE_NO_SEND_ON_MEM_RPT // this makes dit paddle memory interruption a little smoother
|
||||||
|
//#define OPTION_MORE_DISPLAY_MSGS // additional optional display messages - comment out to save memory
|
||||||
|
//#define OPTION_WATCHDOG_TIMER // this enables a four second ATmega48/88/168/328 watchdog timer; use for unattended/remote operation only
|
||||||
|
//#define OPTION_MOUSE_MOVEMENT_PADDLE // experimental (just fooling around) - mouse movement will act like a paddle
|
||||||
|
//#define OPTION_NON_ENGLISH_EXTENSIONS // add support for additional CW characters (i.e. À, Å, Þ, etc.)
|
||||||
|
//#define OPTION_KEEP_PTT_KEYED_WHEN_CHARS_BUFFERED // this option keeps PTT high if there are characters buffered from the keyboard, the serial interface, or Winkey
|
||||||
|
//#define OPTION_DISPLAY_NON_ENGLISH_EXTENSIONS // LCD display suport for non-English (NO/DK/DE) characters - Courtesy of OZ1JHM
|
||||||
|
//#define OPTION_UNKNOWN_CHARACTER_ERROR_TONE
|
||||||
|
//#define OPTION_DO_NOT_SAY_HI
|
||||||
|
//#define OPTION_PS2_NON_ENGLISH_CHAR_LCD_DISPLAY_SUPPORT // makes some non-English characters from the PS2 keyboard display correctly in the LCD display (donated by Marcin sp5iou)
|
||||||
|
//#define OPTION_PS2_KEYBOARD_RESET // reset the PS2 keyboard upon startup with 0xFF (contributed by Bill, W9BEL)
|
||||||
|
//#define OPTION_SAVE_MEMORY_NANOKEYER
|
||||||
|
//#define OPTION_CW_KEYBOARD_CAPSLOCK_BEEP
|
||||||
|
#define OPTION_CW_KEYBOARD_ITALIAN
|
||||||
|
//#define OPTION_INVERT_PADDLE_PIN_LOGIC
|
||||||
|
#define OPTION_CW_DECODER_GOERTZEL_AUDIO_DETECTOR
|
||||||
|
//#define OPTION_ADVANCED_SPEED_DISPLAY //enables "nerd" speed visualization on display: wpm, cpm (char per min), duration of dit and dah in milliseconds and ratio (contributed by Giorgio, IZ2XBZ)
|
||||||
|
//#define OPTION_RUSSIAN_LANGUAGE_SEND_CLI // Russian language CLI sending support (contributed by Павел Бирюков, UA1AQC)
|
||||||
|
//#define OPTION_DO_NOT_SEND_UNKNOWN_CHAR_QUESTION
|
||||||
|
//#define OPTION_CMOS_SUPER_KEYER_IAMBIC_B_TIMING_ON_BY_DEFAULT
|
||||||
|
//#define OPTION_SIDETONE_DIGITAL_OUTPUT_NO_SQUARE_WAVE
|
||||||
|
|
||||||
|
// #define OPTION_WORDSWORTH_CZECH
|
||||||
|
// #define OPTION_WORDSWORTH_DEUTSCH
|
||||||
|
// #define OPTION_WORDSWORTH_NORSK
|
||||||
|
|
||||||
|
#define OPTION_EXCLUDE_EXTENDED_CLI_COMMANDS
|
||||||
|
|
||||||
|
// #define OPTION_DFROBOT_LCD_COMMAND_BUTTONS
|
||||||
|
|
||||||
|
#define OPTION_EXCLUDE_MILL_MODE
|
||||||
|
// #define OPTION_NO_ULTIMATIC // reduce memory usage by removing ultimatic code.
|
||||||
|
|
||||||
|
|
||||||
|
// #define OPTION_DISABLE_SERIAL_PORT_CHECKING_WHILE_SENDING_CW
|
||||||
|
|
||||||
|
// #define OPTION_DIRECT_PADDLE_PIN_READS_MEGA // only works with Mega and pins 2 and 5 - minor performance increase
|
||||||
|
// #define OPTION_DIRECT_PADDLE_PIN_READS_UNO // Unos or Nanos pins 2 and 5 - do not enable on a nanoKeyer, it uses different pins
|
||||||
|
|
||||||
|
// #define OPTION_PERSONALIZED_STARTUP_SCREEN // displays a user defined string of characters on the second or fourth row of the screen during startup. 1602 display requires OPTION_DO_NOT_SAY_HI
|
||||||
|
// #define OPTION_SWAP_PADDLE_PARAMETER_CHANGE_DIRECTION // reverses the up/down direction when using the paddles to change the wpm or sidetone frequency
|
||||||
|
// #define OPTION_DISPLAY_MEMORY_CONTENTS_COMMAND_MODE
|
||||||
|
|
||||||
|
// #define OPTION_BEACON_MODE_MEMORY_REPEAT_TIME // to space out the repeated playing of memory 1 when in beacon mode
|
||||||
|
// #define OPTION_BEACON_MODE_PTT_TAIL_TIME // adds the ptt tail time to each playing of memory 1 in beacon mode
|
||||||
|
|
||||||
|
// #define OPTION_WINKEY_PROSIGN_COMPATIBILITY // Additional character mappings to support K1EL Winkey emulation prosigns
|
140
k3ng_keyer/keyer_features_and_options_yccc_so2r_mini.h
Executable file
140
k3ng_keyer/keyer_features_and_options_yccc_so2r_mini.h
Executable file
|
@ -0,0 +1,140 @@
|
||||||
|
// Y Y CCCCC CCCCC CCCCC SSSS OOOOO 222 RRRR M M IIIII N N IIIII
|
||||||
|
// Y Y C C C S O O 2 R R M M M I NN N I
|
||||||
|
// Y C C C SSSSS O O 2 RRRR M M I N N N I
|
||||||
|
// Y C C C S O O 2 R R M M I N NN I
|
||||||
|
// Y CCCCC CCCCC CCCCC SSSS OOOOO 22222 R R M M IIIII N N IIIII
|
||||||
|
|
||||||
|
// compile time features and options - comment or uncomment to add or delete features
|
||||||
|
// FEATURES add more bytes to the compiled binary, OPTIONS change code behavior
|
||||||
|
|
||||||
|
|
||||||
|
// #define FEATURE_BUTTONS
|
||||||
|
// #define FEATURE_COMMAND_LINE_INTERFACE // Command Line Interface functionality
|
||||||
|
// #define FEATURE_MEMORIES // on the Arduino Due, you must have FEATURE_EEPROM_E24C1024 and E24C1024 EEPROM hardware in order to compile this
|
||||||
|
// #define FEATURE_MEMORY_MACROS
|
||||||
|
#define FEATURE_WINKEY_EMULATION // disabling Automatic Software Reset is highly recommended (see documentation)
|
||||||
|
// #define FEATURE_BEACON // Go into beacon mode if paddle_left pin is LOW at boot up
|
||||||
|
// #define FEATURE_BEACON_SETTING // Go into beacon mode at boot up if EEPROM setting is enabled (\_ CLI Command)
|
||||||
|
// #define FEATURE_TRAINING_COMMAND_LINE_INTERFACE
|
||||||
|
// #define FEATURE_POTENTIOMETER // do not enable unless you have a potentiometer connected, otherwise noise will falsely trigger wpm changes
|
||||||
|
// #define FEATURE_SIDETONE_SWITCH // adds switch control for the sidetone output. requires an external toggle switch (assigned to an arduino pin - see keyer_pin_settings.h).
|
||||||
|
// #define FEATURE_SIDETONE_NEWTONE // Use the NewTone library, ~1k smaller code size than the standard tone library. Uses timer1 (pins 9 or 10) https://bitbucket.org/teckel12/arduino-new-tone/wiki/Home
|
||||||
|
// #define FEATURE_SERIAL_HELP
|
||||||
|
// #define FEATURE_HELL
|
||||||
|
// #define FEATURE_PS2_KEYBOARD // Use a PS2 keyboard to send code - Change keyboard layout (non-US) in K3NG_PS2Keyboard.h. Additional options below.
|
||||||
|
// #define FEATURE_USB_KEYBOARD // Use a USB keyboard to send code - Uncomment three lines in k3ng_keyer.ino (search for note_usb_uncomment_lines)
|
||||||
|
// #define FEATURE_CW_COMPUTER_KEYBOARD // Have an Arduino Due or Leonardo act as a USB HID (Human Interface Device) keyboard and use the paddle to "type" characters on the computer -- uncomment this line in ino file: #include <Keyboard.h>
|
||||||
|
// #define FEATURE_DEAD_OP_WATCHDOG
|
||||||
|
// #define FEATURE_AUTOSPACE
|
||||||
|
// #define FEATURE_FARNSWORTH
|
||||||
|
// #define FEATURE_DL2SBA_BANKSWITCH // Switch memory banks feature as described here: http://dl2sba.com/index.php?option=com_content&view=article&id=131:nanokeyer&catid=15:shack&Itemid=27#english
|
||||||
|
// #define FEATURE_LCD_4BIT // classic LCD disidefplay using 4 I/O lines
|
||||||
|
// #define FEATURE_LCD_8BIT // classic LCD display using 8 I/O lines
|
||||||
|
// #define FEATURE_LCD_ADAFRUIT_I2C // Adafruit I2C LCD display using MCP23017 at addr 0x20
|
||||||
|
// #define FEATURE_LCD_ADAFRUIT_BACKPACK // Adafruit I2C LCD Backup using MCP23008 (courtesy Josiah Ritchie, KE0BLL)
|
||||||
|
// #define FEATURE_LCD_YDv1 // YourDuino I2C LCD display with old LCM 1602 V1 ic
|
||||||
|
// #define FEATURE_LCD1602_N07DH // http://linksprite.com/wiki/index.php5?title=16_X_2_LCD_Keypad_Shield_for_Arduino
|
||||||
|
// #define FEATURE_LCD_SAINSMART_I2C
|
||||||
|
// #define FEATURE_LCD_FABO_PCF8574 // https://github.com/FaBoPlatform/FaBoLCD-PCF8574-Library
|
||||||
|
// #define FEATURE_LCD_MATHERTEL_PCF8574 // https://github.com/mathertel/LiquidCrystal_PCF8574
|
||||||
|
// #define FEATURE_LCD_I2C_FDEBRABANDER //https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library
|
||||||
|
|
||||||
|
// #define FEATURE_LCD_HD44780
|
||||||
|
// #define FEATURE_CW_DECODER
|
||||||
|
// #define FEATURE_SLEEP // go to sleep after x minutes to conserve battery power (not compatible with Arduino DUE, may have mixed results with Mega and Mega ADK)
|
||||||
|
// #define FEATURE_LCD_BACKLIGHT_AUTO_DIM // turn off LCD backlight and/or dim Power Indicator LED after x minutes (LED requires a PWM pin)
|
||||||
|
// #define FEATURE_ROTARY_ENCODER // rotary encoder speed control
|
||||||
|
// #define FEATURE_CMOS_SUPER_KEYER_IAMBIC_B_TIMING
|
||||||
|
// #define FEATURE_USB_MOUSE // Uncomment three lines in k3ng_keyer.ino (search for note_usb_uncomment_lines)
|
||||||
|
// #define FEATURE_CAPACITIVE_PADDLE_PINS // remove the bypass capacitors on the paddle_left and paddle_right lines when using capactive paddles
|
||||||
|
// #define FEATURE_LED_RING // Mayhew Labs Led Ring support
|
||||||
|
// #define FEATURE_ALPHABET_SEND_PRACTICE // enables command mode S command - created by Ryan, KC2ZWM
|
||||||
|
// #define FEATURE_COMMAND_MODE_PROGRESSIVE_5_CHAR_ECHO_PRACTICE // enables command mode U
|
||||||
|
// #define FEATURE_PTT_INTERLOCK
|
||||||
|
// #define FEATURE_QLF
|
||||||
|
// #define FEATURE_EEPROM_E24C1024
|
||||||
|
// #define FEATURE_STRAIGHT_KEY
|
||||||
|
// #define FEATURE_DYNAMIC_DAH_TO_DIT_RATIO
|
||||||
|
// #define FEATURE_PADDLE_ECHO
|
||||||
|
// #define FEATURE_STRAIGHT_KEY_ECHO
|
||||||
|
// #define FEATURE_AMERICAN_MORSE
|
||||||
|
// #define FEATURE_4x4_KEYPAD // code contributed by Jack, W0XR - documentation: https://github.com/k3ng/k3ng_cw_keyer/wiki/380-Feature:-Keypad
|
||||||
|
// #define FEATURE_3x4_KEYPAD // code contributed by Jack, W0XR - documentation: https://github.com/k3ng/k3ng_cw_keyer/wiki/380-Feature:-Keypad
|
||||||
|
// #define FEATURE_SEQUENCER
|
||||||
|
#define FEATURE_SO2R_BASE // SO2R Box base protocol extensions
|
||||||
|
//#define FEATURE_SO2R_SWITCHES // SO2R Box TX and RX switches
|
||||||
|
// #define FEATURE_SO2R_ANTENNA // SO2R Box antenna selection (not fully implemented)
|
||||||
|
// #define FEATURE_COMMAND_MODE_ENHANCED_CMD_ACKNOWLEDGEMENT
|
||||||
|
// #define FEATURE_WEB_SERVER // Details: https://github.com/k3ng/k3ng_cw_keyer/wiki/390-Feature:-Ethernet,-Web-Server,-and-Internet-Linking
|
||||||
|
// #define FEATURE_INTERNET_LINK // Details: https://github.com/k3ng/k3ng_cw_keyer/wiki/390-Feature:-Ethernet,-Web-Server,-and-Internet-Linking
|
||||||
|
|
||||||
|
// #define FEATURE_COMMAND_LINE_INTERFACE_ON_SECONDARY_PORT // Activate the Command Line interface on the secondary serial port
|
||||||
|
#define OPTION_PRIMARY_SERIAL_PORT_DEFAULT_WINKEY_EMULATION // Use when activating both FEATURE_WINKEY_EMULATION and FEATURE_COMMAND_LINE_INTERFACE
|
||||||
|
// simultaneously. This will make Winkey emulation be the default at boot up;
|
||||||
|
// hold command button down at boot up to activate CLI mode
|
||||||
|
|
||||||
|
// #define OPTION_SUPPRESS_SERIAL_BOOT_MSG
|
||||||
|
#define OPTION_INCLUDE_PTT_TAIL_FOR_MANUAL_SENDING
|
||||||
|
#define OPTION_EXCLUDE_PTT_HANG_TIME_FOR_MANUAL_SENDING
|
||||||
|
// #define OPTION_WINKEY_DISCARD_BYTES_AT_STARTUP // if ASR is not disabled, you may need this to discard errant serial port bytes at startup
|
||||||
|
// #define OPTION_WINKEY_STRICT_EEPROM_WRITES_MAY_WEAR_OUT_EEPROM // with this activated the unit will write non-volatile settings to EEPROM when set by Winkey commands
|
||||||
|
// #define OPTION_WINKEY_SEND_WORDSPACE_AT_END_OF_BUFFER
|
||||||
|
// #define OPTION_WINKEY_STRICT_HOST_OPEN // require an admin host open Winkey command before doing any other commands
|
||||||
|
#define OPTION_WINKEY_2_SUPPORT // comment out to revert to Winkey version 1 emulation
|
||||||
|
#define OPTION_WINKEY_INTERRUPTS_MEMORY_REPEAT
|
||||||
|
//#define OPTION_WINKEY_UCXLOG_9600_BAUD // use this only with UCXLog configured for Winkey 9600 baud mode
|
||||||
|
#define OPTION_WINKEY_2_HOST_CLOSE_NO_SERIAL_PORT_RESET // (Required for Win-Test to function)
|
||||||
|
// #define OPTION_WINKEY_FREQUENT_STATUS_REPORT // activate this to make Winkey emulation play better with RUMlog and RUMped
|
||||||
|
#define OPTION_WINKEY_IGNORE_LOWERCASE // Enable for typical K1EL Winkeyer behavior (use for SkookumLogger version 1.10.14 and prior to workaround "r" bug)
|
||||||
|
// #define OPTION_WINKEY_BLINK_PTT_ON_HOST_OPEN
|
||||||
|
// #define OPTION_WINKEY_PINCONFIG_PTT_CONTROLS_PTT_LINE // Have Winkeyer PTT setting activate/deactivate PTT line rather than control buffered character PTT hold
|
||||||
|
// #define OPTION_REVERSE_BUTTON_ORDER // This is mainly for the DJ0MY NanoKeyer http://nanokeyer.wordpress.com/
|
||||||
|
#define OPTION_PROG_MEM_TRIM_TRAILING_SPACES // trim trailing spaces from memory when programming in command mode
|
||||||
|
#define OPTION_DIT_PADDLE_NO_SEND_ON_MEM_RPT // this makes dit paddle memory interruption a little smoother
|
||||||
|
// #define OPTION_MORE_DISPLAY_MSGS // additional optional display messages - comment out to save memory
|
||||||
|
// #define OPTION_WATCHDOG_TIMER // this enables a four second ATmega48/88/168/328 watchdog timer; use for unattended/remote operation only
|
||||||
|
// #define OPTION_MOUSE_MOVEMENT_PADDLE // experimental (just fooling around) - mouse movement will act like a paddle
|
||||||
|
// #define OPTION_NON_ENGLISH_EXTENSIONS // add support for additional CW characters (i.e. À, Å, Þ, etc.)
|
||||||
|
// #define OPTION_DISPLAY_NON_ENGLISH_EXTENSIONS // LCD display suport for non-English (NO/DK/DE) characters - Courtesy of OZ1JHM
|
||||||
|
// #define OPTION_UNKNOWN_CHARACTER_ERROR_TONE
|
||||||
|
#define OPTION_DO_NOT_SAY_HI
|
||||||
|
// #define OPTION_BLINK_HI_ON_PTT
|
||||||
|
// #define OPTION_PS2_NON_ENGLISH_CHAR_LCD_DISPLAY_SUPPORT // makes some non-English characters from the PS2 keyboard display correctly in the LCD display (donated by Marcin sp5iou)
|
||||||
|
// #define OPTION_PS2_KEYBOARD_RESET // reset the PS2 keyboard upon startup with 0xFF (contributed by Bill, W9BEL)
|
||||||
|
// #define OPTION_SAVE_MEMORY_NANOKEYER
|
||||||
|
// #define OPTION_CW_KEYBOARD_CAPSLOCK_BEEP
|
||||||
|
// #define OPTION_CW_KEYBOARD_ITALIAN
|
||||||
|
// #define OPTION_CW_KEYBOARD_GERMAN
|
||||||
|
// #define OPTION_CW_DECODER_GOERTZEL_AUDIO_DETECTOR
|
||||||
|
// #define OPTION_INVERT_PADDLE_PIN_LOGIC
|
||||||
|
// #define OPTION_ADVANCED_SPEED_DISPLAY //enables "nerd" speed visualization on display: wpm, cpm (char per min), duration of dit and dah in milliseconds and ratio (contributed by Giorgio, IZ2XBZ)
|
||||||
|
// #define OPTION_PROSIGN_SUPPORT // additional prosign support for paddle and straight key echo on display, CLI, and in memory storage
|
||||||
|
// #define OPTION_RUSSIAN_LANGUAGE_SEND_CLI // Russian language CLI sending support (contributed by Павел Бирюков, UA1AQC)
|
||||||
|
#define OPTION_DO_NOT_SEND_UNKNOWN_CHAR_QUESTION
|
||||||
|
// #define OPTION_CMOS_SUPER_KEYER_IAMBIC_B_TIMING_ON_BY_DEFAULT
|
||||||
|
#define OPTION_SIDETONE_DIGITAL_OUTPUT_NO_SQUARE_WAVE
|
||||||
|
|
||||||
|
// #define OPTION_DIRECT_PADDLE_PIN_READS_MEGA // only works with Mega and pins 2 and 5 - minor performance increase
|
||||||
|
// #define OPTION_DIRECT_PADDLE_PIN_READS_UNO // Unos or Nanos pins 2 and 5 - do not enable on a nanoKeyer, it uses different pins
|
||||||
|
|
||||||
|
// #define OPTION_WORDSWORTH_CZECH
|
||||||
|
// #define OPTION_WORDSWORTH_DEUTSCH
|
||||||
|
// #define OPTION_WORDSWORTH_NORSK
|
||||||
|
|
||||||
|
#define OPTION_EXCLUDE_EXTENDED_CLI_COMMANDS
|
||||||
|
|
||||||
|
// #define OPTION_DFROBOT_LCD_COMMAND_BUTTONS
|
||||||
|
|
||||||
|
// #define OPTION_EXCLUDE_MILL_MODE
|
||||||
|
// #define OPTION_NO_ULTIMATIC // reduce memory usage by removing ultimatic code.
|
||||||
|
|
||||||
|
|
||||||
|
// #define OPTION_DISABLE_SERIAL_PORT_CHECKING_WHILE_SENDING_CW
|
||||||
|
// #define OPTION_PERSONALIZED_STARTUP_SCREEN // displays a user defined string of characters on the second or fourth row of the screen during startup. 1602 display requires OPTION_DO_NOT_SAY_HI
|
||||||
|
// #define OPTION_SWAP_PADDLE_PARAMETER_CHANGE_DIRECTION // reverses the up/down direction when using the paddles to change the wpm or sidetone frequency
|
||||||
|
// #define OPTION_DISPLAY_MEMORY_CONTENTS_COMMAND_MODE
|
||||||
|
|
||||||
|
// #define OPTION_BEACON_MODE_MEMORY_REPEAT_TIME // to space out the repeated playing of memory 1 when in beacon mode
|
||||||
|
// #define OPTION_BEACON_MODE_PTT_TAIL_TIME // adds the ptt tail time to each playing of memory 1 in beacon mode
|
||||||
|
|
||||||
|
// #define OPTION_WINKEY_PROSIGN_COMPATIBILITY // Additional character mappings to support K1EL Winkey emulation prosigns
|
97
k3ng_keyer/keyer_hardware.h
Executable file
97
k3ng_keyer/keyer_hardware.h
Executable file
|
@ -0,0 +1,97 @@
|
||||||
|
/* keyer_hardware.h
|
||||||
|
|
||||||
|
|
||||||
|
Edit this file to enable specific hardware profiles.
|
||||||
|
|
||||||
|
When enabling a hardware option below, the default keyer_pin_settings.h, keyer_features_and_options.h, and keyer_settings.h files are not compiled.
|
||||||
|
|
||||||
|
See the comments on each line to determine what files are compiled and should be customized.
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
// #define HARDWARE_NANOKEYER_REV_B // https://nanokeyer.wordpress.com/nanokeyer-info/ edit these files: keyer_pin_settings_nanokeyer_rev_b.h, keyer_features_and_options_nanokeyer_rev_b.h, keyer_settings_nanokeyer_rev_b.h
|
||||||
|
// #define HARDWARE_NANOKEYER_REV_D // https://nanokeyer.wordpress.com/nanokeyer-info/ edit these files: keyer_pin_settings_nanokeyer_rev_d.h, keyer_features_and_options_nanokeyer_rev_d.h, keyer_settings_nanokeyer_rev_d.h
|
||||||
|
// #define HARDWARE_OPEN_INTERFACE // http://remoteqth.com/open-interface.php edit these files: keyer_pin_settings_open_interface.h, keyer_features_and_options_open_interface.h, keyer_settings_open_interface.h
|
||||||
|
// #define HARDWARE_TINYKEYER // http://www.ok1rr.com/index.php/technical-topics/122-the-tinykeyer edit these files: keyer_pin_settings_tinykeyer.h, keyer_features_and_options_tinykeyer.h, keyer_settings_tinykeyer.h
|
||||||
|
// #define HARDWARE_FK_10 // Funtronics K3NG Keyer FK-10 - See notes below!!! http://www.elekitsorparts.com/product/funtronics-k3ng-keyer-fk-10-99-winkey-emulation/ files: keyer_pin_settings_fk_10.h, keyer_features_and_options_fk_10.h, keyer_settings_fk_10.h
|
||||||
|
// #define HARDWARE_FK_11 // Funtronics K3NG Keyer FK-11 - See notes below! https://www.elekitsorparts.com/?product=funtronics-k3ng-keyer-with-99-winkey-emulation files: keyer_pin_settings_fk_11.h, keyer_features_and_options_fk_11.h, keyer_settings_fk_11.h
|
||||||
|
// #define HARDWARE_MAPLE_MINI // edit these files: keyer_pin_settings_maple_mini.h, keyer_settings_maple_mini.h, keyer_features_and_options_maple_mini.h
|
||||||
|
// #define HARDWARE_GENERIC_STM32F103C // edit these files: keyer_pin_settings_generic_STM32F103C.h, keyer_settings_generic_STM32F103C.h, keyer_features_and_options_generic_STM32F103C.h //sp5iou 20180329
|
||||||
|
// #define HARDWARE_MORTTY // edit these files: keyer_pin_settings_mortty.h, keyer_settings_mortty.h, keyer_features_and_options_mortty.h
|
||||||
|
// #define HARDWARE_MORTTY_REGULAR // edit these files: keyer_pin_settings_mortty_regular.h, keyer_settings_mortty_regular.h, keyer_features_and_options_mortty_regular.h
|
||||||
|
// #define HARDWARE_MORTTY_REGULAR_WITH_POTENTIOMETER // edit these files: keyer_pin_settings_mortty_regular_with_potentiometer.h, keyer_settings_mortty_regular_with_potentiometer.h, keyer_features_and_options_mortty_regular_with_potentiometer.h
|
||||||
|
// #define HARDWARE_MORTTY_SO2R // edit these files: keyer_pin_settings_mortty_so2r.h, keyer_settings_mortty_so2r.h, keyer_features_and_options_mortty_so2r.h
|
||||||
|
// #define HARDWARE_MORTTY_SO2R_WITH_POTENTIOMETER // edit these files: keyer_pin_settings_mortty_so2r_with_potentiometer.h, keyer_settings_mortty_so2r_with_potentiometer.h, keyer_features_and_options_mortty_so2r_with_potentiometer.h
|
||||||
|
// #define HARDWARE_YAACWK // http://i1cra.briata.org/yaacwk/ files: keyer_pin_settings_yaacwk.h, keyer_features_and_options_yaacwk.h, keyer_settings_yaacwk.h
|
||||||
|
// #define HARDWARE_K5BCQ // edit these files: keyer_pin_settings_k5bcq.h, keyer_features_and_options_k5bcq.h, keyer_settings_k5bcq.h
|
||||||
|
// #define HARDWARE_MEGAKEYER // https://github.com/w6ipa/megakeyer
|
||||||
|
// #define HARDWARE_OPENCWKEYER_MK2 // https://github.com/ok1cdj/OpenCWKeyerMK2 edit these files: keyer_features_and_options_opencwkeyer_mk2.h keyer_pin_settings_opencwkeyer_mk2.h keyer_settings_opencwkeyer_mk2.h
|
||||||
|
// #define HARDWARE_IZ3GME // https://github.com/iz3gme/k3ng_cw_keyer edit these files: keyer_features_and_options_iz3gme.h keyer_pin_settings_iz3gme.h keyer_settings.h
|
||||||
|
// #define HARDWARE_YCCC_SO2R_MINI // edit these files: keyer_pin_settings_yccc_so2r_mini.h, keyer_settings_yccc_so2r_mini.h, keyer_features_and_options_yccc_so2r_mini.h
|
||||||
|
// #define HARDWARE_TEST_EVERYTHING
|
||||||
|
// #define HARDWARE_TEST
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
|
|
||||||
|
HARDWARE_GENERIC_STM32F103C (Contributed by sp5iou)
|
||||||
|
|
||||||
|
How to deal with those boards with Arduino: https://www.techshopbd.com/uploads/product_document/STM32bluepillarduinoguide(1).pdf
|
||||||
|
|
||||||
|
|
||||||
|
Funtronics FK-10 Programming Notes (Contributed by Disneysw 2016-12-10)
|
||||||
|
|
||||||
|
Programming the unit is accomplished by selecting "Mega2560" as the target processor and uploading to the rear USB port with the front
|
||||||
|
switch set to the Arduino position
|
||||||
|
|
||||||
|
Note: in order to get the FK-10 USB Host port working correctly you will need to patch the file "UsbCore.h" in the USB_Host_Shield library.
|
||||||
|
At the time of writing it is line 41 that needs modified to change "P10" to "P53" i.e. from
|
||||||
|
|
||||||
|
#else
|
||||||
|
typedef MAX3421e<P10, P9> MAX3421E; // Official Arduinos (UNO, Duemilanove, Mega, 2560, Leonardo, Due etc.) or Teensy 2.0 and 3.0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
to:
|
||||||
|
|
||||||
|
#else
|
||||||
|
typedef MAX3421e<P53, P9> MAX3421E; // Official Arduinos (UNO, Duemilanove, Mega, 2560, Leonardo, Due etc.) or Teensy 2.0 and 3.0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
Funtronics FK-11 Programming Notes
|
||||||
|
|
||||||
|
Programming the unit is accomplished by selecting "Arduino Mega 2560" as the target processor and uploading to the rear USB port with the
|
||||||
|
front switch set to the Arduino position.
|
||||||
|
|
||||||
|
Note: in order to get the FK-11 display working correctly you will need to:
|
||||||
|
- Install FaBo_212_LCD_PCF8574 library
|
||||||
|
- Set the slave address to 0x27 in FaBo_212_LCD_PCF8574/src/FaBoLCD_PCF8574.h
|
||||||
|
#define PCF8574_SLAVE_ADDRESS 0x27
|
||||||
|
|
||||||
|
Note: in order to get the FK-11 USB Host port working correctly you will need to:
|
||||||
|
- Uncomment three lines in in file: k3ng_keyer.ino below 'note_usb_uncomment_lines'.
|
||||||
|
- Add line to file k3ng_cw_keyer/libraries/USB_Host_Shield/settings.h, below 'Manual board activation':
|
||||||
|
#define BOARD_MEGA_ADK
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// Serial port class definitions for various devices
|
||||||
|
|
||||||
|
#if defined(ARDUINO_MAPLE_MINI)||defined(ARDUINO_GENERIC_STM32F103C) //sp5iou 20180329
|
||||||
|
#define PRIMARY_SERIAL_CLS USBSerial
|
||||||
|
#define SECONDARY_SERIAL_CLS USBSerial
|
||||||
|
#elif defined(ARDUINO_AVR_PROMICRO) || defined(ARDUINO_AVR_LEONARDO) || defined(ARDUINO_AVR_MICRO) || defined(ARDUINO_AVR_YUN) || defined(ARDUINO_AVR_ESPLORA) || defined(ARDUINO_AVR_LILYPAD_USB) || defined(ARDUINO_AVR_ROBOT_CONTROL) || defined(ARDUINO_AVR_ROBOT_MOTOR) || defined(ARDUINO_AVR_LEONARDO_ETH) || defined(ARDUINO_SAMD_VARIANT_COMPLIANCE)
|
||||||
|
#define PRIMARY_SERIAL_CLS Serial_
|
||||||
|
#define SECONDARY_SERIAL_CLS Serial_
|
||||||
|
#elif defined(TEENSYDUINO)
|
||||||
|
#define PRIMARY_SERIAL_CLS usb_serial_class
|
||||||
|
#define SECONDARY_SERIAL_CLS usb_serial_class
|
||||||
|
#elif defined(_BOARD_PIC32_PINGUINO_) // || defined(_BOARD_PIC32_PINGUINO_OTG_)
|
||||||
|
#define PRIMARY_SERIAL_CLS USBSerial
|
||||||
|
#define SECONDARY_SERIAL_CLS HardwareSerial
|
||||||
|
#else
|
||||||
|
#define PRIMARY_SERIAL_CLS HardwareSerial
|
||||||
|
#define SECONDARY_SERIAL_CLS HardwareSerial
|
||||||
|
#endif
|
||||||
|
|
161
k3ng_keyer/keyer_pin_settings.h
Executable file
161
k3ng_keyer/keyer_pin_settings.h
Executable file
|
@ -0,0 +1,161 @@
|
||||||
|
/* Pins - you must review these and configure ! */
|
||||||
|
#ifndef keyer_pin_settings_h
|
||||||
|
#define keyer_pin_settings_h
|
||||||
|
|
||||||
|
#define paddle_left 6
|
||||||
|
#define paddle_right 5
|
||||||
|
#define tx_key_line_1 12 // (high = key down/tx on)
|
||||||
|
#define tx_key_line_2 0
|
||||||
|
#define tx_key_line_3 0
|
||||||
|
#define tx_key_line_4 0
|
||||||
|
#define tx_key_line_5 0
|
||||||
|
#define tx_key_line_6 0
|
||||||
|
#define sidetone_line 4 // connect a speaker for sidetone
|
||||||
|
#define potentiometer A0 // Speed potentiometer (0 to 5 V) Use pot from 1k to 10k
|
||||||
|
#define ptt_tx_1 11 // PTT ("push to talk") lines
|
||||||
|
#define ptt_tx_2 0 // Can be used for keying fox transmitter, T/R switch, or keying slow boatanchors
|
||||||
|
#define ptt_tx_3 0 // These are optional - set to 0 if unused
|
||||||
|
#define ptt_tx_4 0
|
||||||
|
#define ptt_tx_5 0
|
||||||
|
#define ptt_tx_6 0
|
||||||
|
#define tx_key_dit 0 // if defined, goes active for dit (any transmitter) - customized with tx_key_dit_and_dah_pins_active_state and tx_key_dit_and_dah_pins_inactive_state
|
||||||
|
#define tx_key_dah 0 // if defined, goes active for dah (any transmitter) - customized with tx_key_dit_and_dah_pins_active_state and tx_key_dit_and_dah_pins_inactive_state
|
||||||
|
|
||||||
|
#define potentiometer_enable_pin 0 // if defined, the potentiometer will be enabled only when this pin is held low; set to 0 to ignore this pin
|
||||||
|
|
||||||
|
#ifdef FEATURE_BUTTONS
|
||||||
|
#define analog_buttons_pin A1
|
||||||
|
#define command_mode_active_led 7
|
||||||
|
#endif //FEATURE_BUTTONS
|
||||||
|
|
||||||
|
/*
|
||||||
|
FEATURE_SIDETONE_SWITCH
|
||||||
|
Enabling this feature and an external toggle switch adds switch control for playing cw sidetone.
|
||||||
|
ST Switch status is displayed in the status command. This feature will override the software control of the sidetone (\o).
|
||||||
|
Arduino pin is assigned by SIDETONE_SWITCH
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifdef FEATURE_SIDETONE_SWITCH
|
||||||
|
#define SIDETONE_SWITCH 8
|
||||||
|
#endif //FEATURE_SIDETONE_SWITCH
|
||||||
|
|
||||||
|
|
||||||
|
//lcd pins
|
||||||
|
#if defined(FEATURE_LCD_4BIT) || defined(FEATURE_LCD_8BIT)
|
||||||
|
#define lcd_rs A2
|
||||||
|
#define lcd_enable 10 // pin 10 is used by Ethernet shield and will conflict with that
|
||||||
|
#define lcd_d4 6
|
||||||
|
#define lcd_d5 7
|
||||||
|
#define lcd_d6 8
|
||||||
|
#define lcd_d7 9
|
||||||
|
#endif //FEATURE_LCD_4BIT || defined(FEATURE_LCD_8BIT)
|
||||||
|
|
||||||
|
#if defined(FEATURE_LCD_8BIT) // addition four data lines for 8 bit LCD control
|
||||||
|
#define lcd_d0 20
|
||||||
|
#define lcd_d1 21
|
||||||
|
#define lcd_d2 22
|
||||||
|
#define lcd_d3 23
|
||||||
|
#endif //FEATURE_LCD_4BIT || defined(FEATURE_LCD_8BIT)
|
||||||
|
|
||||||
|
#ifdef FEATURE_LCD1602_N07DH
|
||||||
|
#define lcd_rs 8
|
||||||
|
#define lcd_enable 9
|
||||||
|
#define lcd_d4 4
|
||||||
|
#define lcd_d5 5
|
||||||
|
#define lcd_d6 6
|
||||||
|
#define lcd_d7 7
|
||||||
|
#endif //FEATURE_LCD1602_N07DH
|
||||||
|
|
||||||
|
//ps2 keyboard pins
|
||||||
|
#ifdef FEATURE_PS2_KEYBOARD
|
||||||
|
#define ps2_keyboard_data 2
|
||||||
|
#define ps2_keyboard_clock 3 // this must be on an interrupt capable pin!
|
||||||
|
#endif //FEATURE_PS2_KEYBOARD
|
||||||
|
|
||||||
|
// rotary encoder pins and options - rotary encoder code from Jim Balls M0CKE
|
||||||
|
#ifdef FEATURE_ROTARY_ENCODER
|
||||||
|
#define OPTION_ENCODER_HALF_STEP_MODE // Half-step mode?
|
||||||
|
#define rotary_pin1 0 // CW Encoder Pin
|
||||||
|
#define rotary_pin2 0 // CCW Encoder Pin
|
||||||
|
#define OPTION_ENCODER_ENABLE_PULLUPS // define to enable weak pullups.
|
||||||
|
#endif //FEATURE_ROTARY_ENCODER
|
||||||
|
|
||||||
|
#ifdef FEATURE_LED_RING
|
||||||
|
#define led_ring_sdi A10 //2 //Data
|
||||||
|
#define led_ring_clk A9 //3 //Clock
|
||||||
|
#define led_ring_le A8 //4 //Latch
|
||||||
|
#endif //FEATURE_LED_RING
|
||||||
|
|
||||||
|
#define correct_answer_led 0
|
||||||
|
#define wrong_answer_led 0
|
||||||
|
|
||||||
|
#ifdef FEATURE_PTT_INTERLOCK
|
||||||
|
#define ptt_interlock 0 // this pin disables PTT and TX KEY
|
||||||
|
#endif //FEATURE_PTT_INTERLOCK
|
||||||
|
|
||||||
|
#ifdef FEATURE_STRAIGHT_KEY
|
||||||
|
#define pin_straight_key 52
|
||||||
|
#endif //FEATURE_STRAIGHT_KEY
|
||||||
|
|
||||||
|
// FEATURE_CW_DECODER & OPTION_CW_DECODER_GOERTZEL_AUDIO_DETECTOR
|
||||||
|
// See https://github.com/k3ng/k3ng_cw_keyer/wiki/385-Feature:-CW-Decoder for details
|
||||||
|
#define cw_decoder_pin 0 // This is for use with external decoding hardware
|
||||||
|
#define cw_decoder_audio_input_pin 0 // This is for audio detection decoding using OPTION_CW_DECODER_GOERTZEL_AUDIO_DETECTOR; this must be an analog pin!
|
||||||
|
#define cw_decoder_indicator 0 // Output - goes HIGH when cw tone is detected by OPTION_CW_DECODER_GOERTZEL_AUDIO_DETECTOR
|
||||||
|
|
||||||
|
#if defined(FEATURE_COMPETITION_COMPRESSION_DETECTION)
|
||||||
|
#define compression_detection_pin 13
|
||||||
|
#endif //FEATURE_COMPETITION_COMPRESSION_DETECTION
|
||||||
|
|
||||||
|
#if defined(FEATURE_SLEEP)
|
||||||
|
#define keyer_awake 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_LCD_BACKLIGHT_AUTO_DIM)
|
||||||
|
#define keyer_power_led 0 // must be a PWM-capable pin
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_CAPACITIVE_PADDLE_PINS)
|
||||||
|
#define capactive_paddle_pin_inhibit_pin 0 // if this pin is defined and is set high, the capacitive paddle pins will switch to normal (non-capacitive) sensing mode
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef FEATURE_4x4_KEYPAD
|
||||||
|
#define Row3 33
|
||||||
|
#define Row2 32
|
||||||
|
#define Row1 31
|
||||||
|
#define Row0 30
|
||||||
|
#define Col3 37
|
||||||
|
#define Col2 36
|
||||||
|
#define Col1 35
|
||||||
|
#define Col0 34
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef FEATURE_3x4_KEYPAD
|
||||||
|
#define Row3 33
|
||||||
|
#define Row2 32
|
||||||
|
#define Row1 31
|
||||||
|
#define Row0 30
|
||||||
|
#define Col2 36
|
||||||
|
#define Col1 35
|
||||||
|
#define Col0 34
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef FEATURE_SEQUENCER
|
||||||
|
#define sequencer_1_pin 0
|
||||||
|
#define sequencer_2_pin 0
|
||||||
|
#define sequencer_3_pin 0
|
||||||
|
#define sequencer_4_pin 0
|
||||||
|
#define sequencer_5_pin 0
|
||||||
|
#endif //FEATURE_SEQUENCER
|
||||||
|
|
||||||
|
#define ptt_input_pin 0
|
||||||
|
|
||||||
|
#define tx_inhibit_pin 0
|
||||||
|
#define tx_pause_pin 0
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
#error "Multiple pin_settings.h files included somehow..."
|
||||||
|
|
||||||
|
#endif //keyer_pin_settings_h
|
||||||
|
|
142
k3ng_keyer/keyer_pin_settings_fk_10.h
Executable file
142
k3ng_keyer/keyer_pin_settings_fk_10.h
Executable file
|
@ -0,0 +1,142 @@
|
||||||
|
/* Pins - you must review these and configure ! */
|
||||||
|
|
||||||
|
// ######## ## ## ## ## ## ## ######## ## ## ######## ########
|
||||||
|
// ## ## ## ### ## ## ## ## ## ## ## ## ##
|
||||||
|
// ## ## ## #### ## ## ## ## #### ## ## ##
|
||||||
|
// ###### ## ## ## ## ## ##### ###### ## ###### ########
|
||||||
|
// ## ## ## ## #### ## ## ## ## ## ## ##
|
||||||
|
// ## ## ## ## ### ## ## ## ## ## ## ##
|
||||||
|
// ## ####### ## ## ## ## ######## ## ######## ## ##
|
||||||
|
|
||||||
|
|
||||||
|
// ######## ## ## ## #####
|
||||||
|
// ## ## ## #### ## ##
|
||||||
|
// ## ## ## ## ## ##
|
||||||
|
// ###### ##### ## ## ##
|
||||||
|
// ## ## ## ## ## ##
|
||||||
|
// ## ## ## ## ## ##
|
||||||
|
// ## ## ## ###### #####
|
||||||
|
|
||||||
|
// Contributed by Disneysw
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef keyer_pin_settings_h
|
||||||
|
#define keyer_pin_settings_h
|
||||||
|
|
||||||
|
#define paddle_left 2
|
||||||
|
#define paddle_right 5
|
||||||
|
#define tx_key_line_1 39 // (high = key down/tx on)
|
||||||
|
#define tx_key_line_2 0
|
||||||
|
#define tx_key_line_3 0
|
||||||
|
#define tx_key_line_4 0
|
||||||
|
#define tx_key_line_5 0
|
||||||
|
#define tx_key_line_6 0
|
||||||
|
#define sidetone_line 3 // connect a speaker for sidetone
|
||||||
|
#define potentiometer A0 // Speed potentiometer (0 to 5 V) Use pot from 1k to 10k
|
||||||
|
#define ptt_tx_1 40 // PTT ("push to talk") lines
|
||||||
|
#define ptt_tx_2 0 // Can be used for keying fox transmitter, T/R switch, or keying slow boatanchors
|
||||||
|
#define ptt_tx_3 0 // These are optional - set to 0 if unused
|
||||||
|
#define ptt_tx_4 0
|
||||||
|
#define ptt_tx_5 0
|
||||||
|
#define ptt_tx_6 0
|
||||||
|
#define tx_key_dit 0 // if defined, goes active for dit (any transmitter) - customized with tx_key_dit_and_dah_pins_active_state and tx_key_dit_and_dah_pins_inactive_state
|
||||||
|
#define tx_key_dah 0 // if defined, goes active for dah (any transmitter) - customized with tx_key_dit_and_dah_pins_active_state and tx_key_dit_and_dah_pins_inactive_state
|
||||||
|
|
||||||
|
#define potentiometer_enable_pin 0 // if defined, the potentiometer will be enabled only when this pin is held low; set to 0 to ignore this pin
|
||||||
|
|
||||||
|
#ifdef FEATURE_BUTTONS
|
||||||
|
#define analog_buttons_pin A2
|
||||||
|
#define command_mode_active_led 0
|
||||||
|
#endif //FEATURE_BUTTONS
|
||||||
|
|
||||||
|
|
||||||
|
//lcd pins
|
||||||
|
#ifdef FEATURE_LCD_4BIT
|
||||||
|
#define lcd_rs 49
|
||||||
|
#define lcd_enable 48
|
||||||
|
#define lcd_d4 47
|
||||||
|
#define lcd_d5 46
|
||||||
|
#define lcd_d6 45
|
||||||
|
#define lcd_d7 44
|
||||||
|
#endif //FEATURE_LCD_4BIT
|
||||||
|
|
||||||
|
|
||||||
|
//ps2 keyboard pins
|
||||||
|
#ifdef FEATURE_PS2_KEYBOARD
|
||||||
|
#define ps2_keyboard_data A3
|
||||||
|
#define ps2_keyboard_clock 3 // this must be on an interrupt capable pin!
|
||||||
|
#endif //FEATURE_PS2_KEYBOARD
|
||||||
|
|
||||||
|
// rotary encoder pins and options - rotary encoder code from Jim Balls M0CKE
|
||||||
|
#ifdef FEATURE_ROTARY_ENCODER
|
||||||
|
#define OPTION_ENCODER_HALF_STEP_MODE // Half-step mode?
|
||||||
|
#define rotary_pin1 42 // CW Encoder Pin
|
||||||
|
#define rotary_pin2 43 // CCW Encoder Pin
|
||||||
|
#define OPTION_ENCODER_ENABLE_PULLUPS // define to enable weak pullups.
|
||||||
|
#endif //FEATURE_ROTARY_ENCODER
|
||||||
|
|
||||||
|
#define correct_answer_led 0
|
||||||
|
#define wrong_answer_led 0
|
||||||
|
|
||||||
|
#ifdef FEATURE_PTT_INTERLOCK
|
||||||
|
#define ptt_interlock 0 // this pin disables PTT and TX KEY
|
||||||
|
#endif //FEATURE_PTT_INTERLOCK
|
||||||
|
|
||||||
|
#ifdef FEATURE_STRAIGHT_KEY
|
||||||
|
#define pin_straight_key 52
|
||||||
|
#endif //FEATURE_STRAIGHT_KEY
|
||||||
|
|
||||||
|
// FEATURE_CW_DECODER & OPTION_CW_DECODER_GOERTZEL_AUDIO_DETECTOR
|
||||||
|
// See https://github.com/k3ng/k3ng_cw_keyer/wiki/385-Feature:-CW-Decoder for details
|
||||||
|
#define cw_decoder_pin A4 // This is for use with external decoding hardware
|
||||||
|
#define cw_decoder_audio_input_pin A4 // This is for audio detection decoding using OPTION_CW_DECODER_GOERTZEL_AUDIO_DETECTOR; this must be an analog pin!
|
||||||
|
#define cw_decoder_indicator 4 // Output - goes HIGH when cw tone is detected by OPTION_CW_DECODER_GOERTZEL_AUDIO_DETECTOR
|
||||||
|
|
||||||
|
#if defined(FEATURE_COMPETITION_COMPRESSION_DETECTION)
|
||||||
|
#define compression_detection_pin 13
|
||||||
|
#endif //FEATURE_COMPETITION_COMPRESSION_DETECTION
|
||||||
|
|
||||||
|
#if defined(FEATURE_SLEEP)
|
||||||
|
#define keyer_awake 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_LCD_BACKLIGHT_AUTO_DIM)
|
||||||
|
#define keyer_power_led 0 // must be a PWM-capable pin
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_CAPACITIVE_PADDLE_PINS)
|
||||||
|
#define capactive_paddle_pin_inhibit_pin 0 // if this pin is defined and is set high, the capacitive paddle pins will switch to normal (non-capacitive) sensing mode
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
FEATURE_SIDETONE_SWITCH
|
||||||
|
Enabling this feature and an external toggle switch adds switch control for playing cw sidetone.
|
||||||
|
ST Switch status is displayed in the status command. This feature will override the software control of the sidetone (\o).
|
||||||
|
Arduino pin is assigned by SIDETONE_SWITCH
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifdef FEATURE_SIDETONE_SWITCH
|
||||||
|
#define SIDETONE_SWITCH 8
|
||||||
|
#endif //FEATURE_SIDETONE_SWITCH
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef FEATURE_SEQUENCER
|
||||||
|
#define sequencer_1_pin 0
|
||||||
|
#define sequencer_2_pin 0
|
||||||
|
#define sequencer_3_pin 0
|
||||||
|
#define sequencer_4_pin 0
|
||||||
|
#define sequencer_5_pin 0
|
||||||
|
#endif //FEATURE_SEQUENCER
|
||||||
|
|
||||||
|
#define ptt_input_pin 0
|
||||||
|
|
||||||
|
#define tx_inhibit_pin 0
|
||||||
|
#define tx_pause_pin 0
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
#error "Multiple pin_settings.h files included somehow..."
|
||||||
|
|
||||||
|
#endif //keyer_pin_settings_h
|
||||||
|
|
164
k3ng_keyer/keyer_pin_settings_fk_11.h
Executable file
164
k3ng_keyer/keyer_pin_settings_fk_11.h
Executable file
|
@ -0,0 +1,164 @@
|
||||||
|
// Funtronics FK-11
|
||||||
|
|
||||||
|
/* Pins - you must review these and configure ! */
|
||||||
|
#ifndef keyer_pin_settings_h
|
||||||
|
#define keyer_pin_settings_h
|
||||||
|
|
||||||
|
#define paddle_left 2
|
||||||
|
#define paddle_right 5
|
||||||
|
#define tx_key_line_1 39 // (high = key down/tx on)
|
||||||
|
#define tx_key_line_2 0
|
||||||
|
#define tx_key_line_3 0
|
||||||
|
#define tx_key_line_4 0
|
||||||
|
#define tx_key_line_5 0
|
||||||
|
#define tx_key_line_6 0
|
||||||
|
#define sidetone_line 3 // connect a speaker for sidetone
|
||||||
|
#define potentiometer A0 // Speed potentiometer (0 to 5 V) Use pot from 1k to 10k
|
||||||
|
#define ptt_tx_1 40 // PTT ("push to talk") lines
|
||||||
|
#define ptt_tx_2 0 // Can be used for keying fox transmitter, T/R switch, or keying slow boatanchors
|
||||||
|
#define ptt_tx_3 0 // These are optional - set to 0 if unused
|
||||||
|
#define ptt_tx_4 0
|
||||||
|
#define ptt_tx_5 0
|
||||||
|
#define ptt_tx_6 0
|
||||||
|
#define tx_key_dit 0 // if defined, goes active for dit (any transmitter) - customized with tx_key_dit_and_dah_pins_active_state and tx_key_dit_and_dah_pins_inactive_state
|
||||||
|
#define tx_key_dah 0 // if defined, goes active for dah (any transmitter) - customized with tx_key_dit_and_dah_pins_active_state and tx_key_dit_and_dah_pins_inactive_state
|
||||||
|
|
||||||
|
#define potentiometer_enable_pin 0 // if defined, the potentiometer will be enabled only when this pin is held low; set to 0 to ignore this pin
|
||||||
|
|
||||||
|
#ifdef FEATURE_BUTTONS
|
||||||
|
#define analog_buttons_pin A2
|
||||||
|
#define command_mode_active_led 0
|
||||||
|
#endif //FEATURE_BUTTONS
|
||||||
|
|
||||||
|
/*
|
||||||
|
FEATURE_SIDETONE_SWITCH
|
||||||
|
Enabling this feature and an external toggle switch adds switch control for playing cw sidetone.
|
||||||
|
ST Switch status is displayed in the status command. This feature will override the software control of the sidetone (\o).
|
||||||
|
Arduino pin is assigned by SIDETONE_SWITCH
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifdef FEATURE_SIDETONE_SWITCH
|
||||||
|
#define SIDETONE_SWITCH 8
|
||||||
|
#endif //FEATURE_SIDETONE_SWITCH
|
||||||
|
|
||||||
|
|
||||||
|
//lcd pins
|
||||||
|
#if defined(FEATURE_LCD_4BIT) || defined(FEATURE_LCD_8BIT)
|
||||||
|
#define lcd_rs A2
|
||||||
|
#define lcd_enable 10 // pin 10 is used by Ethernet shield and will conflict with that
|
||||||
|
#define lcd_d4 6
|
||||||
|
#define lcd_d5 7
|
||||||
|
#define lcd_d6 8
|
||||||
|
#define lcd_d7 9
|
||||||
|
#endif //FEATURE_LCD_4BIT || defined(FEATURE_LCD_8BIT)
|
||||||
|
|
||||||
|
#if defined(FEATURE_LCD_8BIT) // addition four data lines for 8 bit LCD control
|
||||||
|
#define lcd_d0 20
|
||||||
|
#define lcd_d1 21
|
||||||
|
#define lcd_d2 22
|
||||||
|
#define lcd_d3 23
|
||||||
|
#endif //FEATURE_LCD_4BIT || defined(FEATURE_LCD_8BIT)
|
||||||
|
|
||||||
|
#ifdef FEATURE_LCD1602_N07DH
|
||||||
|
#define lcd_rs 8
|
||||||
|
#define lcd_enable 9
|
||||||
|
#define lcd_d4 4
|
||||||
|
#define lcd_d5 5
|
||||||
|
#define lcd_d6 6
|
||||||
|
#define lcd_d7 7
|
||||||
|
#endif //FEATURE_LCD1602_N07DH
|
||||||
|
|
||||||
|
//ps2 keyboard pins
|
||||||
|
#ifdef FEATURE_PS2_KEYBOARD
|
||||||
|
#define ps2_keyboard_data A3
|
||||||
|
#define ps2_keyboard_clock 3 // this must be on an interrupt capable pin!
|
||||||
|
#endif //FEATURE_PS2_KEYBOARD
|
||||||
|
|
||||||
|
// rotary encoder pins and options - rotary encoder code from Jim Balls M0CKE
|
||||||
|
#ifdef FEATURE_ROTARY_ENCODER
|
||||||
|
#define OPTION_ENCODER_HALF_STEP_MODE // Half-step mode?
|
||||||
|
#define rotary_pin1 43 // CW Encoder Pin
|
||||||
|
#define rotary_pin2 42 // CCW Encoder Pin
|
||||||
|
#define OPTION_ENCODER_ENABLE_PULLUPS // define to enable weak pullups.
|
||||||
|
#endif //FEATURE_ROTARY_ENCODER
|
||||||
|
|
||||||
|
#ifdef FEATURE_LED_RING
|
||||||
|
#define led_ring_sdi A10 //2 //Data
|
||||||
|
#define led_ring_clk A9 //3 //Clock
|
||||||
|
#define led_ring_le A8 //4 //Latch
|
||||||
|
#endif //FEATURE_LED_RING
|
||||||
|
|
||||||
|
#define correct_answer_led 0
|
||||||
|
#define wrong_answer_led 0
|
||||||
|
|
||||||
|
#ifdef FEATURE_PTT_INTERLOCK
|
||||||
|
#define ptt_interlock 0 // this pin disables PTT and TX KEY
|
||||||
|
#endif //FEATURE_PTT_INTERLOCK
|
||||||
|
|
||||||
|
#ifdef FEATURE_STRAIGHT_KEY
|
||||||
|
#define pin_straight_key 52
|
||||||
|
#endif //FEATURE_STRAIGHT_KEY
|
||||||
|
|
||||||
|
// FEATURE_CW_DECODER & OPTION_CW_DECODER_GOERTZEL_AUDIO_DETECTOR
|
||||||
|
// See https://github.com/k3ng/k3ng_cw_keyer/wiki/385-Feature:-CW-Decoder for details
|
||||||
|
#define cw_decoder_pin A4 // This is for use with external decoding hardware
|
||||||
|
#define cw_decoder_audio_input_pin A4 // This is for audio detection decoding using OPTION_CW_DECODER_GOERTZEL_AUDIO_DETECTOR; this must be an analog pin!
|
||||||
|
#define cw_decoder_indicator 4 // Output - goes HIGH when cw tone is detected by OPTION_CW_DECODER_GOERTZEL_AUDIO_DETECTOR
|
||||||
|
|
||||||
|
|
||||||
|
#if defined(FEATURE_COMPETITION_COMPRESSION_DETECTION)
|
||||||
|
#define compression_detection_pin 13
|
||||||
|
#endif //FEATURE_COMPETITION_COMPRESSION_DETECTION
|
||||||
|
|
||||||
|
#if defined(FEATURE_SLEEP)
|
||||||
|
#define keyer_awake 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_LCD_BACKLIGHT_AUTO_DIM)
|
||||||
|
#define keyer_power_led 0 // must be a PWM-capable pin
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_CAPACITIVE_PADDLE_PINS)
|
||||||
|
#define capactive_paddle_pin_inhibit_pin 0 // if this pin is defined and is set high, the capacitive paddle pins will switch to normal (non-capacitive) sensing mode
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef FEATURE_4x4_KEYPAD
|
||||||
|
#define Row3 33
|
||||||
|
#define Row2 32
|
||||||
|
#define Row1 31
|
||||||
|
#define Row0 30
|
||||||
|
#define Col3 37
|
||||||
|
#define Col2 36
|
||||||
|
#define Col1 35
|
||||||
|
#define Col0 34
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef FEATURE_3x4_KEYPAD
|
||||||
|
#define Row3 33
|
||||||
|
#define Row2 32
|
||||||
|
#define Row1 31
|
||||||
|
#define Row0 30
|
||||||
|
#define Col2 36
|
||||||
|
#define Col1 35
|
||||||
|
#define Col0 34
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef FEATURE_SEQUENCER
|
||||||
|
#define sequencer_1_pin 0
|
||||||
|
#define sequencer_2_pin 0
|
||||||
|
#define sequencer_3_pin 0
|
||||||
|
#define sequencer_4_pin 0
|
||||||
|
#define sequencer_5_pin 0
|
||||||
|
#endif //FEATURE_SEQUENCER
|
||||||
|
|
||||||
|
#define ptt_input_pin 0
|
||||||
|
|
||||||
|
#define tx_inhibit_pin 0
|
||||||
|
#define tx_pause_pin 0
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
#error "Multiple pin_settings.h files included somehow..."
|
||||||
|
|
||||||
|
#endif //keyer_pin_settings_h
|
||||||
|
|
169
k3ng_keyer/keyer_pin_settings_generic_STM32F103C.h
Executable file
169
k3ng_keyer/keyer_pin_settings_generic_STM32F103C.h
Executable file
|
@ -0,0 +1,169 @@
|
||||||
|
/*
|
||||||
|
|
||||||
|
GENERIC STM32F103C Blue Pill board
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Pins - you must review these and configure ! */
|
||||||
|
#ifndef keyer_pin_settings_h
|
||||||
|
#define keyer_pin_settings_h
|
||||||
|
|
||||||
|
#define paddle_left PA1
|
||||||
|
#define paddle_right PA0
|
||||||
|
#define tx_key_line_1 PC15 // (high = key down/tx on)
|
||||||
|
#define tx_key_line_2 0
|
||||||
|
#define tx_key_line_3 0
|
||||||
|
#define tx_key_line_4 0
|
||||||
|
#define tx_key_line_5 0
|
||||||
|
#define tx_key_line_6 0
|
||||||
|
#define sidetone_line PB9 // connect a speaker for sidetone
|
||||||
|
#define potentiometer 0 // Speed potentiometer (0 to 5 V) Use pot from 1k to 10k
|
||||||
|
#define ptt_tx_1 PC14 // PTT ("push to talk") lines
|
||||||
|
#define ptt_tx_2 0 // Can be used for keying fox transmitter, T/R switch, or keying slow boatanchors
|
||||||
|
#define ptt_tx_3 0 // These are optional - set to 0 if unused
|
||||||
|
#define ptt_tx_4 0
|
||||||
|
#define ptt_tx_5 0
|
||||||
|
#define ptt_tx_6 0
|
||||||
|
#define tx_key_dit 0 // if defined, goes active for dit (any transmitter) - customized with tx_key_dit_and_dah_pins_active_state and tx_key_dit_and_dah_pins_inactive_state
|
||||||
|
#define tx_key_dah 0 // if defined, goes active for dah (any transmitter) - customized with tx_key_dit_and_dah_pins_active_state and tx_key_dit_and_dah_pins_inactive_state
|
||||||
|
|
||||||
|
#define potentiometer_enable_pin 0 // if defined, the potentiometer will be enabled only when this pin is held low; set to 0 to ignore this pin
|
||||||
|
|
||||||
|
#ifdef FEATURE_BUTTONS
|
||||||
|
#define analog_buttons_pin PA3
|
||||||
|
#define command_mode_active_led PC13 //for Generic STM32103C On Board LED
|
||||||
|
#endif //FEATURE_BUTTONS
|
||||||
|
|
||||||
|
/*
|
||||||
|
FEATURE_SIDETONE_SWITCH
|
||||||
|
Enabling this feature and an external toggle switch adds switch control for playing cw sidetone.
|
||||||
|
ST Switch status is displayed in the status command. This feature will override the software control of the sidetone (\o).
|
||||||
|
Arduino pin is assigned by SIDETONE_SWITCH
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifdef FEATURE_SIDETONE_SWITCH
|
||||||
|
#define SIDETONE_SWITCH 0 //PA15
|
||||||
|
#endif //FEATURE_SIDETONE_SWITCH
|
||||||
|
|
||||||
|
|
||||||
|
//lcd pins
|
||||||
|
#ifdef FEATURE_LCD_4BIT
|
||||||
|
#define lcd_rs PB12
|
||||||
|
#define lcd_enable PB13
|
||||||
|
#define lcd_d4 PB14
|
||||||
|
#define lcd_d5 PB15
|
||||||
|
#define lcd_d6 PA8
|
||||||
|
#define lcd_d7 PA9
|
||||||
|
#endif //FEATURE_LCD_4BIT
|
||||||
|
|
||||||
|
#if defined(FEATURE_LCD_8BIT) // addition four data lines for 8 bit LCD control
|
||||||
|
#define lcd_d0 20
|
||||||
|
#define lcd_d1 21
|
||||||
|
#define lcd_d2 22
|
||||||
|
#define lcd_d3 23
|
||||||
|
#endif //FEATURE_LCD_4BIT || defined(FEATURE_LCD_8BIT)
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef FEATURE_LCD1602_N07DH
|
||||||
|
#define lcd_rs PB12
|
||||||
|
#define lcd_enable PB13
|
||||||
|
#define lcd_d4 PB14
|
||||||
|
#define lcd_d5 PB15
|
||||||
|
#define lcd_d6 PA8
|
||||||
|
#define lcd_d7 PA9
|
||||||
|
#endif //FEATURE_LCD1602_N07DH
|
||||||
|
|
||||||
|
//ps2 keyboard pins
|
||||||
|
#ifdef FEATURE_PS2_KEYBOARD
|
||||||
|
#define ps2_keyboard_data 0 // for STM boards it can not be Ax - muste use pin numbers only or PBx, PCx etc... sp5iou
|
||||||
|
#define ps2_keyboard_clock 0 // this must be on an interrupt capable pin!
|
||||||
|
#endif //FEATURE_PS2_KEYBOARD
|
||||||
|
|
||||||
|
// rotary encoder pins and options - rotary encoder code from Jim Balls M0CKE
|
||||||
|
#ifdef FEATURE_ROTARY_ENCODER
|
||||||
|
#define OPTION_ENCODER_HALF_STEP_MODE // Half-step mode?
|
||||||
|
#define rotary_pin1 PB7 // CW Encoder Pin
|
||||||
|
#define rotary_pin2 PB8 // CCW Encoder Pin
|
||||||
|
#define OPTION_ENCODER_ENABLE_PULLUPS // define to enable weak pullups.
|
||||||
|
#endif //FEATURE_ROTARY_ENCODER
|
||||||
|
|
||||||
|
#ifdef FEATURE_LED_RING
|
||||||
|
#define led_ring_sdi 0 //Data
|
||||||
|
#define led_ring_clk 0 //Clock
|
||||||
|
#define led_ring_le 0 //Latch
|
||||||
|
#endif //FEATURE_LED_RING
|
||||||
|
|
||||||
|
#define correct_answer_led 0
|
||||||
|
#define wrong_answer_led 0
|
||||||
|
|
||||||
|
#ifdef FEATURE_PTT_INTERLOCK
|
||||||
|
#define ptt_interlock 0 // this pin disables PTT and TX KEY
|
||||||
|
#endif //FEATURE_PTT_INTERLOCK
|
||||||
|
|
||||||
|
#ifdef FEATURE_STRAIGHT_KEY
|
||||||
|
#define pin_straight_key 0
|
||||||
|
#endif //FEATURE_STRAIGHT_KEY
|
||||||
|
|
||||||
|
// FEATURE_CW_DECODER & OPTION_CW_DECODER_GOERTZEL_AUDIO_DETECTOR
|
||||||
|
// See https://github.com/k3ng/k3ng_cw_keyer/wiki/385-Feature:-CW-Decoder for details
|
||||||
|
#define cw_decoder_pin 0 // This is for use with external decoding hardware
|
||||||
|
#define cw_decoder_audio_input_pin 0 // This is for audio detection decoding using OPTION_CW_DECODER_GOERTZEL_AUDIO_DETECTOR; this must be an analog pin!
|
||||||
|
#define cw_decoder_indicator 0 // Output - goes HIGH when cw tone is detected by OPTION_CW_DECODER_GOERTZEL_AUDIO_DETECTOR
|
||||||
|
|
||||||
|
|
||||||
|
#if defined(FEATURE_COMPETITION_COMPRESSION_DETECTION)
|
||||||
|
#define compression_detection_pin 0
|
||||||
|
#endif //FEATURE_COMPETITION_COMPRESSION_DETECTION
|
||||||
|
|
||||||
|
#if defined(FEATURE_SLEEP)
|
||||||
|
#define keyer_awake 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_LCD_BACKLIGHT_AUTO_DIM)
|
||||||
|
#define keyer_power_led 0 // must be a PWM-capable pin
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_CAPACITIVE_PADDLE_PINS)
|
||||||
|
#define capactive_paddle_pin_inhibit_pin 0 // if this pin is defined and is set high, the capacitive paddle pins will switch to normal (non-capacitive) sensing mode
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef FEATURE_4x4_KEYPAD
|
||||||
|
#define Row3 PB11
|
||||||
|
#define Row2 PB10
|
||||||
|
#define Row1 PB1
|
||||||
|
#define Row0 PB0
|
||||||
|
#define Col3 PA7
|
||||||
|
#define Col2 PA6
|
||||||
|
#define Col1 PA5
|
||||||
|
#define Col0 PA4
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef FEATURE_3x4_KEYPAD
|
||||||
|
#define Row3 PB11
|
||||||
|
#define Row2 PB10
|
||||||
|
#define Row1 PB1
|
||||||
|
#define Row0 PB0
|
||||||
|
#define Col2 PA7
|
||||||
|
#define Col1 PA6
|
||||||
|
#define Col0 PA5
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef FEATURE_SEQUENCER
|
||||||
|
#define sequencer_1_pin 0
|
||||||
|
#define sequencer_2_pin 0
|
||||||
|
#define sequencer_3_pin 0
|
||||||
|
#define sequencer_4_pin 0
|
||||||
|
#define sequencer_5_pin 0
|
||||||
|
#endif //FEATURE_SEQUENCER
|
||||||
|
|
||||||
|
#define ptt_input_pin 0
|
||||||
|
|
||||||
|
#define tx_inhibit_pin 0
|
||||||
|
#define tx_pause_pin 0
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
#error "Multiple pin_settings.h files included somehow..."
|
||||||
|
|
||||||
|
#endif //keyer_pin_settings_h
|
||||||
|
|
161
k3ng_keyer/keyer_pin_settings_iz3gme.h
Executable file
161
k3ng_keyer/keyer_pin_settings_iz3gme.h
Executable file
|
@ -0,0 +1,161 @@
|
||||||
|
/* Pins - you must review these and configure ! */
|
||||||
|
#ifndef keyer_pin_settings_h
|
||||||
|
#define keyer_pin_settings_h
|
||||||
|
|
||||||
|
#define paddle_left A3
|
||||||
|
#define paddle_right A4
|
||||||
|
#define tx_key_line_1 A2 // (high = key down/tx on)
|
||||||
|
#define tx_key_line_2 0
|
||||||
|
#define tx_key_line_3 0
|
||||||
|
#define tx_key_line_4 0
|
||||||
|
#define tx_key_line_5 0
|
||||||
|
#define tx_key_line_6 0
|
||||||
|
#define sidetone_line 0 // connect a speaker for sidetone
|
||||||
|
#define potentiometer A5 // Speed potentiometer (0 to 5 V) Use pot from 1k to 10k
|
||||||
|
#define ptt_tx_1 0 // PTT ("push to talk") lines
|
||||||
|
#define ptt_tx_2 0 // Can be used for keying fox transmitter, T/R switch, or keying slow boatanchors
|
||||||
|
#define ptt_tx_3 0 // These are optional - set to 0 if unused
|
||||||
|
#define ptt_tx_4 0
|
||||||
|
#define ptt_tx_5 0
|
||||||
|
#define ptt_tx_6 0
|
||||||
|
#define tx_key_dit 0 // if defined, goes active for dit (any transmitter) - customized with tx_key_dit_and_dah_pins_active_state and tx_key_dit_and_dah_pins_inactive_state
|
||||||
|
#define tx_key_dah 0 // if defined, goes active for dah (any transmitter) - customized with tx_key_dit_and_dah_pins_active_state and tx_key_dit_and_dah_pins_inactive_state
|
||||||
|
|
||||||
|
#define potentiometer_enable_pin 0 // if defined, the potentiometer will be enabled only when this pin is held low; set to 0 to ignore this pin
|
||||||
|
|
||||||
|
#ifdef FEATURE_BUTTONS
|
||||||
|
#define analog_buttons_pin A6
|
||||||
|
#define command_mode_active_led 13
|
||||||
|
#endif //FEATURE_BUTTONS
|
||||||
|
|
||||||
|
/*
|
||||||
|
FEATURE_SIDETONE_SWITCH
|
||||||
|
Enabling this feature and an external toggle switch adds switch control for playing cw sidetone.
|
||||||
|
ST Switch status is displayed in the status command. This feature will override the software control of the sidetone (\o).
|
||||||
|
Arduino pin is assigned by SIDETONE_SWITCH
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifdef FEATURE_SIDETONE_SWITCH
|
||||||
|
#define SIDETONE_SWITCH 8
|
||||||
|
#endif //FEATURE_SIDETONE_SWITCH
|
||||||
|
|
||||||
|
|
||||||
|
//lcd pins
|
||||||
|
#if defined(FEATURE_LCD_4BIT) || defined(FEATURE_LCD_8BIT)
|
||||||
|
#define lcd_rs 7
|
||||||
|
#define lcd_enable 6 // pin 10 is used by Ethernet shield and will conflict with that
|
||||||
|
#define lcd_d4 5
|
||||||
|
#define lcd_d5 4
|
||||||
|
#define lcd_d6 3
|
||||||
|
#define lcd_d7 1
|
||||||
|
#endif //FEATURE_LCD_4BIT || defined(FEATURE_LCD_8BIT)
|
||||||
|
|
||||||
|
#if defined(FEATURE_LCD_8BIT) // addition four data lines for 8 bit LCD control
|
||||||
|
#define lcd_d0 20
|
||||||
|
#define lcd_d1 21
|
||||||
|
#define lcd_d2 22
|
||||||
|
#define lcd_d3 23
|
||||||
|
#endif //FEATURE_LCD_4BIT || defined(FEATURE_LCD_8BIT)
|
||||||
|
|
||||||
|
#ifdef FEATURE_LCD1602_N07DH
|
||||||
|
#define lcd_rs 8
|
||||||
|
#define lcd_enable 9
|
||||||
|
#define lcd_d4 4
|
||||||
|
#define lcd_d5 5
|
||||||
|
#define lcd_d6 6
|
||||||
|
#define lcd_d7 7
|
||||||
|
#endif //FEATURE_LCD1602_N07DH
|
||||||
|
|
||||||
|
//ps2 keyboard pins
|
||||||
|
#ifdef FEATURE_PS2_KEYBOARD
|
||||||
|
#define ps2_keyboard_data A3
|
||||||
|
#define ps2_keyboard_clock 3 // this must be on an interrupt capable pin!
|
||||||
|
#endif //FEATURE_PS2_KEYBOARD
|
||||||
|
|
||||||
|
// rotary encoder pins and options - rotary encoder code from Jim Balls M0CKE
|
||||||
|
#ifdef FEATURE_ROTARY_ENCODER
|
||||||
|
#define OPTION_ENCODER_HALF_STEP_MODE // Half-step mode?
|
||||||
|
#define rotary_pin1 0 // CW Encoder Pin
|
||||||
|
#define rotary_pin2 0 // CCW Encoder Pin
|
||||||
|
#define OPTION_ENCODER_ENABLE_PULLUPS // define to enable weak pullups.
|
||||||
|
#endif //FEATURE_ROTARY_ENCODER
|
||||||
|
|
||||||
|
#ifdef FEATURE_LED_RING
|
||||||
|
#define led_ring_sdi A10 //2 //Data
|
||||||
|
#define led_ring_clk A9 //3 //Clock
|
||||||
|
#define led_ring_le A8 //4 //Latch
|
||||||
|
#endif //FEATURE_LED_RING
|
||||||
|
|
||||||
|
#define correct_answer_led 0
|
||||||
|
#define wrong_answer_led 0
|
||||||
|
|
||||||
|
#ifdef FEATURE_PTT_INTERLOCK
|
||||||
|
#define ptt_interlock 0 // this pin disables PTT and TX KEY
|
||||||
|
#endif //FEATURE_PTT_INTERLOCK
|
||||||
|
|
||||||
|
#ifdef FEATURE_STRAIGHT_KEY
|
||||||
|
#define pin_straight_key 52
|
||||||
|
#endif //FEATURE_STRAIGHT_KEY
|
||||||
|
|
||||||
|
// FEATURE_CW_DECODER & OPTION_CW_DECODER_GOERTZEL_AUDIO_DETECTOR
|
||||||
|
// See https://github.com/k3ng/k3ng_cw_keyer/wiki/385-Feature:-CW-Decoder for details
|
||||||
|
#define cw_decoder_pin 0 // This is for use with external decoding hardware
|
||||||
|
#define cw_decoder_audio_input_pin 0 // This is for audio detection decoding using OPTION_CW_DECODER_GOERTZEL_AUDIO_DETECTOR; this must be an analog pin!
|
||||||
|
#define cw_decoder_indicator 0 // Output - goes HIGH when cw tone is detected by OPTION_CW_DECODER_GOERTZEL_AUDIO_DETECTOR
|
||||||
|
|
||||||
|
|
||||||
|
#if defined(FEATURE_COMPETITION_COMPRESSION_DETECTION)
|
||||||
|
#define compression_detection_pin 13
|
||||||
|
#endif //FEATURE_COMPETITION_COMPRESSION_DETECTION
|
||||||
|
|
||||||
|
#if defined(FEATURE_SLEEP)
|
||||||
|
#define keyer_awake 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_LCD_BACKLIGHT_AUTO_DIM)
|
||||||
|
#define keyer_power_led 0 // must be a PWM-capable pin
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_CAPACITIVE_PADDLE_PINS)
|
||||||
|
#define capactive_paddle_pin_inhibit_pin 0 // if this pin is defined and is set high, the capacitive paddle pins will switch to normal (non-capacitive) sensing mode
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef FEATURE_4x4_KEYPAD
|
||||||
|
#define Row3 33
|
||||||
|
#define Row2 32
|
||||||
|
#define Row1 31
|
||||||
|
#define Row0 30
|
||||||
|
#define Col3 37
|
||||||
|
#define Col2 36
|
||||||
|
#define Col1 35
|
||||||
|
#define Col0 34
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef FEATURE_3x4_KEYPAD
|
||||||
|
#define Row3 33
|
||||||
|
#define Row2 32
|
||||||
|
#define Row1 31
|
||||||
|
#define Row0 30
|
||||||
|
#define Col2 36
|
||||||
|
#define Col1 35
|
||||||
|
#define Col0 34
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef FEATURE_SEQUENCER
|
||||||
|
#define sequencer_1_pin 0
|
||||||
|
#define sequencer_2_pin 0
|
||||||
|
#define sequencer_3_pin 0
|
||||||
|
#define sequencer_4_pin 0
|
||||||
|
#define sequencer_5_pin 0
|
||||||
|
#endif //FEATURE_SEQUENCER
|
||||||
|
|
||||||
|
#define ptt_input_pin 0
|
||||||
|
|
||||||
|
#define tx_inhibit_pin 0
|
||||||
|
#define tx_pause_pin 0
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
#error "Multiple pin_settings.h files included somehow..."
|
||||||
|
|
||||||
|
#endif //keyer_pin_settings_h
|
161
k3ng_keyer/keyer_pin_settings_k5bcq.h
Executable file
161
k3ng_keyer/keyer_pin_settings_k5bcq.h
Executable file
|
@ -0,0 +1,161 @@
|
||||||
|
/* Pins - you must review these and configure ! */
|
||||||
|
#ifndef keyer_pin_settings_h
|
||||||
|
#define keyer_pin_settings_h
|
||||||
|
|
||||||
|
#define paddle_left 5
|
||||||
|
#define paddle_right 4
|
||||||
|
#define tx_key_line_1 8 // (high = key down/tx on)
|
||||||
|
#define tx_key_line_2 9
|
||||||
|
#define tx_key_line_3 0
|
||||||
|
#define tx_key_line_4 0
|
||||||
|
#define tx_key_line_5 0
|
||||||
|
#define tx_key_line_6 0
|
||||||
|
#define sidetone_line 31 // connect a speaker for sidetone Set to "12" if not using Twin T oscillator
|
||||||
|
#define potentiometer A0 // Speed potentiometer (0 to 5 V) Use pot from 1k to 10k
|
||||||
|
#define ptt_tx_1 10 // PTT ("push to talk") lines
|
||||||
|
#define ptt_tx_2 11 // Can be used for keying fox transmitter, T/R switch, or keying slow boatanchors
|
||||||
|
#define ptt_tx_3 0 // These are optional - set to 0 if unused
|
||||||
|
#define ptt_tx_4 0
|
||||||
|
#define ptt_tx_5 0
|
||||||
|
#define ptt_tx_6 0
|
||||||
|
#define tx_key_dit 0 // if defined, goes active for dit (any transmitter) - customized with tx_key_dit_and_dah_pins_active_state and tx_key_dit_and_dah_pins_inactive_state
|
||||||
|
#define tx_key_dah 0 // if defined, goes active for dah (any transmitter) - customized with tx_key_dit_and_dah_pins_active_state and tx_key_dit_and_dah_pins_inactive_state
|
||||||
|
|
||||||
|
#define potentiometer_enable_pin 0 // if defined, the potentiometer will be enabled only when this pin is held low; set to 0 to ignore this pin
|
||||||
|
|
||||||
|
#ifdef FEATURE_BUTTONS
|
||||||
|
#define analog_buttons_pin A1
|
||||||
|
#define command_mode_active_led 29
|
||||||
|
#endif //FEATURE_BUTTONS
|
||||||
|
|
||||||
|
/*
|
||||||
|
FEATURE_SIDETONE_SWITCH
|
||||||
|
Enabling this feature and an external toggle switch adds switch control for playing cw sidetone.
|
||||||
|
ST Switch status is displayed in the status command. This feature will override the software control of the sidetone (\o).
|
||||||
|
Arduino pin is assigned by SIDETONE_SWITCH
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifdef FEATURE_SIDETONE_SWITCH
|
||||||
|
#define SIDETONE_SWITCH 8
|
||||||
|
#endif //FEATURE_SIDETONE_SWITCH
|
||||||
|
|
||||||
|
|
||||||
|
//lcd pins
|
||||||
|
#if defined(FEATURE_LCD_4BIT) || defined(FEATURE_LCD_8BIT)
|
||||||
|
#define lcd_rs 38
|
||||||
|
#define lcd_enable 32 // pin 10 is used by Ethernet shield and will conflict with that
|
||||||
|
#define lcd_d4 33
|
||||||
|
#define lcd_d5 35
|
||||||
|
#define lcd_d6 37
|
||||||
|
#define lcd_d7 39
|
||||||
|
#endif //FEATURE_LCD_4BIT || defined(FEATURE_LCD_8BIT)
|
||||||
|
|
||||||
|
#if defined(FEATURE_LCD_8BIT) // addition four data lines for 8 bit LCD control
|
||||||
|
#define lcd_d0 20
|
||||||
|
#define lcd_d1 21
|
||||||
|
#define lcd_d2 22
|
||||||
|
#define lcd_d3 23
|
||||||
|
#endif //FEATURE_LCD_4BIT || defined(FEATURE_LCD_8BIT)
|
||||||
|
|
||||||
|
#ifdef FEATURE_LCD1602_N07DH
|
||||||
|
#define lcd_rs 8
|
||||||
|
#define lcd_enable 9
|
||||||
|
#define lcd_d4 4
|
||||||
|
#define lcd_d5 5
|
||||||
|
#define lcd_d6 6
|
||||||
|
#define lcd_d7 7
|
||||||
|
#endif //FEATURE_LCD1602_N07DH
|
||||||
|
|
||||||
|
//ps2 keyboard pins
|
||||||
|
#ifdef FEATURE_PS2_KEYBOARD
|
||||||
|
#define ps2_keyboard_data A3
|
||||||
|
#define ps2_keyboard_clock 3 // this must be on an interrupt capable pin!
|
||||||
|
#endif //FEATURE_PS2_KEYBOARD
|
||||||
|
|
||||||
|
// rotary encoder pins and options - rotary encoder code from Jim Balls M0CKE
|
||||||
|
#ifdef FEATURE_ROTARY_ENCODER
|
||||||
|
#define OPTION_ENCODER_HALF_STEP_MODE // Half-step mode?
|
||||||
|
#define rotary_pin1 6 // CW Encoder Pin
|
||||||
|
#define rotary_pin2 7 // CCW Encoder Pin
|
||||||
|
#define OPTION_ENCODER_ENABLE_PULLUPS // define to enable weak pullups.
|
||||||
|
#endif //FEATURE_ROTARY_ENCODER
|
||||||
|
|
||||||
|
#ifdef FEATURE_LED_RING
|
||||||
|
#define led_ring_sdi A10 //2 //Data
|
||||||
|
#define led_ring_clk A9 //3 //Clock
|
||||||
|
#define led_ring_le A8 //4 //Latch
|
||||||
|
#endif //FEATURE_LED_RING
|
||||||
|
|
||||||
|
#define correct_answer_led 27
|
||||||
|
#define wrong_answer_led 25
|
||||||
|
|
||||||
|
#ifdef FEATURE_PTT_INTERLOCK
|
||||||
|
#define ptt_interlock 0 // this pin disables PTT and TX KEY
|
||||||
|
#endif //FEATURE_PTT_INTERLOCK
|
||||||
|
|
||||||
|
#ifdef FEATURE_STRAIGHT_KEY
|
||||||
|
#define pin_straight_key 52
|
||||||
|
#endif //FEATURE_STRAIGHT_KEY
|
||||||
|
|
||||||
|
// FEATURE_CW_DECODER & OPTION_CW_DECODER_GOERTZEL_AUDIO_DETECTOR
|
||||||
|
// See https://github.com/k3ng/k3ng_cw_keyer/wiki/385-Feature:-CW-Decoder for details
|
||||||
|
#define cw_decoder_pin A3 // This is for use with external decoding hardware
|
||||||
|
#define cw_decoder_audio_input_pin A0 // This is for audio detection decoding using OPTION_CW_DECODER_GOERTZEL_AUDIO_DETECTOR; this must be an analog pin!
|
||||||
|
#define cw_decoder_indicator 23 // Output - goes HIGH when cw tone is detected by OPTION_CW_DECODER_GOERTZEL_AUDIO_DETECTOR
|
||||||
|
|
||||||
|
|
||||||
|
#if defined(FEATURE_COMPETITION_COMPRESSION_DETECTION)
|
||||||
|
#define compression_detection_pin 13
|
||||||
|
#endif //FEATURE_COMPETITION_COMPRESSION_DETECTION
|
||||||
|
|
||||||
|
#if defined(FEATURE_SLEEP)
|
||||||
|
#define keyer_awake 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_LCD_BACKLIGHT_AUTO_DIM)
|
||||||
|
#define keyer_power_led 0 // must be a PWM-capable pin
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_CAPACITIVE_PADDLE_PINS)
|
||||||
|
#define capactive_paddle_pin_inhibit_pin 0 // if this pin is defined and is set high, the capacitive paddle pins will switch to normal (non-capacitive) sensing mode
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef FEATURE_4x4_KEYPAD
|
||||||
|
#define Row3 43
|
||||||
|
#define Row2 42
|
||||||
|
#define Row1 41
|
||||||
|
#define Row0 40
|
||||||
|
#define Col3 51
|
||||||
|
#define Col2 50
|
||||||
|
#define Col1 49
|
||||||
|
#define Col0 48
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef FEATURE_3x4_KEYPAD
|
||||||
|
#define Row3 43
|
||||||
|
#define Row2 42
|
||||||
|
#define Row1 41
|
||||||
|
#define Row0 40
|
||||||
|
#define Col2 50
|
||||||
|
#define Col1 49
|
||||||
|
#define Col0 48
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef FEATURE_SEQUENCER
|
||||||
|
#define sequencer_1_pin 0
|
||||||
|
#define sequencer_2_pin 0
|
||||||
|
#define sequencer_3_pin 0
|
||||||
|
#define sequencer_4_pin 0
|
||||||
|
#define sequencer_5_pin 0
|
||||||
|
#endif //FEATURE_SEQUENCER
|
||||||
|
|
||||||
|
#define ptt_input_pin 0
|
||||||
|
|
||||||
|
#define tx_inhibit_pin 0
|
||||||
|
#define tx_pause_pin 0
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
#error "Multiple pin_settings.h files included somehow..."
|
||||||
|
|
||||||
|
#endif //keyer_pin_settings_h
|
176
k3ng_keyer/keyer_pin_settings_maple_mini.h
Executable file
176
k3ng_keyer/keyer_pin_settings_maple_mini.h
Executable file
|
@ -0,0 +1,176 @@
|
||||||
|
/*
|
||||||
|
|
||||||
|
|
||||||
|
# # ## ##### # ###### # # # # # #
|
||||||
|
## ## # # # # # # ## ## # ## # #
|
||||||
|
# ## # # # # # # ##### # ## # # # # # #
|
||||||
|
# # ###### ##### # # # # # # # # #
|
||||||
|
# # # # # # # # # # # ## #
|
||||||
|
# # # # # ###### ###### # # # # # #
|
||||||
|
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Pins - you must review these and configure ! */
|
||||||
|
#ifndef keyer_pin_settings_h
|
||||||
|
#define keyer_pin_settings_h
|
||||||
|
|
||||||
|
#define paddle_left 10
|
||||||
|
#define paddle_right 11
|
||||||
|
#define tx_key_line_1 12 // (high = key down/tx on)
|
||||||
|
#define tx_key_line_2 15
|
||||||
|
#define tx_key_line_3 0
|
||||||
|
#define tx_key_line_4 0
|
||||||
|
#define tx_key_line_5 0
|
||||||
|
#define tx_key_line_6 0
|
||||||
|
//#define sidetone_line 8 // connect a speaker for sidetone
|
||||||
|
uint8_t sidetone_line = 8; // sp5iou must be variable declaration instead of #define... for STM32 boards.
|
||||||
|
#define potentiometer 4 // Speed potentiometer (0 to 5 V) Use pot from 1k to 10k
|
||||||
|
#define ptt_tx_1 13 // PTT ("push to talk") lines
|
||||||
|
#define ptt_tx_2 16 // Can be used for keying fox transmitter, T/R switch, or keying slow boatanchors
|
||||||
|
#define ptt_tx_3 0 // These are optional - set to 0 if unused
|
||||||
|
#define ptt_tx_4 0
|
||||||
|
#define ptt_tx_5 0
|
||||||
|
#define ptt_tx_6 0
|
||||||
|
#define tx_key_dit 0 // if defined, goes active for dit (any transmitter) - customized with tx_key_dit_and_dah_pins_active_state and tx_key_dit_and_dah_pins_inactive_state
|
||||||
|
#define tx_key_dah 0 // if defined, goes active for dah (any transmitter) - customized with tx_key_dit_and_dah_pins_active_state and tx_key_dit_and_dah_pins_inactive_state
|
||||||
|
|
||||||
|
#define potentiometer_enable_pin 0 // if defined, the potentiometer will be enabled only when this pin is held low; set to 0 to ignore this pin
|
||||||
|
|
||||||
|
#ifdef FEATURE_BUTTONS
|
||||||
|
#define analog_buttons_pin 3
|
||||||
|
#define command_mode_active_led PB1
|
||||||
|
#endif //FEATURE_BUTTONS
|
||||||
|
|
||||||
|
/*
|
||||||
|
FEATURE_SIDETONE_SWITCH
|
||||||
|
Enabling this feature and an external toggle switch adds switch control for playing cw sidetone.
|
||||||
|
ST Switch status is displayed in the status command. This feature will override the software control of the sidetone (\o).
|
||||||
|
Arduino pin is assigned by SIDETONE_SWITCH
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifdef FEATURE_SIDETONE_SWITCH
|
||||||
|
#define SIDETONE_SWITCH 0
|
||||||
|
#endif //FEATURE_SIDETONE_SWITCH
|
||||||
|
|
||||||
|
|
||||||
|
//lcd pins
|
||||||
|
#ifdef FEATURE_LCD_4BIT
|
||||||
|
#define lcd_rs 17
|
||||||
|
#define lcd_enable 18
|
||||||
|
#define lcd_d4 19
|
||||||
|
#define lcd_d5 20
|
||||||
|
#define lcd_d6 21
|
||||||
|
#define lcd_d7 22
|
||||||
|
#endif //FEATURE_LCD_4BIT
|
||||||
|
|
||||||
|
#if defined(FEATURE_LCD_8BIT) // addition four data lines for 8 bit LCD control
|
||||||
|
#define lcd_d0 23
|
||||||
|
#define lcd_d1 24
|
||||||
|
#define lcd_d2 25
|
||||||
|
#define lcd_d3 26
|
||||||
|
#endif //FEATURE_LCD_4BIT || defined(FEATURE_LCD_8BIT)
|
||||||
|
|
||||||
|
#ifdef FEATURE_LCD1602_N07DH
|
||||||
|
#define lcd_rs 17
|
||||||
|
#define lcd_enable 18
|
||||||
|
#define lcd_d4 19
|
||||||
|
#define lcd_d5 20
|
||||||
|
#define lcd_d6 21
|
||||||
|
#define lcd_d7 22
|
||||||
|
#endif //FEATURE_LCD1602_N07DH
|
||||||
|
|
||||||
|
//ps2 keyboard pins
|
||||||
|
#ifdef FEATURE_PS2_KEYBOARD
|
||||||
|
#define ps2_keyboard_data A3 // for maple it can not be Ax - muste use pin numbers only or PBx, PCx etc... sp5iou
|
||||||
|
#define ps2_keyboard_clock 3 // this must be on an interrupt capable pin!
|
||||||
|
#endif //FEATURE_PS2_KEYBOARD
|
||||||
|
|
||||||
|
// rotary encoder pins and options - rotary encoder code from Jim Balls M0CKE
|
||||||
|
#ifdef FEATURE_ROTARY_ENCODER
|
||||||
|
#define OPTION_ENCODER_HALF_STEP_MODE // Half-step mode?
|
||||||
|
#define rotary_pin1 0 // CW Encoder Pin
|
||||||
|
#define rotary_pin2 0 // CCW Encoder Pin
|
||||||
|
#define OPTION_ENCODER_ENABLE_PULLUPS // define to enable weak pullups.
|
||||||
|
#endif //FEATURE_ROTARY_ENCODER
|
||||||
|
|
||||||
|
#ifdef FEATURE_LED_RING
|
||||||
|
#define led_ring_sdi A10 //2 //Data
|
||||||
|
#define led_ring_clk A9 //3 //Clock
|
||||||
|
#define led_ring_le A8 //4 //Latch
|
||||||
|
#endif //FEATURE_LED_RING
|
||||||
|
|
||||||
|
#define correct_answer_led 0
|
||||||
|
#define wrong_answer_led 0
|
||||||
|
|
||||||
|
#ifdef FEATURE_PTT_INTERLOCK
|
||||||
|
#define ptt_interlock 0 // this pin disables PTT and TX KEY
|
||||||
|
#endif //FEATURE_PTT_INTERLOCK
|
||||||
|
|
||||||
|
#ifdef FEATURE_STRAIGHT_KEY
|
||||||
|
#define pin_straight_key 52
|
||||||
|
#endif //FEATURE_STRAIGHT_KEY
|
||||||
|
|
||||||
|
// FEATURE_CW_DECODER & OPTION_CW_DECODER_GOERTZEL_AUDIO_DETECTOR
|
||||||
|
// See https://github.com/k3ng/k3ng_cw_keyer/wiki/385-Feature:-CW-Decoder for details
|
||||||
|
#define cw_decoder_pin 0 // This is for use with external decoding hardware
|
||||||
|
#define cw_decoder_audio_input_pin 0 // This is for audio detection decoding using OPTION_CW_DECODER_GOERTZEL_AUDIO_DETECTOR; this must be an analog pin!
|
||||||
|
#define cw_decoder_indicator 0 // Output - goes HIGH when cw tone is detected by OPTION_CW_DECODER_GOERTZEL_AUDIO_DETECTOR
|
||||||
|
|
||||||
|
|
||||||
|
#if defined(FEATURE_COMPETITION_COMPRESSION_DETECTION)
|
||||||
|
#define compression_detection_pin 13
|
||||||
|
#endif //FEATURE_COMPETITION_COMPRESSION_DETECTION
|
||||||
|
|
||||||
|
#if defined(FEATURE_SLEEP)
|
||||||
|
#define keyer_awake 6
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_LCD_BACKLIGHT_AUTO_DIM)
|
||||||
|
#define keyer_power_led 0 // must be a PWM-capable pin
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_CAPACITIVE_PADDLE_PINS)
|
||||||
|
#define capactive_paddle_pin_inhibit_pin 0 // if this pin is defined and is set high, the capacitive paddle pins will switch to normal (non-capacitive) sensing mode
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef FEATURE_4x4_KEYPAD
|
||||||
|
#define Row3 33
|
||||||
|
#define Row2 32
|
||||||
|
#define Row1 31
|
||||||
|
#define Row0 30
|
||||||
|
#define Col3 37
|
||||||
|
#define Col2 36
|
||||||
|
#define Col1 35
|
||||||
|
#define Col0 34
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef FEATURE_3x4_KEYPAD
|
||||||
|
#define Row3 33
|
||||||
|
#define Row2 32
|
||||||
|
#define Row1 31
|
||||||
|
#define Row0 30
|
||||||
|
#define Col2 36
|
||||||
|
#define Col1 35
|
||||||
|
#define Col0 34
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef FEATURE_SEQUENCER
|
||||||
|
#define sequencer_1_pin 0
|
||||||
|
#define sequencer_2_pin 0
|
||||||
|
#define sequencer_3_pin 0
|
||||||
|
#define sequencer_4_pin 0
|
||||||
|
#define sequencer_5_pin 0
|
||||||
|
#endif //FEATURE_SEQUENCER
|
||||||
|
|
||||||
|
#define ptt_input_pin 0
|
||||||
|
|
||||||
|
#define tx_inhibit_pin 0
|
||||||
|
#define tx_pause_pin 0
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
#error "Multiple pin_settings.h files included somehow..."
|
||||||
|
|
||||||
|
#endif //keyer_pin_settings_h
|
||||||
|
|
162
k3ng_keyer/keyer_pin_settings_megakeyer.h
Executable file
162
k3ng_keyer/keyer_pin_settings_megakeyer.h
Executable file
|
@ -0,0 +1,162 @@
|
||||||
|
/* Pins - you must review these and configure ! */
|
||||||
|
#ifndef keyer_pin_settings_h
|
||||||
|
#define keyer_pin_settings_h
|
||||||
|
|
||||||
|
#define paddle_left 34
|
||||||
|
#define paddle_right 32
|
||||||
|
#define tx_key_line_1 46 // (high = key down/tx on)
|
||||||
|
#define tx_key_line_2 12
|
||||||
|
#define tx_key_line_3 0
|
||||||
|
#define tx_key_line_4 0
|
||||||
|
#define tx_key_line_5 0
|
||||||
|
#define tx_key_line_6 0
|
||||||
|
#define sidetone_line 3 // connect a speaker for sidetone
|
||||||
|
#define potentiometer A0 // Speed potentiometer (0 to 5 V) Use pot from 1k to 10k
|
||||||
|
#define ptt_tx_1 40 // PTT ("push to talk") lines
|
||||||
|
#define ptt_tx_2 0 // Can be used for keying fox transmitter, T/R switch, or keying slow boatanchors
|
||||||
|
#define ptt_tx_3 0 // These are optional - set to 0 if unused
|
||||||
|
#define ptt_tx_4 0
|
||||||
|
#define ptt_tx_5 0
|
||||||
|
#define ptt_tx_6 0
|
||||||
|
#define tx_key_dit 0 // if defined, goes active for dit (any transmitter) - customized with tx_key_dit_and_dah_pins_active_state and tx_key_dit_and_dah_pins_inactive_state
|
||||||
|
#define tx_key_dah 0 // if defined, goes active for dah (any transmitter) - customized with tx_key_dit_and_dah_pins_active_state and tx_key_dit_and_dah_pins_inactive_state
|
||||||
|
|
||||||
|
#define potentiometer_enable_pin 0 // if defined, the potentiometer will be enabled only when this pin is held low; set to 0 to ignore this pin
|
||||||
|
|
||||||
|
#ifdef FEATURE_BUTTONS
|
||||||
|
#define analog_buttons_pin A3
|
||||||
|
#define command_mode_active_led 0
|
||||||
|
#endif //FEATURE_BUTTONS
|
||||||
|
|
||||||
|
/*
|
||||||
|
FEATURE_SIDETONE_SWITCH
|
||||||
|
Enabling this feature and an external toggle switch adds switch control for playing cw sidetone.
|
||||||
|
ST Switch status is displayed in the status command. This feature will override the software control of the sidetone (\o).
|
||||||
|
Arduino pin is assigned by SIDETONE_SWITCH
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifdef FEATURE_SIDETONE_SWITCH
|
||||||
|
#define SIDETONE_SWITCH 8
|
||||||
|
#endif //FEATURE_SIDETONE_SWITCH
|
||||||
|
|
||||||
|
|
||||||
|
//lcd pins
|
||||||
|
#if defined(FEATURE_LCD_4BIT) || defined(FEATURE_LCD_8BIT)
|
||||||
|
#define lcd_rs A2
|
||||||
|
#define lcd_enable 10 // pin 10 is used by Ethernet shield and will conflict with that
|
||||||
|
#define lcd_d4 6
|
||||||
|
#define lcd_d5 7
|
||||||
|
#define lcd_d6 8
|
||||||
|
#define lcd_d7 9
|
||||||
|
#endif //FEATURE_LCD_4BIT || defined(FEATURE_LCD_8BIT)
|
||||||
|
|
||||||
|
#if defined(FEATURE_LCD_8BIT) // addition four data lines for 8 bit LCD control
|
||||||
|
#define lcd_d0 20
|
||||||
|
#define lcd_d1 21
|
||||||
|
#define lcd_d2 22
|
||||||
|
#define lcd_d3 23
|
||||||
|
#endif //FEATURE_LCD_4BIT || defined(FEATURE_LCD_8BIT)
|
||||||
|
|
||||||
|
#ifdef FEATURE_LCD1602_N07DH
|
||||||
|
#define lcd_rs 8
|
||||||
|
#define lcd_enable 9
|
||||||
|
#define lcd_d4 4
|
||||||
|
#define lcd_d5 5
|
||||||
|
#define lcd_d6 6
|
||||||
|
#define lcd_d7 7
|
||||||
|
#endif //FEATURE_LCD1602_N07DH
|
||||||
|
|
||||||
|
//ps2 keyboard pins
|
||||||
|
#ifdef FEATURE_PS2_KEYBOARD
|
||||||
|
#define ps2_keyboard_data 16
|
||||||
|
#define ps2_keyboard_clock 18 // this must be on an interrupt capable pin!
|
||||||
|
#endif //FEATURE_PS2_KEYBOARD
|
||||||
|
|
||||||
|
// rotary encoder pins and options - rotary encoder code from Jim Balls M0CKE
|
||||||
|
#ifdef FEATURE_ROTARY_ENCODER
|
||||||
|
#define OPTION_ENCODER_HALF_STEP_MODE // Half-step mode?
|
||||||
|
#define rotary_pin1 6 // CW Encoder Pin
|
||||||
|
#define rotary_pin2 8 // CCW Encoder Pin
|
||||||
|
// #define OPTION_ENCODER_ENABLE_PULLUPS // define to enable weak pullups.
|
||||||
|
#endif //FEATURE_ROTARY_ENCODER
|
||||||
|
|
||||||
|
#ifdef FEATURE_LED_RING
|
||||||
|
#define led_ring_sdi A10 //2 //Data
|
||||||
|
#define led_ring_clk A9 //3 //Clock
|
||||||
|
#define led_ring_le A8 //4 //Latch
|
||||||
|
#endif //FEATURE_LED_RING
|
||||||
|
|
||||||
|
#define correct_answer_led 0
|
||||||
|
#define wrong_answer_led 0
|
||||||
|
|
||||||
|
#ifdef FEATURE_PTT_INTERLOCK
|
||||||
|
#define ptt_interlock 0 // this pin disables PTT and TX KEY
|
||||||
|
#endif //FEATURE_PTT_INTERLOCK
|
||||||
|
|
||||||
|
#ifdef FEATURE_STRAIGHT_KEY
|
||||||
|
#define pin_straight_key 52
|
||||||
|
#endif //FEATURE_STRAIGHT_KEY
|
||||||
|
|
||||||
|
// FEATURE_CW_DECODER & OPTION_CW_DECODER_GOERTZEL_AUDIO_DETECTOR
|
||||||
|
// See https://github.com/k3ng/k3ng_cw_keyer/wiki/385-Feature:-CW-Decoder for details
|
||||||
|
#define cw_decoder_pin 0 // This is for use with external decoding hardware
|
||||||
|
#define cw_decoder_audio_input_pin 0 // This is for audio detection decoding using OPTION_CW_DECODER_GOERTZEL_AUDIO_DETECTOR; this must be an analog pin!
|
||||||
|
#define cw_decoder_indicator 0 // Output - goes HIGH when cw tone is detected by OPTION_CW_DECODER_GOERTZEL_AUDIO_DETECTOR
|
||||||
|
|
||||||
|
|
||||||
|
#if defined(FEATURE_COMPETITION_COMPRESSION_DETECTION)
|
||||||
|
#define compression_detection_pin 13
|
||||||
|
#endif //FEATURE_COMPETITION_COMPRESSION_DETECTION
|
||||||
|
|
||||||
|
#if defined(FEATURE_SLEEP)
|
||||||
|
#define keyer_awake 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_LCD_BACKLIGHT_AUTO_DIM)
|
||||||
|
#define keyer_power_led 0 // must be a PWM-capable pin
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_CAPACITIVE_PADDLE_PINS)
|
||||||
|
#define capactive_paddle_pin_inhibit_pin 0 // if this pin is defined and is set high, the capacitive paddle pins will switch to normal (non-capacitive) sensing mode
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef FEATURE_4x4_KEYPAD
|
||||||
|
#define Row3 33
|
||||||
|
#define Row2 32
|
||||||
|
#define Row1 31
|
||||||
|
#define Row0 30
|
||||||
|
#define Col3 37
|
||||||
|
#define Col2 36
|
||||||
|
#define Col1 35
|
||||||
|
#define Col0 34
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef FEATURE_3x4_KEYPAD
|
||||||
|
#define Row3 33
|
||||||
|
#define Row2 32
|
||||||
|
#define Row1 31
|
||||||
|
#define Row0 30
|
||||||
|
#define Col2 36
|
||||||
|
#define Col1 35
|
||||||
|
#define Col0 34
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef FEATURE_SEQUENCER
|
||||||
|
#define sequencer_1_pin 0
|
||||||
|
#define sequencer_2_pin 0
|
||||||
|
#define sequencer_3_pin 0
|
||||||
|
#define sequencer_4_pin 0
|
||||||
|
#define sequencer_5_pin 0
|
||||||
|
#endif //FEATURE_SEQUENCER
|
||||||
|
|
||||||
|
#define ptt_input_pin 0
|
||||||
|
|
||||||
|
#define tx_inhibit_pin 0
|
||||||
|
#define tx_pause_pin 0
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
#error "Multiple pin_settings.h files included somehow..."
|
||||||
|
|
||||||
|
#endif //keyer_pin_settings_h
|
||||||
|
|
162
k3ng_keyer/keyer_pin_settings_mortty.h
Executable file
162
k3ng_keyer/keyer_pin_settings_mortty.h
Executable file
|
@ -0,0 +1,162 @@
|
||||||
|
/* Pins - you must review these and configure ! */
|
||||||
|
#ifndef keyer_pin_settings_h
|
||||||
|
#define keyer_pin_settings_h
|
||||||
|
|
||||||
|
#define paddle_left 2
|
||||||
|
#define paddle_right 5
|
||||||
|
#define tx_key_line_1 11 // (high = key down/tx on)
|
||||||
|
#define tx_key_line_2 12
|
||||||
|
#define tx_key_line_3 0
|
||||||
|
#define tx_key_line_4 0
|
||||||
|
#define tx_key_line_5 0
|
||||||
|
#define tx_key_line_6 0
|
||||||
|
#define sidetone_line 4 // connect a speaker for sidetone
|
||||||
|
#define potentiometer A0 // Speed potentiometer (0 to 5 V) Use pot from 1k to 10k
|
||||||
|
#define ptt_tx_1 13 // PTT ("push to talk") lines
|
||||||
|
#define ptt_tx_2 0 // Can be used for keying fox transmitter, T/R switch, or keying slow boatanchors
|
||||||
|
#define ptt_tx_3 0 // These are optional - set to 0 if unused
|
||||||
|
#define ptt_tx_4 0
|
||||||
|
#define ptt_tx_5 0
|
||||||
|
#define ptt_tx_6 0
|
||||||
|
#define tx_key_dit 0 // if defined, goes active for dit (any transmitter) - customized with tx_key_dit_and_dah_pins_active_state and tx_key_dit_and_dah_pins_inactive_state
|
||||||
|
#define tx_key_dah 0 // if defined, goes active for dah (any transmitter) - customized with tx_key_dit_and_dah_pins_active_state and tx_key_dit_and_dah_pins_inactive_state
|
||||||
|
|
||||||
|
#define potentiometer_enable_pin 0 // if defined, the potentiometer will be enabled only when this pin is held low; set to 0 to ignore this pin
|
||||||
|
|
||||||
|
#ifdef FEATURE_BUTTONS
|
||||||
|
#define analog_buttons_pin A1
|
||||||
|
#define command_mode_active_led 0
|
||||||
|
#endif //FEATURE_BUTTONS
|
||||||
|
|
||||||
|
/*
|
||||||
|
FEATURE_SIDETONE_SWITCH
|
||||||
|
Enabling this feature and an external toggle switch adds switch control for playing cw sidetone.
|
||||||
|
ST Switch status is displayed in the status command. This feature will override the software control of the sidetone (\o).
|
||||||
|
Arduino pin is assigned by SIDETONE_SWITCH
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifdef FEATURE_SIDETONE_SWITCH
|
||||||
|
#define SIDETONE_SWITCH 8
|
||||||
|
#endif //FEATURE_SIDETONE_SWITCH
|
||||||
|
|
||||||
|
|
||||||
|
//lcd pins
|
||||||
|
#if defined(FEATURE_LCD_4BIT) || defined(FEATURE_LCD_8BIT)
|
||||||
|
#define lcd_rs A2
|
||||||
|
#define lcd_enable 10 // pin 10 is used by Ethernet shield and will conflict with that
|
||||||
|
#define lcd_d4 6
|
||||||
|
#define lcd_d5 7
|
||||||
|
#define lcd_d6 8
|
||||||
|
#define lcd_d7 9
|
||||||
|
#endif //FEATURE_LCD_4BIT || defined(FEATURE_LCD_8BIT)
|
||||||
|
|
||||||
|
#if defined(FEATURE_LCD_8BIT) // addition four data lines for 8 bit LCD control
|
||||||
|
#define lcd_d0 20
|
||||||
|
#define lcd_d1 21
|
||||||
|
#define lcd_d2 22
|
||||||
|
#define lcd_d3 23
|
||||||
|
#endif //FEATURE_LCD_4BIT || defined(FEATURE_LCD_8BIT)
|
||||||
|
|
||||||
|
#ifdef FEATURE_LCD1602_N07DH
|
||||||
|
#define lcd_rs 8
|
||||||
|
#define lcd_enable 9
|
||||||
|
#define lcd_d4 4
|
||||||
|
#define lcd_d5 5
|
||||||
|
#define lcd_d6 6
|
||||||
|
#define lcd_d7 7
|
||||||
|
#endif //FEATURE_LCD1602_N07DH
|
||||||
|
|
||||||
|
//ps2 keyboard pins
|
||||||
|
#ifdef FEATURE_PS2_KEYBOARD
|
||||||
|
#define ps2_keyboard_data A3
|
||||||
|
#define ps2_keyboard_clock 3 // this must be on an interrupt capable pin!
|
||||||
|
#endif //FEATURE_PS2_KEYBOARD
|
||||||
|
|
||||||
|
// rotary encoder pins and options - rotary encoder code from Jim Balls M0CKE
|
||||||
|
#ifdef FEATURE_ROTARY_ENCODER
|
||||||
|
#define OPTION_ENCODER_HALF_STEP_MODE // Half-step mode?
|
||||||
|
#define rotary_pin1 0 // CW Encoder Pin
|
||||||
|
#define rotary_pin2 0 // CCW Encoder Pin
|
||||||
|
#define OPTION_ENCODER_ENABLE_PULLUPS // define to enable weak pullups.
|
||||||
|
#endif //FEATURE_ROTARY_ENCODER
|
||||||
|
|
||||||
|
#ifdef FEATURE_LED_RING
|
||||||
|
#define led_ring_sdi A10 //2 //Data
|
||||||
|
#define led_ring_clk A9 //3 //Clock
|
||||||
|
#define led_ring_le A8 //4 //Latch
|
||||||
|
#endif //FEATURE_LED_RING
|
||||||
|
|
||||||
|
#define correct_answer_led 0
|
||||||
|
#define wrong_answer_led 0
|
||||||
|
|
||||||
|
#ifdef FEATURE_PTT_INTERLOCK
|
||||||
|
#define ptt_interlock 0 // this pin disables PTT and TX KEY
|
||||||
|
#endif //FEATURE_PTT_INTERLOCK
|
||||||
|
|
||||||
|
#ifdef FEATURE_STRAIGHT_KEY
|
||||||
|
#define pin_straight_key 52
|
||||||
|
#endif //FEATURE_STRAIGHT_KEY
|
||||||
|
|
||||||
|
// FEATURE_CW_DECODER & OPTION_CW_DECODER_GOERTZEL_AUDIO_DETECTOR
|
||||||
|
// See https://github.com/k3ng/k3ng_cw_keyer/wiki/385-Feature:-CW-Decoder for details
|
||||||
|
#define cw_decoder_pin 0 // This is for use with external decoding hardware
|
||||||
|
#define cw_decoder_audio_input_pin 0 // This is for audio detection decoding using OPTION_CW_DECODER_GOERTZEL_AUDIO_DETECTOR; this must be an analog pin!
|
||||||
|
#define cw_decoder_indicator 0 // Output - goes HIGH when cw tone is detected by OPTION_CW_DECODER_GOERTZEL_AUDIO_DETECTOR
|
||||||
|
|
||||||
|
|
||||||
|
#if defined(FEATURE_COMPETITION_COMPRESSION_DETECTION)
|
||||||
|
#define compression_detection_pin 13
|
||||||
|
#endif //FEATURE_COMPETITION_COMPRESSION_DETECTION
|
||||||
|
|
||||||
|
#if defined(FEATURE_SLEEP)
|
||||||
|
#define keyer_awake 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_LCD_BACKLIGHT_AUTO_DIM)
|
||||||
|
#define keyer_power_led 0 // must be a PWM-capable pin
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_CAPACITIVE_PADDLE_PINS)
|
||||||
|
#define capactive_paddle_pin_inhibit_pin 0 // if this pin is defined and is set high, the capacitive paddle pins will switch to normal (non-capacitive) sensing mode
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef FEATURE_4x4_KEYPAD
|
||||||
|
#define Row3 33
|
||||||
|
#define Row2 32
|
||||||
|
#define Row1 31
|
||||||
|
#define Row0 30
|
||||||
|
#define Col3 37
|
||||||
|
#define Col2 36
|
||||||
|
#define Col1 35
|
||||||
|
#define Col0 34
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef FEATURE_3x4_KEYPAD
|
||||||
|
#define Row3 33
|
||||||
|
#define Row2 32
|
||||||
|
#define Row1 31
|
||||||
|
#define Row0 30
|
||||||
|
#define Col2 36
|
||||||
|
#define Col1 35
|
||||||
|
#define Col0 34
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef FEATURE_SEQUENCER
|
||||||
|
#define sequencer_1_pin 40
|
||||||
|
#define sequencer_2_pin 41
|
||||||
|
#define sequencer_3_pin 42
|
||||||
|
#define sequencer_4_pin 43
|
||||||
|
#define sequencer_5_pin 44
|
||||||
|
#endif //FEATURE_SEQUENCER
|
||||||
|
|
||||||
|
#define ptt_input_pin 0
|
||||||
|
|
||||||
|
#define tx_inhibit_pin 0
|
||||||
|
#define tx_pause_pin 0
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
#error "Multiple pin_settings.h files included somehow..."
|
||||||
|
|
||||||
|
#endif //keyer_pin_settings_h
|
||||||
|
|
157
k3ng_keyer/keyer_pin_settings_mortty_regular.h
Executable file
157
k3ng_keyer/keyer_pin_settings_mortty_regular.h
Executable file
|
@ -0,0 +1,157 @@
|
||||||
|
/* Pins - you must review these and configure ! */
|
||||||
|
#ifndef keyer_pin_settings_h
|
||||||
|
#define keyer_pin_settings_h
|
||||||
|
|
||||||
|
#define paddle_left 2
|
||||||
|
#define paddle_right 5
|
||||||
|
#define tx_key_line_1 11 // (high = key down/tx on)
|
||||||
|
#define tx_key_line_2 12
|
||||||
|
#define tx_key_line_3 0
|
||||||
|
#define tx_key_line_4 0
|
||||||
|
#define tx_key_line_5 0
|
||||||
|
#define tx_key_line_6 0
|
||||||
|
#define sidetone_line 4 // connect a speaker for sidetone
|
||||||
|
#define potentiometer A0 // Speed potentiometer (0 to 5 V) Use pot from 1k to 10k
|
||||||
|
#define ptt_tx_1 13 // PTT ("push to talk") lines
|
||||||
|
#define ptt_tx_2 0 // Can be used for keying fox transmitter, T/R switch, or keying slow boatanchors
|
||||||
|
#define ptt_tx_3 0 // These are optional - set to 0 if unused
|
||||||
|
#define ptt_tx_4 0
|
||||||
|
#define ptt_tx_5 0
|
||||||
|
#define ptt_tx_6 0
|
||||||
|
#define tx_key_dit 0 // if defined, goes active for dit (any transmitter) - customized with tx_key_dit_and_dah_pins_active_state and tx_key_dit_and_dah_pins_inactive_state
|
||||||
|
#define tx_key_dah 0 // if defined, goes active for dah (any transmitter) - customized with tx_key_dit_and_dah_pins_active_state and tx_key_dit_and_dah_pins_inactive_state
|
||||||
|
#define potentiometer_enable_pin 0 // if defined, the potentiometer will be enabled only when this pin is held low; set to 0 to ignore this pin
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef FEATURE_BUTTONS
|
||||||
|
#define analog_buttons_pin A1
|
||||||
|
#define command_mode_active_led 0
|
||||||
|
#endif //FEATURE_BUTTONS
|
||||||
|
|
||||||
|
/*
|
||||||
|
FEATURE_SIDETONE_SWITCH
|
||||||
|
Enabling this feature and an external toggle switch adds switch control for playing cw sidetone.
|
||||||
|
ST Switch status is displayed in the status command. This feature will override the software control of the sidetone (\o).
|
||||||
|
Arduino pin is assigned by SIDETONE_SWITCH
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifdef FEATURE_SIDETONE_SWITCH
|
||||||
|
#define SIDETONE_SWITCH 8
|
||||||
|
#endif //FEATURE_SIDETONE_SWITCH
|
||||||
|
|
||||||
|
|
||||||
|
//lcd pins
|
||||||
|
#ifdef FEATURE_LCD_4BIT
|
||||||
|
#define lcd_rs A2
|
||||||
|
#define lcd_enable 10
|
||||||
|
#define lcd_d4 6
|
||||||
|
#define lcd_d5 7
|
||||||
|
#define lcd_d6 8
|
||||||
|
#define lcd_d7 9
|
||||||
|
#endif //FEATURE_LCD_4BIT
|
||||||
|
|
||||||
|
#ifdef FEATURE_LCD1602_N07DH
|
||||||
|
#define lcd_rs 8
|
||||||
|
#define lcd_enable 9
|
||||||
|
#define lcd_d4 4
|
||||||
|
#define lcd_d5 5
|
||||||
|
#define lcd_d6 6
|
||||||
|
#define lcd_d7 7
|
||||||
|
#endif //FEATURE_LCD1602_N07DH
|
||||||
|
|
||||||
|
//ps2 keyboard pins
|
||||||
|
#ifdef FEATURE_PS2_KEYBOARD
|
||||||
|
#define ps2_keyboard_data A3
|
||||||
|
#define ps2_keyboard_clock 3 // this must be on an interrupt capable pin!
|
||||||
|
#endif //FEATURE_PS2_KEYBOARD
|
||||||
|
|
||||||
|
// rotary encoder pins and options - rotary encoder code from Jim Balls M0CKE
|
||||||
|
#ifdef FEATURE_ROTARY_ENCODER
|
||||||
|
#define OPTION_ENCODER_HALF_STEP_MODE // Half-step mode?
|
||||||
|
#define rotary_pin1 0 // CW Encoder Pin
|
||||||
|
#define rotary_pin2 0 // CCW Encoder Pin
|
||||||
|
#define OPTION_ENCODER_ENABLE_PULLUPS // define to enable weak pullups.
|
||||||
|
#endif //FEATURE_ROTARY_ENCODER
|
||||||
|
|
||||||
|
#ifdef FEATURE_LED_RING
|
||||||
|
#define led_ring_sdi A10 //2 //Data
|
||||||
|
#define led_ring_clk A9 //3 //Clock
|
||||||
|
#define led_ring_le A8 //4 //Latch
|
||||||
|
#endif //FEATURE_LED_RING
|
||||||
|
|
||||||
|
#define correct_answer_led 0
|
||||||
|
#define wrong_answer_led 0
|
||||||
|
|
||||||
|
#ifdef FEATURE_PTT_INTERLOCK
|
||||||
|
#define ptt_interlock 0 // this pin disables PTT and TX KEY
|
||||||
|
#endif //FEATURE_PTT_INTERLOCK
|
||||||
|
|
||||||
|
#ifdef FEATURE_STRAIGHT_KEY
|
||||||
|
#define pin_straight_key 52
|
||||||
|
#endif //FEATURE_STRAIGHT_KEY
|
||||||
|
|
||||||
|
// FEATURE_CW_DECODER & OPTION_CW_DECODER_GOERTZEL_AUDIO_DETECTOR
|
||||||
|
// See https://github.com/k3ng/k3ng_cw_keyer/wiki/385-Feature:-CW-Decoder for details
|
||||||
|
#define cw_decoder_pin 0 // This is for use with external decoding hardware
|
||||||
|
#define cw_decoder_audio_input_pin 0 // This is for audio detection decoding using OPTION_CW_DECODER_GOERTZEL_AUDIO_DETECTOR; this must be an analog pin!
|
||||||
|
#define cw_decoder_indicator 0 // Output - goes HIGH when cw tone is detected by OPTION_CW_DECODER_GOERTZEL_AUDIO_DETECTOR
|
||||||
|
|
||||||
|
|
||||||
|
#if defined(FEATURE_COMPETITION_COMPRESSION_DETECTION)
|
||||||
|
#define compression_detection_pin 13
|
||||||
|
#endif //FEATURE_COMPETITION_COMPRESSION_DETECTION
|
||||||
|
|
||||||
|
#if defined(FEATURE_SLEEP)
|
||||||
|
#define keyer_awake 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_LCD_BACKLIGHT_AUTO_DIM)
|
||||||
|
#define keyer_power_led 0 // must be a PWM-capable pin
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_CAPACITIVE_PADDLE_PINS)
|
||||||
|
#define capactive_paddle_pin_inhibit_pin 0 // if this pin is defined and is set high, the capacitive paddle pins will switch to normal (non-capacitive) sensing mode
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef FEATURE_4x4_KEYPAD
|
||||||
|
#define Row3 33
|
||||||
|
#define Row2 32
|
||||||
|
#define Row1 31
|
||||||
|
#define Row0 30
|
||||||
|
#define Col3 37
|
||||||
|
#define Col2 36
|
||||||
|
#define Col1 35
|
||||||
|
#define Col0 34
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef FEATURE_3x4_KEYPAD
|
||||||
|
#define Row3 33
|
||||||
|
#define Row2 32
|
||||||
|
#define Row1 31
|
||||||
|
#define Row0 30
|
||||||
|
#define Col2 36
|
||||||
|
#define Col1 35
|
||||||
|
#define Col0 34
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef FEATURE_SEQUENCER
|
||||||
|
#define sequencer_1_pin 40
|
||||||
|
#define sequencer_2_pin 41
|
||||||
|
#define sequencer_3_pin 42
|
||||||
|
#define sequencer_4_pin 43
|
||||||
|
#define sequencer_5_pin 44
|
||||||
|
#endif //FEATURE_SEQUENCER
|
||||||
|
|
||||||
|
#define ptt_input_pin 0
|
||||||
|
|
||||||
|
#define tx_inhibit_pin 0
|
||||||
|
#define tx_pause_pin 0
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
#error "Multiple pin_settings.h files included somehow..."
|
||||||
|
|
||||||
|
#endif //keyer_pin_settings_h
|
||||||
|
|
||||||
|
|
||||||
|
|
155
k3ng_keyer/keyer_pin_settings_mortty_regular_with_potentiometer.h
Executable file
155
k3ng_keyer/keyer_pin_settings_mortty_regular_with_potentiometer.h
Executable file
|
@ -0,0 +1,155 @@
|
||||||
|
/* Pins - you must review these and configure ! */
|
||||||
|
#ifndef keyer_pin_settings_h
|
||||||
|
#define keyer_pin_settings_h
|
||||||
|
|
||||||
|
#define paddle_left 2
|
||||||
|
#define paddle_right 5
|
||||||
|
#define tx_key_line_1 11 // (high = key down/tx on)
|
||||||
|
#define tx_key_line_2 12
|
||||||
|
#define tx_key_line_3 0
|
||||||
|
#define tx_key_line_4 0
|
||||||
|
#define tx_key_line_5 0
|
||||||
|
#define tx_key_line_6 0
|
||||||
|
#define sidetone_line 4 // connect a speaker for sidetone
|
||||||
|
#define potentiometer A0 // Speed potentiometer (0 to 5 V) Use pot from 1k to 10k
|
||||||
|
#define ptt_tx_1 13 // PTT ("push to talk") lines
|
||||||
|
#define ptt_tx_2 0 // Can be used for keying fox transmitter, T/R switch, or keying slow boatanchors
|
||||||
|
#define ptt_tx_3 0 // These are optional - set to 0 if unused
|
||||||
|
#define ptt_tx_4 0
|
||||||
|
#define ptt_tx_5 0
|
||||||
|
#define ptt_tx_6 0
|
||||||
|
#define tx_key_dit 0 // if defined, goes active for dit (any transmitter) - customized with tx_key_dit_and_dah_pins_active_state and tx_key_dit_and_dah_pins_inactive_state
|
||||||
|
#define tx_key_dah 0 // if defined, goes active for dah (any transmitter) - customized with tx_key_dit_and_dah_pins_active_state and tx_key_dit_and_dah_pins_inactive_state
|
||||||
|
#define potentiometer_enable_pin 0 // if defined, the potentiometer will be enabled only when this pin is held low; set to 0 to ignore this pin
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef FEATURE_BUTTONS
|
||||||
|
#define analog_buttons_pin A1
|
||||||
|
#define command_mode_active_led 0
|
||||||
|
#endif //FEATURE_BUTTONS
|
||||||
|
|
||||||
|
/*
|
||||||
|
FEATURE_SIDETONE_SWITCH
|
||||||
|
Enabling this feature and an external toggle switch adds switch control for playing cw sidetone.
|
||||||
|
ST Switch status is displayed in the status command. This feature will override the software control of the sidetone (\o).
|
||||||
|
Arduino pin is assigned by SIDETONE_SWITCH
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifdef FEATURE_SIDETONE_SWITCH
|
||||||
|
#define SIDETONE_SWITCH 8
|
||||||
|
#endif //FEATURE_SIDETONE_SWITCH
|
||||||
|
|
||||||
|
|
||||||
|
//lcd pins
|
||||||
|
#ifdef FEATURE_LCD_4BIT
|
||||||
|
#define lcd_rs A2
|
||||||
|
#define lcd_enable 10
|
||||||
|
#define lcd_d4 6
|
||||||
|
#define lcd_d5 7
|
||||||
|
#define lcd_d6 8
|
||||||
|
#define lcd_d7 9
|
||||||
|
#endif //FEATURE_LCD_4BIT
|
||||||
|
|
||||||
|
#ifdef FEATURE_LCD1602_N07DH
|
||||||
|
#define lcd_rs 8
|
||||||
|
#define lcd_enable 9
|
||||||
|
#define lcd_d4 4
|
||||||
|
#define lcd_d5 5
|
||||||
|
#define lcd_d6 6
|
||||||
|
#define lcd_d7 7
|
||||||
|
#endif //FEATURE_LCD1602_N07DH
|
||||||
|
|
||||||
|
//ps2 keyboard pins
|
||||||
|
#ifdef FEATURE_PS2_KEYBOARD
|
||||||
|
#define ps2_keyboard_data A3
|
||||||
|
#define ps2_keyboard_clock 3 // this must be on an interrupt capable pin!
|
||||||
|
#endif //FEATURE_PS2_KEYBOARD
|
||||||
|
|
||||||
|
// rotary encoder pins and options - rotary encoder code from Jim Balls M0CKE
|
||||||
|
#ifdef FEATURE_ROTARY_ENCODER
|
||||||
|
#define OPTION_ENCODER_HALF_STEP_MODE // Half-step mode?
|
||||||
|
#define rotary_pin1 0 // CW Encoder Pin
|
||||||
|
#define rotary_pin2 0 // CCW Encoder Pin
|
||||||
|
#define OPTION_ENCODER_ENABLE_PULLUPS // define to enable weak pullups.
|
||||||
|
#endif //FEATURE_ROTARY_ENCODER
|
||||||
|
|
||||||
|
#ifdef FEATURE_LED_RING
|
||||||
|
#define led_ring_sdi A10 //2 //Data
|
||||||
|
#define led_ring_clk A9 //3 //Clock
|
||||||
|
#define led_ring_le A8 //4 //Latch
|
||||||
|
#endif //FEATURE_LED_RING
|
||||||
|
|
||||||
|
#define correct_answer_led 0
|
||||||
|
#define wrong_answer_led 0
|
||||||
|
|
||||||
|
#ifdef FEATURE_PTT_INTERLOCK
|
||||||
|
#define ptt_interlock 0 // this pin disables PTT and TX KEY
|
||||||
|
#endif //FEATURE_PTT_INTERLOCK
|
||||||
|
|
||||||
|
#ifdef FEATURE_STRAIGHT_KEY
|
||||||
|
#define pin_straight_key 52
|
||||||
|
#endif //FEATURE_STRAIGHT_KEY
|
||||||
|
|
||||||
|
// FEATURE_CW_DECODER & OPTION_CW_DECODER_GOERTZEL_AUDIO_DETECTOR
|
||||||
|
// See https://github.com/k3ng/k3ng_cw_keyer/wiki/385-Feature:-CW-Decoder for details
|
||||||
|
#define cw_decoder_pin 0 // This is for use with external decoding hardware
|
||||||
|
#define cw_decoder_audio_input_pin 0 // This is for audio detection decoding using OPTION_CW_DECODER_GOERTZEL_AUDIO_DETECTOR; this must be an analog pin!
|
||||||
|
#define cw_decoder_indicator 0 // Output - goes HIGH when cw tone is detected by OPTION_CW_DECODER_GOERTZEL_AUDIO_DETECTOR
|
||||||
|
|
||||||
|
|
||||||
|
#if defined(FEATURE_COMPETITION_COMPRESSION_DETECTION)
|
||||||
|
#define compression_detection_pin 13
|
||||||
|
#endif //FEATURE_COMPETITION_COMPRESSION_DETECTION
|
||||||
|
|
||||||
|
#if defined(FEATURE_SLEEP)
|
||||||
|
#define keyer_awake 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_LCD_BACKLIGHT_AUTO_DIM)
|
||||||
|
#define keyer_power_led 0 // must be a PWM-capable pin
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_CAPACITIVE_PADDLE_PINS)
|
||||||
|
#define capactive_paddle_pin_inhibit_pin 0 // if this pin is defined and is set high, the capacitive paddle pins will switch to normal (non-capacitive) sensing mode
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef FEATURE_4x4_KEYPAD
|
||||||
|
#define Row3 33
|
||||||
|
#define Row2 32
|
||||||
|
#define Row1 31
|
||||||
|
#define Row0 30
|
||||||
|
#define Col3 37
|
||||||
|
#define Col2 36
|
||||||
|
#define Col1 35
|
||||||
|
#define Col0 34
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef FEATURE_3x4_KEYPAD
|
||||||
|
#define Row3 33
|
||||||
|
#define Row2 32
|
||||||
|
#define Row1 31
|
||||||
|
#define Row0 30
|
||||||
|
#define Col2 36
|
||||||
|
#define Col1 35
|
||||||
|
#define Col0 34
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef FEATURE_SEQUENCER
|
||||||
|
#define sequencer_1_pin 40
|
||||||
|
#define sequencer_2_pin 41
|
||||||
|
#define sequencer_3_pin 42
|
||||||
|
#define sequencer_4_pin 43
|
||||||
|
#define sequencer_5_pin 44
|
||||||
|
#endif //FEATURE_SEQUENCER
|
||||||
|
|
||||||
|
#define ptt_input_pin 0
|
||||||
|
|
||||||
|
#define tx_inhibit_pin 0
|
||||||
|
#define tx_pause_pin 0
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
#error "Multiple pin_settings.h files included somehow..."
|
||||||
|
|
||||||
|
#endif //keyer_pin_settings_h
|
||||||
|
|
155
k3ng_keyer/keyer_pin_settings_mortty_so2r.h
Executable file
155
k3ng_keyer/keyer_pin_settings_mortty_so2r.h
Executable file
|
@ -0,0 +1,155 @@
|
||||||
|
/* Pins - you must review these and configure ! */
|
||||||
|
#ifndef keyer_pin_settings_h
|
||||||
|
#define keyer_pin_settings_h
|
||||||
|
|
||||||
|
#define paddle_left 2
|
||||||
|
#define paddle_right 5
|
||||||
|
#define tx_key_line_1 11 // (high = key down/tx on)
|
||||||
|
#define tx_key_line_2 13
|
||||||
|
#define tx_key_line_3 0
|
||||||
|
#define tx_key_line_4 0
|
||||||
|
#define tx_key_line_5 0
|
||||||
|
#define tx_key_line_6 0
|
||||||
|
#define sidetone_line 4 // connect a speaker for sidetone
|
||||||
|
#define potentiometer A0 // Speed potentiometer (0 to 5 V) Use pot from 1k to 10k
|
||||||
|
#define ptt_tx_1 0 // PTT ("push to talk") lines
|
||||||
|
#define ptt_tx_2 0 // Can be used for keying fox transmitter, T/R switch, or keying slow boatanchors
|
||||||
|
#define ptt_tx_3 0 // These are optional - set to 0 if unused
|
||||||
|
#define ptt_tx_4 0
|
||||||
|
#define ptt_tx_5 0
|
||||||
|
#define ptt_tx_6 0
|
||||||
|
#define tx_key_dit 0 // if defined, goes active for dit (any transmitter) - customized with tx_key_dit_and_dah_pins_active_state and tx_key_dit_and_dah_pins_inactive_state
|
||||||
|
#define tx_key_dah 0 // if defined, goes active for dah (any transmitter) - customized with tx_key_dit_and_dah_pins_active_state and tx_key_dit_and_dah_pins_inactive_state
|
||||||
|
#define potentiometer_enable_pin 0 // if defined, the potentiometer will be enabled only when this pin is held low; set to 0 to ignore this pin
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef FEATURE_BUTTONS
|
||||||
|
#define analog_buttons_pin A1
|
||||||
|
#define command_mode_active_led 0
|
||||||
|
#endif //FEATURE_BUTTONS
|
||||||
|
|
||||||
|
/*
|
||||||
|
FEATURE_SIDETONE_SWITCH
|
||||||
|
Enabling this feature and an external toggle switch adds switch control for playing cw sidetone.
|
||||||
|
ST Switch status is displayed in the status command. This feature will override the software control of the sidetone (\o).
|
||||||
|
Arduino pin is assigned by SIDETONE_SWITCH
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifdef FEATURE_SIDETONE_SWITCH
|
||||||
|
#define SIDETONE_SWITCH 8
|
||||||
|
#endif //FEATURE_SIDETONE_SWITCH
|
||||||
|
|
||||||
|
|
||||||
|
//lcd pins
|
||||||
|
#ifdef FEATURE_LCD_4BIT
|
||||||
|
#define lcd_rs A2
|
||||||
|
#define lcd_enable 10
|
||||||
|
#define lcd_d4 6
|
||||||
|
#define lcd_d5 7
|
||||||
|
#define lcd_d6 8
|
||||||
|
#define lcd_d7 9
|
||||||
|
#endif //FEATURE_LCD_4BIT
|
||||||
|
|
||||||
|
#ifdef FEATURE_LCD1602_N07DH
|
||||||
|
#define lcd_rs 8
|
||||||
|
#define lcd_enable 9
|
||||||
|
#define lcd_d4 4
|
||||||
|
#define lcd_d5 5
|
||||||
|
#define lcd_d6 6
|
||||||
|
#define lcd_d7 7
|
||||||
|
#endif //FEATURE_LCD1602_N07DH
|
||||||
|
|
||||||
|
//ps2 keyboard pins
|
||||||
|
#ifdef FEATURE_PS2_KEYBOARD
|
||||||
|
#define ps2_keyboard_data A3
|
||||||
|
#define ps2_keyboard_clock 3 // this must be on an interrupt capable pin!
|
||||||
|
#endif //FEATURE_PS2_KEYBOARD
|
||||||
|
|
||||||
|
// rotary encoder pins and options - rotary encoder code from Jim Balls M0CKE
|
||||||
|
#ifdef FEATURE_ROTARY_ENCODER
|
||||||
|
#define OPTION_ENCODER_HALF_STEP_MODE // Half-step mode?
|
||||||
|
#define rotary_pin1 0 // CW Encoder Pin
|
||||||
|
#define rotary_pin2 0 // CCW Encoder Pin
|
||||||
|
#define OPTION_ENCODER_ENABLE_PULLUPS // define to enable weak pullups.
|
||||||
|
#endif //FEATURE_ROTARY_ENCODER
|
||||||
|
|
||||||
|
#ifdef FEATURE_LED_RING
|
||||||
|
#define led_ring_sdi A10 //2 //Data
|
||||||
|
#define led_ring_clk A9 //3 //Clock
|
||||||
|
#define led_ring_le A8 //4 //Latch
|
||||||
|
#endif //FEATURE_LED_RING
|
||||||
|
|
||||||
|
#define correct_answer_led 0
|
||||||
|
#define wrong_answer_led 0
|
||||||
|
|
||||||
|
#ifdef FEATURE_PTT_INTERLOCK
|
||||||
|
#define ptt_interlock 0 // this pin disables PTT and TX KEY
|
||||||
|
#endif //FEATURE_PTT_INTERLOCK
|
||||||
|
|
||||||
|
#ifdef FEATURE_STRAIGHT_KEY
|
||||||
|
#define pin_straight_key 52
|
||||||
|
#endif //FEATURE_STRAIGHT_KEY
|
||||||
|
|
||||||
|
// FEATURE_CW_DECODER & OPTION_CW_DECODER_GOERTZEL_AUDIO_DETECTOR
|
||||||
|
// See https://github.com/k3ng/k3ng_cw_keyer/wiki/385-Feature:-CW-Decoder for details
|
||||||
|
#define cw_decoder_pin 0 // This is for use with external decoding hardware
|
||||||
|
#define cw_decoder_audio_input_pin 0 // This is for audio detection decoding using OPTION_CW_DECODER_GOERTZEL_AUDIO_DETECTOR; this must be an analog pin!
|
||||||
|
#define cw_decoder_indicator 0 // Output - goes HIGH when cw tone is detected by OPTION_CW_DECODER_GOERTZEL_AUDIO_DETECTOR
|
||||||
|
|
||||||
|
|
||||||
|
#if defined(FEATURE_COMPETITION_COMPRESSION_DETECTION)
|
||||||
|
#define compression_detection_pin 13
|
||||||
|
#endif //FEATURE_COMPETITION_COMPRESSION_DETECTION
|
||||||
|
|
||||||
|
#if defined(FEATURE_SLEEP)
|
||||||
|
#define keyer_awake 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_LCD_BACKLIGHT_AUTO_DIM)
|
||||||
|
#define keyer_power_led 0 // must be a PWM-capable pin
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_CAPACITIVE_PADDLE_PINS)
|
||||||
|
#define capactive_paddle_pin_inhibit_pin 0 // if this pin is defined and is set high, the capacitive paddle pins will switch to normal (non-capacitive) sensing mode
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef FEATURE_4x4_KEYPAD
|
||||||
|
#define Row3 33
|
||||||
|
#define Row2 32
|
||||||
|
#define Row1 31
|
||||||
|
#define Row0 30
|
||||||
|
#define Col3 37
|
||||||
|
#define Col2 36
|
||||||
|
#define Col1 35
|
||||||
|
#define Col0 34
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef FEATURE_3x4_KEYPAD
|
||||||
|
#define Row3 33
|
||||||
|
#define Row2 32
|
||||||
|
#define Row1 31
|
||||||
|
#define Row0 30
|
||||||
|
#define Col2 36
|
||||||
|
#define Col1 35
|
||||||
|
#define Col0 34
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef FEATURE_SEQUENCER
|
||||||
|
#define sequencer_1_pin 40
|
||||||
|
#define sequencer_2_pin 41
|
||||||
|
#define sequencer_3_pin 42
|
||||||
|
#define sequencer_4_pin 43
|
||||||
|
#define sequencer_5_pin 44
|
||||||
|
#endif //FEATURE_SEQUENCER
|
||||||
|
|
||||||
|
#define ptt_input_pin 0
|
||||||
|
|
||||||
|
#define tx_inhibit_pin 0
|
||||||
|
#define tx_pause_pin 0
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
#error "Multiple pin_settings.h files included somehow..."
|
||||||
|
|
||||||
|
#endif //keyer_pin_settings_h
|
||||||
|
|
155
k3ng_keyer/keyer_pin_settings_mortty_so2r_with_potentiometer.h
Executable file
155
k3ng_keyer/keyer_pin_settings_mortty_so2r_with_potentiometer.h
Executable file
|
@ -0,0 +1,155 @@
|
||||||
|
/* Pins - you must review these and configure ! */
|
||||||
|
#ifndef keyer_pin_settings_h
|
||||||
|
#define keyer_pin_settings_h
|
||||||
|
|
||||||
|
#define paddle_left 2
|
||||||
|
#define paddle_right 5
|
||||||
|
#define tx_key_line_1 11 // (high = key down/tx on)
|
||||||
|
#define tx_key_line_2 13
|
||||||
|
#define tx_key_line_3 0
|
||||||
|
#define tx_key_line_4 0
|
||||||
|
#define tx_key_line_5 0
|
||||||
|
#define tx_key_line_6 0
|
||||||
|
#define sidetone_line 4 // connect a speaker for sidetone
|
||||||
|
#define potentiometer A0 // Speed potentiometer (0 to 5 V) Use pot from 1k to 10k
|
||||||
|
#define ptt_tx_1 0 // PTT ("push to talk") lines
|
||||||
|
#define ptt_tx_2 0 // Can be used for keying fox transmitter, T/R switch, or keying slow boatanchors
|
||||||
|
#define ptt_tx_3 0 // These are optional - set to 0 if unused
|
||||||
|
#define ptt_tx_4 0
|
||||||
|
#define ptt_tx_5 0
|
||||||
|
#define ptt_tx_6 0
|
||||||
|
#define tx_key_dit 0 // if defined, goes active for dit (any transmitter) - customized with tx_key_dit_and_dah_pins_active_state and tx_key_dit_and_dah_pins_inactive_state
|
||||||
|
#define tx_key_dah 0 // if defined, goes active for dah (any transmitter) - customized with tx_key_dit_and_dah_pins_active_state and tx_key_dit_and_dah_pins_inactive_state
|
||||||
|
#define potentiometer_enable_pin 0 // if defined, the potentiometer will be enabled only when this pin is held low; set to 0 to ignore this pin
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef FEATURE_BUTTONS
|
||||||
|
#define analog_buttons_pin A1
|
||||||
|
#define command_mode_active_led 0
|
||||||
|
#endif //FEATURE_BUTTONS
|
||||||
|
|
||||||
|
/*
|
||||||
|
FEATURE_SIDETONE_SWITCH
|
||||||
|
Enabling this feature and an external toggle switch adds switch control for playing cw sidetone.
|
||||||
|
ST Switch status is displayed in the status command. This feature will override the software control of the sidetone (\o).
|
||||||
|
Arduino pin is assigned by SIDETONE_SWITCH
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifdef FEATURE_SIDETONE_SWITCH
|
||||||
|
#define SIDETONE_SWITCH 8
|
||||||
|
#endif //FEATURE_SIDETONE_SWITCH
|
||||||
|
|
||||||
|
|
||||||
|
//lcd pins
|
||||||
|
#ifdef FEATURE_LCD_4BIT
|
||||||
|
#define lcd_rs A2
|
||||||
|
#define lcd_enable 10
|
||||||
|
#define lcd_d4 6
|
||||||
|
#define lcd_d5 7
|
||||||
|
#define lcd_d6 8
|
||||||
|
#define lcd_d7 9
|
||||||
|
#endif //FEATURE_LCD_4BIT
|
||||||
|
|
||||||
|
#ifdef FEATURE_LCD1602_N07DH
|
||||||
|
#define lcd_rs 8
|
||||||
|
#define lcd_enable 9
|
||||||
|
#define lcd_d4 4
|
||||||
|
#define lcd_d5 5
|
||||||
|
#define lcd_d6 6
|
||||||
|
#define lcd_d7 7
|
||||||
|
#endif //FEATURE_LCD1602_N07DH
|
||||||
|
|
||||||
|
//ps2 keyboard pins
|
||||||
|
#ifdef FEATURE_PS2_KEYBOARD
|
||||||
|
#define ps2_keyboard_data A3
|
||||||
|
#define ps2_keyboard_clock 3 // this must be on an interrupt capable pin!
|
||||||
|
#endif //FEATURE_PS2_KEYBOARD
|
||||||
|
|
||||||
|
// rotary encoder pins and options - rotary encoder code from Jim Balls M0CKE
|
||||||
|
#ifdef FEATURE_ROTARY_ENCODER
|
||||||
|
#define OPTION_ENCODER_HALF_STEP_MODE // Half-step mode?
|
||||||
|
#define rotary_pin1 0 // CW Encoder Pin
|
||||||
|
#define rotary_pin2 0 // CCW Encoder Pin
|
||||||
|
#define OPTION_ENCODER_ENABLE_PULLUPS // define to enable weak pullups.
|
||||||
|
#endif //FEATURE_ROTARY_ENCODER
|
||||||
|
|
||||||
|
#ifdef FEATURE_LED_RING
|
||||||
|
#define led_ring_sdi A10 //2 //Data
|
||||||
|
#define led_ring_clk A9 //3 //Clock
|
||||||
|
#define led_ring_le A8 //4 //Latch
|
||||||
|
#endif //FEATURE_LED_RING
|
||||||
|
|
||||||
|
#define correct_answer_led 0
|
||||||
|
#define wrong_answer_led 0
|
||||||
|
|
||||||
|
#ifdef FEATURE_PTT_INTERLOCK
|
||||||
|
#define ptt_interlock 0 // this pin disables PTT and TX KEY
|
||||||
|
#endif //FEATURE_PTT_INTERLOCK
|
||||||
|
|
||||||
|
#ifdef FEATURE_STRAIGHT_KEY
|
||||||
|
#define pin_straight_key 52
|
||||||
|
#endif //FEATURE_STRAIGHT_KEY
|
||||||
|
|
||||||
|
// FEATURE_CW_DECODER & OPTION_CW_DECODER_GOERTZEL_AUDIO_DETECTOR
|
||||||
|
// See https://github.com/k3ng/k3ng_cw_keyer/wiki/385-Feature:-CW-Decoder for details
|
||||||
|
#define cw_decoder_pin 0 // This is for use with external decoding hardware
|
||||||
|
#define cw_decoder_audio_input_pin 0 // This is for audio detection decoding using OPTION_CW_DECODER_GOERTZEL_AUDIO_DETECTOR; this must be an analog pin!
|
||||||
|
#define cw_decoder_indicator 0 // Output - goes HIGH when cw tone is detected by OPTION_CW_DECODER_GOERTZEL_AUDIO_DETECTOR
|
||||||
|
|
||||||
|
|
||||||
|
#if defined(FEATURE_COMPETITION_COMPRESSION_DETECTION)
|
||||||
|
#define compression_detection_pin 13
|
||||||
|
#endif //FEATURE_COMPETITION_COMPRESSION_DETECTION
|
||||||
|
|
||||||
|
#if defined(FEATURE_SLEEP)
|
||||||
|
#define keyer_awake 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_LCD_BACKLIGHT_AUTO_DIM)
|
||||||
|
#define keyer_power_led 0 // must be a PWM-capable pin
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_CAPACITIVE_PADDLE_PINS)
|
||||||
|
#define capactive_paddle_pin_inhibit_pin 0 // if this pin is defined and is set high, the capacitive paddle pins will switch to normal (non-capacitive) sensing mode
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef FEATURE_4x4_KEYPAD
|
||||||
|
#define Row3 33
|
||||||
|
#define Row2 32
|
||||||
|
#define Row1 31
|
||||||
|
#define Row0 30
|
||||||
|
#define Col3 37
|
||||||
|
#define Col2 36
|
||||||
|
#define Col1 35
|
||||||
|
#define Col0 34
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef FEATURE_3x4_KEYPAD
|
||||||
|
#define Row3 33
|
||||||
|
#define Row2 32
|
||||||
|
#define Row1 31
|
||||||
|
#define Row0 30
|
||||||
|
#define Col2 36
|
||||||
|
#define Col1 35
|
||||||
|
#define Col0 34
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef FEATURE_SEQUENCER
|
||||||
|
#define sequencer_1_pin 40
|
||||||
|
#define sequencer_2_pin 41
|
||||||
|
#define sequencer_3_pin 42
|
||||||
|
#define sequencer_4_pin 43
|
||||||
|
#define sequencer_5_pin 44
|
||||||
|
#endif //FEATURE_SEQUENCER
|
||||||
|
|
||||||
|
#define ptt_input_pin 0
|
||||||
|
|
||||||
|
#define tx_inhibit_pin 0
|
||||||
|
#define tx_pause_pin 0
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
#error "Multiple pin_settings.h files included somehow..."
|
||||||
|
|
||||||
|
#endif //keyer_pin_settings_h
|
||||||
|
|
96
k3ng_keyer/keyer_pin_settings_nanokeyer_rev_b.h
Executable file
96
k3ng_keyer/keyer_pin_settings_nanokeyer_rev_b.h
Executable file
|
@ -0,0 +1,96 @@
|
||||||
|
#ifndef keyer_pin_settings_h
|
||||||
|
#define keyer_pin_settings_h
|
||||||
|
|
||||||
|
#define paddle_left 2
|
||||||
|
#define paddle_right 5
|
||||||
|
#define tx_key_line_1 11 // (high = key down/tx on)
|
||||||
|
#define tx_key_line_2 13 // Rev A & B nanoKeyer PTT port
|
||||||
|
#define tx_key_line_3 0
|
||||||
|
#define tx_key_line_4 0
|
||||||
|
#define tx_key_line_5 0
|
||||||
|
#define tx_key_line_6 0
|
||||||
|
#define sidetone_line 4 // connect a speaker for sidetone
|
||||||
|
#define potentiometer A7 // Rev A & B nanoKeyer
|
||||||
|
#define ptt_tx_1 0 // PTT ("push to talk") lines
|
||||||
|
//#define ptt_tx_1 13 // nanoKeyer PTT port
|
||||||
|
#define ptt_tx_2 0 // Can be used for keying fox transmitter, T/R switch, or keying slow boatanchors
|
||||||
|
#define ptt_tx_3 0 // These are optional - set to 0 if unused
|
||||||
|
#define ptt_tx_4 0
|
||||||
|
#define ptt_tx_5 0
|
||||||
|
#define ptt_tx_6 0
|
||||||
|
#define analog_buttons_pin A6 // Rev A & B nanokeyer
|
||||||
|
#define lcd_rs A2
|
||||||
|
#define lcd_enable 10
|
||||||
|
#define lcd_d4 6
|
||||||
|
#define lcd_d5 7
|
||||||
|
#define lcd_d6 8
|
||||||
|
#define lcd_d7 9
|
||||||
|
#define ps2_keyboard_data A5 // Rev A & B nanokeyer
|
||||||
|
#define ps2_keyboard_clock 3
|
||||||
|
#define tx_key_dit 0 // if defined, goes active for dit (any transmitter) - customized with tx_key_dit_and_dah_pins_active_state and tx_key_dit_and_dah_pins_inactive_state
|
||||||
|
#define tx_key_dah 0 // if defined, goes active for dah (any transmitter) - customized with tx_key_dit_and_dah_pins_active_state and tx_key_dit_and_dah_pins_inactive_state
|
||||||
|
|
||||||
|
#define potentiometer_enable_pin 0 // if defined, the potentiometer will be enabled only when this pin is held low; set to 0 to ignore this pin
|
||||||
|
|
||||||
|
#if defined(FEATURE_SLEEP)
|
||||||
|
#define keyer_awake 13 // Goes active when keyer is awake, inactive when in sleep mode; change active and inactive states in keyer_settings file
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_LCD_BACKLIGHT_AUTO_DIM)
|
||||||
|
#define keyer_power_led 0 // must be a PWM-capable pin
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_CAPACITIVE_PADDLE_PINS)
|
||||||
|
#define capactive_paddle_pin_inhibit_pin 0 // if this pin is defined and is set high, the capacitive paddle pins will switch to normal (non-capacitive) sensing mode
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
FEATURE_SIDETONE_SWITCH
|
||||||
|
Enabling this feature and an external toggle switch adds switch control for playing cw sidetone.
|
||||||
|
ST Switch status is displayed in the status command. This feature will override the software control of the sidetone (\o).
|
||||||
|
Arduino pin is assigned by SIDETONE_SWITCH
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifdef FEATURE_SIDETONE_SWITCH
|
||||||
|
#define SIDETONE_SWITCH 8
|
||||||
|
#endif //FEATURE_SIDETONE_SWITCH
|
||||||
|
|
||||||
|
#ifdef FEATURE_4x4_KEYPAD
|
||||||
|
#define Row3 33
|
||||||
|
#define Row2 32
|
||||||
|
#define Row1 31
|
||||||
|
#define Row0 30
|
||||||
|
#define Col3 37
|
||||||
|
#define Col2 36
|
||||||
|
#define Col1 35
|
||||||
|
#define Col0 34
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef FEATURE_3x4_KEYPAD
|
||||||
|
#define Row3 33
|
||||||
|
#define Row2 32
|
||||||
|
#define Row1 31
|
||||||
|
#define Row0 30
|
||||||
|
#define Col2 36
|
||||||
|
#define Col1 35
|
||||||
|
#define Col0 34
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef FEATURE_SEQUENCER
|
||||||
|
#define sequencer_1_pin 0
|
||||||
|
#define sequencer_2_pin 0
|
||||||
|
#define sequencer_3_pin 0
|
||||||
|
#define sequencer_4_pin 0
|
||||||
|
#define sequencer_5_pin 0
|
||||||
|
#endif //FEATURE_SEQUENCER
|
||||||
|
|
||||||
|
#define ptt_input_pin 0
|
||||||
|
|
||||||
|
#define tx_inhibit_pin 0
|
||||||
|
#define tx_pause_pin 0
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
#error "Multiple pin_settings.h files included somehow..."
|
||||||
|
|
||||||
|
#endif //keyer_pin_settings_h
|
74
k3ng_keyer/keyer_pin_settings_nanokeyer_rev_d.h
Executable file
74
k3ng_keyer/keyer_pin_settings_nanokeyer_rev_d.h
Executable file
|
@ -0,0 +1,74 @@
|
||||||
|
#ifndef keyer_pin_settings_h
|
||||||
|
#define keyer_pin_settings_h
|
||||||
|
|
||||||
|
#define paddle_left 2
|
||||||
|
#define paddle_right 5
|
||||||
|
#define tx_key_line_1 11 // (high = key down/tx on)
|
||||||
|
#define tx_key_line_2 0 // nanoKeyer PTT port (Pin 13) may be used as 2nd keying line for SO2R
|
||||||
|
#define tx_key_line_3 0
|
||||||
|
#define tx_key_line_4 0
|
||||||
|
#define tx_key_line_5 0
|
||||||
|
#define tx_key_line_6 0
|
||||||
|
#define sidetone_line 4 // connect a speaker for sidetone
|
||||||
|
#define potentiometer A0 // Rev D nanoKeyer
|
||||||
|
#define ptt_tx_1 13 // nanoKeyer PTT port (uncomment if using above as 2nd CW port for SO2R operation)
|
||||||
|
#define ptt_tx_2 0 // Can be used for keying fox transmitter, T/R switch, or keying slow boatanchors
|
||||||
|
#define ptt_tx_3 0 // These are optional - set to 0 if unused
|
||||||
|
#define ptt_tx_4 0
|
||||||
|
#define ptt_tx_5 0
|
||||||
|
#define ptt_tx_6 0
|
||||||
|
#define analog_buttons_pin A1 // Rev D nanokeyer
|
||||||
|
#define lcd_rs A2
|
||||||
|
#define lcd_enable 10
|
||||||
|
#define lcd_d4 6
|
||||||
|
#define lcd_d5 7
|
||||||
|
#define lcd_d6 8
|
||||||
|
#define lcd_d7 9
|
||||||
|
#define ps2_keyboard_data A3 // Rev D nanokeyer
|
||||||
|
#define ps2_keyboard_clock 3
|
||||||
|
#define tx_key_dit 0 // if defined, goes active for dit (any transmitter) - customized with tx_key_dit_and_dah_pins_active_state and tx_key_dit_and_dah_pins_inactive_state
|
||||||
|
#define tx_key_dah 0 // if defined, goes active for dah (any transmitter) - customized with tx_key_dit_and_dah_pins_active_state and tx_key_dit_and_dah_pins_inactive_state
|
||||||
|
|
||||||
|
#define potentiometer_enable_pin 0 // if defined, the potentiometer will be enabled only when this pin is held low; set to 0 to ignore this pin
|
||||||
|
|
||||||
|
#if defined(FEATURE_SLEEP)
|
||||||
|
#define keyer_awake 13 // Goes active when keyer is awake, inactive when in sleep mode; change active and inactive states in keyer_settings file
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_LCD_BACKLIGHT_AUTO_DIM)
|
||||||
|
#define keyer_power_led 0 // must be a PWM-capable pin
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_CAPACITIVE_PADDLE_PINS)
|
||||||
|
#define capactive_paddle_pin_inhibit_pin 0 // if this pin is defined and is set high, the capacitive paddle pins will switch to normal (non-capacitive) sensing mode
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
FEATURE_SIDETONE_SWITCH
|
||||||
|
Enabling this feature and an external toggle switch adds switch control for playing cw sidetone.
|
||||||
|
ST Switch status is displayed in the status command. This feature will override the software control of the sidetone (\o).
|
||||||
|
Arduino pin is assigned by SIDETONE_SWITCH
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifdef FEATURE_SIDETONE_SWITCH
|
||||||
|
#define SIDETONE_SWITCH 8
|
||||||
|
#endif //FEATURE_SIDETONE_SWITCH
|
||||||
|
|
||||||
|
#ifdef FEATURE_SEQUENCER
|
||||||
|
#define sequencer_1_pin 0
|
||||||
|
#define sequencer_2_pin 0
|
||||||
|
#define sequencer_3_pin 0
|
||||||
|
#define sequencer_4_pin 0
|
||||||
|
#define sequencer_5_pin 0
|
||||||
|
#endif //FEATURE_SEQUENCER
|
||||||
|
|
||||||
|
#define ptt_input_pin 0
|
||||||
|
|
||||||
|
#define tx_inhibit_pin 0
|
||||||
|
#define tx_pause_pin 0
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
#error "Multiple pin_settings.h files included somehow..."
|
||||||
|
|
||||||
|
#endif //keyer_pin_settings_h
|
143
k3ng_keyer/keyer_pin_settings_open_interface.h
Executable file
143
k3ng_keyer/keyer_pin_settings_open_interface.h
Executable file
|
@ -0,0 +1,143 @@
|
||||||
|
// This file is for the Open Interface http://remoteqth.com/open-interface.php
|
||||||
|
|
||||||
|
/* Pins - you must review these and configure ! */
|
||||||
|
#ifndef keyer_pin_settings_h
|
||||||
|
#define keyer_pin_settings_h
|
||||||
|
|
||||||
|
#define paddle_left 2
|
||||||
|
#define paddle_right 5
|
||||||
|
#define tx_key_line_1 11 // (high = key down/tx on)
|
||||||
|
#define tx_key_line_2 12
|
||||||
|
#define tx_key_line_3 0
|
||||||
|
#define tx_key_line_4 0
|
||||||
|
#define tx_key_line_5 0
|
||||||
|
#define tx_key_line_6 0
|
||||||
|
#define sidetone_line 4 // connect a speaker for sidetone
|
||||||
|
#define potentiometer A0 // Speed potentiometer (0 to 5 V) Use pot from 1k to 10k
|
||||||
|
#define ptt_tx_1 0 // PTT ("push to talk") lines
|
||||||
|
#define ptt_tx_2 0 // Can be used for keying fox transmitter, T/R switch, or keying slow boatanchors
|
||||||
|
#define ptt_tx_3 0 // These are optional - set to 0 if unused
|
||||||
|
#define ptt_tx_4 0
|
||||||
|
#define ptt_tx_5 0
|
||||||
|
#define ptt_tx_6 0
|
||||||
|
#define tx_key_dit 0 // if defined, goes active for dit (any transmitter) - customized with tx_key_dit_and_dah_pins_active_state and tx_key_dit_and_dah_pins_inactive_state
|
||||||
|
#define tx_key_dah 0 // if defined, goes active for dah (any transmitter) - customized with tx_key_dit_and_dah_pins_active_state and tx_key_dit_and_dah_pins_inactive_state
|
||||||
|
|
||||||
|
#define potentiometer_enable_pin 0 // if defined, the potentiometer will be enabled only when this pin is held low; set to 0 to ignore this pin
|
||||||
|
|
||||||
|
#ifdef FEATURE_BUTTONS
|
||||||
|
#define analog_buttons_pin A1
|
||||||
|
#define command_mode_active_led 0
|
||||||
|
#endif //FEATURE_BUTTONS
|
||||||
|
|
||||||
|
//lcd pins
|
||||||
|
#ifdef FEATURE_LCD_4BIT
|
||||||
|
#define lcd_rs A2
|
||||||
|
#define lcd_enable 10
|
||||||
|
#define lcd_d4 6
|
||||||
|
#define lcd_d5 7
|
||||||
|
#define lcd_d6 8
|
||||||
|
#define lcd_d7 9
|
||||||
|
#endif //FEATURE_LCD_4BIT
|
||||||
|
|
||||||
|
//ps2 keyboard pins
|
||||||
|
#ifdef FEATURE_PS2_KEYBOARD
|
||||||
|
#define ps2_keyboard_data A3
|
||||||
|
#define ps2_keyboard_clock 3 // this must be on an interrupt capable pin!
|
||||||
|
#endif //FEATURE_PS2_KEYBOARD
|
||||||
|
|
||||||
|
// rotary encoder pins and options - rotary encoder code from Jim Balls M0CKE
|
||||||
|
#ifdef FEATURE_ROTARY_ENCODER
|
||||||
|
#define OPTION_ENCODER_HALF_STEP_MODE // Half-step mode?
|
||||||
|
#define rotary_pin1 0 // CW Encoder Pin
|
||||||
|
#define rotary_pin2 0 // CCW Encoder Pin
|
||||||
|
#define OPTION_ENCODER_ENABLE_PULLUPS // define to enable weak pullups.
|
||||||
|
#endif //FEATURE_ROTARY_ENCODER
|
||||||
|
|
||||||
|
#ifdef FEATURE_LED_RING
|
||||||
|
#define led_ring_sdi A10 //2 //Data
|
||||||
|
#define led_ring_clk A9 //3 //Clock
|
||||||
|
#define led_ring_le A8 //4 //Latch
|
||||||
|
#endif //FEATURE_LED_RING
|
||||||
|
|
||||||
|
#define correct_answer_led 0
|
||||||
|
#define wrong_answer_led 0
|
||||||
|
|
||||||
|
#ifdef FEATURE_PTT_INTERLOCK
|
||||||
|
#define ptt_interlock 0 // this pin disables PTT and TX KEY
|
||||||
|
#endif //FEATURE_PTT_INTERLOCK
|
||||||
|
|
||||||
|
|
||||||
|
// FEATURE_CW_DECODER & OPTION_CW_DECODER_GOERTZEL_AUDIO_DETECTOR
|
||||||
|
// See https://github.com/k3ng/k3ng_cw_keyer/wiki/385-Feature:-CW-Decoder for details
|
||||||
|
#define cw_decoder_pin 0 // This is for use with external decoding hardware
|
||||||
|
#define cw_decoder_audio_input_pin 0 // This is for audio detection decoding using OPTION_CW_DECODER_GOERTZEL_AUDIO_DETECTOR; this must be an analog pin!
|
||||||
|
#define cw_decoder_indicator 0 // Output - goes HIGH when cw tone is detected by OPTION_CW_DECODER_GOERTZEL_AUDIO_DETECTOR
|
||||||
|
|
||||||
|
#if defined(FEATURE_COMPETITION_COMPRESSION_DETECTION)
|
||||||
|
#define compression_detection_pin 0
|
||||||
|
#endif //FEATURE_COMPETITION_COMPRESSION_DETECTION
|
||||||
|
|
||||||
|
#if defined(FEATURE_SLEEP)
|
||||||
|
#define keyer_awake 13 // Goes active when keyer is awake, inactive when in sleep mode; change active and inactive states in keyer_settings file
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_LCD_BACKLIGHT_AUTO_DIM)
|
||||||
|
#define keyer_power_led 0 // must be a PWM-capable pin
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_CAPACITIVE_PADDLE_PINS)
|
||||||
|
#define capactive_paddle_pin_inhibit_pin 0 // if this pin is defined and is set high, the capacitive paddle pins will switch to normal (non-capacitive) sensing mode
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
FEATURE_SIDETONE_SWITCH
|
||||||
|
Enabling this feature and an external toggle switch adds switch control for playing cw sidetone.
|
||||||
|
ST Switch status is displayed in the status command. This feature will override the software control of the sidetone (\o).
|
||||||
|
Arduino pin is assigned by SIDETONE_SWITCH
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifdef FEATURE_SIDETONE_SWITCH
|
||||||
|
#define SIDETONE_SWITCH 8
|
||||||
|
#endif //FEATURE_SIDETONE_SWITCH
|
||||||
|
|
||||||
|
#ifdef FEATURE_4x4_KEYPAD
|
||||||
|
#define Row3 33
|
||||||
|
#define Row2 32
|
||||||
|
#define Row1 31
|
||||||
|
#define Row0 30
|
||||||
|
#define Col3 37
|
||||||
|
#define Col2 36
|
||||||
|
#define Col1 35
|
||||||
|
#define Col0 34
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef FEATURE_3x4_KEYPAD
|
||||||
|
#define Row3 33
|
||||||
|
#define Row2 32
|
||||||
|
#define Row1 31
|
||||||
|
#define Row0 30
|
||||||
|
#define Col2 36
|
||||||
|
#define Col1 35
|
||||||
|
#define Col0 34
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef FEATURE_SEQUENCER
|
||||||
|
#define sequencer_1_pin 0
|
||||||
|
#define sequencer_2_pin 0
|
||||||
|
#define sequencer_3_pin 0
|
||||||
|
#define sequencer_4_pin 0
|
||||||
|
#define sequencer_5_pin 0
|
||||||
|
#endif //FEATURE_SEQUENCER
|
||||||
|
|
||||||
|
#define ptt_input_pin 0
|
||||||
|
|
||||||
|
#define tx_inhibit_pin 0
|
||||||
|
#define tx_pause_pin 0
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
#error "Multiple pin_settings.h files included somehow..."
|
||||||
|
|
||||||
|
#endif //keyer_pin_settings_h
|
||||||
|
|
163
k3ng_keyer/keyer_pin_settings_opencwkeyer_mk2.h
Executable file
163
k3ng_keyer/keyer_pin_settings_opencwkeyer_mk2.h
Executable file
|
@ -0,0 +1,163 @@
|
||||||
|
/* Pins - you must review these and configure ! */
|
||||||
|
#ifndef keyer_pin_settings_h
|
||||||
|
#define keyer_pin_settings_h
|
||||||
|
|
||||||
|
|
||||||
|
#define paddle_left 2
|
||||||
|
#define paddle_right 6
|
||||||
|
#define tx_key_line_1 11 // (high = key down/tx on)
|
||||||
|
#define tx_key_line_2 13
|
||||||
|
#define tx_key_line_3 0
|
||||||
|
#define tx_key_line_4 0
|
||||||
|
#define tx_key_line_5 0
|
||||||
|
#define tx_key_line_6 0
|
||||||
|
#define sidetone_line 4 // connect a speaker for sidetone
|
||||||
|
#define potentiometer A0 // Speed potentiometer (0 to 5 V) Use pot from 1k to 10k
|
||||||
|
#define ptt_tx_1 12 // PTT ("push to talk") lines
|
||||||
|
#define ptt_tx_2 13 // Can be used for keying fox transmitter, T/R switch, or keying slow boatanchors
|
||||||
|
#define ptt_tx_3 0 // These are optional - set to 0 if unused
|
||||||
|
#define ptt_tx_4 0
|
||||||
|
#define ptt_tx_5 0
|
||||||
|
#define ptt_tx_6 0
|
||||||
|
#define tx_key_dit 0 // if defined, goes active for dit (any transmitter) - customized with tx_key_dit_and_dah_pins_active_state and tx_key_dit_and_dah_pins_inactive_state
|
||||||
|
#define tx_key_dah 0 // if defined, goes active for dah (any transmitter) - customized with tx_key_dit_and_dah_pins_active_state and tx_key_dit_and_dah_pins_inactive_state
|
||||||
|
|
||||||
|
#define potentiometer_enable_pin 0 // if defined, the potentiometer will be enabled only when this pin is held low; set to 0 to ignore this pin
|
||||||
|
|
||||||
|
#ifdef FEATURE_BUTTONS
|
||||||
|
#define analog_buttons_pin A1
|
||||||
|
#define command_mode_active_led 0
|
||||||
|
#endif //FEATURE_BUTTONS
|
||||||
|
|
||||||
|
/*
|
||||||
|
FEATURE_SIDETONE_SWITCH
|
||||||
|
Enabling this feature and an external toggle switch adds switch control for playing cw sidetone.
|
||||||
|
ST Switch status is displayed in the status command. This feature will override the software control of the sidetone (\o).
|
||||||
|
Arduino pin is assigned by SIDETONE_SWITCH
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifdef FEATURE_SIDETONE_SWITCH
|
||||||
|
#define SIDETONE_SWITCH 8
|
||||||
|
#endif //FEATURE_SIDETONE_SWITCH
|
||||||
|
|
||||||
|
|
||||||
|
//lcd pins
|
||||||
|
#if defined(FEATURE_LCD_4BIT) || defined(FEATURE_LCD_8BIT)
|
||||||
|
#define lcd_rs A2
|
||||||
|
#define lcd_enable 10 // pin 10 is used by Ethernet shield and will conflict with that
|
||||||
|
#define lcd_d4 6
|
||||||
|
#define lcd_d5 7
|
||||||
|
#define lcd_d6 8
|
||||||
|
#define lcd_d7 9
|
||||||
|
#endif //FEATURE_LCD_4BIT || defined(FEATURE_LCD_8BIT)
|
||||||
|
|
||||||
|
#if defined(FEATURE_LCD_8BIT) // addition four data lines for 8 bit LCD control
|
||||||
|
#define lcd_d0 20
|
||||||
|
#define lcd_d1 21
|
||||||
|
#define lcd_d2 22
|
||||||
|
#define lcd_d3 23
|
||||||
|
#endif //FEATURE_LCD_4BIT || defined(FEATURE_LCD_8BIT)
|
||||||
|
|
||||||
|
#ifdef FEATURE_LCD1602_N07DH
|
||||||
|
#define lcd_rs 8
|
||||||
|
#define lcd_enable 9
|
||||||
|
#define lcd_d4 4
|
||||||
|
#define lcd_d5 5
|
||||||
|
#define lcd_d6 6
|
||||||
|
#define lcd_d7 7
|
||||||
|
#endif //FEATURE_LCD1602_N07DH
|
||||||
|
|
||||||
|
//ps2 keyboard pins
|
||||||
|
#ifdef FEATURE_PS2_KEYBOARD
|
||||||
|
#define ps2_keyboard_data A3
|
||||||
|
#define ps2_keyboard_clock 3 // this must be on an interrupt capable pin!
|
||||||
|
#endif //FEATURE_PS2_KEYBOARD
|
||||||
|
|
||||||
|
// rotary encoder pins and options - rotary encoder code from Jim Balls M0CKE
|
||||||
|
#ifdef FEATURE_ROTARY_ENCODER
|
||||||
|
#define OPTION_ENCODER_HALF_STEP_MODE // Half-step mode?
|
||||||
|
#define rotary_pin1 0 // CW Encoder Pin
|
||||||
|
#define rotary_pin2 0 // CCW Encoder Pin
|
||||||
|
#define OPTION_ENCODER_ENABLE_PULLUPS // define to enable weak pullups.
|
||||||
|
#endif //FEATURE_ROTARY_ENCODER
|
||||||
|
|
||||||
|
#ifdef FEATURE_LED_RING
|
||||||
|
#define led_ring_sdi A10 //2 //Data
|
||||||
|
#define led_ring_clk A9 //3 //Clock
|
||||||
|
#define led_ring_le A8 //4 //Latch
|
||||||
|
#endif //FEATURE_LED_RING
|
||||||
|
|
||||||
|
#define correct_answer_led 0
|
||||||
|
#define wrong_answer_led 0
|
||||||
|
|
||||||
|
#ifdef FEATURE_PTT_INTERLOCK
|
||||||
|
#define ptt_interlock 0 // this pin disables PTT and TX KEY
|
||||||
|
#endif //FEATURE_PTT_INTERLOCK
|
||||||
|
|
||||||
|
#ifdef FEATURE_STRAIGHT_KEY
|
||||||
|
#define pin_straight_key 52
|
||||||
|
#endif //FEATURE_STRAIGHT_KEY
|
||||||
|
|
||||||
|
// FEATURE_CW_DECODER & OPTION_CW_DECODER_GOERTZEL_AUDIO_DETECTOR
|
||||||
|
// See https://github.com/k3ng/k3ng_cw_keyer/wiki/385-Feature:-CW-Decoder for details
|
||||||
|
#define cw_decoder_pin 0 // This is for use with external decoding hardware
|
||||||
|
#define cw_decoder_audio_input_pin 0 // This is for audio detection decoding using OPTION_CW_DECODER_GOERTZEL_AUDIO_DETECTOR; this must be an analog pin!
|
||||||
|
#define cw_decoder_indicator 0 // Output - goes HIGH when cw tone is detected by OPTION_CW_DECODER_GOERTZEL_AUDIO_DETECTOR
|
||||||
|
|
||||||
|
|
||||||
|
#if defined(FEATURE_COMPETITION_COMPRESSION_DETECTION)
|
||||||
|
#define compression_detection_pin 13
|
||||||
|
#endif //FEATURE_COMPETITION_COMPRESSION_DETECTION
|
||||||
|
|
||||||
|
#if defined(FEATURE_SLEEP)
|
||||||
|
#define keyer_awake 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_LCD_BACKLIGHT_AUTO_DIM)
|
||||||
|
#define keyer_power_led 0 // must be a PWM-capable pin
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_CAPACITIVE_PADDLE_PINS)
|
||||||
|
#define capactive_paddle_pin_inhibit_pin 0 // if this pin is defined and is set high, the capacitive paddle pins will switch to normal (non-capacitive) sensing mode
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef FEATURE_4x4_KEYPAD
|
||||||
|
#define Row3 33
|
||||||
|
#define Row2 32
|
||||||
|
#define Row1 31
|
||||||
|
#define Row0 30
|
||||||
|
#define Col3 37
|
||||||
|
#define Col2 36
|
||||||
|
#define Col1 35
|
||||||
|
#define Col0 34
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef FEATURE_3x4_KEYPAD
|
||||||
|
#define Row3 33
|
||||||
|
#define Row2 32
|
||||||
|
#define Row1 31
|
||||||
|
#define Row0 30
|
||||||
|
#define Col2 36
|
||||||
|
#define Col1 35
|
||||||
|
#define Col0 34
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef FEATURE_SEQUENCER
|
||||||
|
#define sequencer_1_pin 0
|
||||||
|
#define sequencer_2_pin 0
|
||||||
|
#define sequencer_3_pin 0
|
||||||
|
#define sequencer_4_pin 0
|
||||||
|
#define sequencer_5_pin 0
|
||||||
|
#endif //FEATURE_SEQUENCER
|
||||||
|
|
||||||
|
#define ptt_input_pin 0
|
||||||
|
|
||||||
|
#define tx_inhibit_pin 0
|
||||||
|
#define tx_pause_pin 0
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
#error "Multiple pin_settings.h files included somehow..."
|
||||||
|
|
||||||
|
#endif //keyer_pin_settings_h
|
||||||
|
|
185
k3ng_keyer/keyer_pin_settings_test.h
Executable file
185
k3ng_keyer/keyer_pin_settings_test.h
Executable file
|
@ -0,0 +1,185 @@
|
||||||
|
|
||||||
|
// ######## ######## ###### ########
|
||||||
|
// ## ## ## ## ##
|
||||||
|
// ## ## ## ##
|
||||||
|
// ## ###### ###### ##
|
||||||
|
// ## ## ## ##
|
||||||
|
// ## ## ## ## ##
|
||||||
|
// ## ######## ###### ##
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef keyer_pin_settings_h
|
||||||
|
#define keyer_pin_settings_h
|
||||||
|
|
||||||
|
#define paddle_left 2
|
||||||
|
#define paddle_right 5
|
||||||
|
#define tx_key_line_1 11 // (high = key down/tx on)
|
||||||
|
#define tx_key_line_2 13
|
||||||
|
#define tx_key_line_3 0
|
||||||
|
#define tx_key_line_4 0
|
||||||
|
#define tx_key_line_5 0
|
||||||
|
#define tx_key_line_6 0
|
||||||
|
#if !defined(FEATURE_ETHERNET)
|
||||||
|
#define sidetone_line 4 // connect a speaker for sidetone (pin 4 is used by the Ethernet shield!)
|
||||||
|
#else
|
||||||
|
#define sidetone_line 12
|
||||||
|
#endif
|
||||||
|
#define potentiometer A0 // Speed potentiometer (0 to 5 V) Use pot from 1k to 10k
|
||||||
|
#define ptt_tx_1 13 // PTT ("push to talk") lines
|
||||||
|
#define ptt_tx_2 0 // Can be used for keying fox transmitter, T/R switch, or keying slow boatanchors
|
||||||
|
#define ptt_tx_3 0 // These are optional - set to 0 if unused
|
||||||
|
#define ptt_tx_4 0
|
||||||
|
#define ptt_tx_5 0
|
||||||
|
#define ptt_tx_6 0
|
||||||
|
#define tx_key_dit 0 // if defined, goes active for dit (any transmitter) - customized with tx_key_dit_and_dah_pins_active_state and tx_key_dit_and_dah_pins_inactive_state
|
||||||
|
#define tx_key_dah 0 // if defined, goes active for dah (any transmitter) - customized with tx_key_dit_and_dah_pins_active_state and tx_key_dit_and_dah_pins_inactive_state
|
||||||
|
|
||||||
|
#define potentiometer_enable_pin 0 // if defined, the potentiometer will be enabled only when this pin is held low; set to 0 to ignore this pin
|
||||||
|
|
||||||
|
#ifdef FEATURE_BUTTONS
|
||||||
|
#define analog_buttons_pin A1
|
||||||
|
#define command_mode_active_led 0
|
||||||
|
#endif //FEATURE_BUTTONS
|
||||||
|
|
||||||
|
|
||||||
|
//lcd pins
|
||||||
|
#if defined(FEATURE_LCD_4BIT) || defined(FEATURE_LCD_8BIT)
|
||||||
|
#define lcd_rs A2
|
||||||
|
#define lcd_enable 10 // pin 10 is used by Ethernet shield and will conflict with that
|
||||||
|
#define lcd_d4 6
|
||||||
|
#define lcd_d5 7
|
||||||
|
#define lcd_d6 8
|
||||||
|
#define lcd_d7 9
|
||||||
|
#endif //FEATURE_LCD_4BIT || defined(FEATURE_LCD_8BIT)
|
||||||
|
|
||||||
|
#if defined(FEATURE_LCD_8BIT) // addition four data lines for 8 bit LCD control
|
||||||
|
#define lcd_d0 20
|
||||||
|
#define lcd_d1 21
|
||||||
|
#define lcd_d2 22
|
||||||
|
#define lcd_d3 23
|
||||||
|
#endif //FEATURE_LCD_4BIT || defined(FEATURE_LCD_8BIT)
|
||||||
|
|
||||||
|
#ifdef FEATURE_LCD1602_N07DH
|
||||||
|
#define lcd_rs 8
|
||||||
|
#define lcd_enable 9
|
||||||
|
#define lcd_d4 4 // pin 4 is used by Ethernet shield and will conflict with that
|
||||||
|
#define lcd_d5 5
|
||||||
|
#define lcd_d6 6
|
||||||
|
#define lcd_d7 7
|
||||||
|
#endif //FEATURE_LCD1602_N07DH
|
||||||
|
|
||||||
|
//ps2 keyboard pins
|
||||||
|
#ifdef FEATURE_PS2_KEYBOARD
|
||||||
|
#define ps2_keyboard_data A3
|
||||||
|
#define ps2_keyboard_clock 3 // this must be on an interrupt capable pin!
|
||||||
|
#endif //FEATURE_PS2_KEYBOARD
|
||||||
|
|
||||||
|
// rotary encoder pins and options - rotary encoder code from Jim Balls M0CKE
|
||||||
|
#ifdef FEATURE_ROTARY_ENCODER
|
||||||
|
#define OPTION_ENCODER_HALF_STEP_MODE // Half-step mode?
|
||||||
|
#define rotary_pin1 0 // CW Encoder Pin
|
||||||
|
#define rotary_pin2 0 // CCW Encoder Pin
|
||||||
|
#define OPTION_ENCODER_ENABLE_PULLUPS // define to enable weak pullups.
|
||||||
|
#endif //FEATURE_ROTARY_ENCODER
|
||||||
|
|
||||||
|
#ifdef FEATURE_LED_RING
|
||||||
|
#define led_ring_sdi A10 //2 //Data
|
||||||
|
#define led_ring_clk A9 //3 //Clock
|
||||||
|
#define led_ring_le A8 //4 //Latch
|
||||||
|
#endif //FEATURE_LED_RING
|
||||||
|
|
||||||
|
#define correct_answer_led 0
|
||||||
|
#define wrong_answer_led 0
|
||||||
|
|
||||||
|
#ifdef FEATURE_PTT_INTERLOCK
|
||||||
|
#define ptt_interlock 0 // this pin disables PTT and TX KEY
|
||||||
|
#endif //FEATURE_PTT_INTERLOCK
|
||||||
|
|
||||||
|
#ifdef FEATURE_STRAIGHT_KEY
|
||||||
|
#define pin_straight_key A5 //52 // pin 52 doesn't work right when FEATURE_WEB_SERVER is active. don't know why 2016-04-26
|
||||||
|
#endif //FEATURE_STRAIGHT_KEY
|
||||||
|
|
||||||
|
// FEATURE_CW_DECODER & OPTION_CW_DECODER_GOERTZEL_AUDIO_DETECTOR
|
||||||
|
// See https://github.com/k3ng/k3ng_cw_keyer/wiki/385-Feature:-CW-Decoder for details
|
||||||
|
#define cw_decoder_pin 0 // This is for use with external decoding hardware
|
||||||
|
#define cw_decoder_audio_input_pin 0 // This is for audio detection decoding using OPTION_CW_DECODER_GOERTZEL_AUDIO_DETECTOR; this must be an analog pin!
|
||||||
|
#define cw_decoder_indicator 0 // Output - goes HIGH when cw tone is detected by OPTION_CW_DECODER_GOERTZEL_AUDIO_DETECTOR
|
||||||
|
|
||||||
|
|
||||||
|
#if defined(FEATURE_COMPETITION_COMPRESSION_DETECTION)
|
||||||
|
#define compression_detection_pin 13
|
||||||
|
#endif //FEATURE_COMPETITION_COMPRESSION_DETECTION
|
||||||
|
|
||||||
|
#if defined(FEATURE_SLEEP)
|
||||||
|
#define keyer_awake 13 // Goes active when keyer is awake, inactive when in sleep mode; change active and inactive states in keyer_settings file
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_LCD_BACKLIGHT_AUTO_DIM)
|
||||||
|
#define keyer_power_led 0 // must be a PWM-capable pin
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_CAPACITIVE_PADDLE_PINS)
|
||||||
|
#define capactive_paddle_pin_inhibit_pin 0 // if this pin is defined and is set high, the capacitive paddle pins will switch to normal (non-capacitive) sensing mode
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
FEATURE_SIDETONE_SWITCH
|
||||||
|
Enabling this feature and an external toggle switch adds switch control for playing cw sidetone.
|
||||||
|
ST Switch status is displayed in the status command. This feature will override the software control of the sidetone (\o).
|
||||||
|
Arduino pin is assigned by SIDETONE_SWITCH
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifdef FEATURE_SIDETONE_SWITCH
|
||||||
|
#define SIDETONE_SWITCH 8
|
||||||
|
#endif //FEATURE_SIDETONE_SWITCH
|
||||||
|
|
||||||
|
#ifdef FEATURE_4x4_KEYPAD
|
||||||
|
#define Row3 33
|
||||||
|
#define Row2 32
|
||||||
|
#define Row1 31
|
||||||
|
#define Row0 30
|
||||||
|
#define Col3 37
|
||||||
|
#define Col2 36
|
||||||
|
#define Col1 35
|
||||||
|
#define Col0 34
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef FEATURE_3x4_KEYPAD
|
||||||
|
#define Row3 33
|
||||||
|
#define Row2 32
|
||||||
|
#define Row1 31
|
||||||
|
#define Row0 30
|
||||||
|
#define Col2 36
|
||||||
|
#define Col1 35
|
||||||
|
#define Col0 34
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef FEATURE_SEQUENCER
|
||||||
|
#define sequencer_1_pin 40
|
||||||
|
#define sequencer_2_pin 41
|
||||||
|
#define sequencer_3_pin 42
|
||||||
|
#define sequencer_4_pin 43
|
||||||
|
#define sequencer_5_pin 44
|
||||||
|
#endif //FEATURE_SEQUENCER
|
||||||
|
|
||||||
|
#define ptt_input_pin 0
|
||||||
|
|
||||||
|
#define tx_inhibit_pin 0
|
||||||
|
#define tx_pause_pin 0
|
||||||
|
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
#error "Multiple pin_settings.h files included somehow..."
|
||||||
|
|
||||||
|
#endif //keyer_pin_settings_h
|
||||||
|
|
||||||
|
|
||||||
|
// ######## ######## ###### ########
|
||||||
|
// ## ## ## ## ##
|
||||||
|
// ## ## ## ##
|
||||||
|
// ## ###### ###### ##
|
||||||
|
// ## ## ## ##
|
||||||
|
// ## ## ## ## ##
|
||||||
|
// ## ######## ###### ##
|
||||||
|
|
199
k3ng_keyer/keyer_pin_settings_test_everything.h
Executable file
199
k3ng_keyer/keyer_pin_settings_test_everything.h
Executable file
|
@ -0,0 +1,199 @@
|
||||||
|
|
||||||
|
// ######## ######## ###### ########
|
||||||
|
// ## ## ## ## ##
|
||||||
|
// ## ## ## ##
|
||||||
|
// ## ###### ###### ##
|
||||||
|
// ## ## ## ##
|
||||||
|
// ## ## ## ## ##
|
||||||
|
// ## ######## ###### ##
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef keyer_pin_settings_h
|
||||||
|
#define keyer_pin_settings_h
|
||||||
|
|
||||||
|
#define paddle_left 2
|
||||||
|
#define paddle_right 5
|
||||||
|
#define tx_key_line_1 11 // (high = key down/tx on)
|
||||||
|
#define tx_key_line_2 12
|
||||||
|
#define tx_key_line_3 0
|
||||||
|
#define tx_key_line_4 0
|
||||||
|
#define tx_key_line_5 0
|
||||||
|
#define tx_key_line_6 0
|
||||||
|
#if !defined(FEATURE_ETHERNET)
|
||||||
|
#define sidetone_line 4 // connect a speaker for sidetone
|
||||||
|
#else
|
||||||
|
#define sidetone_line 31 // pin 4 is used by Ethernet shield so we'll use pin 31 on the test jig...
|
||||||
|
#endif
|
||||||
|
#define potentiometer A0 // Speed potentiometer (0 to 5 V) Use pot from 1k to 10k
|
||||||
|
#define ptt_tx_1 13 // PTT ("push to talk") lines
|
||||||
|
#define ptt_tx_2 0 // Can be used for keying fox transmitter, T/R switch, or keying slow boatanchors
|
||||||
|
#define ptt_tx_3 0 // These are optional - set to 0 if unused
|
||||||
|
#define ptt_tx_4 0
|
||||||
|
#define ptt_tx_5 0
|
||||||
|
#define ptt_tx_6 0
|
||||||
|
#define tx_key_dit 0 // if defined, goes active for dit (any transmitter) - customized with tx_key_dit_and_dah_pins_active_state and tx_key_dit_and_dah_pins_inactive_state
|
||||||
|
#define tx_key_dah 0 // if defined, goes active for dah (any transmitter) - customized with tx_key_dit_and_dah_pins_active_state and tx_key_dit_and_dah_pins_inactive_state
|
||||||
|
|
||||||
|
#define so2r_tx_1 0 // Radio 1 transmitter selected (optional, set to zero if not used)
|
||||||
|
#define so2r_tx_2 11 // Radio 2 transmitter selected (optional, set to zero if not used)
|
||||||
|
#define so2r_rx_1 0 // Radio 1 receiver selected (optional, set to zero if not used)
|
||||||
|
#define so2r_rx_2 0 // Radio 2 receiver selected (optional, set to zero if not used)
|
||||||
|
#define so2r_rx_1s 0 // Radio 1 receiver or stereo selected (optional, set to zero if not used)
|
||||||
|
#define so2r_rx_2s 9 // Radio 2 receiver or stereo selected (optional, set to zero if not used)
|
||||||
|
#define so2r_rx_s 10 // Stereo receive selected (optional, set to zero if not used)
|
||||||
|
|
||||||
|
#ifdef FEATURE_SO2R_SWITCHES
|
||||||
|
#define so2r_tx_switch A5 // TX switch, low if TX1, high if TX2
|
||||||
|
#define so2r_rx1_switch A4 // RX 1 switch, low if RX1, high if RX2 or stereo
|
||||||
|
#define so2r_rx2_switch A3 // RX 2 switch, low if RX2, high if RX1 or stereo
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define potentiometer_enable_pin 0 // if defined, the potentiometer will be enabled only when this pin is held low; set to 0 to ignore this pin
|
||||||
|
|
||||||
|
#ifdef FEATURE_BUTTONS
|
||||||
|
#define analog_buttons_pin A1
|
||||||
|
#define command_mode_active_led 0
|
||||||
|
#endif //FEATURE_BUTTONS
|
||||||
|
|
||||||
|
|
||||||
|
//lcd pins
|
||||||
|
#if defined(FEATURE_LCD_4BIT) || defined(FEATURE_LCD_8BIT)
|
||||||
|
#define lcd_rs A2
|
||||||
|
#define lcd_enable 10 // pin 10 is used by Ethernet shield and will conflict with that
|
||||||
|
#define lcd_d4 6
|
||||||
|
#define lcd_d5 7
|
||||||
|
#define lcd_d6 8
|
||||||
|
#define lcd_d7 9
|
||||||
|
#endif //FEATURE_LCD_4BIT || defined(FEATURE_LCD_8BIT)
|
||||||
|
|
||||||
|
#if defined(FEATURE_LCD_8BIT) // addition four data lines for 8 bit LCD control
|
||||||
|
#define lcd_d0 20
|
||||||
|
#define lcd_d1 21
|
||||||
|
#define lcd_d2 22
|
||||||
|
#define lcd_d3 23
|
||||||
|
#endif //FEATURE_LCD_4BIT || defined(FEATURE_LCD_8BIT)
|
||||||
|
|
||||||
|
#ifdef FEATURE_LCD1602_N07DH
|
||||||
|
#define lcd_rs 8
|
||||||
|
#define lcd_enable 9
|
||||||
|
#define lcd_d4 4 // pin 4 is used by Ethernet shield and will conflict with that
|
||||||
|
#define lcd_d5 5
|
||||||
|
#define lcd_d6 6
|
||||||
|
#define lcd_d7 7
|
||||||
|
#endif //FEATURE_LCD1602_N07DH
|
||||||
|
|
||||||
|
//ps2 keyboard pins
|
||||||
|
#ifdef FEATURE_PS2_KEYBOARD
|
||||||
|
#define ps2_keyboard_data A3
|
||||||
|
#define ps2_keyboard_clock 3 // this must be on an interrupt capable pin!
|
||||||
|
#endif //FEATURE_PS2_KEYBOARD
|
||||||
|
|
||||||
|
// rotary encoder pins and options - rotary encoder code from Jim Balls M0CKE
|
||||||
|
#ifdef FEATURE_ROTARY_ENCODER
|
||||||
|
#define OPTION_ENCODER_HALF_STEP_MODE // Half-step mode?
|
||||||
|
#define rotary_pin1 0 // CW Encoder Pin
|
||||||
|
#define rotary_pin2 0 // CCW Encoder Pin
|
||||||
|
#define OPTION_ENCODER_ENABLE_PULLUPS // define to enable weak pullups.
|
||||||
|
#endif //FEATURE_ROTARY_ENCODER
|
||||||
|
|
||||||
|
#ifdef FEATURE_LED_RING
|
||||||
|
#define led_ring_sdi A10 //2 //Data
|
||||||
|
#define led_ring_clk A9 //3 //Clock
|
||||||
|
#define led_ring_le A8 //4 //Latch
|
||||||
|
#endif //FEATURE_LED_RING
|
||||||
|
|
||||||
|
#define correct_answer_led 0
|
||||||
|
#define wrong_answer_led 0
|
||||||
|
|
||||||
|
#ifdef FEATURE_PTT_INTERLOCK
|
||||||
|
#define ptt_interlock 0 // this pin disables PTT and TX KEY
|
||||||
|
#endif //FEATURE_PTT_INTERLOCK
|
||||||
|
|
||||||
|
#ifdef FEATURE_STRAIGHT_KEY
|
||||||
|
#define pin_straight_key A5 //52 // pin 52 doesn't work right when FEATURE_WEB_SERVER is active. don't know why 2016-04-26
|
||||||
|
#endif //FEATURE_STRAIGHT_KEY
|
||||||
|
|
||||||
|
// FEATURE_CW_DECODER & OPTION_CW_DECODER_GOERTZEL_AUDIO_DETECTOR
|
||||||
|
// See https://github.com/k3ng/k3ng_cw_keyer/wiki/385-Feature:-CW-Decoder for details
|
||||||
|
#define cw_decoder_pin 0 // This is for use with external decoding hardware
|
||||||
|
#define cw_decoder_audio_input_pin 0 // This is for audio detection decoding using OPTION_CW_DECODER_GOERTZEL_AUDIO_DETECTOR; this must be an analog pin!
|
||||||
|
#define cw_decoder_indicator 0 // Output - goes HIGH when cw tone is detected by OPTION_CW_DECODER_GOERTZEL_AUDIO_DETECTOR
|
||||||
|
|
||||||
|
|
||||||
|
#if defined(FEATURE_COMPETITION_COMPRESSION_DETECTION)
|
||||||
|
#define compression_detection_pin 13
|
||||||
|
#endif //FEATURE_COMPETITION_COMPRESSION_DETECTION
|
||||||
|
|
||||||
|
#if defined(FEATURE_SLEEP)
|
||||||
|
#define keyer_awake 13 // Goes active when keyer is awake, inactive when in sleep mode; change active and inactive states in keyer_settings file
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_LCD_BACKLIGHT_AUTO_DIM)
|
||||||
|
#define keyer_power_led 0 // must be a PWM-capable pin
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_CAPACITIVE_PADDLE_PINS)
|
||||||
|
#define capactive_paddle_pin_inhibit_pin 0 // if this pin is defined and is set high, the capacitive paddle pins will switch to normal (non-capacitive) sensing mode
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
FEATURE_SIDETONE_SWITCH
|
||||||
|
Enabling this feature and an external toggle switch adds switch control for playing cw sidetone.
|
||||||
|
ST Switch status is displayed in the status command. This feature will override the software control of the sidetone (\o).
|
||||||
|
Arduino pin is assigned by SIDETONE_SWITCH
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifdef FEATURE_SIDETONE_SWITCH
|
||||||
|
#define SIDETONE_SWITCH 8
|
||||||
|
#endif //FEATURE_SIDETONE_SWITCH
|
||||||
|
|
||||||
|
#ifdef FEATURE_4x4_KEYPAD
|
||||||
|
#define Row3 33
|
||||||
|
#define Row2 32
|
||||||
|
#define Row1 31
|
||||||
|
#define Row0 30
|
||||||
|
#define Col3 37
|
||||||
|
#define Col2 36
|
||||||
|
#define Col1 35
|
||||||
|
#define Col0 34
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef FEATURE_3x4_KEYPAD
|
||||||
|
#define Row3 33
|
||||||
|
#define Row2 32
|
||||||
|
#define Row1 31
|
||||||
|
#define Row0 30
|
||||||
|
#define Col2 36
|
||||||
|
#define Col1 35
|
||||||
|
#define Col0 34
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef FEATURE_SEQUENCER
|
||||||
|
#define sequencer_1_pin 40
|
||||||
|
#define sequencer_2_pin 41
|
||||||
|
#define sequencer_3_pin 42
|
||||||
|
#define sequencer_4_pin 43
|
||||||
|
#define sequencer_5_pin 44
|
||||||
|
#endif //FEATURE_SEQUENCER
|
||||||
|
|
||||||
|
#define ptt_input_pin 0
|
||||||
|
|
||||||
|
#define tx_inhibit_pin 50
|
||||||
|
#define tx_pause_pin 48
|
||||||
|
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
#error "Multiple pin_settings.h files included somehow..."
|
||||||
|
|
||||||
|
#endif //keyer_pin_settings_h
|
||||||
|
|
||||||
|
|
||||||
|
// ######## ######## ###### ########
|
||||||
|
// ## ## ## ## ##
|
||||||
|
// ## ## ## ##
|
||||||
|
// ## ###### ###### ##
|
||||||
|
// ## ## ## ##
|
||||||
|
// ## ## ## ## ##
|
||||||
|
// ## ######## ###### ##
|
||||||
|
|
94
k3ng_keyer/keyer_pin_settings_tinykeyer.h
Executable file
94
k3ng_keyer/keyer_pin_settings_tinykeyer.h
Executable file
|
@ -0,0 +1,94 @@
|
||||||
|
// features & options for TinyKeyer by OK1RR
|
||||||
|
#ifndef keyer_pin_settings_h
|
||||||
|
#define keyer_pin_settings_h
|
||||||
|
|
||||||
|
#define paddle_left 2 // dit
|
||||||
|
#define paddle_right 5 // dah
|
||||||
|
#define tx_key_line_1 12 // tinykeyer keyed port (high = key down/tx on)
|
||||||
|
#define tx_key_line_2 0
|
||||||
|
#define tx_key_line_3 0
|
||||||
|
#define tx_key_line_4 0
|
||||||
|
#define tx_key_line_5 0
|
||||||
|
#define tx_key_line_6 0
|
||||||
|
#define sidetone_line 4 // connect a speaker for sidetone
|
||||||
|
#define potentiometer 0 // tinykeyer no pot used
|
||||||
|
#define ptt_tx_1 0 // (put 13 instead 0 to activate) tinykeyer PTT port (high = PTT down/PTT on)
|
||||||
|
#define ptt_tx_2 0 // Can be used for keying fox transmitter, T/R switch, or keying slow boatanchors
|
||||||
|
#define ptt_tx_3 0 // These are optional - set to 0 if unused
|
||||||
|
#define ptt_tx_4 0
|
||||||
|
#define ptt_tx_5 0
|
||||||
|
#define ptt_tx_6 0
|
||||||
|
#define analog_buttons_pin A1 // tinykeyer
|
||||||
|
#define command_mode_active_led 9 // tinykeyer - command mode LED indicator
|
||||||
|
#define tx_key_dit 0 // if defined, goes active for dit (any transmitter) - customized with tx_key_dit_and_dah_pins_active_state and tx_key_dit_and_dah_pins_inactive_state
|
||||||
|
#define tx_key_dah 0 // if defined, goes active for dah (any transmitter) - customized with tx_key_dit_and_dah_pins_active_state and tx_key_dit_and_dah_pins_inactive_state
|
||||||
|
|
||||||
|
#define potentiometer_enable_pin 0 // if defined, the potentiometer will be enabled only when this pin is held low; set to 0 to ignore this pin
|
||||||
|
|
||||||
|
// rotary encoder pins and options - rotary encoder code from Jim Balls M0CKE
|
||||||
|
#ifdef FEATURE_ROTARY_ENCODER
|
||||||
|
#define OPTION_ENCODER_HALF_STEP_MODE // Half-step mode?
|
||||||
|
#define rotary_pin1 11 // CW Encoder Pin
|
||||||
|
#define rotary_pin2 10 // CCW Encoder Pin
|
||||||
|
#define OPTION_ENCODER_ENABLE_PULLUPS // define to enable weak pullups.
|
||||||
|
#endif //FEATURE_ROTARY_ENCODER
|
||||||
|
|
||||||
|
#if defined(FEATURE_SLEEP)
|
||||||
|
#define keyer_awake 8 // Goes active when keyer is awake, inactive when in sleep mode; change active and inactive states in keyer_settings file
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_LCD_BACKLIGHT_AUTO_DIM)
|
||||||
|
#define keyer_power_led 0 // must be a PWM-capable pin
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
FEATURE_SIDETONE_SWITCH
|
||||||
|
Enabling this feature and an external toggle switch adds switch control for playing cw sidetone.
|
||||||
|
ST Switch status is displayed in the status command. This feature will override the software control of the sidetone (\o).
|
||||||
|
Arduino pin is assigned by SIDETONE_SWITCH
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifdef FEATURE_SIDETONE_SWITCH
|
||||||
|
#define SIDETONE_SWITCH 8
|
||||||
|
#endif //FEATURE_SIDETONE_SWITCH
|
||||||
|
|
||||||
|
#ifdef FEATURE_4x4_KEYPAD
|
||||||
|
#define Row3 33
|
||||||
|
#define Row2 32
|
||||||
|
#define Row1 31
|
||||||
|
#define Row0 30
|
||||||
|
#define Col3 37
|
||||||
|
#define Col2 36
|
||||||
|
#define Col1 35
|
||||||
|
#define Col0 34
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef FEATURE_3x4_KEYPAD
|
||||||
|
#define Row3 33
|
||||||
|
#define Row2 32
|
||||||
|
#define Row1 31
|
||||||
|
#define Row0 30
|
||||||
|
#define Col2 36
|
||||||
|
#define Col1 35
|
||||||
|
#define Col0 34
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef FEATURE_SEQUENCER
|
||||||
|
#define sequencer_1_pin 0
|
||||||
|
#define sequencer_2_pin 0
|
||||||
|
#define sequencer_3_pin 0
|
||||||
|
#define sequencer_4_pin 0
|
||||||
|
#define sequencer_5_pin 0
|
||||||
|
#endif //FEATURE_SEQUENCER
|
||||||
|
|
||||||
|
#define ptt_input_pin 0
|
||||||
|
|
||||||
|
#define tx_inhibit_pin 0
|
||||||
|
#define tx_pause_pin 0
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
#error "Multiple pin_settings.h files included somehow..."
|
||||||
|
|
||||||
|
#endif //keyer_pin_settings_h
|
143
k3ng_keyer/keyer_pin_settings_yaacwk.h
Executable file
143
k3ng_keyer/keyer_pin_settings_yaacwk.h
Executable file
|
@ -0,0 +1,143 @@
|
||||||
|
#ifndef keyer_pin_settings_h
|
||||||
|
#define keyer_pin_settings_h
|
||||||
|
|
||||||
|
#define paddle_left 21
|
||||||
|
#define paddle_right 22
|
||||||
|
#define tx_key_line_1 28 // (high = key down/tx on)
|
||||||
|
#define tx_key_line_2 31
|
||||||
|
#define tx_key_line_3 0
|
||||||
|
#define tx_key_line_4 0
|
||||||
|
#define tx_key_line_5 0
|
||||||
|
#define tx_key_line_6 0
|
||||||
|
#define sidetone_line 23 // connect a speaker for sidetone
|
||||||
|
#define potentiometer A0 // Speed potentiometer (0 to 5 V) Use pot from 1k to 10k
|
||||||
|
#define ptt_tx_1 0 // PTT ("push to talk") lines
|
||||||
|
#define ptt_tx_2 0 // Can be used for keying fox transmitter, T/R switch, or keying slow boatanchors
|
||||||
|
#define ptt_tx_3 0 // These are optional - set to 0 if unused
|
||||||
|
#define ptt_tx_4 0
|
||||||
|
#define ptt_tx_5 0
|
||||||
|
#define ptt_tx_6 0
|
||||||
|
#define tx_key_dit 0 // if defined, goes active for dit (any transmitter) - customized with tx_key_dit_and_dah_pins_active_state and tx_key_dit_and_dah_pins_inactive_state
|
||||||
|
#define tx_key_dah 0 // if defined, goes active for dah (any transmitter) - customized with tx_key_dit_and_dah_pins_active_state and tx_key_dit_and_dah_pins_inactive_state
|
||||||
|
|
||||||
|
#define potentiometer_enable_pin 0 // if defined, the potentiometer will be enabled only when this pin is held low; set to 0 to ignore this pin
|
||||||
|
|
||||||
|
#ifdef FEATURE_BUTTONS
|
||||||
|
#define analog_buttons_pin A1
|
||||||
|
#define command_mode_active_led 0
|
||||||
|
#endif //FEATURE_BUTTONS
|
||||||
|
|
||||||
|
/*
|
||||||
|
FEATURE_SIDETONE_SWITCH
|
||||||
|
Enabling this feature and an external toggle switch adds switch control for playing cw sidetone.
|
||||||
|
ST Switch status is displayed in the status command. This feature will override the software control of the sidetone (\o).
|
||||||
|
Arduino pin is assigned by SIDETONE_SWITCH
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifdef FEATURE_SIDETONE_SWITCH
|
||||||
|
#define SIDETONE_SWITCH 0
|
||||||
|
#endif //FEATURE_SIDETONE_SWITCH
|
||||||
|
|
||||||
|
|
||||||
|
//lcd pins
|
||||||
|
#ifdef FEATURE_LCD_4BIT
|
||||||
|
#define lcd_rs 26 // A2
|
||||||
|
#define lcd_enable 20
|
||||||
|
#define lcd_d4 12
|
||||||
|
#define lcd_d5 13
|
||||||
|
#define lcd_d6 14
|
||||||
|
#define lcd_d7 15
|
||||||
|
#endif //FEATURE_LCD_4BIT
|
||||||
|
|
||||||
|
//ps2 keyboard pins
|
||||||
|
#ifdef FEATURE_PS2_KEYBOARD
|
||||||
|
#define ps2_keyboard_data A3
|
||||||
|
#define ps2_keyboard_clock 2 // this must be on an interrupt capable pin!
|
||||||
|
#endif //FEATURE_PS2_KEYBOARD
|
||||||
|
|
||||||
|
// rotary encoder pins and options - rotary encoder code from Jim Balls M0CKE
|
||||||
|
#ifdef FEATURE_ROTARY_ENCODER
|
||||||
|
#define OPTION_ENCODER_HALF_STEP_MODE // Half-step mode?
|
||||||
|
#define rotary_pin1 0 // CW Encoder Pin
|
||||||
|
#define rotary_pin2 0 // CCW Encoder Pin
|
||||||
|
#define OPTION_ENCODER_ENABLE_PULLUPS // define to enable weak pullups.
|
||||||
|
#endif //FEATURE_ROTARY_ENCODER
|
||||||
|
|
||||||
|
#ifdef FEATURE_LED_RING
|
||||||
|
#define led_ring_sdi A10 //2 //Data
|
||||||
|
#define led_ring_clk A9 //3 //Clock
|
||||||
|
#define led_ring_le A8 //4 //Latch
|
||||||
|
#endif //FEATURE_LED_RING
|
||||||
|
|
||||||
|
#define correct_answer_led 0
|
||||||
|
#define wrong_answer_led 0
|
||||||
|
|
||||||
|
#ifdef FEATURE_PTT_INTERLOCK
|
||||||
|
#define ptt_interlock 0 // this pin disables PTT and TX KEY
|
||||||
|
#endif //FEATURE_PTT_INTERLOCK
|
||||||
|
|
||||||
|
#ifdef FEATURE_STRAIGHT_KEY
|
||||||
|
#define pin_straight_key 0
|
||||||
|
#endif //FEATURE_STRAIGHT_KEY
|
||||||
|
|
||||||
|
// FEATURE_CW_DECODER & OPTION_CW_DECODER_GOERTZEL_AUDIO_DETECTOR
|
||||||
|
// See https://github.com/k3ng/k3ng_cw_keyer/wiki/385-Feature:-CW-Decoder for details
|
||||||
|
#define cw_decoder_pin 0 // This is for use with external decoding hardware
|
||||||
|
#define cw_decoder_audio_input_pin 0 // This is for audio detection decoding using OPTION_CW_DECODER_GOERTZEL_AUDIO_DETECTOR; this must be an analog pin!
|
||||||
|
#define cw_decoder_indicator 0 // Output - goes HIGH when cw tone is detected by OPTION_CW_DECODER_GOERTZEL_AUDIO_DETECTOR
|
||||||
|
|
||||||
|
#if defined(FEATURE_COMPETITION_COMPRESSION_DETECTION)
|
||||||
|
#define compression_detection_pin 0
|
||||||
|
#endif //FEATURE_COMPETITION_COMPRESSION_DETECTION
|
||||||
|
|
||||||
|
#if defined(FEATURE_SLEEP)
|
||||||
|
#define keyer_awake 0 // Goes active when keyer is awake, inactive when in sleep mode; change active and inactive states in keyer_settings file
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_LCD_BACKLIGHT_AUTO_DIM)
|
||||||
|
#define keyer_power_led 0 // must be a PWM-capable pin
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_CAPACITIVE_PADDLE_PINS)
|
||||||
|
#define capactive_paddle_pin_inhibit_pin 0 // if this pin is defined and is set high, the capacitive paddle pins will switch to normal (non-capacitive) sensing mode
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef FEATURE_4x4_KEYPAD
|
||||||
|
#define Row3 33
|
||||||
|
#define Row2 32
|
||||||
|
#define Row1 31
|
||||||
|
#define Row0 30
|
||||||
|
#define Col3 37
|
||||||
|
#define Col2 36
|
||||||
|
#define Col1 35
|
||||||
|
#define Col0 34
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef FEATURE_3x4_KEYPAD
|
||||||
|
#define Row3 33
|
||||||
|
#define Row2 32
|
||||||
|
#define Row1 31
|
||||||
|
#define Row0 30
|
||||||
|
#define Col2 36
|
||||||
|
#define Col1 35
|
||||||
|
#define Col0 34
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef FEATURE_SEQUENCER
|
||||||
|
#define sequencer_1_pin 0
|
||||||
|
#define sequencer_2_pin 0
|
||||||
|
#define sequencer_3_pin 0
|
||||||
|
#define sequencer_4_pin 0
|
||||||
|
#define sequencer_5_pin 0
|
||||||
|
#endif //FEATURE_SEQUENCER
|
||||||
|
|
||||||
|
#define ptt_input_pin 0
|
||||||
|
|
||||||
|
#define tx_inhibit_pin 0
|
||||||
|
#define tx_pause_pin 0
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
#error "Multiple pin_settings.h files included somehow..."
|
||||||
|
|
||||||
|
#endif //keyer_pin_settings_h
|
176
k3ng_keyer/keyer_pin_settings_yccc_so2r_mini.h
Executable file
176
k3ng_keyer/keyer_pin_settings_yccc_so2r_mini.h
Executable file
|
@ -0,0 +1,176 @@
|
||||||
|
/* Pins - you must review these and configure ! */
|
||||||
|
#ifndef keyer_pin_settings_h
|
||||||
|
#define keyer_pin_settings_h
|
||||||
|
|
||||||
|
#define paddle_left 6
|
||||||
|
#define paddle_right 7
|
||||||
|
|
||||||
|
#define tx_key_line_1 5 // (high = key down/tx on)
|
||||||
|
#define tx_key_line_2 4
|
||||||
|
#define tx_key_line_3 0
|
||||||
|
#define tx_key_line_4 0
|
||||||
|
#define tx_key_line_5 0
|
||||||
|
#define tx_key_line_6 0
|
||||||
|
#define sidetone_line 0 // connect a buzzer for sidetone (optional, set to zero if not used)
|
||||||
|
#define potentiometer A7 // Speed potentiometer (0 to 5 V) Use pot from 1k to 10k
|
||||||
|
#define ptt_tx_1 3 // Radio 1 PTT ("push to talk") line
|
||||||
|
#define ptt_tx_2 2 // Radio 2 PTT ("push to talk") line
|
||||||
|
#define ptt_tx_3 0 // These are optional - set to 0 if unused
|
||||||
|
#define ptt_tx_4 0
|
||||||
|
#define ptt_tx_5 0
|
||||||
|
#define ptt_tx_6 0
|
||||||
|
#define tx_key_dit 0 // if defined, goes active for dit (any transmitter) - customized with tx_key_dit_and_dah_pins_active_state and tx_key_dit_and_dah_pins_inactive_state
|
||||||
|
#define tx_key_dah 0 // if defined, goes active for dah (any transmitter) - customized with tx_key_dit_and_dah_pins_active_state and tx_key_dit_and_dah_pins_inactive_state
|
||||||
|
|
||||||
|
#define so2r_tx_1 0 // Radio 1 transmitter selected (optional, set to zero if not used)
|
||||||
|
#define so2r_tx_2 11 // Radio 2 transmitter selected (optional, set to zero if not used)
|
||||||
|
#define so2r_rx_1 0 // Radio 1 receiver selected (optional, set to zero if not used)
|
||||||
|
#define so2r_rx_2 0 // Radio 2 receiver selected (optional, set to zero if not used)
|
||||||
|
#define so2r_rx_1s 0 // Radio 1 receiver or stereo selected (optional, set to zero if not used)
|
||||||
|
#define so2r_rx_2s 9 // Radio 2 receiver or stereo selected (optional, set to zero if not used)
|
||||||
|
#define so2r_rx_s 10 // Stereo receive selected (optional, set to zero if not used)
|
||||||
|
|
||||||
|
#ifdef FEATURE_SO2R_SWITCHES
|
||||||
|
#define so2r_tx_switch A5 // TX switch, low if TX1, high if TX2
|
||||||
|
#define so2r_rx1_switch A4 // RX 1 switch, low if RX1, high if RX2 or stereo
|
||||||
|
#define so2r_rx2_switch A3 // RX 2 switch, low if RX2, high if RX1 or stereo
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define potentiometer_enable_pin 0 // if defined, the potentiometer will be enabled only when this pin is held low; set to 0 to ignore this pin
|
||||||
|
|
||||||
|
#ifdef FEATURE_BUTTONS
|
||||||
|
#define analog_buttons_pin A1
|
||||||
|
#define command_mode_active_led 0
|
||||||
|
#endif //FEATURE_BUTTONS
|
||||||
|
|
||||||
|
/*
|
||||||
|
FEATURE_SIDETONE_SWITCH
|
||||||
|
Enabling this feature and an external toggle switch adds switch control for playing cw sidetone.
|
||||||
|
ST Switch status is displayed in the status command. This feature will override the software control of the sidetone (\o).
|
||||||
|
Arduino pin is assigned by SIDETONE_SWITCH
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifdef FEATURE_SIDETONE_SWITCH
|
||||||
|
#define SIDETONE_SWITCH 8
|
||||||
|
#endif //FEATURE_SIDETONE_SWITCH
|
||||||
|
|
||||||
|
|
||||||
|
//lcd pins
|
||||||
|
#if defined(FEATURE_LCD_4BIT) || defined(FEATURE_LCD_8BIT)
|
||||||
|
#define lcd_rs A2
|
||||||
|
#define lcd_enable 10 // pin 10 is used by Ethernet shield and will conflict with that
|
||||||
|
#define lcd_d4 6
|
||||||
|
#define lcd_d5 7
|
||||||
|
#define lcd_d6 8
|
||||||
|
#define lcd_d7 9
|
||||||
|
#endif //FEATURE_LCD_4BIT || defined(FEATURE_LCD_8BIT)
|
||||||
|
|
||||||
|
#if defined(FEATURE_LCD_8BIT) // addition four data lines for 8 bit LCD control
|
||||||
|
#define lcd_d0 20
|
||||||
|
#define lcd_d1 21
|
||||||
|
#define lcd_d2 22
|
||||||
|
#define lcd_d3 23
|
||||||
|
#endif //FEATURE_LCD_4BIT || defined(FEATURE_LCD_8BIT)
|
||||||
|
|
||||||
|
#ifdef FEATURE_LCD1602_N07DH
|
||||||
|
#define lcd_rs 8
|
||||||
|
#define lcd_enable 9
|
||||||
|
#define lcd_d4 4
|
||||||
|
#define lcd_d5 5
|
||||||
|
#define lcd_d6 6
|
||||||
|
#define lcd_d7 7
|
||||||
|
#endif //FEATURE_LCD1602_N07DH
|
||||||
|
|
||||||
|
//ps2 keyboard pins
|
||||||
|
#ifdef FEATURE_PS2_KEYBOARD
|
||||||
|
#define ps2_keyboard_data A3
|
||||||
|
#define ps2_keyboard_clock 3 // this must be on an interrupt capable pin!
|
||||||
|
#endif //FEATURE_PS2_KEYBOARD
|
||||||
|
|
||||||
|
// rotary encoder pins and options - rotary encoder code from Jim Balls M0CKE
|
||||||
|
#ifdef FEATURE_ROTARY_ENCODER
|
||||||
|
#define OPTION_ENCODER_HALF_STEP_MODE // Half-step mode?
|
||||||
|
#define rotary_pin1 0 // CW Encoder Pin
|
||||||
|
#define rotary_pin2 0 // CCW Encoder Pin
|
||||||
|
#define OPTION_ENCODER_ENABLE_PULLUPS // define to enable weak pullups.
|
||||||
|
#endif //FEATURE_ROTARY_ENCODER
|
||||||
|
|
||||||
|
#ifdef FEATURE_LED_RING
|
||||||
|
#define led_ring_sdi A10 //2 //Data
|
||||||
|
#define led_ring_clk A9 //3 //Clock
|
||||||
|
#define led_ring_le A8 //4 //Latch
|
||||||
|
#endif //FEATURE_LED_RING
|
||||||
|
|
||||||
|
#define correct_answer_led 0
|
||||||
|
#define wrong_answer_led 0
|
||||||
|
|
||||||
|
#ifdef FEATURE_PTT_INTERLOCK
|
||||||
|
#define ptt_interlock 0 // this pin disables PTT and TX KEY
|
||||||
|
#endif //FEATURE_PTT_INTERLOCK
|
||||||
|
|
||||||
|
#ifdef FEATURE_STRAIGHT_KEY
|
||||||
|
#define pin_straight_key 52
|
||||||
|
#endif //FEATURE_STRAIGHT_KEY
|
||||||
|
|
||||||
|
// FEATURE_CW_DECODER & OPTION_CW_DECODER_GOERTZEL_AUDIO_DETECTOR
|
||||||
|
// See https://github.com/k3ng/k3ng_cw_keyer/wiki/385-Feature:-CW-Decoder for details
|
||||||
|
#define cw_decoder_pin 0 // This is for use with external decoding hardware
|
||||||
|
#define cw_decoder_audio_input_pin 0 // This is for audio detection decoding using OPTION_CW_DECODER_GOERTZEL_AUDIO_DETECTOR; this must be an analog pin!
|
||||||
|
#define cw_decoder_indicator 0 // Output - goes HIGH when cw tone is detected by OPTION_CW_DECODER_GOERTZEL_AUDIO_DETECTOR
|
||||||
|
|
||||||
|
|
||||||
|
#if defined(FEATURE_COMPETITION_COMPRESSION_DETECTION)
|
||||||
|
#define compression_detection_pin 13
|
||||||
|
#endif //FEATURE_COMPETITION_COMPRESSION_DETECTION
|
||||||
|
|
||||||
|
#if defined(FEATURE_SLEEP)
|
||||||
|
#define keyer_awake 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_LCD_BACKLIGHT_AUTO_DIM)
|
||||||
|
#define keyer_power_led 0 // must be a PWM-capable pin
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_CAPACITIVE_PADDLE_PINS)
|
||||||
|
#define capactive_paddle_pin_inhibit_pin 0 // if this pin is defined and is set high, the capacitive paddle pins will switch to normal (non-capacitive) sensing mode
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef FEATURE_4x4_KEYPAD
|
||||||
|
#define Row3 33
|
||||||
|
#define Row2 32
|
||||||
|
#define Row1 31
|
||||||
|
#define Row0 30
|
||||||
|
#define Col3 37
|
||||||
|
#define Col2 36
|
||||||
|
#define Col1 35
|
||||||
|
#define Col0 34
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef FEATURE_3x4_KEYPAD
|
||||||
|
#define Row3 33
|
||||||
|
#define Row2 32
|
||||||
|
#define Row1 31
|
||||||
|
#define Row0 30
|
||||||
|
#define Col2 36
|
||||||
|
#define Col1 35
|
||||||
|
#define Col0 34
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef FEATURE_SEQUENCER
|
||||||
|
#define sequencer_1_pin 0
|
||||||
|
#define sequencer_2_pin 0
|
||||||
|
#define sequencer_3_pin 0
|
||||||
|
#define sequencer_4_pin 0
|
||||||
|
#define sequencer_5_pin 0
|
||||||
|
#endif //FEATURE_SEQUENCER
|
||||||
|
|
||||||
|
#define ptt_input_pin 8
|
||||||
|
|
||||||
|
#define tx_inhibit_pin 0
|
||||||
|
#define tx_pause_pin 0
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
#error "Multiple pin_settings.h files included somehow..."
|
||||||
|
|
||||||
|
#endif //keyer_pin_settings_h
|
316
k3ng_keyer/keyer_settings.h
Executable file
316
k3ng_keyer/keyer_settings.h
Executable file
|
@ -0,0 +1,316 @@
|
||||||
|
// Initial and hardcoded settings
|
||||||
|
#define initial_speed_wpm 26 // "factory default" keyer speed setting
|
||||||
|
#define initial_command_mode_speed_wpm 20 // "factory default" command mode speed setting
|
||||||
|
#define initial_sidetone_freq 600 // "factory default" sidetone frequency setting
|
||||||
|
#define sidetone_hz_limit_low 299
|
||||||
|
#define sidetone_hz_limit_high 2001
|
||||||
|
#define hz_high_beep 1500 // frequency in hertz of high beep
|
||||||
|
#define hz_low_beep 400 // frequency in hertz of low beep
|
||||||
|
#define initial_dah_to_dit_ratio 300 // 300 = 3 / normal 3:1 ratio
|
||||||
|
#define initial_ptt_lead_time_tx1 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx1 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx2 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx2 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx3 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx3 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx4 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx4 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx5 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx5 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx6 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx6 10 // PTT tail time in mS
|
||||||
|
#define initial_qrss_dit_length 1 // QRSS dit length in seconds
|
||||||
|
#define initial_pot_wpm_low_value 13 // Potentiometer WPM fully CCW
|
||||||
|
#define initial_pot_wpm_high_value 35 // Potentiometer WPM fully CW
|
||||||
|
#define wpm_limit_low 5
|
||||||
|
#define wpm_limit_high 60
|
||||||
|
#define potentiometer_change_threshold 1.0 // don't change the keyer speed until pot wpm has changed more than this
|
||||||
|
#define send_buffer_size 150
|
||||||
|
#define default_length_letterspace 3
|
||||||
|
#define default_length_wordspace 7
|
||||||
|
#define default_keying_compensation 0 // number of milliseconds to extend all dits and dahs - for QSK on boatanchors
|
||||||
|
#define default_first_extension_time 0 // number of milliseconds to extend first sent dit or dah
|
||||||
|
#define default_pot_full_scale_reading 1023
|
||||||
|
#define default_weighting 50 // 50 = weighting factor of 1 (normal)
|
||||||
|
#define default_ptt_hang_time_wordspace_units 1.0
|
||||||
|
#define winkey_c0_wait_time 1 // the number of milliseconds to wait to send 0xc0 byte after send buffer has been sent
|
||||||
|
#define winkey_command_timeout_ms 5000
|
||||||
|
#define winkey_discard_bytes_startup 3 // this is used if OPTION_WINKEY_DISCARD_BYTES_AT_STARTUP is enabled above
|
||||||
|
#define winkey_xoff_threshold 20 // the number of chars in the buffer when we begin sending XOFFs
|
||||||
|
#define winkey_xon_threshold 10 // the number of chars in the buffer below which we deactivate XOFF
|
||||||
|
#define default_memory_repeat_time 3000 // time in milliseconds
|
||||||
|
#define LCD_COLUMNS 20
|
||||||
|
#define LCD_ROWS 4
|
||||||
|
#define lcd_i2c_address_mathertel_PCF8574 0x27 // I2C address of display for FEATURE_LCD_MATHERTEL_PCF8574
|
||||||
|
#define lcd_i2c_address_fdebrander_lcd 0x27 // I2C address of display for FEATURE_LCD_I2C_FDEBRABANDER
|
||||||
|
#define lcd_i2c_address_ydv1_lcd 0x27 // I2C address of display for FEATURE_LCD_YDv1
|
||||||
|
//#define lcd_i2c_address_ydv1_lcd 0x38 // I2C address of display for FEATURE_LCD_YDv1
|
||||||
|
#define lcd_i2c_address_sainsmart_lcd 0x27 // I2C address of display for FEATURE_LCD_SAINSMART_I2C
|
||||||
|
#define hell_pixel_microseconds 4025
|
||||||
|
#define program_memory_limit_consec_spaces 1
|
||||||
|
#define serial_leading_zeros 1 // set to 1 to activate leading zeros in serial numbers (i.e. #1 = 001)
|
||||||
|
#define serial_cut_numbers 0 // set to 1 to activate cut numbers in serial numbers (i.e. #10 = 1T, #19 = 1N)
|
||||||
|
#define go_to_sleep_inactivity_time 10 // minutes - FEATURE_SLEEP
|
||||||
|
#define dim_backlight_inactive_time 5 // minutes - FEATURE_LCD_BACKLIGHT_AUTO_DIM
|
||||||
|
#define default_cmos_super_keyer_iambic_b_timing_percent 33 // use with FEATURE_CMOS_SUPER_KEYER_IAMBIC_B_TIMING; should be between 0 to 99 % (0% = true iambic b;100% = iambic a behavior)
|
||||||
|
#define default_cw_echo_timing_factor 1.75 // "factory default" setting
|
||||||
|
#define default_autospace_timing_factor 2.0 // "factory default" setting
|
||||||
|
#define winkey_paddle_echo_buffer_decode_timing_factor 0.25
|
||||||
|
#define potentiometer_always_on 1
|
||||||
|
#define ptt_interlock_check_every_ms 100
|
||||||
|
#define ptt_interlock_active_state HIGH
|
||||||
|
#define unknown_cw_character '*'
|
||||||
|
#define cli_paddle_echo_on_at_boot 1
|
||||||
|
#define cli_straight_key_echo_on_at_boot 1
|
||||||
|
#define tx_key_dit_and_dah_pins_active_state HIGH
|
||||||
|
#define tx_key_dit_and_dah_pins_inactive_state LOW
|
||||||
|
#define potentiometer_check_interval_ms 150
|
||||||
|
#define potentiometer_reading_threshold 1
|
||||||
|
#define default_paddle_interruption_quiet_time_element_lengths 0
|
||||||
|
#define default_wordsworth_wordspace 6
|
||||||
|
#define default_wordsworth_repetition 1
|
||||||
|
#define serial_program_memory_buffer_size 500
|
||||||
|
#define eeprom_write_time_ms 30000
|
||||||
|
|
||||||
|
#ifdef FEATURE_BUTTONS
|
||||||
|
#define analog_buttons_number_of_buttons 6 // includes the command button (command button + 3 memory buttons = 4)
|
||||||
|
#define analog_buttons_r1 10
|
||||||
|
#define analog_buttons_r2 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#if defined(FEATURE_BUTTONS) && !defined(FEATURE_PS2_KEYBOARD) && !defined(FEATURE_USB_KEYBOARD) && !defined(FEATURE_COMMAND_LINE_INTERFACE) && !defined(FEATURE_WINKEY_EMULATION)
|
||||||
|
#define number_of_memories byte(analog_buttons_number_of_buttons-1)
|
||||||
|
#else
|
||||||
|
#define number_of_memories byte(12)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef FEATURE_CAPACITIVE_PADDLE_PINS
|
||||||
|
#define capacitance_threshold 2
|
||||||
|
#endif //FEATURE_CAPACITIVE_PADDLE_PINS
|
||||||
|
|
||||||
|
#ifdef FEATURE_LED_RING
|
||||||
|
#define led_ring_low_limit 10
|
||||||
|
#define led_ring_high_limit 50
|
||||||
|
#endif //FEATURE_LED_RING
|
||||||
|
|
||||||
|
#ifdef FEATURE_QLF
|
||||||
|
#define qlf_dit_max 125
|
||||||
|
#define qlf_dit_min 75
|
||||||
|
#define qlf_dah_max 200
|
||||||
|
#define qlf_dah_min 100
|
||||||
|
#define qlf_on_by_default 0
|
||||||
|
#endif //FEATURE_QLF
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef FEATURE_WINKEY_EMULATION
|
||||||
|
#if defined(OPTION_WINKEY_UCXLOG_9600_BAUD) || defined(FEATURE_SO2R_BASE)
|
||||||
|
#define WINKEY_DEFAULT_BAUD 9600
|
||||||
|
#else
|
||||||
|
#define WINKEY_DEFAULT_BAUD 1200
|
||||||
|
#endif //OPTION_WINKEY_UCXLOG_9600_BAUD || FEATURE_SO2R_BASE
|
||||||
|
// alter these below to map alternate sidetones for Winkey interface protocol emulation
|
||||||
|
#ifdef OPTION_WINKEY_2_SUPPORT
|
||||||
|
#define WINKEY_SIDETONE_1 3759
|
||||||
|
#define WINKEY_SIDETONE_2 1879
|
||||||
|
#define WINKEY_SIDETONE_3 1252
|
||||||
|
#define WINKEY_SIDETONE_4 940
|
||||||
|
#define WINKEY_SIDETONE_5 752
|
||||||
|
#define WINKEY_SIDETONE_6 625
|
||||||
|
#define WINKEY_SIDETONE_7 535
|
||||||
|
#define WINKEY_SIDETONE_8 469
|
||||||
|
#define WINKEY_SIDETONE_9 417
|
||||||
|
#define WINKEY_SIDETONE_10 375
|
||||||
|
#else //OPTION_WINKEY_2_SUPPORT
|
||||||
|
#define WINKEY_SIDETONE_1 4000
|
||||||
|
#define WINKEY_SIDETONE_2 2000
|
||||||
|
#define WINKEY_SIDETONE_3 1333
|
||||||
|
#define WINKEY_SIDETONE_4 1000
|
||||||
|
#define WINKEY_SIDETONE_5 800
|
||||||
|
#define WINKEY_SIDETONE_6 666
|
||||||
|
#define WINKEY_SIDETONE_7 571
|
||||||
|
#define WINKEY_SIDETONE_8 500
|
||||||
|
#define WINKEY_SIDETONE_9 444
|
||||||
|
#define WINKEY_SIDETONE_10 400
|
||||||
|
#endif //OPTION_WINKEY_2_SUPPORT
|
||||||
|
|
||||||
|
#define WINKEY_1_REPORT_VERSION_NUMBER 10
|
||||||
|
#define WINKEY_2_REPORT_VERSION_NUMBER 23
|
||||||
|
|
||||||
|
// alter these to map to alternate hang time wordspace units
|
||||||
|
#define WINKEY_HANG_TIME_1_0 1.0
|
||||||
|
#define WINKEY_HANG_TIME_1_33 1.33
|
||||||
|
#define WINKEY_HANG_TIME_1_66 1.66
|
||||||
|
#define WINKEY_HANG_TIME_2_0 2.0
|
||||||
|
|
||||||
|
#define WINKEY_RETURN_THIS_FOR_ADMIN_GET_CAL 0x16
|
||||||
|
#define WINKEY_RETURN_THIS_FOR_ADMIN_PADDLE_A2D 0xEE
|
||||||
|
#define WINKEY_RETURN_THIS_FOR_ADMIN_SPEED_A2D 0x00
|
||||||
|
|
||||||
|
#endif //FEATURE_WINKEY_EMULATION
|
||||||
|
|
||||||
|
#define PRIMARY_SERIAL_PORT &Serial
|
||||||
|
#define PRIMARY_SERIAL_PORT_BAUD 115200 // This applies only when the port is in Command Line Interface mode. In Winkey mode it will default to 1200.
|
||||||
|
|
||||||
|
#ifdef FEATURE_COMMAND_LINE_INTERFACE_ON_SECONDARY_PORT
|
||||||
|
#define SECONDARY_SERIAL_PORT &Serial1
|
||||||
|
#define SECONDARY_SERIAL_PORT_BAUD 115200
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#define CW_DECODER_SCREEN_COLUMNS 120 // word wrap at this many columns
|
||||||
|
#define CW_DECODER_SPACE_PRINT_THRESH 4.5 // print space if no tone for this many element lengths
|
||||||
|
#define CW_DECODER_SPACE_DECODE_THRESH 2.0 // invoke character decode if no tone for this many element lengths
|
||||||
|
#define CW_DECODER_NOISE_FILTER 20 // ignore elements shorter than this (mS)
|
||||||
|
|
||||||
|
#define STRAIGHT_KEY_ACTIVE_STATE LOW
|
||||||
|
|
||||||
|
#ifdef FEATURE_DYNAMIC_DAH_TO_DIT_RATIO
|
||||||
|
#define DYNAMIC_DAH_TO_DIT_RATIO_LOWER_LIMIT_WPM 30
|
||||||
|
#define DYNAMIC_DAH_TO_DIT_RATIO_LOWER_LIMIT_RATIO 300 // 300 = 3:1 ratio
|
||||||
|
#define DYNAMIC_DAH_TO_DIT_RATIO_UPPER_LIMIT_WPM 70
|
||||||
|
#define DYNAMIC_DAH_TO_DIT_RATIO_UPPER_LIMIT_RATIO 240 // 240 = 2.4:1 ratio
|
||||||
|
#endif //FEATURE_DYNAMIC_DAH_TO_DIT_RATIO
|
||||||
|
|
||||||
|
#if defined(FEATURE_COMPETITION_COMPRESSION_DETECTION)
|
||||||
|
#define COMPETITION_COMPRESSION_DETECTION_ARRAY_SIZE 16
|
||||||
|
#define COMPETITION_COMPRESSION_DETECTION_TIME_INTERCHAR_LOWER_LIMIT 1
|
||||||
|
#define COMPETITION_COMPRESSION_DETECTION_TIME_INTERCHAR_UPPER_LIMIT 6.0
|
||||||
|
#define COMPETITION_COMPRESSION_DETECTION_AVERAGE_ALARM_THRESHOLD 3.0
|
||||||
|
#endif //FEATURE_COMPETITION_COMPRESSION_DETECTION
|
||||||
|
|
||||||
|
#if defined(FEATURE_SLEEP)
|
||||||
|
#define KEYER_AWAKE_PIN_AWAKE_STATE HIGH
|
||||||
|
#define KEYER_AWAKE_PIN_ASLEEP_STATE LOW
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_LCD_BACKLIGHT_AUTO_DIM)
|
||||||
|
#define keyer_power_led_awake_duty 255 // PWM duty cycle. 0 is 0%, 255 is 100%
|
||||||
|
#define keyer_power_led_asleep_duty 25 // 25 is quite dim. Use 0 for off
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_ETHERNET)
|
||||||
|
// #define FEATURE_ETHERNET_IP {192,168,1,178} // default IP address ("192.168.1.178")
|
||||||
|
// #define FEATURE_ETHERNET_MAC {0xDE,0xAD,0xBE,0xEF,0xFE,0xED}
|
||||||
|
#define FEATURE_ETHERNET_IP {192,168,1,179} // default IP address ("192.168.1.179")
|
||||||
|
#define FEATURE_ETHERNET_MAC {0xDE,0xAD,0xBE,0xEF,0xFE,0xEE}
|
||||||
|
#define FEATURE_ETHERNET_DNS {8,8,8,8}
|
||||||
|
|
||||||
|
#define FEATURE_ETHERNET_GATEWAY {192,168,1,1} // default gateway
|
||||||
|
#define FEATURE_ETHERNET_SUBNET_MASK {255,255,255,0} // default subnet mask
|
||||||
|
#define FEATURE_ETHERNET_WEB_LISTENER_PORT 80
|
||||||
|
#define FEATURE_UDP_SEND_BUFFER_SIZE 128
|
||||||
|
#define FEATURE_UDP_RECEIVE_BUFFER_SIZE 128
|
||||||
|
#endif //FEATURE_ETHERNET
|
||||||
|
|
||||||
|
#define WEB_SERVER_CONTROL_TX_KEY_TIME_LIMIT_SECS 10
|
||||||
|
|
||||||
|
#define FEATURE_INTERNET_LINK_MAX_LINKS 2
|
||||||
|
#define FEATURE_INTERNET_LINK_DEFAULT_RCV_UDP_PORT 8888
|
||||||
|
#define FEATURE_INTERNET_LINK_BUFFER_TIME_MS 500
|
||||||
|
#define FEATURE_INTERNET_LINK_SVC_DURING_LOOP_TIME_MS 20
|
||||||
|
#define FEATURE_INTERNET_LINK_KEY_DOWN_TIMEOUT_SECS 8
|
||||||
|
|
||||||
|
#if defined(FEATURE_4x4_KEYPAD) || defined(FEATURE_3x4_KEYPAD)
|
||||||
|
#define KEYPAD_ROWS 4 //KeyPad Rows
|
||||||
|
#if defined(FEATURE_4x4_KEYPAD)
|
||||||
|
#define KEYPAD_COLS 4 //keypad Columns
|
||||||
|
#else
|
||||||
|
#define KEYPAD_COLS 3
|
||||||
|
#endif
|
||||||
|
#define mem1 0 //Memory numbers for Keypad: Actual memory numbers start with "0"
|
||||||
|
#define mem2 1
|
||||||
|
#define mem3 2
|
||||||
|
#define mem4 3
|
||||||
|
#define mem5 4
|
||||||
|
#define mem6 5
|
||||||
|
#define mem7 6
|
||||||
|
#define mem8 7
|
||||||
|
#define mem9 8
|
||||||
|
#define mem10 9
|
||||||
|
#define mem11 10
|
||||||
|
#define mem12 11
|
||||||
|
#endif //#if defined(FEATURE_4x4_KEYPAD) || defined(FEATURE_3x4_KEYPAD)
|
||||||
|
|
||||||
|
#define initial_sidetone_mode 1 // Sidetone mode, 0=OFF, 1=ON, 2=PADDLE_ONLY
|
||||||
|
|
||||||
|
#define sd_card_spi_ss_line 4
|
||||||
|
|
||||||
|
#if defined(OPTION_DFROBOT_LCD_COMMAND_BUTTONS)
|
||||||
|
|
||||||
|
// For V1.1 board use these values
|
||||||
|
#define dfrobot_btnRIGHT_analog 50
|
||||||
|
#define dfrobot_btnUP_analog 250
|
||||||
|
#define dfrobot_btnDOWN_analog 450
|
||||||
|
#define dfrobot_btnLEFT_analog 650
|
||||||
|
#define dfrobot_btnSELECT_analog 850
|
||||||
|
|
||||||
|
// For V1.0 board use these values
|
||||||
|
// #define dfrobot_btnRIGHT_analog 50
|
||||||
|
// #define dfrobot_btnUP_analog 195
|
||||||
|
// #define dfrobot_btnDOWN_analog 380
|
||||||
|
// #define dfrobot_btnLEFT_analog 555
|
||||||
|
// #define dfrobot_btnSELECT_analog 790
|
||||||
|
|
||||||
|
// button to memory mappings (0 = command button, 1 = memory 1, 2 = memory 2, etc.)
|
||||||
|
#define dfrobot_btnRIGHT 2
|
||||||
|
#define dfrobot_btnUP 1
|
||||||
|
#define dfrobot_btnDOWN 3
|
||||||
|
#define dfrobot_btnLEFT 4
|
||||||
|
#define dfrobot_btnSELECT 0
|
||||||
|
#define dfrobot_btnNONE 255 // do not change
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define sequencer_pins_active_state HIGH
|
||||||
|
#define sequencer_pins_inactive_state LOW
|
||||||
|
#define ptt_line_active_state HIGH
|
||||||
|
#define ptt_line_inactive_state LOW
|
||||||
|
#define tx_key_line_active_state HIGH
|
||||||
|
#define tx_key_line_inactive_state LOW
|
||||||
|
#define ptt_input_pin_active_state LOW
|
||||||
|
#define ptt_input_pin_inactive_state HIGH
|
||||||
|
#define tx_inhibit_pin_active_state LOW
|
||||||
|
#define tx_inhibit_pin_inactive_state HIGH
|
||||||
|
#define tx_pause_pin_active_state LOW
|
||||||
|
#define tx_pause_pin_inactive_state HIGH
|
||||||
|
#define sidetone_line_active_state HIGH
|
||||||
|
#define sidetone_line_inactive_state LOW
|
||||||
|
|
||||||
|
#if defined(ARDUINO_MAPLE_MINI)
|
||||||
|
#define button_value_factor 4095 //sp5iou contributed
|
||||||
|
#else
|
||||||
|
#define button_value_factor 1023
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define farnsworth_timing_calibration 1.15
|
||||||
|
|
||||||
|
#define sidetone_volume_low_limit 10
|
||||||
|
#define sidetone_volume_high_limit 500
|
||||||
|
|
||||||
|
#define custom_startup_field "your custom text here" // an example could be callsign and name, eg. "AB1XYZ Bob", (or "Worlds best operator" which requires a 20 column display), string length shouldo be no more than the number of columns on the display
|
||||||
|
|
||||||
|
#define command_mode_acknowledgement_character 'R'
|
||||||
|
|
||||||
|
#if defined(FEATURE_COMMAND_MODE_ENHANCED_CMD_ACKNOWLEDGEMENT)
|
||||||
|
#define command_a_iambic_a "A"
|
||||||
|
#define command_b_iambic_b "B"
|
||||||
|
#define command_c_single_paddle "SINGLE"
|
||||||
|
#define command_d_ultimatic "ULT"
|
||||||
|
#define command_h_weight_dit_dah_ratio_default "R"
|
||||||
|
#define command_i_tx_on "TX ON"
|
||||||
|
#define command_i_tx_off "TX OFF"
|
||||||
|
#define command_k_dit_dah_buffers_on "ON"
|
||||||
|
#define command_k_dit_dah_buffers_off "OFF"
|
||||||
|
#define command_n_paddle_reverse "REV"
|
||||||
|
#define command_n_paddle_normal "NORM"
|
||||||
|
#define command_o_sidetone_off "ST OFF"
|
||||||
|
#define command_o_sidetone_paddle_only "ST PD ONLY"
|
||||||
|
#define command_o_sidetone_on "ST ON"
|
||||||
|
#define command_t_tune_mode "TUNE"
|
||||||
|
#define command_v_potentiometer_on "POT ON"
|
||||||
|
#define command_v_potentiometer_off "POT OFF"
|
||||||
|
|
||||||
|
#define command_error "ERR"
|
||||||
|
|
||||||
|
#endif //FEATURE_COMMAND_MODE_ENHANCED_CMD_ACKNOWLEDGEMENT
|
338
k3ng_keyer/keyer_settings_fk_10.h
Executable file
338
k3ng_keyer/keyer_settings_fk_10.h
Executable file
|
@ -0,0 +1,338 @@
|
||||||
|
// Initial and hardcoded settings
|
||||||
|
|
||||||
|
|
||||||
|
// ######## ## ## ## ## ## ## ######## ## ## ######## ########
|
||||||
|
// ## ## ## ### ## ## ## ## ## ## ## ## ##
|
||||||
|
// ## ## ## #### ## ## ## ## #### ## ## ##
|
||||||
|
// ###### ## ## ## ## ## ##### ###### ## ###### ########
|
||||||
|
// ## ## ## ## #### ## ## ## ## ## ## ##
|
||||||
|
// ## ## ## ## ### ## ## ## ## ## ## ##
|
||||||
|
// ## ####### ## ## ## ## ######## ## ######## ## ##
|
||||||
|
|
||||||
|
|
||||||
|
// ######## ## ## ## #####
|
||||||
|
// ## ## ## #### ## ##
|
||||||
|
// ## ## ## ## ## ##
|
||||||
|
// ###### ##### ## ## ##
|
||||||
|
// ## ## ## ## ## ##
|
||||||
|
// ## ## ## ## ## ##
|
||||||
|
// ## ## ## ###### #####
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#define initial_speed_wpm 26 // "factory default" keyer speed setting
|
||||||
|
#define initial_command_mode_speed_wpm 20 // "factory default" command mode speed setting
|
||||||
|
#define initial_sidetone_freq 600 // "factory default" sidetone frequency setting
|
||||||
|
#define sidetone_hz_limit_low 299
|
||||||
|
#define sidetone_hz_limit_high 2001
|
||||||
|
#define hz_high_beep 1500 // frequency in hertz of high beep
|
||||||
|
#define hz_low_beep 400 // frequency in hertz of low beep
|
||||||
|
#define initial_dah_to_dit_ratio 300 // 300 = 3 / normal 3:1 ratio
|
||||||
|
#define initial_ptt_lead_time_tx1 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx1 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx2 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx2 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx3 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx3 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx4 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx4 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx5 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx5 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx6 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx6 10 // PTT tail time in mS
|
||||||
|
#define initial_qrss_dit_length 1 // QRSS dit length in seconds
|
||||||
|
#define initial_pot_wpm_low_value 13 // Potentiometer WPM fully CCW
|
||||||
|
#define initial_pot_wpm_high_value 35 // Potentiometer WPM fully CW
|
||||||
|
#define wpm_limit_low 5
|
||||||
|
#define wpm_limit_high 60
|
||||||
|
#define potentiometer_change_threshold 0.9 // don't change the keyer speed until pot wpm has changed more than this
|
||||||
|
#define send_buffer_size 150
|
||||||
|
#define default_length_letterspace 3
|
||||||
|
#define default_length_wordspace 7
|
||||||
|
#define default_keying_compensation 0 // number of milliseconds to extend all dits and dahs - for QSK on boatanchors
|
||||||
|
#define default_first_extension_time 0 // number of milliseconds to extend first sent dit or dah
|
||||||
|
#define default_pot_full_scale_reading 1023
|
||||||
|
#define default_weighting 50 // 50 = weighting factor of 1 (normal)
|
||||||
|
#define default_ptt_hang_time_wordspace_units 0.0
|
||||||
|
#define winkey_c0_wait_time 1 // the number of milliseconds to wait to send 0xc0 byte after send buffer has been sent
|
||||||
|
#define winkey_command_timeout_ms 5000
|
||||||
|
#define winkey_discard_bytes_startup 3 // this is used if OPTION_WINKEY_DISCARD_BYTES_AT_STARTUP is enabled above
|
||||||
|
#define winkey_xoff_threshold 20 // the number of chars in the buffer when we begin sending XOFFs
|
||||||
|
#define winkey_xon_threshold 10 // the number of chars in the buffer below which we deactivate XOFF
|
||||||
|
#define default_memory_repeat_time 3000 // time in milliseconds
|
||||||
|
#define LCD_COLUMNS 16
|
||||||
|
#define LCD_ROWS 2
|
||||||
|
#define lcd_i2c_address_mathertel_PCF8574 0x27 // I2C address of display for FEATURE_LCD_MATHERTEL_PCF8574
|
||||||
|
#define lcd_i2c_address_fdebrander_lcd 0x27 // I2C address of display for FEATURE_LCD_I2C_FDEBRABANDER
|
||||||
|
#define lcd_i2c_address_ydv1_lcd 0x27 // I2C address of display for FEATURE_LCD_YDv1
|
||||||
|
//#define lcd_i2c_address_ydv1_lcd 0x38 // I2C address of display for FEATURE_LCD_YDv1
|
||||||
|
#define lcd_i2c_address_sainsmart_lcd 0x27 // I2C address of display for FEATURE_LCD_SAINSMART_I2C
|
||||||
|
#define hell_pixel_microseconds 4025
|
||||||
|
#define program_memory_limit_consec_spaces 1
|
||||||
|
#define serial_leading_zeros 1 // set to 1 to activate leading zeros in serial numbers (i.e. #1 = 001)
|
||||||
|
#define serial_cut_numbers 0 // set to 1 to activate cut numbers in serial numbers (i.e. #10 = 1T, #19 = 1N)
|
||||||
|
#define go_to_sleep_inactivity_time 10 // minutes - FEATURE_SLEEP
|
||||||
|
#define dim_backlight_inactive_time 5 // minutes - FEATURE_LCD_BACKLIGHT_AUTO_DIM
|
||||||
|
#define default_cmos_super_keyer_iambic_b_timing_percent 33 // use with FEATURE_CMOS_SUPER_KEYER_IAMBIC_B_TIMING; should be between 0 to 99 % (0% = true iambic b;100% = iambic a behavior)
|
||||||
|
#define default_cw_echo_timing_factor 1.75 // "factory default" setting
|
||||||
|
#define default_autospace_timing_factor 2.0 // "factory default" setting
|
||||||
|
#define winkey_paddle_echo_buffer_decode_timing_factor 0.25
|
||||||
|
#define potentiometer_always_on 0
|
||||||
|
#define ptt_interlock_check_every_ms 100
|
||||||
|
#define ptt_interlock_active_state HIGH
|
||||||
|
#define unknown_cw_character '*'
|
||||||
|
#define cli_paddle_echo_on_at_boot 1
|
||||||
|
#define cli_straight_key_echo_on_at_boot 1
|
||||||
|
#define tx_key_dit_and_dah_pins_active_state HIGH
|
||||||
|
#define tx_key_dit_and_dah_pins_inactive_state LOW
|
||||||
|
#define potentiometer_check_interval_ms 150
|
||||||
|
#define potentiometer_reading_threshold 1
|
||||||
|
#define default_paddle_interruption_quiet_time_element_lengths 0
|
||||||
|
#define default_wordsworth_wordspace 6
|
||||||
|
#define default_wordsworth_repetition 1
|
||||||
|
#define serial_program_memory_buffer_size 500
|
||||||
|
#define eeprom_write_time_ms 30000
|
||||||
|
|
||||||
|
#ifdef FEATURE_BUTTONS
|
||||||
|
#define analog_buttons_number_of_buttons 4
|
||||||
|
#define analog_buttons_r1 10
|
||||||
|
#define analog_buttons_r2 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#if defined(FEATURE_BUTTONS) && !defined(FEATURE_PS2_KEYBOARD) && !defined(FEATURE_USB_KEYBOARD) && !defined(FEATURE_COMMAND_LINE_INTERFACE) && !defined(FEATURE_WINKEY_EMULATION)
|
||||||
|
#define number_of_memories byte(analog_buttons_number_of_buttons-1)
|
||||||
|
#else
|
||||||
|
#define number_of_memories byte(12)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef FEATURE_CAPACITIVE_PADDLE_PINS
|
||||||
|
#define capacitance_threshold 2
|
||||||
|
#endif //FEATURE_CAPACITIVE_PADDLE_PINS
|
||||||
|
|
||||||
|
#ifdef FEATURE_LED_RING
|
||||||
|
#define led_ring_low_limit 10
|
||||||
|
#define led_ring_high_limit 50
|
||||||
|
#endif //FEATURE_LED_RING
|
||||||
|
|
||||||
|
#ifdef FEATURE_QLF
|
||||||
|
#define qlf_dit_max 125
|
||||||
|
#define qlf_dit_min 75
|
||||||
|
#define qlf_dah_max 200
|
||||||
|
#define qlf_dah_min 100
|
||||||
|
#define qlf_on_by_default 0
|
||||||
|
#endif //FEATURE_QLF
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef FEATURE_WINKEY_EMULATION
|
||||||
|
#ifdef OPTION_WINKEY_UCXLOG_9600_BAUD
|
||||||
|
#define WINKEY_DEFAULT_BAUD 9600
|
||||||
|
#else
|
||||||
|
#define WINKEY_DEFAULT_BAUD 1200
|
||||||
|
#endif //OPTION_WINKEY_UCXLOG_9600_BAUD
|
||||||
|
// alter these below to map alternate sidetones for Winkey interface protocol emulation
|
||||||
|
#ifdef OPTION_WINKEY_2_SUPPORT
|
||||||
|
#define WINKEY_SIDETONE_1 3759
|
||||||
|
#define WINKEY_SIDETONE_2 1879
|
||||||
|
#define WINKEY_SIDETONE_3 1252
|
||||||
|
#define WINKEY_SIDETONE_4 940
|
||||||
|
#define WINKEY_SIDETONE_5 752
|
||||||
|
#define WINKEY_SIDETONE_6 625
|
||||||
|
#define WINKEY_SIDETONE_7 535
|
||||||
|
#define WINKEY_SIDETONE_8 469
|
||||||
|
#define WINKEY_SIDETONE_9 417
|
||||||
|
#define WINKEY_SIDETONE_10 375
|
||||||
|
#else //OPTION_WINKEY_2_SUPPORT
|
||||||
|
#define WINKEY_SIDETONE_1 4000
|
||||||
|
#define WINKEY_SIDETONE_2 2000
|
||||||
|
#define WINKEY_SIDETONE_3 1333
|
||||||
|
#define WINKEY_SIDETONE_4 1000
|
||||||
|
#define WINKEY_SIDETONE_5 800
|
||||||
|
#define WINKEY_SIDETONE_6 666
|
||||||
|
#define WINKEY_SIDETONE_7 571
|
||||||
|
#define WINKEY_SIDETONE_8 500
|
||||||
|
#define WINKEY_SIDETONE_9 444
|
||||||
|
#define WINKEY_SIDETONE_10 400
|
||||||
|
#endif //OPTION_WINKEY_2_SUPPORT
|
||||||
|
|
||||||
|
#define WINKEY_1_REPORT_VERSION_NUMBER 10
|
||||||
|
#define WINKEY_2_REPORT_VERSION_NUMBER 23
|
||||||
|
|
||||||
|
// alter these to map to alternate hang time wordspace units
|
||||||
|
#define WINKEY_HANG_TIME_1_0 1.0
|
||||||
|
#define WINKEY_HANG_TIME_1_33 1.33
|
||||||
|
#define WINKEY_HANG_TIME_1_66 1.66
|
||||||
|
#define WINKEY_HANG_TIME_2_0 2.0
|
||||||
|
|
||||||
|
#define WINKEY_RETURN_THIS_FOR_ADMIN_GET_CAL 0x16
|
||||||
|
#define WINKEY_RETURN_THIS_FOR_ADMIN_PADDLE_A2D 0xEE
|
||||||
|
#define WINKEY_RETURN_THIS_FOR_ADMIN_SPEED_A2D 0x00
|
||||||
|
|
||||||
|
#endif //FEATURE_WINKEY_EMULATION
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#define PRIMARY_SERIAL_PORT &Serial
|
||||||
|
#define PRIMARY_SERIAL_PORT_BAUD 115200 // This applies only when the port is in Command Line Interface mode. In Winkey mode it will default to 1200.
|
||||||
|
|
||||||
|
#ifdef FEATURE_COMMAND_LINE_INTERFACE_ON_SECONDARY_PORT
|
||||||
|
#define SECONDARY_SERIAL_PORT &Serial1
|
||||||
|
#define SECONDARY_SERIAL_PORT_BAUD 115200
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#define CW_DECODER_SCREEN_COLUMNS 120 // word wrap at this many columns
|
||||||
|
#define CW_DECODER_SPACE_PRINT_THRESH 4.5 // print space if no tone for this many element lengths
|
||||||
|
#define CW_DECODER_SPACE_DECODE_THRESH 2.0 // invoke character decode if no tone for this many element lengths
|
||||||
|
#define CW_DECODER_NOISE_FILTER 20 // ignore elements shorter than this (mS)
|
||||||
|
|
||||||
|
#define STRAIGHT_KEY_ACTIVE_STATE LOW
|
||||||
|
|
||||||
|
#ifdef FEATURE_DYNAMIC_DAH_TO_DIT_RATIO
|
||||||
|
#define DYNAMIC_DAH_TO_DIT_RATIO_LOWER_LIMIT_WPM 30
|
||||||
|
#define DYNAMIC_DAH_TO_DIT_RATIO_LOWER_LIMIT_RATIO 300 // 300 = 3:1 ratio
|
||||||
|
#define DYNAMIC_DAH_TO_DIT_RATIO_UPPER_LIMIT_WPM 70
|
||||||
|
#define DYNAMIC_DAH_TO_DIT_RATIO_UPPER_LIMIT_RATIO 240 // 240 = 2.4:1 ratio
|
||||||
|
#endif //FEATURE_DYNAMIC_DAH_TO_DIT_RATIO
|
||||||
|
|
||||||
|
#if defined(FEATURE_COMPETITION_COMPRESSION_DETECTION)
|
||||||
|
#define COMPETITION_COMPRESSION_DETECTION_ARRAY_SIZE 16
|
||||||
|
#define COMPETITION_COMPRESSION_DETECTION_TIME_INTERCHAR_LOWER_LIMIT 1
|
||||||
|
#define COMPETITION_COMPRESSION_DETECTION_TIME_INTERCHAR_UPPER_LIMIT 6.0
|
||||||
|
#define COMPETITION_COMPRESSION_DETECTION_AVERAGE_ALARM_THRESHOLD 3.0
|
||||||
|
#endif //FEATURE_COMPETITION_COMPRESSION_DETECTION
|
||||||
|
|
||||||
|
#if defined(FEATURE_SLEEP)
|
||||||
|
#define KEYER_AWAKE_PIN_AWAKE_STATE HIGH
|
||||||
|
#define KEYER_AWAKE_PIN_ASLEEP_STATE LOW
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_LCD_BACKLIGHT_AUTO_DIM)
|
||||||
|
#define keyer_power_led_awake_duty 255 // PWM duty cycle. 0 is 0%, 255 is 100%
|
||||||
|
#define keyer_power_led_asleep_duty 25 // 25 is quite dim. Use 0 for off
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_ETHERNET)
|
||||||
|
// #define FEATURE_ETHERNET_IP {192,168,1,178} // default IP address ("192.168.1.178")
|
||||||
|
// #define FEATURE_ETHERNET_MAC {0xDE,0xAD,0xBE,0xEF,0xFE,0xED}
|
||||||
|
#define FEATURE_ETHERNET_IP {192,168,1,179} // default IP address ("192.168.1.178")
|
||||||
|
#define FEATURE_ETHERNET_MAC {0xDE,0xAD,0xBE,0xEF,0xFE,0xEE}
|
||||||
|
#define FEATURE_ETHERNET_DNS {8,8,8,8}
|
||||||
|
|
||||||
|
#define FEATURE_ETHERNET_GATEWAY {192,168,1,1} // default gateway
|
||||||
|
#define FEATURE_ETHERNET_SUBNET_MASK {255,255,255,0} // default subnet mask
|
||||||
|
#define FEATURE_ETHERNET_WEB_LISTENER_PORT 80
|
||||||
|
#define FEATURE_UDP_SEND_BUFFER_SIZE 128
|
||||||
|
#define FEATURE_UDP_RECEIVE_BUFFER_SIZE 128
|
||||||
|
#endif //FEATURE_ETHERNET
|
||||||
|
|
||||||
|
#define WEB_SERVER_CONTROL_TX_KEY_TIME_LIMIT_SECS 10
|
||||||
|
|
||||||
|
#define FEATURE_INTERNET_LINK_MAX_LINKS 2
|
||||||
|
#define FEATURE_INTERNET_LINK_DEFAULT_RCV_UDP_PORT 8888
|
||||||
|
#define FEATURE_INTERNET_LINK_BUFFER_TIME_MS 500
|
||||||
|
|
||||||
|
#if defined(FEATURE_4x4_KEYPAD)|| defined (FEATURE_3x4_KEYPAD)
|
||||||
|
#define KEYPAD_ROWS 4 //KeyPad Rows
|
||||||
|
#if defined(FEATURE_4x4_KEYPAD)
|
||||||
|
#define KEYPAD_COLS 4 //keypad Columns
|
||||||
|
#else
|
||||||
|
#define KEYPAD_COLS 3
|
||||||
|
#endif
|
||||||
|
#define mem1 0 //Memory numbers for Keypad: Actual memory numbers start with "0"
|
||||||
|
#define mem2 1
|
||||||
|
#define mem3 2
|
||||||
|
#define mem4 3
|
||||||
|
#define mem5 4
|
||||||
|
#define mem6 5
|
||||||
|
#define mem7 6
|
||||||
|
#define mem8 7
|
||||||
|
#define mem9 8
|
||||||
|
#define mem10 9
|
||||||
|
#define mem11 10
|
||||||
|
#define mem12 11
|
||||||
|
#endif //#if defined(FEATURE_4x4_KEYPAD)|| defined (FEATURE_3x4_KEYPAD)
|
||||||
|
|
||||||
|
#define initial_sidetone_mode 1 // Sidetone mode, 0=OFF, 1=ON, 2=PADDLE_ONLY
|
||||||
|
|
||||||
|
#define sd_card_spi_ss_line 4
|
||||||
|
|
||||||
|
#if defined(OPTION_DFROBOT_LCD_COMMAND_BUTTONS)
|
||||||
|
|
||||||
|
// For V1.1 board use these values
|
||||||
|
#define dfrobot_btnRIGHT_analog 50
|
||||||
|
#define dfrobot_btnUP_analog 250
|
||||||
|
#define dfrobot_btnDOWN_analog 450
|
||||||
|
#define dfrobot_btnLEFT_analog 650
|
||||||
|
#define dfrobot_btnSELECT_analog 850
|
||||||
|
|
||||||
|
// For V1.0 board use these values
|
||||||
|
// #define dfrobot_btnRIGHT_analog 50
|
||||||
|
// #define dfrobot_btnUP_analog 195
|
||||||
|
// #define dfrobot_btnDOWN_analog 380
|
||||||
|
// #define dfrobot_btnLEFT_analog 555
|
||||||
|
// #define dfrobot_btnSELECT_analog 790
|
||||||
|
|
||||||
|
// button to memory mappings (0 = command button, 1 = memory 1, 2 = memory 2, etc.)
|
||||||
|
#define dfrobot_btnRIGHT 2
|
||||||
|
#define dfrobot_btnUP 1
|
||||||
|
#define dfrobot_btnDOWN 3
|
||||||
|
#define dfrobot_btnLEFT 4
|
||||||
|
#define dfrobot_btnSELECT 0
|
||||||
|
#define dfrobot_btnNONE 255 // do not change
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define sequencer_pins_active_state HIGH
|
||||||
|
#define sequencer_pins_inactive_state LOW
|
||||||
|
#define ptt_line_active_state HIGH
|
||||||
|
#define ptt_line_inactive_state LOW
|
||||||
|
#define tx_key_line_active_state HIGH
|
||||||
|
#define tx_key_line_inactive_state LOW
|
||||||
|
#define ptt_input_pin_active_state LOW
|
||||||
|
#define ptt_input_pin_inactive_state HIGH
|
||||||
|
#define tx_inhibit_pin_active_state LOW
|
||||||
|
#define tx_inhibit_pin_inactive_state HIGH
|
||||||
|
#define tx_pause_pin_active_state LOW
|
||||||
|
#define tx_pause_pin_inactive_state HIGH
|
||||||
|
#define sidetone_line_active_state HIGH
|
||||||
|
#define sidetone_line_inactive_state LOW
|
||||||
|
|
||||||
|
#if defined(ARDUINO_MAPLE_MINI)
|
||||||
|
#define button_value_factor 4095 //sp5iou contributed
|
||||||
|
#else
|
||||||
|
#define button_value_factor 1023
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define farnsworth_timing_calibration 1.15
|
||||||
|
|
||||||
|
#define sidetone_volume_low_limit 10
|
||||||
|
#define sidetone_volume_high_limit 500
|
||||||
|
|
||||||
|
#define custom_startup_field "your custom text here" // an example could be callsign and name, eg. "AB1XYZ Bob", (or "Worlds best operator" which requires a 20 column display), string length shouldo be no more than the number of columns on the display
|
||||||
|
|
||||||
|
#define command_mode_acknowledgement_character 'E'
|
||||||
|
|
||||||
|
#if defined(FEATURE_COMMAND_MODE_ENHANCED_CMD_ACKNOWLEDGEMENT)
|
||||||
|
#define command_a_iambic_a "A"
|
||||||
|
#define command_b_iambic_b "B"
|
||||||
|
#define command_c_single_paddle "SINGLE"
|
||||||
|
#define command_d_ultimatic "ULT"
|
||||||
|
#define command_h_weight_dit_dah_ratio_default "R"
|
||||||
|
#define command_i_tx_on "TX ON"
|
||||||
|
#define command_i_tx_off "TX OFF"
|
||||||
|
#define command_k_dit_dah_buffers_on "ON"
|
||||||
|
#define command_k_dit_dah_buffers_off "OFF"
|
||||||
|
#define command_n_paddle_reverse "REV"
|
||||||
|
#define command_n_paddle_normal "NORM"
|
||||||
|
#define command_o_sidetone_off "ST OFF"
|
||||||
|
#define command_o_sidetone_paddle_only "ST PD ONLY"
|
||||||
|
#define command_o_sidetone_on "ST ON"
|
||||||
|
#define command_t_tune_mode "TUNE"
|
||||||
|
#define command_v_potentiometer_on "POT ON"
|
||||||
|
#define command_v_potentiometer_off "POT OFF"
|
||||||
|
|
||||||
|
#define command_error "ERR"
|
||||||
|
|
||||||
|
#endif //FEATURE_COMMAND_MODE_ENHANCED_CMD_ACKNOWLEDGEMENT
|
||||||
|
|
318
k3ng_keyer/keyer_settings_fk_11.h
Executable file
318
k3ng_keyer/keyer_settings_fk_11.h
Executable file
|
@ -0,0 +1,318 @@
|
||||||
|
// Funtronics FK-11
|
||||||
|
|
||||||
|
// Initial and hardcoded settings
|
||||||
|
#define initial_speed_wpm 26 // "factory default" keyer speed setting
|
||||||
|
#define initial_command_mode_speed_wpm 20 // "factory default" command mode speed setting
|
||||||
|
#define initial_sidetone_freq 600 // "factory default" sidetone frequency setting
|
||||||
|
#define sidetone_hz_limit_low 299
|
||||||
|
#define sidetone_hz_limit_high 2001
|
||||||
|
#define hz_high_beep 1500 // frequency in hertz of high beep
|
||||||
|
#define hz_low_beep 400 // frequency in hertz of low beep
|
||||||
|
#define initial_dah_to_dit_ratio 300 // 300 = 3 / normal 3:1 ratio
|
||||||
|
#define initial_ptt_lead_time_tx1 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx1 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx2 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx2 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx3 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx3 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx4 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx4 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx5 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx5 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx6 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx6 10 // PTT tail time in mS
|
||||||
|
#define initial_qrss_dit_length 1 // QRSS dit length in seconds
|
||||||
|
#define initial_pot_wpm_low_value 13 // Potentiometer WPM fully CCW
|
||||||
|
#define initial_pot_wpm_high_value 35 // Potentiometer WPM fully CW
|
||||||
|
#define wpm_limit_low 5
|
||||||
|
#define wpm_limit_high 60
|
||||||
|
#define potentiometer_change_threshold 0.9 // don't change the keyer speed until pot wpm has changed more than this
|
||||||
|
#define send_buffer_size 150
|
||||||
|
#define default_length_letterspace 3
|
||||||
|
#define default_length_wordspace 7
|
||||||
|
#define default_keying_compensation 0 // number of milliseconds to extend all dits and dahs - for QSK on boatanchors
|
||||||
|
#define default_first_extension_time 0 // number of milliseconds to extend first sent dit or dah
|
||||||
|
#define default_pot_full_scale_reading 1023
|
||||||
|
#define default_weighting 50 // 50 = weighting factor of 1 (normal)
|
||||||
|
#define default_ptt_hang_time_wordspace_units 0.0
|
||||||
|
#define winkey_c0_wait_time 1 // the number of milliseconds to wait to send 0xc0 byte after send buffer has been sent
|
||||||
|
#define winkey_command_timeout_ms 5000
|
||||||
|
#define winkey_discard_bytes_startup 3 // this is used if OPTION_WINKEY_DISCARD_BYTES_AT_STARTUP is enabled above
|
||||||
|
#define winkey_xoff_threshold 20 // the number of chars in the buffer when we begin sending XOFFs
|
||||||
|
#define winkey_xon_threshold 10 // the number of chars in the buffer below which we deactivate XOFF
|
||||||
|
#define default_memory_repeat_time 3000 // time in milliseconds
|
||||||
|
#define LCD_COLUMNS 16
|
||||||
|
#define LCD_ROWS 2
|
||||||
|
#define lcd_i2c_address_mathertel_PCF8574 0x27 // I2C address of display for FEATURE_LCD_MATHERTEL_PCF8574
|
||||||
|
#define lcd_i2c_address_fdebrander_lcd 0x27 // I2C address of display for FEATURE_LCD_I2C_FDEBRABANDER
|
||||||
|
#define lcd_i2c_address_ydv1_lcd 0x27 // I2C address of display for FEATURE_LCD_YDv1
|
||||||
|
//#define lcd_i2c_address_ydv1_lcd 0x38 // I2C address of display for FEATURE_LCD_YDv1
|
||||||
|
#define lcd_i2c_address_sainsmart_lcd 0x27 // I2C address of display for FEATURE_LCD_SAINSMART_I2C
|
||||||
|
#define hell_pixel_microseconds 4025
|
||||||
|
#define program_memory_limit_consec_spaces 1
|
||||||
|
#define serial_leading_zeros 1 // set to 1 to activate leading zeros in serial numbers (i.e. #1 = 001)
|
||||||
|
#define serial_cut_numbers 0 // set to 1 to activate cut numbers in serial numbers (i.e. #10 = 1T, #19 = 1N)
|
||||||
|
#define go_to_sleep_inactivity_time 10 // minutes - FEATURE_SLEEP
|
||||||
|
#define dim_backlight_inactive_time 5 // minutes - FEATURE_LCD_BACKLIGHT_AUTO_DIM
|
||||||
|
#define default_cmos_super_keyer_iambic_b_timing_percent 33 // use with FEATURE_CMOS_SUPER_KEYER_IAMBIC_B_TIMING; should be between 0 to 99 % (0% = true iambic b;100% = iambic a behavior)
|
||||||
|
#define default_cw_echo_timing_factor 1.75 // "factory default" setting
|
||||||
|
#define default_autospace_timing_factor 2.0 // "factory default" setting
|
||||||
|
#define winkey_paddle_echo_buffer_decode_timing_factor 0.25
|
||||||
|
#define potentiometer_always_on 0
|
||||||
|
#define ptt_interlock_check_every_ms 100
|
||||||
|
#define ptt_interlock_active_state HIGH
|
||||||
|
#define unknown_cw_character '*'
|
||||||
|
#define cli_paddle_echo_on_at_boot 1
|
||||||
|
#define cli_straight_key_echo_on_at_boot 1
|
||||||
|
#define tx_key_dit_and_dah_pins_active_state HIGH
|
||||||
|
#define tx_key_dit_and_dah_pins_inactive_state LOW
|
||||||
|
#define potentiometer_check_interval_ms 150
|
||||||
|
#define potentiometer_reading_threshold 1
|
||||||
|
#define default_paddle_interruption_quiet_time_element_lengths 0
|
||||||
|
#define default_wordsworth_wordspace 6
|
||||||
|
#define default_wordsworth_repetition 1
|
||||||
|
#define serial_program_memory_buffer_size 500
|
||||||
|
#define eeprom_write_time_ms 30000
|
||||||
|
|
||||||
|
#ifdef FEATURE_BUTTONS
|
||||||
|
#define analog_buttons_number_of_buttons 5 // includes the command button (command button + 3 memory buttons = 4)
|
||||||
|
#define analog_buttons_r1 10
|
||||||
|
#define analog_buttons_r2 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#if defined(FEATURE_BUTTONS) && !defined(FEATURE_PS2_KEYBOARD) && !defined(FEATURE_USB_KEYBOARD) && !defined(FEATURE_COMMAND_LINE_INTERFACE) && !defined(FEATURE_WINKEY_EMULATION)
|
||||||
|
#define number_of_memories byte(analog_buttons_number_of_buttons-1)
|
||||||
|
#else
|
||||||
|
#define number_of_memories byte(12)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef FEATURE_CAPACITIVE_PADDLE_PINS
|
||||||
|
#define capacitance_threshold 2
|
||||||
|
#endif //FEATURE_CAPACITIVE_PADDLE_PINS
|
||||||
|
|
||||||
|
#ifdef FEATURE_LED_RING
|
||||||
|
#define led_ring_low_limit 10
|
||||||
|
#define led_ring_high_limit 50
|
||||||
|
#endif //FEATURE_LED_RING
|
||||||
|
|
||||||
|
#ifdef FEATURE_QLF
|
||||||
|
#define qlf_dit_max 125
|
||||||
|
#define qlf_dit_min 75
|
||||||
|
#define qlf_dah_max 200
|
||||||
|
#define qlf_dah_min 100
|
||||||
|
#define qlf_on_by_default 0
|
||||||
|
#endif //FEATURE_QLF
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef FEATURE_WINKEY_EMULATION
|
||||||
|
#ifdef OPTION_WINKEY_UCXLOG_9600_BAUD || defined(FEATURE_SO2R_BASE)
|
||||||
|
#define WINKEY_DEFAULT_BAUD 9600
|
||||||
|
#else
|
||||||
|
#define WINKEY_DEFAULT_BAUD 1200
|
||||||
|
#endif //OPTION_WINKEY_UCXLOG_9600_BAUD || FEATURE_SO2R_BASE
|
||||||
|
// alter these below to map alternate sidetones for Winkey interface protocol emulation
|
||||||
|
#ifdef OPTION_WINKEY_2_SUPPORT
|
||||||
|
#define WINKEY_SIDETONE_1 3759
|
||||||
|
#define WINKEY_SIDETONE_2 1879
|
||||||
|
#define WINKEY_SIDETONE_3 1252
|
||||||
|
#define WINKEY_SIDETONE_4 940
|
||||||
|
#define WINKEY_SIDETONE_5 752
|
||||||
|
#define WINKEY_SIDETONE_6 625
|
||||||
|
#define WINKEY_SIDETONE_7 535
|
||||||
|
#define WINKEY_SIDETONE_8 469
|
||||||
|
#define WINKEY_SIDETONE_9 417
|
||||||
|
#define WINKEY_SIDETONE_10 375
|
||||||
|
#else //OPTION_WINKEY_2_SUPPORT
|
||||||
|
#define WINKEY_SIDETONE_1 4000
|
||||||
|
#define WINKEY_SIDETONE_2 2000
|
||||||
|
#define WINKEY_SIDETONE_3 1333
|
||||||
|
#define WINKEY_SIDETONE_4 1000
|
||||||
|
#define WINKEY_SIDETONE_5 800
|
||||||
|
#define WINKEY_SIDETONE_6 666
|
||||||
|
#define WINKEY_SIDETONE_7 571
|
||||||
|
#define WINKEY_SIDETONE_8 500
|
||||||
|
#define WINKEY_SIDETONE_9 444
|
||||||
|
#define WINKEY_SIDETONE_10 400
|
||||||
|
#endif //OPTION_WINKEY_2_SUPPORT
|
||||||
|
|
||||||
|
#define WINKEY_1_REPORT_VERSION_NUMBER 10
|
||||||
|
#define WINKEY_2_REPORT_VERSION_NUMBER 23
|
||||||
|
|
||||||
|
// alter these to map to alternate hang time wordspace units
|
||||||
|
#define WINKEY_HANG_TIME_1_0 1.0
|
||||||
|
#define WINKEY_HANG_TIME_1_33 1.33
|
||||||
|
#define WINKEY_HANG_TIME_1_66 1.66
|
||||||
|
#define WINKEY_HANG_TIME_2_0 2.0
|
||||||
|
|
||||||
|
#define WINKEY_RETURN_THIS_FOR_ADMIN_GET_CAL 0x16
|
||||||
|
#define WINKEY_RETURN_THIS_FOR_ADMIN_PADDLE_A2D 0xEE
|
||||||
|
#define WINKEY_RETURN_THIS_FOR_ADMIN_SPEED_A2D 0x00
|
||||||
|
|
||||||
|
#endif //FEATURE_WINKEY_EMULATION
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#define PRIMARY_SERIAL_PORT &Serial
|
||||||
|
#define PRIMARY_SERIAL_PORT_BAUD 115200 // This applies only when the port is in Command Line Interface mode. In Winkey mode it will default to 1200.
|
||||||
|
|
||||||
|
#ifdef FEATURE_COMMAND_LINE_INTERFACE_ON_SECONDARY_PORT
|
||||||
|
#define SECONDARY_SERIAL_PORT &Serial1
|
||||||
|
#define SECONDARY_SERIAL_PORT_BAUD 115200
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#define CW_DECODER_SCREEN_COLUMNS 120 // word wrap at this many columns
|
||||||
|
#define CW_DECODER_SPACE_PRINT_THRESH 4.5 // print space if no tone for this many element lengths
|
||||||
|
#define CW_DECODER_SPACE_DECODE_THRESH 2.0 // invoke character decode if no tone for this many element lengths
|
||||||
|
#define CW_DECODER_NOISE_FILTER 20 // ignore elements shorter than this (mS)
|
||||||
|
|
||||||
|
#define STRAIGHT_KEY_ACTIVE_STATE LOW
|
||||||
|
|
||||||
|
#ifdef FEATURE_DYNAMIC_DAH_TO_DIT_RATIO
|
||||||
|
#define DYNAMIC_DAH_TO_DIT_RATIO_LOWER_LIMIT_WPM 30
|
||||||
|
#define DYNAMIC_DAH_TO_DIT_RATIO_LOWER_LIMIT_RATIO 300 // 300 = 3:1 ratio
|
||||||
|
#define DYNAMIC_DAH_TO_DIT_RATIO_UPPER_LIMIT_WPM 70
|
||||||
|
#define DYNAMIC_DAH_TO_DIT_RATIO_UPPER_LIMIT_RATIO 240 // 240 = 2.4:1 ratio
|
||||||
|
#endif //FEATURE_DYNAMIC_DAH_TO_DIT_RATIO
|
||||||
|
|
||||||
|
#if defined(FEATURE_COMPETITION_COMPRESSION_DETECTION)
|
||||||
|
#define COMPETITION_COMPRESSION_DETECTION_ARRAY_SIZE 16
|
||||||
|
#define COMPETITION_COMPRESSION_DETECTION_TIME_INTERCHAR_LOWER_LIMIT 1
|
||||||
|
#define COMPETITION_COMPRESSION_DETECTION_TIME_INTERCHAR_UPPER_LIMIT 6.0
|
||||||
|
#define COMPETITION_COMPRESSION_DETECTION_AVERAGE_ALARM_THRESHOLD 3.0
|
||||||
|
#endif //FEATURE_COMPETITION_COMPRESSION_DETECTION
|
||||||
|
|
||||||
|
#if defined(FEATURE_SLEEP)
|
||||||
|
#define KEYER_AWAKE_PIN_AWAKE_STATE HIGH
|
||||||
|
#define KEYER_AWAKE_PIN_ASLEEP_STATE LOW
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_LCD_BACKLIGHT_AUTO_DIM)
|
||||||
|
#define keyer_power_led_awake_duty 255 // PWM duty cycle. 0 is 0%, 255 is 100%
|
||||||
|
#define keyer_power_led_asleep_duty 25 // 25 is quite dim. Use 0 for off
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_ETHERNET)
|
||||||
|
// #define FEATURE_ETHERNET_IP {192,168,1,178} // default IP address ("192.168.1.178")
|
||||||
|
// #define FEATURE_ETHERNET_MAC {0xDE,0xAD,0xBE,0xEF,0xFE,0xED}
|
||||||
|
#define FEATURE_ETHERNET_IP {192,168,1,179} // default IP address ("192.168.1.179")
|
||||||
|
#define FEATURE_ETHERNET_MAC {0xDE,0xAD,0xBE,0xEF,0xFE,0xEE}
|
||||||
|
#define FEATURE_ETHERNET_DNS {8,8,8,8}
|
||||||
|
|
||||||
|
#define FEATURE_ETHERNET_GATEWAY {192,168,1,1} // default gateway
|
||||||
|
#define FEATURE_ETHERNET_SUBNET_MASK {255,255,255,0} // default subnet mask
|
||||||
|
#define FEATURE_ETHERNET_WEB_LISTENER_PORT 80
|
||||||
|
#define FEATURE_UDP_SEND_BUFFER_SIZE 128
|
||||||
|
#define FEATURE_UDP_RECEIVE_BUFFER_SIZE 128
|
||||||
|
#endif //FEATURE_ETHERNET
|
||||||
|
|
||||||
|
#define WEB_SERVER_CONTROL_TX_KEY_TIME_LIMIT_SECS 10
|
||||||
|
|
||||||
|
#define FEATURE_INTERNET_LINK_MAX_LINKS 2
|
||||||
|
#define FEATURE_INTERNET_LINK_DEFAULT_RCV_UDP_PORT 8888
|
||||||
|
#define FEATURE_INTERNET_LINK_BUFFER_TIME_MS 500
|
||||||
|
|
||||||
|
#if defined(FEATURE_4x4_KEYPAD)|| defined (FEATURE_3x4_KEYPAD)
|
||||||
|
#define KEYPAD_ROWS 4 //KeyPad Rows
|
||||||
|
#if defined(FEATURE_4x4_KEYPAD)
|
||||||
|
#define KEYPAD_COLS 4 //keypad Columns
|
||||||
|
#else
|
||||||
|
#define KEYPAD_COLS 3
|
||||||
|
#endif
|
||||||
|
#define mem1 0 //Memory numbers for Keypad: Actual memory numbers start with "0"
|
||||||
|
#define mem2 1
|
||||||
|
#define mem3 2
|
||||||
|
#define mem4 3
|
||||||
|
#define mem5 4
|
||||||
|
#define mem6 5
|
||||||
|
#define mem7 6
|
||||||
|
#define mem8 7
|
||||||
|
#define mem9 8
|
||||||
|
#define mem10 9
|
||||||
|
#define mem11 10
|
||||||
|
#define mem12 11
|
||||||
|
#endif //#if defined(FEATURE_4x4_KEYPAD)|| defined (FEATURE_3x4_KEYPAD)
|
||||||
|
|
||||||
|
#define initial_sidetone_mode 1 // Sidetone mode, 0=OFF, 1=ON, 2=PADDLE_ONLY
|
||||||
|
|
||||||
|
#define sd_card_spi_ss_line 4
|
||||||
|
|
||||||
|
#if defined(OPTION_DFROBOT_LCD_COMMAND_BUTTONS)
|
||||||
|
|
||||||
|
// For V1.1 board use these values
|
||||||
|
#define dfrobot_btnRIGHT_analog 50
|
||||||
|
#define dfrobot_btnUP_analog 250
|
||||||
|
#define dfrobot_btnDOWN_analog 450
|
||||||
|
#define dfrobot_btnLEFT_analog 650
|
||||||
|
#define dfrobot_btnSELECT_analog 850
|
||||||
|
|
||||||
|
// For V1.0 board use these values
|
||||||
|
// #define dfrobot_btnRIGHT_analog 50
|
||||||
|
// #define dfrobot_btnUP_analog 195
|
||||||
|
// #define dfrobot_btnDOWN_analog 380
|
||||||
|
// #define dfrobot_btnLEFT_analog 555
|
||||||
|
// #define dfrobot_btnSELECT_analog 790
|
||||||
|
|
||||||
|
// button to memory mappings (0 = command button, 1 = memory 1, 2 = memory 2, etc.)
|
||||||
|
#define dfrobot_btnRIGHT 2
|
||||||
|
#define dfrobot_btnUP 1
|
||||||
|
#define dfrobot_btnDOWN 3
|
||||||
|
#define dfrobot_btnLEFT 4
|
||||||
|
#define dfrobot_btnSELECT 0
|
||||||
|
#define dfrobot_btnNONE 255 // do not change
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define sequencer_pins_active_state HIGH
|
||||||
|
#define sequencer_pins_inactive_state LOW
|
||||||
|
#define ptt_line_active_state HIGH
|
||||||
|
#define ptt_line_inactive_state LOW
|
||||||
|
#define tx_key_line_active_state HIGH
|
||||||
|
#define tx_key_line_inactive_state LOW
|
||||||
|
#define ptt_input_pin_active_state LOW
|
||||||
|
#define ptt_input_pin_inactive_state HIGH
|
||||||
|
#define tx_inhibit_pin_active_state LOW
|
||||||
|
#define tx_inhibit_pin_inactive_state HIGH
|
||||||
|
#define tx_pause_pin_active_state LOW
|
||||||
|
#define tx_pause_pin_inactive_state HIGH
|
||||||
|
#define sidetone_line_active_state HIGH
|
||||||
|
#define sidetone_line_inactive_state LOW
|
||||||
|
|
||||||
|
#if defined(ARDUINO_MAPLE_MINI)
|
||||||
|
#define button_value_factor 4095 //sp5iou contributed
|
||||||
|
#else
|
||||||
|
#define button_value_factor 1023
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define farnsworth_timing_calibration 1.15
|
||||||
|
|
||||||
|
#define sidetone_volume_low_limit 10
|
||||||
|
#define sidetone_volume_high_limit 500
|
||||||
|
|
||||||
|
#define custom_startup_field "your custom text here" // an example could be callsign and name, eg. "AB1XYZ Bob", (or "Worlds best operator" which requires a 20 column display), string length shouldo be no more than the number of columns on the display
|
||||||
|
|
||||||
|
#define command_mode_acknowledgement_character 'E'
|
||||||
|
|
||||||
|
#if defined(FEATURE_COMMAND_MODE_ENHANCED_CMD_ACKNOWLEDGEMENT)
|
||||||
|
#define command_a_iambic_a "A"
|
||||||
|
#define command_b_iambic_b "B"
|
||||||
|
#define command_c_single_paddle "SINGLE"
|
||||||
|
#define command_d_ultimatic "ULT"
|
||||||
|
#define command_h_weight_dit_dah_ratio_default "R"
|
||||||
|
#define command_i_tx_on "TX ON"
|
||||||
|
#define command_i_tx_off "TX OFF"
|
||||||
|
#define command_k_dit_dah_buffers_on "ON"
|
||||||
|
#define command_k_dit_dah_buffers_off "OFF"
|
||||||
|
#define command_n_paddle_reverse "REV"
|
||||||
|
#define command_n_paddle_normal "NORM"
|
||||||
|
#define command_o_sidetone_off "ST OFF"
|
||||||
|
#define command_o_sidetone_paddle_only "ST PD ONLY"
|
||||||
|
#define command_o_sidetone_on "ST ON"
|
||||||
|
#define command_t_tune_mode "TUNE"
|
||||||
|
#define command_v_potentiometer_on "POT ON"
|
||||||
|
#define command_v_potentiometer_off "POT OFF"
|
||||||
|
|
||||||
|
#define command_error "ERR"
|
||||||
|
|
||||||
|
#endif //FEATURE_COMMAND_MODE_ENHANCED_CMD_ACKNOWLEDGEMENT
|
324
k3ng_keyer/keyer_settings_generic_STM32F103C.h
Executable file
324
k3ng_keyer/keyer_settings_generic_STM32F103C.h
Executable file
|
@ -0,0 +1,324 @@
|
||||||
|
/*
|
||||||
|
GENERIC STM32F103C
|
||||||
|
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Initial and hardcoded settings
|
||||||
|
#define initial_speed_wpm 26 // "factory default" keyer speed setting
|
||||||
|
#define initial_command_mode_speed_wpm 20 // "factory default" command mode speed setting
|
||||||
|
#define initial_sidetone_freq 600 // "factory default" sidetone frequency setting
|
||||||
|
#define sidetone_hz_limit_low 299
|
||||||
|
#define sidetone_hz_limit_high 2001
|
||||||
|
#define hz_high_beep 1500 // frequency in hertz of high beep
|
||||||
|
#define hz_low_beep 400 // frequency in hertz of low beep
|
||||||
|
#define initial_dah_to_dit_ratio 300 // 300 = 3 / normal 3:1 ratio
|
||||||
|
#define initial_ptt_lead_time_tx1 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx1 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx2 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx2 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx3 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx3 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx4 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx4 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx5 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx5 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx6 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx6 10 // PTT tail time in mS
|
||||||
|
#define initial_qrss_dit_length 1 // QRSS dit length in seconds
|
||||||
|
#define initial_pot_wpm_low_value 13 // Potentiometer WPM fully CCW
|
||||||
|
#define initial_pot_wpm_high_value 35 // Potentiometer WPM fully CW
|
||||||
|
#define wpm_limit_low 5
|
||||||
|
#define wpm_limit_high 60
|
||||||
|
#define potentiometer_change_threshold 0.9 // don't change the keyer speed until pot wpm has changed more than this
|
||||||
|
#define send_buffer_size 150
|
||||||
|
#define default_length_letterspace 3
|
||||||
|
#define default_length_wordspace 7
|
||||||
|
#define default_keying_compensation 0 // number of milliseconds to extend all dits and dahs - for QSK on boatanchors
|
||||||
|
#define default_first_extension_time 0 // number of milliseconds to extend first sent dit or dah
|
||||||
|
//#define default_pot_full_scale_reading 1023 //For AVR boards
|
||||||
|
#define default_pot_full_scale_reading 4095 //SP5IOU 20180329 FOR stm32 Boards.
|
||||||
|
#define default_weighting 50 // 50 = weighting factor of 1 (normal)
|
||||||
|
#define default_ptt_hang_time_wordspace_units 0.0
|
||||||
|
#define winkey_c0_wait_time 1 // the number of milliseconds to wait to send 0xc0 byte after send buffer has been sent
|
||||||
|
#define winkey_command_timeout_ms 5000
|
||||||
|
#define winkey_discard_bytes_startup 3 // this is used if OPTION_WINKEY_DISCARD_BYTES_AT_STARTUP is enabled above
|
||||||
|
#define winkey_xoff_threshold 20 // the number of chars in the buffer when we begin sending XOFFs
|
||||||
|
#define winkey_xon_threshold 10 // the number of chars in the buffer below which we deactivate XOFF
|
||||||
|
#define default_memory_repeat_time 3000 // time in milliseconds
|
||||||
|
#define LCD_COLUMNS 16
|
||||||
|
#define LCD_ROWS 2
|
||||||
|
#define lcd_i2c_address_mathertel_PCF8574 0x27 // I2C address of display for FEATURE_LCD_MATHERTEL_PCF8574
|
||||||
|
#define lcd_i2c_address_fdebrander_lcd 0x27 // I2C address of display for FEATURE_LCD_I2C_FDEBRABANDER
|
||||||
|
#define lcd_i2c_address_ydv1_lcd 0x27 // I2C address of display for FEATURE_LCD_YDv1
|
||||||
|
//#define lcd_i2c_address_ydv1_lcd 0x38 // I2C address of display for FEATURE_LCD_YDv1
|
||||||
|
#define lcd_i2c_address_sainsmart_lcd 0x27 // I2C address of display for FEATURE_LCD_SAINSMART_I2C
|
||||||
|
#define hell_pixel_microseconds 4025
|
||||||
|
#define program_memory_limit_consec_spaces 1
|
||||||
|
#define serial_leading_zeros 1 // set to 1 to activate leading zeros in serial numbers (i.e. #1 = 001)
|
||||||
|
#define serial_cut_numbers 0 // set to 1 to activate cut numbers in serial numbers (i.e. #10 = 1T, #19 = 1N)
|
||||||
|
#define go_to_sleep_inactivity_time 10 // minutes - FEATURE_SLEEP
|
||||||
|
#define dim_backlight_inactive_time 5 // minutes - FEATURE_LCD_BACKLIGHT_AUTO_DIM
|
||||||
|
#define default_cmos_super_keyer_iambic_b_timing_percent 33 // use with FEATURE_CMOS_SUPER_KEYER_IAMBIC_B_TIMING; should be between 0 to 99 % (0% = true iambic b;100% = iambic a behavior)
|
||||||
|
#define default_cw_echo_timing_factor 1.75 // "factory default" setting
|
||||||
|
#define default_autospace_timing_factor 2.0 // "factory default" setting
|
||||||
|
#define winkey_paddle_echo_buffer_decode_timing_factor 0.25
|
||||||
|
#define potentiometer_always_on 0
|
||||||
|
#define ptt_interlock_check_every_ms 100
|
||||||
|
#define ptt_interlock_active_state HIGH
|
||||||
|
#define unknown_cw_character '*'
|
||||||
|
#define cli_paddle_echo_on_at_boot 1
|
||||||
|
#define cli_straight_key_echo_on_at_boot 1
|
||||||
|
#define tx_key_dit_and_dah_pins_active_state HIGH
|
||||||
|
#define tx_key_dit_and_dah_pins_inactive_state LOW
|
||||||
|
#define potentiometer_check_interval_ms 150
|
||||||
|
#define potentiometer_reading_threshold 1
|
||||||
|
#define default_paddle_interruption_quiet_time_element_lengths 0
|
||||||
|
#define default_wordsworth_wordspace 6
|
||||||
|
#define default_wordsworth_repetition 1
|
||||||
|
#define serial_program_memory_buffer_size 500
|
||||||
|
#define eeprom_write_time_ms 30000
|
||||||
|
|
||||||
|
#ifdef FEATURE_BUTTONS
|
||||||
|
#define analog_buttons_number_of_buttons 1 // For Keypad only command butrton is neaded 6 //4 // includes the command button (command button + 3 memory buttons = 4) //sp5iou 20180319
|
||||||
|
#define analog_buttons_r1 10
|
||||||
|
#define analog_buttons_r2 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#if defined(FEATURE_BUTTONS) && !defined(FEATURE_PS2_KEYBOARD) && !defined(FEATURE_USB_KEYBOARD) && !defined(FEATURE_COMMAND_LINE_INTERFACE) && !defined(FEATURE_WINKEY_EMULATION)
|
||||||
|
#define number_of_memories byte(analog_buttons_number_of_buttons-1)
|
||||||
|
#else
|
||||||
|
// #define number_of_memories byte(12)
|
||||||
|
#define number_of_memories byte(10) //sp5iou 20180329 With many memories, be carefull to not put to much content. It caould disable memory programming and eeprom formatting is then necessary
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef FEATURE_CAPACITIVE_PADDLE_PINS
|
||||||
|
#define capacitance_threshold 2
|
||||||
|
#endif //FEATURE_CAPACITIVE_PADDLE_PINS
|
||||||
|
|
||||||
|
#ifdef FEATURE_LED_RING
|
||||||
|
#define led_ring_low_limit 10
|
||||||
|
#define led_ring_high_limit 50
|
||||||
|
#endif //FEATURE_LED_RING
|
||||||
|
|
||||||
|
#ifdef FEATURE_QLF
|
||||||
|
#define qlf_dit_max 125
|
||||||
|
#define qlf_dit_min 75
|
||||||
|
#define qlf_dah_max 200
|
||||||
|
#define qlf_dah_min 100
|
||||||
|
#define qlf_on_by_default 0
|
||||||
|
#endif //FEATURE_QLF
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef FEATURE_WINKEY_EMULATION
|
||||||
|
#ifdef OPTION_WINKEY_UCXLOG_9600_BAUD
|
||||||
|
#define WINKEY_DEFAULT_BAUD 9600
|
||||||
|
#else
|
||||||
|
#define WINKEY_DEFAULT_BAUD 1200
|
||||||
|
#endif //OPTION_WINKEY_UCXLOG_9600_BAUD
|
||||||
|
// alter these below to map alternate sidetones for Winkey interface protocol emulation
|
||||||
|
#ifdef OPTION_WINKEY_2_SUPPORT
|
||||||
|
#define WINKEY_SIDETONE_1 3759
|
||||||
|
#define WINKEY_SIDETONE_2 1879
|
||||||
|
#define WINKEY_SIDETONE_3 1252
|
||||||
|
#define WINKEY_SIDETONE_4 940
|
||||||
|
#define WINKEY_SIDETONE_5 752
|
||||||
|
#define WINKEY_SIDETONE_6 625
|
||||||
|
#define WINKEY_SIDETONE_7 535
|
||||||
|
#define WINKEY_SIDETONE_8 469
|
||||||
|
#define WINKEY_SIDETONE_9 417
|
||||||
|
#define WINKEY_SIDETONE_10 375
|
||||||
|
#else //OPTION_WINKEY_2_SUPPORT
|
||||||
|
#define WINKEY_SIDETONE_1 4000
|
||||||
|
#define WINKEY_SIDETONE_2 2000
|
||||||
|
#define WINKEY_SIDETONE_3 1333
|
||||||
|
#define WINKEY_SIDETONE_4 1000
|
||||||
|
#define WINKEY_SIDETONE_5 800
|
||||||
|
#define WINKEY_SIDETONE_6 666
|
||||||
|
#define WINKEY_SIDETONE_7 571
|
||||||
|
#define WINKEY_SIDETONE_8 500
|
||||||
|
#define WINKEY_SIDETONE_9 444
|
||||||
|
#define WINKEY_SIDETONE_10 400
|
||||||
|
#endif //OPTION_WINKEY_2_SUPPORT
|
||||||
|
|
||||||
|
#define WINKEY_1_REPORT_VERSION_NUMBER 10
|
||||||
|
#define WINKEY_2_REPORT_VERSION_NUMBER 23
|
||||||
|
|
||||||
|
// alter these to map to alternate hang time wordspace units
|
||||||
|
#define WINKEY_HANG_TIME_1_0 1.0
|
||||||
|
#define WINKEY_HANG_TIME_1_33 1.33
|
||||||
|
#define WINKEY_HANG_TIME_1_66 1.66
|
||||||
|
#define WINKEY_HANG_TIME_2_0 2.0
|
||||||
|
|
||||||
|
#define WINKEY_RETURN_THIS_FOR_ADMIN_GET_CAL 0x16
|
||||||
|
#define WINKEY_RETURN_THIS_FOR_ADMIN_PADDLE_A2D 0xEE
|
||||||
|
#define WINKEY_RETURN_THIS_FOR_ADMIN_SPEED_A2D 0x00
|
||||||
|
|
||||||
|
#endif //FEATURE_WINKEY_EMULATION
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#define PRIMARY_SERIAL_PORT &Serial
|
||||||
|
#define PRIMARY_SERIAL_PORT_BAUD 115200 // This applies only when the port is in Command Line Interface mode. In Winkey mode it will default to 1200.
|
||||||
|
|
||||||
|
#ifdef FEATURE_COMMAND_LINE_INTERFACE_ON_SECONDARY_PORT
|
||||||
|
#define SECONDARY_SERIAL_PORT &Serial1
|
||||||
|
#define SECONDARY_SERIAL_PORT_BAUD 115200
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#define CW_DECODER_SCREEN_COLUMNS 120 // word wrap at this many columns
|
||||||
|
#define CW_DECODER_SPACE_PRINT_THRESH 4.5 // print space if no tone for this many element lengths
|
||||||
|
#define CW_DECODER_SPACE_DECODE_THRESH 2.0 // invoke character decode if no tone for this many element lengths
|
||||||
|
#define CW_DECODER_NOISE_FILTER 20 // ignore elements shorter than this (mS)
|
||||||
|
|
||||||
|
#define STRAIGHT_KEY_ACTIVE_STATE LOW
|
||||||
|
|
||||||
|
#ifdef FEATURE_DYNAMIC_DAH_TO_DIT_RATIO
|
||||||
|
#define DYNAMIC_DAH_TO_DIT_RATIO_LOWER_LIMIT_WPM 30
|
||||||
|
#define DYNAMIC_DAH_TO_DIT_RATIO_LOWER_LIMIT_RATIO 300 // 300 = 3:1 ratio
|
||||||
|
#define DYNAMIC_DAH_TO_DIT_RATIO_UPPER_LIMIT_WPM 70
|
||||||
|
#define DYNAMIC_DAH_TO_DIT_RATIO_UPPER_LIMIT_RATIO 240 // 240 = 2.4:1 ratio
|
||||||
|
#endif //FEATURE_DYNAMIC_DAH_TO_DIT_RATIO
|
||||||
|
|
||||||
|
#if defined(FEATURE_COMPETITION_COMPRESSION_DETECTION)
|
||||||
|
#define COMPETITION_COMPRESSION_DETECTION_ARRAY_SIZE 16
|
||||||
|
#define COMPETITION_COMPRESSION_DETECTION_TIME_INTERCHAR_LOWER_LIMIT 1
|
||||||
|
#define COMPETITION_COMPRESSION_DETECTION_TIME_INTERCHAR_UPPER_LIMIT 6.0
|
||||||
|
#define COMPETITION_COMPRESSION_DETECTION_AVERAGE_ALARM_THRESHOLD 3.0
|
||||||
|
#endif //FEATURE_COMPETITION_COMPRESSION_DETECTION
|
||||||
|
|
||||||
|
#if defined(FEATURE_SLEEP)
|
||||||
|
#define KEYER_AWAKE_PIN_AWAKE_STATE HIGH
|
||||||
|
#define KEYER_AWAKE_PIN_ASLEEP_STATE LOW
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_LCD_BACKLIGHT_AUTO_DIM)
|
||||||
|
#define keyer_power_led_awake_duty 255 // PWM duty cycle. 0 is 0%, 255 is 100%
|
||||||
|
#define keyer_power_led_asleep_duty 25 // 25 is quite dim. Use 0 for off
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_ETHERNET)
|
||||||
|
// #define FEATURE_ETHERNET_IP {192,168,1,178} // default IP address ("192.168.1.178")
|
||||||
|
// #define FEATURE_ETHERNET_MAC {0xDE,0xAD,0xBE,0xEF,0xFE,0xED}
|
||||||
|
#define FEATURE_ETHERNET_IP {192,168,1,179} // default IP address ("192.168.1.179")
|
||||||
|
#define FEATURE_ETHERNET_MAC {0xDE,0xAD,0xBE,0xEF,0xFE,0xEE}
|
||||||
|
#define FEATURE_ETHERNET_DNS {8,8,8,8}
|
||||||
|
|
||||||
|
#define FEATURE_ETHERNET_GATEWAY {192,168,1,1} // default gateway
|
||||||
|
#define FEATURE_ETHERNET_SUBNET_MASK {255,255,255,0} // default subnet mask
|
||||||
|
#define FEATURE_ETHERNET_WEB_LISTENER_PORT 80
|
||||||
|
#define FEATURE_UDP_SEND_BUFFER_SIZE 128
|
||||||
|
#define FEATURE_UDP_RECEIVE_BUFFER_SIZE 128
|
||||||
|
#endif //FEATURE_ETHERNET
|
||||||
|
|
||||||
|
#define WEB_SERVER_CONTROL_TX_KEY_TIME_LIMIT_SECS 10
|
||||||
|
|
||||||
|
#define FEATURE_INTERNET_LINK_MAX_LINKS 2
|
||||||
|
#define FEATURE_INTERNET_LINK_DEFAULT_RCV_UDP_PORT 8888
|
||||||
|
#define FEATURE_INTERNET_LINK_BUFFER_TIME_MS 500
|
||||||
|
|
||||||
|
#if defined(FEATURE_4x4_KEYPAD)|| defined (FEATURE_3x4_KEYPAD)
|
||||||
|
#define KEYPAD_ROWS 4 //KeyPad Rows
|
||||||
|
#if defined(FEATURE_4x4_KEYPAD)
|
||||||
|
#define KEYPAD_COLS 4 //keypad Columns
|
||||||
|
#else
|
||||||
|
#define KEYPAD_COLS 3
|
||||||
|
#endif
|
||||||
|
#define mem1 0 //Memory numbers for Keypad: Actual memory numbers start with "0"
|
||||||
|
#define mem2 1
|
||||||
|
#define mem3 2
|
||||||
|
#define mem4 3
|
||||||
|
#define mem5 4
|
||||||
|
#define mem6 5
|
||||||
|
#define mem7 6
|
||||||
|
#define mem8 7
|
||||||
|
#define mem9 8
|
||||||
|
#define mem10 9
|
||||||
|
#define mem11 10
|
||||||
|
#define mem12 11
|
||||||
|
#endif //#if defined(FEATURE_4x4_KEYPAD)|| defined (FEATURE_3x4_KEYPAD)
|
||||||
|
|
||||||
|
#define initial_sidetone_mode 1 // Sidetone mode, 0=OFF, 1=ON, 2=PADDLE_ONLY
|
||||||
|
|
||||||
|
#define sd_card_spi_ss_line 4
|
||||||
|
|
||||||
|
#if defined(OPTION_DFROBOT_LCD_COMMAND_BUTTONS)
|
||||||
|
|
||||||
|
// For V1.1 board use these values
|
||||||
|
#define dfrobot_btnRIGHT_analog 50
|
||||||
|
#define dfrobot_btnUP_analog 250
|
||||||
|
#define dfrobot_btnDOWN_analog 450
|
||||||
|
#define dfrobot_btnLEFT_analog 650
|
||||||
|
#define dfrobot_btnSELECT_analog 850
|
||||||
|
|
||||||
|
// For V1.0 board use these values
|
||||||
|
// #define dfrobot_btnRIGHT_analog 50
|
||||||
|
// #define dfrobot_btnUP_analog 195
|
||||||
|
// #define dfrobot_btnDOWN_analog 380
|
||||||
|
// #define dfrobot_btnLEFT_analog 555
|
||||||
|
// #define dfrobot_btnSELECT_analog 790
|
||||||
|
|
||||||
|
// button to memory mappings (0 = command button, 1 = memory 1, 2 = memory 2, etc.)
|
||||||
|
#define dfrobot_btnRIGHT 2
|
||||||
|
#define dfrobot_btnUP 1
|
||||||
|
#define dfrobot_btnDOWN 3
|
||||||
|
#define dfrobot_btnLEFT 4
|
||||||
|
#define dfrobot_btnSELECT 0
|
||||||
|
#define dfrobot_btnNONE 255 // do not change
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define sequencer_pins_active_state HIGH
|
||||||
|
#define sequencer_pins_inactive_state LOW
|
||||||
|
#define ptt_line_active_state HIGH
|
||||||
|
#define ptt_line_inactive_state LOW
|
||||||
|
#define tx_key_line_active_state HIGH
|
||||||
|
#define tx_key_line_inactive_state LOW
|
||||||
|
#define ptt_input_pin_active_state LOW
|
||||||
|
#define ptt_input_pin_inactive_state HIGH
|
||||||
|
#define tx_inhibit_pin_active_state LOW
|
||||||
|
#define tx_inhibit_pin_inactive_state HIGH
|
||||||
|
#define tx_pause_pin_active_state LOW
|
||||||
|
#define tx_pause_pin_inactive_state HIGH
|
||||||
|
#define sidetone_line_active_state HIGH
|
||||||
|
#define sidetone_line_inactive_state LOW
|
||||||
|
|
||||||
|
#if defined(ARDUINO_MAPLE_MINI) || defined(ARDUINO_GENERIC_STM32f103C) //sp5iou 20180329
|
||||||
|
#define button_value_factor 4095 //sp5iou contributed
|
||||||
|
#else
|
||||||
|
#define button_value_factor 1023
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define farnsworth_timing_calibration 1.15
|
||||||
|
|
||||||
|
#define sidetone_volume_low_limit 10
|
||||||
|
#define sidetone_volume_high_limit 500
|
||||||
|
|
||||||
|
#define custom_startup_field "your custom text here" // an example could be callsign and name, eg. "AB1XYZ Bob", (or "Worlds best operator" which requires a 20 column display), string length shouldo be no more than the number of columns on the display
|
||||||
|
|
||||||
|
#define command_mode_acknowledgement_character 'E'
|
||||||
|
|
||||||
|
#if defined(FEATURE_COMMAND_MODE_ENHANCED_CMD_ACKNOWLEDGEMENT)
|
||||||
|
#define command_a_iambic_a "A"
|
||||||
|
#define command_b_iambic_b "B"
|
||||||
|
#define command_c_single_paddle "SINGLE"
|
||||||
|
#define command_d_ultimatic "ULT"
|
||||||
|
#define command_h_weight_dit_dah_ratio_default "R"
|
||||||
|
#define command_i_tx_on "TX ON"
|
||||||
|
#define command_i_tx_off "TX OFF"
|
||||||
|
#define command_k_dit_dah_buffers_on "ON"
|
||||||
|
#define command_k_dit_dah_buffers_off "OFF"
|
||||||
|
#define command_n_paddle_reverse "REV"
|
||||||
|
#define command_n_paddle_normal "NORM"
|
||||||
|
#define command_o_sidetone_off "ST OFF"
|
||||||
|
#define command_o_sidetone_paddle_only "ST PD ONLY"
|
||||||
|
#define command_o_sidetone_on "ST ON"
|
||||||
|
#define command_t_tune_mode "TUNE"
|
||||||
|
#define command_v_potentiometer_on "POT ON"
|
||||||
|
#define command_v_potentiometer_off "POT OFF"
|
||||||
|
|
||||||
|
#define command_error "ERR"
|
||||||
|
|
||||||
|
#endif //FEATURE_COMMAND_MODE_ENHANCED_CMD_ACKNOWLEDGEMENT
|
316
k3ng_keyer/keyer_settings_iz3gme.h
Executable file
316
k3ng_keyer/keyer_settings_iz3gme.h
Executable file
|
@ -0,0 +1,316 @@
|
||||||
|
// Initial and hardcoded settings
|
||||||
|
#define initial_speed_wpm 26 // "factory default" keyer speed setting
|
||||||
|
#define initial_command_mode_speed_wpm 20 // "factory default" command mode speed setting
|
||||||
|
#define initial_sidetone_freq 600 // "factory default" sidetone frequency setting
|
||||||
|
#define sidetone_hz_limit_low 299
|
||||||
|
#define sidetone_hz_limit_high 2001
|
||||||
|
#define hz_high_beep 1500 // frequency in hertz of high beep
|
||||||
|
#define hz_low_beep 400 // frequency in hertz of low beep
|
||||||
|
#define initial_dah_to_dit_ratio 300 // 300 = 3 / normal 3:1 ratio
|
||||||
|
#define initial_ptt_lead_time_tx1 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx1 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx2 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx2 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx3 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx3 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx4 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx4 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx5 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx5 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx6 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx6 10 // PTT tail time in mS
|
||||||
|
#define initial_qrss_dit_length 1 // QRSS dit length in seconds
|
||||||
|
#define initial_pot_wpm_low_value 13 // Potentiometer WPM fully CCW
|
||||||
|
#define initial_pot_wpm_high_value 35 // Potentiometer WPM fully CW
|
||||||
|
#define wpm_limit_low 5
|
||||||
|
#define wpm_limit_high 60
|
||||||
|
#define potentiometer_change_threshold 0.9 // don't change the keyer speed until pot wpm has changed more than this
|
||||||
|
#define send_buffer_size 150
|
||||||
|
#define default_length_letterspace 3
|
||||||
|
#define default_length_wordspace 7
|
||||||
|
#define default_keying_compensation 0 // number of milliseconds to extend all dits and dahs - for QSK on boatanchors
|
||||||
|
#define default_first_extension_time 0 // number of milliseconds to extend first sent dit or dah
|
||||||
|
#define default_pot_full_scale_reading 1023
|
||||||
|
#define default_weighting 50 // 50 = weighting factor of 1 (normal)
|
||||||
|
#define default_ptt_hang_time_wordspace_units 0.0
|
||||||
|
#define winkey_c0_wait_time 1 // the number of milliseconds to wait to send 0xc0 byte after send buffer has been sent
|
||||||
|
#define winkey_command_timeout_ms 5000
|
||||||
|
#define winkey_discard_bytes_startup 3 // this is used if OPTION_WINKEY_DISCARD_BYTES_AT_STARTUP is enabled above
|
||||||
|
#define winkey_xoff_threshold 20 // the number of chars in the buffer when we begin sending XOFFs
|
||||||
|
#define winkey_xon_threshold 10 // the number of chars in the buffer below which we deactivate XOFF
|
||||||
|
#define default_memory_repeat_time 3000 // time in milliseconds
|
||||||
|
#define LCD_COLUMNS 16
|
||||||
|
#define LCD_ROWS 2
|
||||||
|
#define lcd_i2c_address_mathertel_PCF8574 0x27 // I2C address of display for FEATURE_LCD_MATHERTEL_PCF8574
|
||||||
|
#define lcd_i2c_address_fdebrander_lcd 0x27 // I2C address of display for FEATURE_LCD_I2C_FDEBRABANDER
|
||||||
|
#define lcd_i2c_address_ydv1_lcd 0x27 // I2C address of display for FEATURE_LCD_YDv1
|
||||||
|
//#define lcd_i2c_address_ydv1_lcd 0x38 // I2C address of display for FEATURE_LCD_YDv1
|
||||||
|
#define lcd_i2c_address_sainsmart_lcd 0x27 // I2C address of display for FEATURE_LCD_SAINSMART_I2C
|
||||||
|
#define hell_pixel_microseconds 4025
|
||||||
|
#define program_memory_limit_consec_spaces 1
|
||||||
|
#define serial_leading_zeros 1 // set to 1 to activate leading zeros in serial numbers (i.e. #1 = 001)
|
||||||
|
#define serial_cut_numbers 0 // set to 1 to activate cut numbers in serial numbers (i.e. #10 = 1T, #19 = 1N)
|
||||||
|
#define go_to_sleep_inactivity_time 10 // minutes - FEATURE_SLEEP
|
||||||
|
#define dim_backlight_inactive_time 5 // minutes - FEATURE_LCD_BACKLIGHT_AUTO_DIM
|
||||||
|
#define default_cmos_super_keyer_iambic_b_timing_percent 33 // use with FEATURE_CMOS_SUPER_KEYER_IAMBIC_B_TIMING; should be between 0 to 99 % (0% = true iambic b;100% = iambic a behavior)
|
||||||
|
#define default_cw_echo_timing_factor 1.75 // "factory default" setting
|
||||||
|
#define default_autospace_timing_factor 2.0 // "factory default" setting
|
||||||
|
#define winkey_paddle_echo_buffer_decode_timing_factor 0.25
|
||||||
|
#define potentiometer_always_on 0
|
||||||
|
#define ptt_interlock_check_every_ms 100
|
||||||
|
#define ptt_interlock_active_state HIGH
|
||||||
|
#define unknown_cw_character '*'
|
||||||
|
#define cli_paddle_echo_on_at_boot 1
|
||||||
|
#define cli_straight_key_echo_on_at_boot 1
|
||||||
|
#define tx_key_dit_and_dah_pins_active_state HIGH
|
||||||
|
#define tx_key_dit_and_dah_pins_inactive_state LOW
|
||||||
|
#define potentiometer_check_interval_ms 150
|
||||||
|
#define potentiometer_reading_threshold 1
|
||||||
|
#define default_paddle_interruption_quiet_time_element_lengths 0
|
||||||
|
#define default_wordsworth_wordspace 6
|
||||||
|
#define default_wordsworth_repetition 1
|
||||||
|
#define serial_program_memory_buffer_size 500
|
||||||
|
#define eeprom_write_time_ms 30000
|
||||||
|
|
||||||
|
#ifdef FEATURE_BUTTONS
|
||||||
|
#define analog_buttons_number_of_buttons 5 // includes the command button (command button + 3 memory buttons = 4)
|
||||||
|
#define analog_buttons_r1 10
|
||||||
|
#define analog_buttons_r2 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#if defined(FEATURE_BUTTONS) && !defined(FEATURE_PS2_KEYBOARD) && !defined(FEATURE_USB_KEYBOARD) && !defined(FEATURE_COMMAND_LINE_INTERFACE) && !defined(FEATURE_WINKEY_EMULATION)
|
||||||
|
#define number_of_memories byte(analog_buttons_number_of_buttons-1)
|
||||||
|
#else
|
||||||
|
#define number_of_memories byte(12)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef FEATURE_CAPACITIVE_PADDLE_PINS
|
||||||
|
#define capacitance_threshold 2
|
||||||
|
#endif //FEATURE_CAPACITIVE_PADDLE_PINS
|
||||||
|
|
||||||
|
#ifdef FEATURE_LED_RING
|
||||||
|
#define led_ring_low_limit 10
|
||||||
|
#define led_ring_high_limit 50
|
||||||
|
#endif //FEATURE_LED_RING
|
||||||
|
|
||||||
|
#ifdef FEATURE_QLF
|
||||||
|
#define qlf_dit_max 125
|
||||||
|
#define qlf_dit_min 75
|
||||||
|
#define qlf_dah_max 200
|
||||||
|
#define qlf_dah_min 100
|
||||||
|
#define qlf_on_by_default 0
|
||||||
|
#endif //FEATURE_QLF
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef FEATURE_WINKEY_EMULATION
|
||||||
|
#ifdef OPTION_WINKEY_UCXLOG_9600_BAUD
|
||||||
|
#define WINKEY_DEFAULT_BAUD 9600
|
||||||
|
#else
|
||||||
|
#define WINKEY_DEFAULT_BAUD 1200
|
||||||
|
#endif //OPTION_WINKEY_UCXLOG_9600_BAUD
|
||||||
|
// alter these below to map alternate sidetones for Winkey interface protocol emulation
|
||||||
|
#ifdef OPTION_WINKEY_2_SUPPORT
|
||||||
|
#define WINKEY_SIDETONE_1 3759
|
||||||
|
#define WINKEY_SIDETONE_2 1879
|
||||||
|
#define WINKEY_SIDETONE_3 1252
|
||||||
|
#define WINKEY_SIDETONE_4 940
|
||||||
|
#define WINKEY_SIDETONE_5 752
|
||||||
|
#define WINKEY_SIDETONE_6 625
|
||||||
|
#define WINKEY_SIDETONE_7 535
|
||||||
|
#define WINKEY_SIDETONE_8 469
|
||||||
|
#define WINKEY_SIDETONE_9 417
|
||||||
|
#define WINKEY_SIDETONE_10 375
|
||||||
|
#else //OPTION_WINKEY_2_SUPPORT
|
||||||
|
#define WINKEY_SIDETONE_1 4000
|
||||||
|
#define WINKEY_SIDETONE_2 2000
|
||||||
|
#define WINKEY_SIDETONE_3 1333
|
||||||
|
#define WINKEY_SIDETONE_4 1000
|
||||||
|
#define WINKEY_SIDETONE_5 800
|
||||||
|
#define WINKEY_SIDETONE_6 666
|
||||||
|
#define WINKEY_SIDETONE_7 571
|
||||||
|
#define WINKEY_SIDETONE_8 500
|
||||||
|
#define WINKEY_SIDETONE_9 444
|
||||||
|
#define WINKEY_SIDETONE_10 400
|
||||||
|
#endif //OPTION_WINKEY_2_SUPPORT
|
||||||
|
|
||||||
|
#define WINKEY_1_REPORT_VERSION_NUMBER 10
|
||||||
|
#define WINKEY_2_REPORT_VERSION_NUMBER 23
|
||||||
|
|
||||||
|
// alter these to map to alternate hang time wordspace units
|
||||||
|
#define WINKEY_HANG_TIME_1_0 1.0
|
||||||
|
#define WINKEY_HANG_TIME_1_33 1.33
|
||||||
|
#define WINKEY_HANG_TIME_1_66 1.66
|
||||||
|
#define WINKEY_HANG_TIME_2_0 2.0
|
||||||
|
|
||||||
|
#define WINKEY_RETURN_THIS_FOR_ADMIN_GET_CAL 0x16
|
||||||
|
#define WINKEY_RETURN_THIS_FOR_ADMIN_PADDLE_A2D 0xEE
|
||||||
|
#define WINKEY_RETURN_THIS_FOR_ADMIN_SPEED_A2D 0x00
|
||||||
|
|
||||||
|
#endif //FEATURE_WINKEY_EMULATION
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#define PRIMARY_SERIAL_PORT &Serial
|
||||||
|
#define PRIMARY_SERIAL_PORT_BAUD 115200 // This applies only when the port is in Command Line Interface mode. In Winkey mode it will default to 1200.
|
||||||
|
|
||||||
|
#ifdef FEATURE_COMMAND_LINE_INTERFACE_ON_SECONDARY_PORT
|
||||||
|
#define SECONDARY_SERIAL_PORT &Serial1
|
||||||
|
#define SECONDARY_SERIAL_PORT_BAUD 115200
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#define CW_DECODER_SCREEN_COLUMNS 120 // word wrap at this many columns
|
||||||
|
#define CW_DECODER_SPACE_PRINT_THRESH 4.5 // print space if no tone for this many element lengths
|
||||||
|
#define CW_DECODER_SPACE_DECODE_THRESH 2.0 // invoke character decode if no tone for this many element lengths
|
||||||
|
#define CW_DECODER_NOISE_FILTER 20 // ignore elements shorter than this (mS)
|
||||||
|
|
||||||
|
#define STRAIGHT_KEY_ACTIVE_STATE LOW
|
||||||
|
|
||||||
|
#ifdef FEATURE_DYNAMIC_DAH_TO_DIT_RATIO
|
||||||
|
#define DYNAMIC_DAH_TO_DIT_RATIO_LOWER_LIMIT_WPM 30
|
||||||
|
#define DYNAMIC_DAH_TO_DIT_RATIO_LOWER_LIMIT_RATIO 300 // 300 = 3:1 ratio
|
||||||
|
#define DYNAMIC_DAH_TO_DIT_RATIO_UPPER_LIMIT_WPM 70
|
||||||
|
#define DYNAMIC_DAH_TO_DIT_RATIO_UPPER_LIMIT_RATIO 240 // 240 = 2.4:1 ratio
|
||||||
|
#endif //FEATURE_DYNAMIC_DAH_TO_DIT_RATIO
|
||||||
|
|
||||||
|
#if defined(FEATURE_COMPETITION_COMPRESSION_DETECTION)
|
||||||
|
#define COMPETITION_COMPRESSION_DETECTION_ARRAY_SIZE 16
|
||||||
|
#define COMPETITION_COMPRESSION_DETECTION_TIME_INTERCHAR_LOWER_LIMIT 1
|
||||||
|
#define COMPETITION_COMPRESSION_DETECTION_TIME_INTERCHAR_UPPER_LIMIT 6.0
|
||||||
|
#define COMPETITION_COMPRESSION_DETECTION_AVERAGE_ALARM_THRESHOLD 3.0
|
||||||
|
#endif //FEATURE_COMPETITION_COMPRESSION_DETECTION
|
||||||
|
|
||||||
|
#if defined(FEATURE_SLEEP)
|
||||||
|
#define KEYER_AWAKE_PIN_AWAKE_STATE HIGH
|
||||||
|
#define KEYER_AWAKE_PIN_ASLEEP_STATE LOW
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_LCD_BACKLIGHT_AUTO_DIM)
|
||||||
|
#define keyer_power_led_awake_duty 255 // PWM duty cycle. 0 is 0%, 255 is 100%
|
||||||
|
#define keyer_power_led_asleep_duty 25 // 25 is quite dim. Use 0 for off
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_ETHERNET)
|
||||||
|
// #define FEATURE_ETHERNET_IP {192,168,1,178} // default IP address ("192.168.1.178")
|
||||||
|
// #define FEATURE_ETHERNET_MAC {0xDE,0xAD,0xBE,0xEF,0xFE,0xED}
|
||||||
|
#define FEATURE_ETHERNET_IP {192,168,1,179} // default IP address ("192.168.1.179")
|
||||||
|
#define FEATURE_ETHERNET_MAC {0xDE,0xAD,0xBE,0xEF,0xFE,0xEE}
|
||||||
|
#define FEATURE_ETHERNET_DNS {8,8,8,8}
|
||||||
|
|
||||||
|
#define FEATURE_ETHERNET_GATEWAY {192,168,1,1} // default gateway
|
||||||
|
#define FEATURE_ETHERNET_SUBNET_MASK {255,255,255,0} // default subnet mask
|
||||||
|
#define FEATURE_ETHERNET_WEB_LISTENER_PORT 80
|
||||||
|
#define FEATURE_UDP_SEND_BUFFER_SIZE 128
|
||||||
|
#define FEATURE_UDP_RECEIVE_BUFFER_SIZE 128
|
||||||
|
#endif //FEATURE_ETHERNET
|
||||||
|
|
||||||
|
#define WEB_SERVER_CONTROL_TX_KEY_TIME_LIMIT_SECS 10
|
||||||
|
|
||||||
|
#define FEATURE_INTERNET_LINK_MAX_LINKS 2
|
||||||
|
#define FEATURE_INTERNET_LINK_DEFAULT_RCV_UDP_PORT 8888
|
||||||
|
#define FEATURE_INTERNET_LINK_BUFFER_TIME_MS 500
|
||||||
|
|
||||||
|
#if defined(FEATURE_4x4_KEYPAD)|| defined (FEATURE_3x4_KEYPAD)
|
||||||
|
#define KEYPAD_ROWS 4 //KeyPad Rows
|
||||||
|
#if defined(FEATURE_4x4_KEYPAD)
|
||||||
|
#define KEYPAD_COLS 4 //keypad Columns
|
||||||
|
#else
|
||||||
|
#define KEYPAD_COLS 3
|
||||||
|
#endif
|
||||||
|
#define mem1 0 //Memory numbers for Keypad: Actual memory numbers start with "0"
|
||||||
|
#define mem2 1
|
||||||
|
#define mem3 2
|
||||||
|
#define mem4 3
|
||||||
|
#define mem5 4
|
||||||
|
#define mem6 5
|
||||||
|
#define mem7 6
|
||||||
|
#define mem8 7
|
||||||
|
#define mem9 8
|
||||||
|
#define mem10 9
|
||||||
|
#define mem11 10
|
||||||
|
#define mem12 11
|
||||||
|
#endif //#if defined(FEATURE_4x4_KEYPAD)|| defined (FEATURE_3x4_KEYPAD)
|
||||||
|
|
||||||
|
#define initial_sidetone_mode 1 // Sidetone mode, 0=OFF, 1=ON, 2=PADDLE_ONLY
|
||||||
|
|
||||||
|
#define sd_card_spi_ss_line 4
|
||||||
|
|
||||||
|
#if defined(OPTION_DFROBOT_LCD_COMMAND_BUTTONS)
|
||||||
|
|
||||||
|
// For V1.1 board use these values
|
||||||
|
#define dfrobot_btnRIGHT_analog 50
|
||||||
|
#define dfrobot_btnUP_analog 250
|
||||||
|
#define dfrobot_btnDOWN_analog 450
|
||||||
|
#define dfrobot_btnLEFT_analog 650
|
||||||
|
#define dfrobot_btnSELECT_analog 850
|
||||||
|
|
||||||
|
// For V1.0 board use these values
|
||||||
|
// #define dfrobot_btnRIGHT_analog 50
|
||||||
|
// #define dfrobot_btnUP_analog 195
|
||||||
|
// #define dfrobot_btnDOWN_analog 380
|
||||||
|
// #define dfrobot_btnLEFT_analog 555
|
||||||
|
// #define dfrobot_btnSELECT_analog 790
|
||||||
|
|
||||||
|
// button to memory mappings (0 = command button, 1 = memory 1, 2 = memory 2, etc.)
|
||||||
|
#define dfrobot_btnRIGHT 2
|
||||||
|
#define dfrobot_btnUP 1
|
||||||
|
#define dfrobot_btnDOWN 3
|
||||||
|
#define dfrobot_btnLEFT 4
|
||||||
|
#define dfrobot_btnSELECT 0
|
||||||
|
#define dfrobot_btnNONE 255 // do not change
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define sequencer_pins_active_state HIGH
|
||||||
|
#define sequencer_pins_inactive_state LOW
|
||||||
|
#define ptt_line_active_state HIGH
|
||||||
|
#define ptt_line_inactive_state LOW
|
||||||
|
#define tx_key_line_active_state HIGH
|
||||||
|
#define tx_key_line_inactive_state LOW
|
||||||
|
#define ptt_input_pin_active_state LOW
|
||||||
|
#define ptt_input_pin_inactive_state HIGH
|
||||||
|
#define tx_inhibit_pin_active_state LOW
|
||||||
|
#define tx_inhibit_pin_inactive_state HIGH
|
||||||
|
#define tx_pause_pin_active_state LOW
|
||||||
|
#define tx_pause_pin_inactive_state HIGH
|
||||||
|
#define sidetone_line_active_state HIGH
|
||||||
|
#define sidetone_line_inactive_state LOW
|
||||||
|
|
||||||
|
#if defined(ARDUINO_MAPLE_MINI)
|
||||||
|
#define button_value_factor 4095 //sp5iou contributed
|
||||||
|
#else
|
||||||
|
#define button_value_factor 1023
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define farnsworth_timing_calibration 1.15
|
||||||
|
|
||||||
|
#define sidetone_volume_low_limit 10
|
||||||
|
#define sidetone_volume_high_limit 500
|
||||||
|
|
||||||
|
#define custom_startup_field "your custom text here" // an example could be callsign and name, eg. "AB1XYZ Bob", (or "Worlds best operator" which requires a 20 column display), string length shouldo be no more than the number of columns on the display
|
||||||
|
|
||||||
|
#define command_mode_acknowledgement_character 'E'
|
||||||
|
|
||||||
|
#if defined(FEATURE_COMMAND_MODE_ENHANCED_CMD_ACKNOWLEDGEMENT)
|
||||||
|
#define command_a_iambic_a "A"
|
||||||
|
#define command_b_iambic_b "B"
|
||||||
|
#define command_c_single_paddle "SINGLE"
|
||||||
|
#define command_d_ultimatic "ULT"
|
||||||
|
#define command_h_weight_dit_dah_ratio_default "R"
|
||||||
|
#define command_i_tx_on "TX ON"
|
||||||
|
#define command_i_tx_off "TX OFF"
|
||||||
|
#define command_k_dit_dah_buffers_on "ON"
|
||||||
|
#define command_k_dit_dah_buffers_off "OFF"
|
||||||
|
#define command_n_paddle_reverse "REV"
|
||||||
|
#define command_n_paddle_normal "NORM"
|
||||||
|
#define command_o_sidetone_off "ST OFF"
|
||||||
|
#define command_o_sidetone_paddle_only "ST PD ONLY"
|
||||||
|
#define command_o_sidetone_on "ST ON"
|
||||||
|
#define command_t_tune_mode "TUNE"
|
||||||
|
#define command_v_potentiometer_on "POT ON"
|
||||||
|
#define command_v_potentiometer_off "POT OFF"
|
||||||
|
|
||||||
|
#define command_error "ERR"
|
||||||
|
|
||||||
|
#endif //FEATURE_COMMAND_MODE_ENHANCED_CMD_ACKNOWLEDGEMENT
|
315
k3ng_keyer/keyer_settings_k5bcq.h
Executable file
315
k3ng_keyer/keyer_settings_k5bcq.h
Executable file
|
@ -0,0 +1,315 @@
|
||||||
|
// Initial and hardcoded settings
|
||||||
|
#define initial_speed_wpm 26 // "factory default" keyer speed setting
|
||||||
|
#define initial_command_mode_speed_wpm 20 // "factory default" command mode speed setting
|
||||||
|
#define initial_sidetone_freq 700 // "factory default" sidetone frequency setting
|
||||||
|
#define sidetone_hz_limit_low 299
|
||||||
|
#define sidetone_hz_limit_high 2001
|
||||||
|
#define hz_high_beep 1500 // frequency in hertz of high beep
|
||||||
|
#define hz_low_beep 400 // frequency in hertz of low beep
|
||||||
|
#define initial_dah_to_dit_ratio 300 // 300 = 3 / normal 3:1 ratio
|
||||||
|
#define initial_ptt_lead_time_tx1 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx1 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx2 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx2 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx3 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx3 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx4 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx4 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx5 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx5 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx6 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx6 10 // PTT tail time in mS
|
||||||
|
#define initial_qrss_dit_length 1 // QRSS dit length in seconds
|
||||||
|
#define initial_pot_wpm_low_value 13 // Potentiometer WPM fully CCW
|
||||||
|
#define initial_pot_wpm_high_value 35 // Potentiometer WPM fully CW
|
||||||
|
#define wpm_limit_low 5
|
||||||
|
#define wpm_limit_high 60
|
||||||
|
#define potentiometer_change_threshold 0.9 // don't change the keyer speed until pot wpm has changed more than this
|
||||||
|
#define send_buffer_size 150
|
||||||
|
#define default_length_letterspace 3
|
||||||
|
#define default_length_wordspace 7
|
||||||
|
#define default_keying_compensation 0 // number of milliseconds to extend all dits and dahs - for QSK on boatanchors
|
||||||
|
#define default_first_extension_time 0 // number of milliseconds to extend first sent dit or dah
|
||||||
|
#define default_pot_full_scale_reading 1023
|
||||||
|
#define default_weighting 50 // 50 = weighting factor of 1 (normal)
|
||||||
|
#define default_ptt_hang_time_wordspace_units 0.0
|
||||||
|
#define winkey_c0_wait_time 1 // the number of milliseconds to wait to send 0xc0 byte after send buffer has been sent
|
||||||
|
#define winkey_command_timeout_ms 5000
|
||||||
|
#define winkey_discard_bytes_startup 3 // this is used if OPTION_WINKEY_DISCARD_BYTES_AT_STARTUP is enabled above
|
||||||
|
#define winkey_xoff_threshold 20 // the number of chars in the buffer when we begin sending XOFFs
|
||||||
|
#define winkey_xon_threshold 10 // the number of chars in the buffer below which we deactivate XOFF
|
||||||
|
#define default_memory_repeat_time 3000 // time in milliseconds
|
||||||
|
#define LCD_COLUMNS 16 //edit for 1602 or 1604 LCD
|
||||||
|
#define LCD_ROWS 2 //edit for 1602 or 1604 LCD
|
||||||
|
#define lcd_i2c_address_mathertel_PCF8574 0x27 // I2C address of display for FEATURE_LCD_MATHERTEL_PCF8574
|
||||||
|
#define lcd_i2c_address_fdebrander_lcd 0x27 // I2C address of display for FEATURE_LCD_I2C_FDEBRABANDER
|
||||||
|
#define lcd_i2c_address_ydv1_lcd 0x27 // I2C address of display for FEATURE_LCD_YDv1
|
||||||
|
//#define lcd_i2c_address_ydv1_lcd 0x38 // I2C address of display for FEATURE_LCD_YDv1
|
||||||
|
#define lcd_i2c_address_sainsmart_lcd 0x27 // I2C address of display for FEATURE_LCD_SAINSMART_I2C
|
||||||
|
#define hell_pixel_microseconds 4025
|
||||||
|
#define program_memory_limit_consec_spaces 1
|
||||||
|
#define serial_leading_zeros 1 // set to 1 to activate leading zeros in serial numbers (i.e. #1 = 001)
|
||||||
|
#define serial_cut_numbers 0 // set to 1 to activate cut numbers in serial numbers (i.e. #10 = 1T, #19 = 1N)
|
||||||
|
#define go_to_sleep_inactivity_time 10 // minutes - FEATURE_SLEEP
|
||||||
|
#define dim_backlight_inactive_time 5 // minutes - FEATURE_LCD_BACKLIGHT_AUTO_DIM
|
||||||
|
#define default_cmos_super_keyer_iambic_b_timing_percent 33 // use with FEATURE_CMOS_SUPER_KEYER_IAMBIC_B_TIMING; should be between 0 to 99 % (0% = true iambic b;100% = iambic a behavior)
|
||||||
|
#define default_cw_echo_timing_factor 1.75 // "factory default" setting
|
||||||
|
#define default_autospace_timing_factor 2.0 // "factory default" setting
|
||||||
|
#define winkey_paddle_echo_buffer_decode_timing_factor 0.25
|
||||||
|
#define potentiometer_always_on 0
|
||||||
|
#define ptt_interlock_check_every_ms 100
|
||||||
|
#define ptt_interlock_active_state HIGH
|
||||||
|
#define unknown_cw_character '*'
|
||||||
|
#define cli_paddle_echo_on_at_boot 1
|
||||||
|
#define cli_straight_key_echo_on_at_boot 1
|
||||||
|
#define tx_key_dit_and_dah_pins_active_state HIGH
|
||||||
|
#define tx_key_dit_and_dah_pins_inactive_state LOW
|
||||||
|
#define potentiometer_check_interval_ms 150
|
||||||
|
#define potentiometer_reading_threshold 1
|
||||||
|
#define default_paddle_interruption_quiet_time_element_lengths 0
|
||||||
|
#define default_wordsworth_wordspace 6
|
||||||
|
#define default_wordsworth_repetition 1
|
||||||
|
#define serial_program_memory_buffer_size 500
|
||||||
|
#define eeprom_write_time_ms 30000
|
||||||
|
|
||||||
|
#ifdef FEATURE_BUTTONS
|
||||||
|
#define analog_buttons_number_of_buttons 8 // includes the command button (command button + 3 memory buttons = 4)
|
||||||
|
#define analog_buttons_r1 10
|
||||||
|
#define analog_buttons_r2 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#if defined(FEATURE_BUTTONS) && !defined(FEATURE_PS2_KEYBOARD) && !defined(FEATURE_USB_KEYBOARD) && !defined(FEATURE_COMMAND_LINE_INTERFACE) && !defined(FEATURE_WINKEY_EMULATION)
|
||||||
|
#define number_of_memories byte(analog_buttons_number_of_buttons-1)
|
||||||
|
#else
|
||||||
|
#define number_of_memories byte(12)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef FEATURE_CAPACITIVE_PADDLE_PINS
|
||||||
|
#define capacitance_threshold 2
|
||||||
|
#endif //FEATURE_CAPACITIVE_PADDLE_PINS
|
||||||
|
|
||||||
|
#ifdef FEATURE_LED_RING
|
||||||
|
#define led_ring_low_limit 10
|
||||||
|
#define led_ring_high_limit 50
|
||||||
|
#endif //FEATURE_LED_RING
|
||||||
|
|
||||||
|
#ifdef FEATURE_QLF
|
||||||
|
#define qlf_dit_max 125
|
||||||
|
#define qlf_dit_min 75
|
||||||
|
#define qlf_dah_max 200
|
||||||
|
#define qlf_dah_min 100
|
||||||
|
#define qlf_on_by_default 0
|
||||||
|
#endif //FEATURE_QLF
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef FEATURE_WINKEY_EMULATION
|
||||||
|
#ifdef OPTION_WINKEY_UCXLOG_9600_BAUD
|
||||||
|
#define WINKEY_DEFAULT_BAUD 9600
|
||||||
|
#else
|
||||||
|
#define WINKEY_DEFAULT_BAUD 1200
|
||||||
|
#endif //OPTION_WINKEY_UCXLOG_9600_BAUD
|
||||||
|
// alter these below to map alternate sidetones for Winkey interface protocol emulation
|
||||||
|
#ifdef OPTION_WINKEY_2_SUPPORT
|
||||||
|
#define WINKEY_SIDETONE_1 3759
|
||||||
|
#define WINKEY_SIDETONE_2 1879
|
||||||
|
#define WINKEY_SIDETONE_3 1252
|
||||||
|
#define WINKEY_SIDETONE_4 940
|
||||||
|
#define WINKEY_SIDETONE_5 752
|
||||||
|
#define WINKEY_SIDETONE_6 625
|
||||||
|
#define WINKEY_SIDETONE_7 535
|
||||||
|
#define WINKEY_SIDETONE_8 469
|
||||||
|
#define WINKEY_SIDETONE_9 417
|
||||||
|
#define WINKEY_SIDETONE_10 375
|
||||||
|
#else //OPTION_WINKEY_2_SUPPORT
|
||||||
|
#define WINKEY_SIDETONE_1 4000
|
||||||
|
#define WINKEY_SIDETONE_2 2000
|
||||||
|
#define WINKEY_SIDETONE_3 1333
|
||||||
|
#define WINKEY_SIDETONE_4 1000
|
||||||
|
#define WINKEY_SIDETONE_5 800
|
||||||
|
#define WINKEY_SIDETONE_6 666
|
||||||
|
#define WINKEY_SIDETONE_7 571
|
||||||
|
#define WINKEY_SIDETONE_8 500
|
||||||
|
#define WINKEY_SIDETONE_9 444
|
||||||
|
#define WINKEY_SIDETONE_10 400
|
||||||
|
#endif //OPTION_WINKEY_2_SUPPORT
|
||||||
|
|
||||||
|
#define WINKEY_1_REPORT_VERSION_NUMBER 10
|
||||||
|
#define WINKEY_2_REPORT_VERSION_NUMBER 23
|
||||||
|
|
||||||
|
// alter these to map to alternate hang time wordspace units
|
||||||
|
#define WINKEY_HANG_TIME_1_0 1.0
|
||||||
|
#define WINKEY_HANG_TIME_1_33 1.33
|
||||||
|
#define WINKEY_HANG_TIME_1_66 1.66
|
||||||
|
#define WINKEY_HANG_TIME_2_0 2.0
|
||||||
|
|
||||||
|
#define WINKEY_RETURN_THIS_FOR_ADMIN_GET_CAL 0x16
|
||||||
|
#define WINKEY_RETURN_THIS_FOR_ADMIN_PADDLE_A2D 0xEE
|
||||||
|
#define WINKEY_RETURN_THIS_FOR_ADMIN_SPEED_A2D 0x00
|
||||||
|
|
||||||
|
#endif //FEATURE_WINKEY_EMULATION
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#define PRIMARY_SERIAL_PORT &Serial
|
||||||
|
#define PRIMARY_SERIAL_PORT_BAUD 115200 // This applies only when the port is in Command Line Interface mode. In Winkey mode it will default to 1200.
|
||||||
|
|
||||||
|
#ifdef FEATURE_COMMAND_LINE_INTERFACE_ON_SECONDARY_PORT
|
||||||
|
#define SECONDARY_SERIAL_PORT &Serial1
|
||||||
|
#define SECONDARY_SERIAL_PORT_BAUD 115200
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#define CW_DECODER_SCREEN_COLUMNS 120 // word wrap at this many columns
|
||||||
|
#define CW_DECODER_SPACE_PRINT_THRESH 4.5 // print space if no tone for this many element lengths
|
||||||
|
#define CW_DECODER_SPACE_DECODE_THRESH 2.0 // invoke character decode if no tone for this many element lengths
|
||||||
|
#define CW_DECODER_NOISE_FILTER 20 // ignore elements shorter than this (mS)
|
||||||
|
|
||||||
|
#define STRAIGHT_KEY_ACTIVE_STATE LOW
|
||||||
|
|
||||||
|
#ifdef FEATURE_DYNAMIC_DAH_TO_DIT_RATIO
|
||||||
|
#define DYNAMIC_DAH_TO_DIT_RATIO_LOWER_LIMIT_WPM 30
|
||||||
|
#define DYNAMIC_DAH_TO_DIT_RATIO_LOWER_LIMIT_RATIO 300 // 300 = 3:1 ratio
|
||||||
|
#define DYNAMIC_DAH_TO_DIT_RATIO_UPPER_LIMIT_WPM 70
|
||||||
|
#define DYNAMIC_DAH_TO_DIT_RATIO_UPPER_LIMIT_RATIO 240 // 240 = 2.4:1 ratio
|
||||||
|
#endif //FEATURE_DYNAMIC_DAH_TO_DIT_RATIO
|
||||||
|
|
||||||
|
#if defined(FEATURE_COMPETITION_COMPRESSION_DETECTION)
|
||||||
|
#define COMPETITION_COMPRESSION_DETECTION_ARRAY_SIZE 16
|
||||||
|
#define COMPETITION_COMPRESSION_DETECTION_TIME_INTERCHAR_LOWER_LIMIT 1
|
||||||
|
#define COMPETITION_COMPRESSION_DETECTION_TIME_INTERCHAR_UPPER_LIMIT 6.0
|
||||||
|
#define COMPETITION_COMPRESSION_DETECTION_AVERAGE_ALARM_THRESHOLD 3.0
|
||||||
|
#endif //FEATURE_COMPETITION_COMPRESSION_DETECTION
|
||||||
|
|
||||||
|
#if defined(FEATURE_SLEEP)
|
||||||
|
#define KEYER_AWAKE_PIN_AWAKE_STATE HIGH
|
||||||
|
#define KEYER_AWAKE_PIN_ASLEEP_STATE LOW
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_LCD_BACKLIGHT_AUTO_DIM)
|
||||||
|
#define keyer_power_led_awake_duty 255 // PWM duty cycle. 0 is 0%, 255 is 100%
|
||||||
|
#define keyer_power_led_asleep_duty 25 // 25 is quite dim. Use 0 for off
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_ETHERNET)
|
||||||
|
// #define FEATURE_ETHERNET_IP {192,168,1,178} // default IP address ("192.168.1.178")
|
||||||
|
// #define FEATURE_ETHERNET_MAC {0xDE,0xAD,0xBE,0xEF,0xFE,0xED}
|
||||||
|
#define FEATURE_ETHERNET_IP {192,168,1,179} // default IP address ("192.168.1.179")
|
||||||
|
#define FEATURE_ETHERNET_MAC {0xDE,0xAD,0xBE,0xEF,0xFE,0xEE}
|
||||||
|
#define FEATURE_ETHERNET_DNS {8,8,8,8}
|
||||||
|
|
||||||
|
#define FEATURE_ETHERNET_GATEWAY {192,168,1,1} // default gateway
|
||||||
|
#define FEATURE_ETHERNET_SUBNET_MASK {255,255,255,0} // default subnet mask
|
||||||
|
#define FEATURE_ETHERNET_WEB_LISTENER_PORT 80
|
||||||
|
#define FEATURE_UDP_SEND_BUFFER_SIZE 128
|
||||||
|
#define FEATURE_UDP_RECEIVE_BUFFER_SIZE 128
|
||||||
|
#endif //FEATURE_ETHERNET
|
||||||
|
|
||||||
|
#define WEB_SERVER_CONTROL_TX_KEY_TIME_LIMIT_SECS 10
|
||||||
|
|
||||||
|
#define FEATURE_INTERNET_LINK_MAX_LINKS 2
|
||||||
|
#define FEATURE_INTERNET_LINK_DEFAULT_RCV_UDP_PORT 8888
|
||||||
|
#define FEATURE_INTERNET_LINK_BUFFER_TIME_MS 500
|
||||||
|
|
||||||
|
#if defined(FEATURE_4x4_KEYPAD)|| defined (FEATURE_3x4_KEYPAD)
|
||||||
|
#define KEYPAD_ROWS 4 //KeyPad Rows
|
||||||
|
#if defined(FEATURE_4x4_KEYPAD)
|
||||||
|
#define KEYPAD_COLS 4 //keypad Columns
|
||||||
|
#else
|
||||||
|
#define KEYPAD_COLS 3
|
||||||
|
#endif
|
||||||
|
#define mem1 0 //Memory numbers for Keypad: Actual memory numbers start with "0"
|
||||||
|
#define mem2 1
|
||||||
|
#define mem3 2
|
||||||
|
#define mem4 3
|
||||||
|
#define mem5 4
|
||||||
|
#define mem6 5
|
||||||
|
#define mem7 6
|
||||||
|
#define mem8 7
|
||||||
|
#define mem9 8
|
||||||
|
#define mem10 9
|
||||||
|
#define mem11 10
|
||||||
|
#define mem12 11
|
||||||
|
#endif //#if defined(FEATURE_4x4_KEYPAD)|| defined (FEATURE_3x4_KEYPAD)
|
||||||
|
|
||||||
|
#define initial_sidetone_mode 1 // Sidetone mode, 0=OFF, 1=ON, 2=PADDLE_ONLY
|
||||||
|
|
||||||
|
#define sd_card_spi_ss_line 4
|
||||||
|
|
||||||
|
#if defined(OPTION_DFROBOT_LCD_COMMAND_BUTTONS)
|
||||||
|
|
||||||
|
// For V1.1 board use these values
|
||||||
|
#define dfrobot_btnRIGHT_analog 50
|
||||||
|
#define dfrobot_btnUP_analog 250
|
||||||
|
#define dfrobot_btnDOWN_analog 450
|
||||||
|
#define dfrobot_btnLEFT_analog 650
|
||||||
|
#define dfrobot_btnSELECT_analog 850
|
||||||
|
|
||||||
|
// For V1.0 board use these values
|
||||||
|
// #define dfrobot_btnRIGHT_analog 50
|
||||||
|
// #define dfrobot_btnUP_analog 195
|
||||||
|
// #define dfrobot_btnDOWN_analog 380
|
||||||
|
// #define dfrobot_btnLEFT_analog 555
|
||||||
|
// #define dfrobot_btnSELECT_analog 790
|
||||||
|
|
||||||
|
// button to memory mappings (0 = command button, 1 = memory 1, 2 = memory 2, etc.)
|
||||||
|
#define dfrobot_btnRIGHT 2
|
||||||
|
#define dfrobot_btnUP 1
|
||||||
|
#define dfrobot_btnDOWN 3
|
||||||
|
#define dfrobot_btnLEFT 4
|
||||||
|
#define dfrobot_btnSELECT 0
|
||||||
|
#define dfrobot_btnNONE 255 // do not change
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define sequencer_pins_active_state HIGH
|
||||||
|
#define sequencer_pins_inactive_state LOW
|
||||||
|
#define ptt_line_active_state HIGH
|
||||||
|
#define ptt_line_inactive_state LOW
|
||||||
|
#define tx_key_line_active_state HIGH
|
||||||
|
#define tx_key_line_inactive_state LOW
|
||||||
|
#define ptt_input_pin_active_state LOW
|
||||||
|
#define ptt_input_pin_inactive_state HIGH
|
||||||
|
#define tx_inhibit_pin_active_state LOW
|
||||||
|
#define tx_inhibit_pin_inactive_state HIGH
|
||||||
|
#define tx_pause_pin_active_state LOW
|
||||||
|
#define tx_pause_pin_inactive_state HIGH
|
||||||
|
#define sidetone_line_active_state HIGH
|
||||||
|
#define sidetone_line_inactive_state LOW
|
||||||
|
|
||||||
|
#if defined(ARDUINO_MAPLE_MINI)
|
||||||
|
#define button_value_factor 4095 //sp5iou contributed
|
||||||
|
#else
|
||||||
|
#define button_value_factor 1023
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define farnsworth_timing_calibration 1.15
|
||||||
|
|
||||||
|
#define sidetone_volume_low_limit 10
|
||||||
|
#define sidetone_volume_high_limit 500
|
||||||
|
|
||||||
|
#define custom_startup_field "your custom text here" // an example could be callsign and name, eg. "AB1XYZ Bob", (or "Worlds best operator" which requires a 20 column display), string length shouldo be no more than the number of columns on the display
|
||||||
|
|
||||||
|
#define command_mode_acknowledgement_character 'E'
|
||||||
|
#if defined(FEATURE_COMMAND_MODE_ENHANCED_CMD_ACKNOWLEDGEMENT)
|
||||||
|
#define command_a_iambic_a "A"
|
||||||
|
#define command_b_iambic_b "B"
|
||||||
|
#define command_c_single_paddle "SINGLE"
|
||||||
|
#define command_d_ultimatic "ULT"
|
||||||
|
#define command_h_weight_dit_dah_ratio_default "R"
|
||||||
|
#define command_i_tx_on "TX ON"
|
||||||
|
#define command_i_tx_off "TX OFF"
|
||||||
|
#define command_k_dit_dah_buffers_on "ON"
|
||||||
|
#define command_k_dit_dah_buffers_off "OFF"
|
||||||
|
#define command_n_paddle_reverse "REV"
|
||||||
|
#define command_n_paddle_normal "NORM"
|
||||||
|
#define command_o_sidetone_off "ST OFF"
|
||||||
|
#define command_o_sidetone_paddle_only "ST PD ONLY"
|
||||||
|
#define command_o_sidetone_on "ST ON"
|
||||||
|
#define command_t_tune_mode "TUNE"
|
||||||
|
#define command_v_potentiometer_on "POT ON"
|
||||||
|
#define command_v_potentiometer_off "POT OFF"
|
||||||
|
|
||||||
|
#define command_error "ERR"
|
||||||
|
|
||||||
|
#endif //FEATURE_COMMAND_MODE_ENHANCED_CMD_ACKNOWLEDGEMENT
|
329
k3ng_keyer/keyer_settings_maple_mini.h
Executable file
329
k3ng_keyer/keyer_settings_maple_mini.h
Executable file
|
@ -0,0 +1,329 @@
|
||||||
|
/*
|
||||||
|
|
||||||
|
# # ## ##### # ###### # # # # # #
|
||||||
|
## ## # # # # # # ## ## # ## # #
|
||||||
|
# ## # # # # # # ##### # ## # # # # # #
|
||||||
|
# # ###### ##### # # # # # # # # #
|
||||||
|
# # # # # # # # # # # ## #
|
||||||
|
# # # # # ###### ###### # # # # # #
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Initial and hardcoded settings
|
||||||
|
#define initial_speed_wpm 26 // "factory default" keyer speed setting
|
||||||
|
#define initial_command_mode_speed_wpm 20 // "factory default" command mode speed setting
|
||||||
|
#define initial_sidetone_freq 600 // "factory default" sidetone frequency setting
|
||||||
|
#define sidetone_hz_limit_low 299
|
||||||
|
#define sidetone_hz_limit_high 2001
|
||||||
|
#define hz_high_beep 1500 // frequency in hertz of high beep
|
||||||
|
#define hz_low_beep 400 // frequency in hertz of low beep
|
||||||
|
#define initial_dah_to_dit_ratio 300 // 300 = 3 / normal 3:1 ratio
|
||||||
|
#define initial_ptt_lead_time_tx1 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx1 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx2 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx2 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx3 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx3 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx4 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx4 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx5 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx5 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx6 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx6 10 // PTT tail time in mS
|
||||||
|
#define initial_qrss_dit_length 1 // QRSS dit length in seconds
|
||||||
|
#define initial_pot_wpm_low_value 13 // Potentiometer WPM fully CCW
|
||||||
|
#define initial_pot_wpm_high_value 35 // Potentiometer WPM fully CW
|
||||||
|
#define wpm_limit_low 5
|
||||||
|
#define wpm_limit_high 60
|
||||||
|
#define potentiometer_change_threshold 0.9 // don't change the keyer speed until pot wpm has changed more than this
|
||||||
|
#define send_buffer_size 150
|
||||||
|
#define default_length_letterspace 3
|
||||||
|
#define default_length_wordspace 7
|
||||||
|
#define default_keying_compensation 0 // number of milliseconds to extend all dits and dahs - for QSK on boatanchors
|
||||||
|
#define default_first_extension_time 0 // number of milliseconds to extend first sent dit or dah
|
||||||
|
#define default_pot_full_scale_reading 1023
|
||||||
|
#define default_weighting 50 // 50 = weighting factor of 1 (normal)
|
||||||
|
#define default_ptt_hang_time_wordspace_units 0.0
|
||||||
|
#define winkey_c0_wait_time 1 // the number of milliseconds to wait to send 0xc0 byte after send buffer has been sent
|
||||||
|
#define winkey_command_timeout_ms 5000
|
||||||
|
#define winkey_discard_bytes_startup 3 // this is used if OPTION_WINKEY_DISCARD_BYTES_AT_STARTUP is enabled above
|
||||||
|
#define winkey_xoff_threshold 20 // the number of chars in the buffer when we begin sending XOFFs
|
||||||
|
#define winkey_xon_threshold 10 // the number of chars in the buffer below which we deactivate XOFF
|
||||||
|
#define default_memory_repeat_time 3000 // time in milliseconds
|
||||||
|
#define LCD_COLUMNS 16
|
||||||
|
#define LCD_ROWS 2
|
||||||
|
#define lcd_i2c_address_mathertel_PCF8574 0x27 // I2C address of display for FEATURE_LCD_MATHERTEL_PCF8574
|
||||||
|
#define lcd_i2c_address_fdebrander_lcd 0x27 // I2C address of display for FEATURE_LCD_I2C_FDEBRABANDER
|
||||||
|
#define lcd_i2c_address_ydv1_lcd 0x27 // I2C address of display for FEATURE_LCD_YDv1
|
||||||
|
//#define lcd_i2c_address_ydv1_lcd 0x38 // I2C address of display for FEATURE_LCD_YDv1
|
||||||
|
#define lcd_i2c_address_sainsmart_lcd 0x27 // I2C address of display for FEATURE_LCD_SAINSMART_I2C
|
||||||
|
#define hell_pixel_microseconds 4025
|
||||||
|
#define program_memory_limit_consec_spaces 1
|
||||||
|
#define serial_leading_zeros 1 // set to 1 to activate leading zeros in serial numbers (i.e. #1 = 001)
|
||||||
|
#define serial_cut_numbers 0 // set to 1 to activate cut numbers in serial numbers (i.e. #10 = 1T, #19 = 1N)
|
||||||
|
#define go_to_sleep_inactivity_time 10 // minutes - FEATURE_SLEEP
|
||||||
|
#define dim_backlight_inactive_time 5 // minutes - FEATURE_LCD_BACKLIGHT_AUTO_DIM
|
||||||
|
#define default_cmos_super_keyer_iambic_b_timing_percent 33 // use with FEATURE_CMOS_SUPER_KEYER_IAMBIC_B_TIMING; should be between 0 to 99 % (0% = true iambic b;100% = iambic a behavior)
|
||||||
|
#define default_cw_echo_timing_factor 1.75 // "factory default" setting
|
||||||
|
#define default_autospace_timing_factor 2.0 // "factory default" setting
|
||||||
|
#define winkey_paddle_echo_buffer_decode_timing_factor 0.25
|
||||||
|
#define potentiometer_always_on 0
|
||||||
|
#define ptt_interlock_check_every_ms 100
|
||||||
|
#define ptt_interlock_active_state HIGH
|
||||||
|
#define unknown_cw_character '*'
|
||||||
|
#define cli_paddle_echo_on_at_boot 1
|
||||||
|
#define cli_straight_key_echo_on_at_boot 1
|
||||||
|
#define tx_key_dit_and_dah_pins_active_state HIGH
|
||||||
|
#define tx_key_dit_and_dah_pins_inactive_state LOW
|
||||||
|
#define potentiometer_check_interval_ms 150
|
||||||
|
#define potentiometer_reading_threshold 1
|
||||||
|
#define default_paddle_interruption_quiet_time_element_lengths 0
|
||||||
|
#define default_wordsworth_wordspace 6
|
||||||
|
#define default_wordsworth_repetition 1
|
||||||
|
#define serial_program_memory_buffer_size 500
|
||||||
|
#define eeprom_write_time_ms 30000
|
||||||
|
|
||||||
|
#ifdef FEATURE_BUTTONS
|
||||||
|
#define analog_buttons_number_of_buttons 4 // includes the command button (command button + 3 memory buttons = 4)
|
||||||
|
#define analog_buttons_r1 10
|
||||||
|
#define analog_buttons_r2 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#if defined(FEATURE_BUTTONS) && !defined(FEATURE_PS2_KEYBOARD) && !defined(FEATURE_USB_KEYBOARD) && !defined(FEATURE_COMMAND_LINE_INTERFACE) && !defined(FEATURE_WINKEY_EMULATION)
|
||||||
|
#define number_of_memories byte(analog_buttons_number_of_buttons-1)
|
||||||
|
#else
|
||||||
|
#define number_of_memories byte(12)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef FEATURE_CAPACITIVE_PADDLE_PINS
|
||||||
|
#define capacitance_threshold 2
|
||||||
|
#endif //FEATURE_CAPACITIVE_PADDLE_PINS
|
||||||
|
|
||||||
|
#ifdef FEATURE_LED_RING
|
||||||
|
#define led_ring_low_limit 10
|
||||||
|
#define led_ring_high_limit 50
|
||||||
|
#endif //FEATURE_LED_RING
|
||||||
|
|
||||||
|
#ifdef FEATURE_QLF
|
||||||
|
#define qlf_dit_max 125
|
||||||
|
#define qlf_dit_min 75
|
||||||
|
#define qlf_dah_max 200
|
||||||
|
#define qlf_dah_min 100
|
||||||
|
#define qlf_on_by_default 0
|
||||||
|
#endif //FEATURE_QLF
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef FEATURE_WINKEY_EMULATION
|
||||||
|
#ifdef OPTION_WINKEY_UCXLOG_9600_BAUD
|
||||||
|
#define WINKEY_DEFAULT_BAUD 9600
|
||||||
|
#else
|
||||||
|
#define WINKEY_DEFAULT_BAUD 1200
|
||||||
|
#endif //OPTION_WINKEY_UCXLOG_9600_BAUD
|
||||||
|
// alter these below to map alternate sidetones for Winkey interface protocol emulation
|
||||||
|
#ifdef OPTION_WINKEY_2_SUPPORT
|
||||||
|
#define WINKEY_SIDETONE_1 3759
|
||||||
|
#define WINKEY_SIDETONE_2 1879
|
||||||
|
#define WINKEY_SIDETONE_3 1252
|
||||||
|
#define WINKEY_SIDETONE_4 940
|
||||||
|
#define WINKEY_SIDETONE_5 752
|
||||||
|
#define WINKEY_SIDETONE_6 625
|
||||||
|
#define WINKEY_SIDETONE_7 535
|
||||||
|
#define WINKEY_SIDETONE_8 469
|
||||||
|
#define WINKEY_SIDETONE_9 417
|
||||||
|
#define WINKEY_SIDETONE_10 375
|
||||||
|
#else //OPTION_WINKEY_2_SUPPORT
|
||||||
|
#define WINKEY_SIDETONE_1 4000
|
||||||
|
#define WINKEY_SIDETONE_2 2000
|
||||||
|
#define WINKEY_SIDETONE_3 1333
|
||||||
|
#define WINKEY_SIDETONE_4 1000
|
||||||
|
#define WINKEY_SIDETONE_5 800
|
||||||
|
#define WINKEY_SIDETONE_6 666
|
||||||
|
#define WINKEY_SIDETONE_7 571
|
||||||
|
#define WINKEY_SIDETONE_8 500
|
||||||
|
#define WINKEY_SIDETONE_9 444
|
||||||
|
#define WINKEY_SIDETONE_10 400
|
||||||
|
#endif //OPTION_WINKEY_2_SUPPORT
|
||||||
|
|
||||||
|
#define WINKEY_1_REPORT_VERSION_NUMBER 10
|
||||||
|
#define WINKEY_2_REPORT_VERSION_NUMBER 23
|
||||||
|
|
||||||
|
// alter these to map to alternate hang time wordspace units
|
||||||
|
#define WINKEY_HANG_TIME_1_0 1.0
|
||||||
|
#define WINKEY_HANG_TIME_1_33 1.33
|
||||||
|
#define WINKEY_HANG_TIME_1_66 1.66
|
||||||
|
#define WINKEY_HANG_TIME_2_0 2.0
|
||||||
|
|
||||||
|
#define WINKEY_RETURN_THIS_FOR_ADMIN_GET_CAL 0x16
|
||||||
|
#define WINKEY_RETURN_THIS_FOR_ADMIN_PADDLE_A2D 0xEE
|
||||||
|
#define WINKEY_RETURN_THIS_FOR_ADMIN_SPEED_A2D 0x00
|
||||||
|
|
||||||
|
#endif //FEATURE_WINKEY_EMULATION
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#define PRIMARY_SERIAL_PORT &Serial
|
||||||
|
#define PRIMARY_SERIAL_PORT_BAUD 115200 // This applies only when the port is in Command Line Interface mode. In Winkey mode it will default to 1200.
|
||||||
|
|
||||||
|
#ifdef FEATURE_COMMAND_LINE_INTERFACE_ON_SECONDARY_PORT
|
||||||
|
#define SECONDARY_SERIAL_PORT &Serial1
|
||||||
|
#define SECONDARY_SERIAL_PORT_BAUD 115200
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#define CW_DECODER_SCREEN_COLUMNS 120 // word wrap at this many columns
|
||||||
|
#define CW_DECODER_SPACE_PRINT_THRESH 4.5 // print space if no tone for this many element lengths
|
||||||
|
#define CW_DECODER_SPACE_DECODE_THRESH 2.0 // invoke character decode if no tone for this many element lengths
|
||||||
|
#define CW_DECODER_NOISE_FILTER 20 // ignore elements shorter than this (mS)
|
||||||
|
|
||||||
|
#define STRAIGHT_KEY_ACTIVE_STATE LOW
|
||||||
|
|
||||||
|
#ifdef FEATURE_DYNAMIC_DAH_TO_DIT_RATIO
|
||||||
|
#define DYNAMIC_DAH_TO_DIT_RATIO_LOWER_LIMIT_WPM 30
|
||||||
|
#define DYNAMIC_DAH_TO_DIT_RATIO_LOWER_LIMIT_RATIO 300 // 300 = 3:1 ratio
|
||||||
|
#define DYNAMIC_DAH_TO_DIT_RATIO_UPPER_LIMIT_WPM 70
|
||||||
|
#define DYNAMIC_DAH_TO_DIT_RATIO_UPPER_LIMIT_RATIO 240 // 240 = 2.4:1 ratio
|
||||||
|
#endif //FEATURE_DYNAMIC_DAH_TO_DIT_RATIO
|
||||||
|
|
||||||
|
#if defined(FEATURE_COMPETITION_COMPRESSION_DETECTION)
|
||||||
|
#define COMPETITION_COMPRESSION_DETECTION_ARRAY_SIZE 16
|
||||||
|
#define COMPETITION_COMPRESSION_DETECTION_TIME_INTERCHAR_LOWER_LIMIT 1
|
||||||
|
#define COMPETITION_COMPRESSION_DETECTION_TIME_INTERCHAR_UPPER_LIMIT 6.0
|
||||||
|
#define COMPETITION_COMPRESSION_DETECTION_AVERAGE_ALARM_THRESHOLD 3.0
|
||||||
|
#endif //FEATURE_COMPETITION_COMPRESSION_DETECTION
|
||||||
|
|
||||||
|
#if defined(FEATURE_SLEEP)
|
||||||
|
#define KEYER_AWAKE_PIN_AWAKE_STATE HIGH
|
||||||
|
#define KEYER_AWAKE_PIN_ASLEEP_STATE LOW
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_LCD_BACKLIGHT_AUTO_DIM)
|
||||||
|
#define keyer_power_led_awake_duty 255 // PWM duty cycle. 0 is 0%, 255 is 100%
|
||||||
|
#define keyer_power_led_asleep_duty 25 // 25 is quite dim. Use 0 for off
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_ETHERNET)
|
||||||
|
// #define FEATURE_ETHERNET_IP {192,168,1,178} // default IP address ("192.168.1.178")
|
||||||
|
// #define FEATURE_ETHERNET_MAC {0xDE,0xAD,0xBE,0xEF,0xFE,0xED}
|
||||||
|
#define FEATURE_ETHERNET_IP {192,168,1,179} // default IP address ("192.168.1.179")
|
||||||
|
#define FEATURE_ETHERNET_MAC {0xDE,0xAD,0xBE,0xEF,0xFE,0xEE}
|
||||||
|
#define FEATURE_ETHERNET_DNS {8,8,8,8}
|
||||||
|
|
||||||
|
#define FEATURE_ETHERNET_GATEWAY {192,168,1,1} // default gateway
|
||||||
|
#define FEATURE_ETHERNET_SUBNET_MASK {255,255,255,0} // default subnet mask
|
||||||
|
#define FEATURE_ETHERNET_WEB_LISTENER_PORT 80
|
||||||
|
#define FEATURE_UDP_SEND_BUFFER_SIZE 128
|
||||||
|
#define FEATURE_UDP_RECEIVE_BUFFER_SIZE 128
|
||||||
|
#endif //FEATURE_ETHERNET
|
||||||
|
|
||||||
|
#define WEB_SERVER_CONTROL_TX_KEY_TIME_LIMIT_SECS 10
|
||||||
|
|
||||||
|
#define FEATURE_INTERNET_LINK_MAX_LINKS 2
|
||||||
|
#define FEATURE_INTERNET_LINK_DEFAULT_RCV_UDP_PORT 8888
|
||||||
|
#define FEATURE_INTERNET_LINK_BUFFER_TIME_MS 500
|
||||||
|
|
||||||
|
#if defined(FEATURE_4x4_KEYPAD)|| defined (FEATURE_3x4_KEYPAD)
|
||||||
|
#define KEYPAD_ROWS 4 //KeyPad Rows
|
||||||
|
#if defined(FEATURE_4x4_KEYPAD)
|
||||||
|
#define KEYPAD_COLS 4 //keypad Columns
|
||||||
|
#else
|
||||||
|
#define KEYPAD_COLS 3
|
||||||
|
#endif
|
||||||
|
#define mem1 0 //Memory numbers for Keypad: Actual memory numbers start with "0"
|
||||||
|
#define mem2 1
|
||||||
|
#define mem3 2
|
||||||
|
#define mem4 3
|
||||||
|
#define mem5 4
|
||||||
|
#define mem6 5
|
||||||
|
#define mem7 6
|
||||||
|
#define mem8 7
|
||||||
|
#define mem9 8
|
||||||
|
#define mem10 9
|
||||||
|
#define mem11 10
|
||||||
|
#define mem12 11
|
||||||
|
#endif //#if defined(FEATURE_4x4_KEYPAD)|| defined (FEATURE_3x4_KEYPAD)
|
||||||
|
|
||||||
|
#define initial_sidetone_mode 1 // Sidetone mode, 0=OFF, 1=ON, 2=PADDLE_ONLY
|
||||||
|
|
||||||
|
#define sd_card_spi_ss_line 4
|
||||||
|
|
||||||
|
#if defined(OPTION_DFROBOT_LCD_COMMAND_BUTTONS)
|
||||||
|
|
||||||
|
// For V1.1 board use these values
|
||||||
|
#define dfrobot_btnRIGHT_analog 50
|
||||||
|
#define dfrobot_btnUP_analog 250
|
||||||
|
#define dfrobot_btnDOWN_analog 450
|
||||||
|
#define dfrobot_btnLEFT_analog 650
|
||||||
|
#define dfrobot_btnSELECT_analog 850
|
||||||
|
|
||||||
|
// For V1.0 board use these values
|
||||||
|
// #define dfrobot_btnRIGHT_analog 50
|
||||||
|
// #define dfrobot_btnUP_analog 195
|
||||||
|
// #define dfrobot_btnDOWN_analog 380
|
||||||
|
// #define dfrobot_btnLEFT_analog 555
|
||||||
|
// #define dfrobot_btnSELECT_analog 790
|
||||||
|
|
||||||
|
// button to memory mappings (0 = command button, 1 = memory 1, 2 = memory 2, etc.)
|
||||||
|
#define dfrobot_btnRIGHT 2
|
||||||
|
#define dfrobot_btnUP 1
|
||||||
|
#define dfrobot_btnDOWN 3
|
||||||
|
#define dfrobot_btnLEFT 4
|
||||||
|
#define dfrobot_btnSELECT 0
|
||||||
|
#define dfrobot_btnNONE 255 // do not change
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define sequencer_pins_active_state HIGH
|
||||||
|
#define sequencer_pins_inactive_state LOW
|
||||||
|
#define ptt_line_active_state HIGH
|
||||||
|
#define ptt_line_inactive_state LOW
|
||||||
|
#define tx_key_line_active_state HIGH
|
||||||
|
#define tx_key_line_inactive_state LOW
|
||||||
|
#define ptt_input_pin_active_state LOW
|
||||||
|
#define ptt_input_pin_inactive_state HIGH
|
||||||
|
#define tx_inhibit_pin_active_state LOW
|
||||||
|
#define tx_inhibit_pin_inactive_state HIGH
|
||||||
|
#define tx_pause_pin_active_state LOW
|
||||||
|
#define tx_pause_pin_inactive_state HIGH
|
||||||
|
#define sidetone_line_active_state HIGH
|
||||||
|
#define sidetone_line_inactive_state LOW
|
||||||
|
|
||||||
|
#if defined(ARDUINO_MAPLE_MINI)
|
||||||
|
#define button_value_factor 4095 //sp5iou contributed
|
||||||
|
#else
|
||||||
|
#define button_value_factor 1023
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define farnsworth_timing_calibration 1.15
|
||||||
|
|
||||||
|
#define sidetone_volume_low_limit 10
|
||||||
|
#define sidetone_volume_high_limit 500
|
||||||
|
|
||||||
|
#define custom_startup_field "your custom text here" // an example could be callsign and name, eg. "AB1XYZ Bob", (or "Worlds best operator" which requires a 20 column display), string length shouldo be no more than the number of columns on the display
|
||||||
|
|
||||||
|
#define command_mode_acknowledgement_character 'E'
|
||||||
|
|
||||||
|
#if defined(FEATURE_COMMAND_MODE_ENHANCED_CMD_ACKNOWLEDGEMENT)
|
||||||
|
#define command_a_iambic_a "A"
|
||||||
|
#define command_b_iambic_b "B"
|
||||||
|
#define command_c_single_paddle "SINGLE"
|
||||||
|
#define command_d_ultimatic "ULT"
|
||||||
|
#define command_h_weight_dit_dah_ratio_default "R"
|
||||||
|
#define command_i_tx_on "TX ON"
|
||||||
|
#define command_i_tx_off "TX OFF"
|
||||||
|
#define command_k_dit_dah_buffers_on "ON"
|
||||||
|
#define command_k_dit_dah_buffers_off "OFF"
|
||||||
|
#define command_n_paddle_reverse "REV"
|
||||||
|
#define command_n_paddle_normal "NORM"
|
||||||
|
#define command_o_sidetone_off "ST OFF"
|
||||||
|
#define command_o_sidetone_paddle_only "ST PD ONLY"
|
||||||
|
#define command_o_sidetone_on "ST ON"
|
||||||
|
#define command_t_tune_mode "TUNE"
|
||||||
|
#define command_v_potentiometer_on "POT ON"
|
||||||
|
#define command_v_potentiometer_off "POT OFF"
|
||||||
|
|
||||||
|
#define command_error "ERR"
|
||||||
|
|
||||||
|
#endif //FEATURE_COMMAND_MODE_ENHANCED_CMD_ACKNOWLEDGEMENT
|
321
k3ng_keyer/keyer_settings_megakeyer.h
Executable file
321
k3ng_keyer/keyer_settings_megakeyer.h
Executable file
|
@ -0,0 +1,321 @@
|
||||||
|
//
|
||||||
|
// Initial setting for W6IPA megakeyer v1.1 (CC) BY-NC-SA
|
||||||
|
// Project files are available here https://github.com/w6ipa/megakeyer
|
||||||
|
//
|
||||||
|
#define initial_speed_wpm 20 // "factory default" keyer speed setting
|
||||||
|
#define initial_command_mode_speed_wpm 20 // "factory default" command mode speed setting
|
||||||
|
#define initial_sidetone_freq 600 // "factory default" sidetone frequency setting
|
||||||
|
#define sidetone_hz_limit_low 299
|
||||||
|
#define sidetone_hz_limit_high 2001
|
||||||
|
#define sidetone_hz_limit_low 299
|
||||||
|
#define sidetone_hz_limit_high 2001
|
||||||
|
#define hz_high_beep 1500 // frequency in hertz of high beep
|
||||||
|
#define hz_low_beep 400 // frequency in hertz of low beep
|
||||||
|
#define initial_dah_to_dit_ratio 300 // 300 = 3 / normal 3:1 ratio
|
||||||
|
#define initial_ptt_lead_time_tx1 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx1 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx2 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx2 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx3 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx3 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx4 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx4 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx5 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx5 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx6 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx6 10 // PTT tail time in mS
|
||||||
|
#define initial_qrss_dit_length 1 // QRSS dit length in seconds
|
||||||
|
#define initial_pot_wpm_low_value 13 // Potentiometer WPM fully CCW
|
||||||
|
#define initial_pot_wpm_high_value 35 // Potentiometer WPM fully CW
|
||||||
|
#define wpm_limit_low 5
|
||||||
|
#define wpm_limit_high 60
|
||||||
|
#define potentiometer_change_threshold 0.9 // don't change the keyer speed until pot wpm has changed more than this
|
||||||
|
#define send_buffer_size 150
|
||||||
|
#define default_length_letterspace 3
|
||||||
|
#define default_length_wordspace 7
|
||||||
|
#define default_keying_compensation 0 // number of milliseconds to extend all dits and dahs - for QSK on boatanchors
|
||||||
|
#define default_first_extension_time 0 // number of milliseconds to extend first sent dit or dah
|
||||||
|
#define default_pot_full_scale_reading 1023
|
||||||
|
#define default_weighting 50 // 50 = weighting factor of 1 (normal)
|
||||||
|
#define default_ptt_hang_time_wordspace_units 0.0
|
||||||
|
#define winkey_c0_wait_time 1 // the number of milliseconds to wait to send 0xc0 byte after send buffer has been sent
|
||||||
|
#define winkey_command_timeout_ms 5000
|
||||||
|
#define winkey_discard_bytes_startup 3 // this is used if OPTION_WINKEY_DISCARD_BYTES_AT_STARTUP is enabled above
|
||||||
|
#define winkey_xoff_threshold 20 // the number of chars in the buffer when we begin sending XOFFs
|
||||||
|
#define winkey_xon_threshold 10 // the number of chars in the buffer below which we deactivate XOFF
|
||||||
|
#define default_memory_repeat_time 3000 // time in milliseconds
|
||||||
|
#define LCD_COLUMNS 16
|
||||||
|
#define LCD_ROWS 2
|
||||||
|
#define lcd_i2c_address_mathertel_PCF8574 0x27 // I2C address of display for FEATURE_LCD_MATHERTEL_PCF8574
|
||||||
|
#define lcd_i2c_address_fdebrander_lcd 0x27 // I2C address of display for FEATURE_LCD_I2C_FDEBRABANDER
|
||||||
|
#define lcd_i2c_address_ydv1_lcd 0x27 // I2C address of display for FEATURE_LCD_YDv1
|
||||||
|
//#define lcd_i2c_address_ydv1_lcd 0x38 // I2C address of display for FEATURE_LCD_YDv1
|
||||||
|
#define lcd_i2c_address_sainsmart_lcd 0x27 // I2C address of display for FEATURE_LCD_SAINSMART_I2C
|
||||||
|
#define hell_pixel_microseconds 4025
|
||||||
|
#define program_memory_limit_consec_spaces 1
|
||||||
|
#define serial_leading_zeros 1 // set to 1 to activate leading zeros in serial numbers (i.e. #1 = 001)
|
||||||
|
#define serial_cut_numbers 0 // set to 1 to activate cut numbers in serial numbers (i.e. #10 = 1T, #19 = 1N)
|
||||||
|
#define go_to_sleep_inactivity_time 10 // minutes - FEATURE_SLEEP
|
||||||
|
#define dim_backlight_inactive_time 5 // minutes - FEATURE_LCD_BACKLIGHT_AUTO_DIM
|
||||||
|
#define default_cmos_super_keyer_iambic_b_timing_percent 33 // use with FEATURE_CMOS_SUPER_KEYER_IAMBIC_B_TIMING; should be between 0 to 99 % (0% = true iambic b;100% = iambic a behavior)
|
||||||
|
#define default_cw_echo_timing_factor 1.75 // "factory default" setting
|
||||||
|
#define default_autospace_timing_factor 2.0 // "factory default" setting
|
||||||
|
#define winkey_paddle_echo_buffer_decode_timing_factor 0.25
|
||||||
|
#define potentiometer_always_on 0
|
||||||
|
#define ptt_interlock_check_every_ms 100
|
||||||
|
#define ptt_interlock_active_state HIGH
|
||||||
|
#define unknown_cw_character '*'
|
||||||
|
#define cli_paddle_echo_on_at_boot 1
|
||||||
|
#define cli_straight_key_echo_on_at_boot 1
|
||||||
|
#define tx_key_dit_and_dah_pins_active_state HIGH
|
||||||
|
#define tx_key_dit_and_dah_pins_inactive_state LOW
|
||||||
|
#define potentiometer_check_interval_ms 150
|
||||||
|
#define potentiometer_reading_threshold 1
|
||||||
|
#define default_paddle_interruption_quiet_time_element_lengths 0
|
||||||
|
#define default_wordsworth_wordspace 6
|
||||||
|
#define default_wordsworth_repetition 1
|
||||||
|
#define serial_program_memory_buffer_size 500
|
||||||
|
#define eeprom_write_time_ms 30000
|
||||||
|
|
||||||
|
#ifdef FEATURE_BUTTONS
|
||||||
|
#define analog_buttons_number_of_buttons 4 // includes the command button (command button + 3 memory buttons = 4)
|
||||||
|
#define analog_buttons_r1 10
|
||||||
|
#define analog_buttons_r2 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#if defined(FEATURE_BUTTONS) && !defined(FEATURE_PS2_KEYBOARD) && !defined(FEATURE_USB_KEYBOARD) && !defined(FEATURE_COMMAND_LINE_INTERFACE) && !defined(FEATURE_WINKEY_EMULATION)
|
||||||
|
#define number_of_memories byte(analog_buttons_number_of_buttons-1)
|
||||||
|
#else
|
||||||
|
#define number_of_memories byte(12)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef FEATURE_CAPACITIVE_PADDLE_PINS
|
||||||
|
#define capacitance_threshold 2
|
||||||
|
#endif //FEATURE_CAPACITIVE_PADDLE_PINS
|
||||||
|
|
||||||
|
#ifdef FEATURE_LED_RING
|
||||||
|
#define led_ring_low_limit 10
|
||||||
|
#define led_ring_high_limit 50
|
||||||
|
#endif //FEATURE_LED_RING
|
||||||
|
|
||||||
|
#ifdef FEATURE_QLF
|
||||||
|
#define qlf_dit_max 125
|
||||||
|
#define qlf_dit_min 75
|
||||||
|
#define qlf_dah_max 200
|
||||||
|
#define qlf_dah_min 100
|
||||||
|
#define qlf_on_by_default 0
|
||||||
|
#endif //FEATURE_QLF
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef FEATURE_WINKEY_EMULATION
|
||||||
|
#ifdef OPTION_WINKEY_UCXLOG_9600_BAUD
|
||||||
|
#define WINKEY_DEFAULT_BAUD 9600
|
||||||
|
#else
|
||||||
|
#define WINKEY_DEFAULT_BAUD 1200
|
||||||
|
#endif //OPTION_WINKEY_UCXLOG_9600_BAUD
|
||||||
|
// alter these below to map alternate sidetones for Winkey interface protocol emulation
|
||||||
|
#ifdef OPTION_WINKEY_2_SUPPORT
|
||||||
|
#define WINKEY_SIDETONE_1 3759
|
||||||
|
#define WINKEY_SIDETONE_2 1879
|
||||||
|
#define WINKEY_SIDETONE_3 1252
|
||||||
|
#define WINKEY_SIDETONE_4 940
|
||||||
|
#define WINKEY_SIDETONE_5 752
|
||||||
|
#define WINKEY_SIDETONE_6 625
|
||||||
|
#define WINKEY_SIDETONE_7 535
|
||||||
|
#define WINKEY_SIDETONE_8 469
|
||||||
|
#define WINKEY_SIDETONE_9 417
|
||||||
|
#define WINKEY_SIDETONE_10 375
|
||||||
|
#else //OPTION_WINKEY_2_SUPPORT
|
||||||
|
#define WINKEY_SIDETONE_1 4000
|
||||||
|
#define WINKEY_SIDETONE_2 2000
|
||||||
|
#define WINKEY_SIDETONE_3 1333
|
||||||
|
#define WINKEY_SIDETONE_4 1000
|
||||||
|
#define WINKEY_SIDETONE_5 800
|
||||||
|
#define WINKEY_SIDETONE_6 666
|
||||||
|
#define WINKEY_SIDETONE_7 571
|
||||||
|
#define WINKEY_SIDETONE_8 500
|
||||||
|
#define WINKEY_SIDETONE_9 444
|
||||||
|
#define WINKEY_SIDETONE_10 400
|
||||||
|
#endif //OPTION_WINKEY_2_SUPPORT
|
||||||
|
|
||||||
|
#define WINKEY_1_REPORT_VERSION_NUMBER 10
|
||||||
|
#define WINKEY_2_REPORT_VERSION_NUMBER 23
|
||||||
|
|
||||||
|
// alter these to map to alternate hang time wordspace units
|
||||||
|
#define WINKEY_HANG_TIME_1_0 1.0
|
||||||
|
#define WINKEY_HANG_TIME_1_33 1.33
|
||||||
|
#define WINKEY_HANG_TIME_1_66 1.66
|
||||||
|
#define WINKEY_HANG_TIME_2_0 2.0
|
||||||
|
|
||||||
|
#define WINKEY_RETURN_THIS_FOR_ADMIN_GET_CAL 0x16
|
||||||
|
#define WINKEY_RETURN_THIS_FOR_ADMIN_PADDLE_A2D 0xEE
|
||||||
|
#define WINKEY_RETURN_THIS_FOR_ADMIN_SPEED_A2D 0x00
|
||||||
|
|
||||||
|
#endif //FEATURE_WINKEY_EMULATION
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#define PRIMARY_SERIAL_PORT &Serial
|
||||||
|
#define PRIMARY_SERIAL_PORT_BAUD 115200 // This applies only when the port is in Command Line Interface mode. In Winkey mode it will default to 1200.
|
||||||
|
|
||||||
|
#ifdef FEATURE_COMMAND_LINE_INTERFACE_ON_SECONDARY_PORT
|
||||||
|
#define SECONDARY_SERIAL_PORT &Serial1
|
||||||
|
#define SECONDARY_SERIAL_PORT_BAUD 115200
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#define CW_DECODER_SCREEN_COLUMNS 120 // word wrap at this many columns
|
||||||
|
#define CW_DECODER_SPACE_PRINT_THRESH 4.5 // print space if no tone for this many element lengths
|
||||||
|
#define CW_DECODER_SPACE_DECODE_THRESH 2.0 // invoke character decode if no tone for this many element lengths
|
||||||
|
#define CW_DECODER_NOISE_FILTER 20 // ignore elements shorter than this (mS)
|
||||||
|
|
||||||
|
#define STRAIGHT_KEY_ACTIVE_STATE LOW
|
||||||
|
|
||||||
|
#ifdef FEATURE_DYNAMIC_DAH_TO_DIT_RATIO
|
||||||
|
#define DYNAMIC_DAH_TO_DIT_RATIO_LOWER_LIMIT_WPM 30
|
||||||
|
#define DYNAMIC_DAH_TO_DIT_RATIO_LOWER_LIMIT_RATIO 300 // 300 = 3:1 ratio
|
||||||
|
#define DYNAMIC_DAH_TO_DIT_RATIO_UPPER_LIMIT_WPM 70
|
||||||
|
#define DYNAMIC_DAH_TO_DIT_RATIO_UPPER_LIMIT_RATIO 240 // 240 = 2.4:1 ratio
|
||||||
|
#endif //FEATURE_DYNAMIC_DAH_TO_DIT_RATIO
|
||||||
|
|
||||||
|
#if defined(FEATURE_COMPETITION_COMPRESSION_DETECTION)
|
||||||
|
#define COMPETITION_COMPRESSION_DETECTION_ARRAY_SIZE 16
|
||||||
|
#define COMPETITION_COMPRESSION_DETECTION_TIME_INTERCHAR_LOWER_LIMIT 1
|
||||||
|
#define COMPETITION_COMPRESSION_DETECTION_TIME_INTERCHAR_UPPER_LIMIT 6.0
|
||||||
|
#define COMPETITION_COMPRESSION_DETECTION_AVERAGE_ALARM_THRESHOLD 3.0
|
||||||
|
#endif //FEATURE_COMPETITION_COMPRESSION_DETECTION
|
||||||
|
|
||||||
|
#if defined(FEATURE_SLEEP)
|
||||||
|
#define KEYER_AWAKE_PIN_AWAKE_STATE HIGH
|
||||||
|
#define KEYER_AWAKE_PIN_ASLEEP_STATE LOW
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_LCD_BACKLIGHT_AUTO_DIM)
|
||||||
|
#define keyer_power_led_awake_duty 255 // PWM duty cycle. 0 is 0%, 255 is 100%
|
||||||
|
#define keyer_power_led_asleep_duty 25 // 25 is quite dim. Use 0 for off
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_ETHERNET)
|
||||||
|
// #define FEATURE_ETHERNET_IP {192,168,1,178} // default IP address ("192.168.1.178")
|
||||||
|
// #define FEATURE_ETHERNET_MAC {0xDE,0xAD,0xBE,0xEF,0xFE,0xED}
|
||||||
|
#define FEATURE_ETHERNET_IP {192,168,1,179} // default IP address ("192.168.1.179")
|
||||||
|
#define FEATURE_ETHERNET_MAC {0xDE,0xAD,0xBE,0xEF,0xFE,0xEE}
|
||||||
|
#define FEATURE_ETHERNET_DNS {8,8,8,8}
|
||||||
|
|
||||||
|
#define FEATURE_ETHERNET_GATEWAY {192,168,1,1} // default gateway
|
||||||
|
#define FEATURE_ETHERNET_SUBNET_MASK {255,255,255,0} // default subnet mask
|
||||||
|
#define FEATURE_ETHERNET_WEB_LISTENER_PORT 80
|
||||||
|
#define FEATURE_UDP_SEND_BUFFER_SIZE 128
|
||||||
|
#define FEATURE_UDP_RECEIVE_BUFFER_SIZE 128
|
||||||
|
#endif //FEATURE_ETHERNET
|
||||||
|
|
||||||
|
#define WEB_SERVER_CONTROL_TX_KEY_TIME_LIMIT_SECS 10
|
||||||
|
|
||||||
|
#define FEATURE_INTERNET_LINK_MAX_LINKS 2
|
||||||
|
#define FEATURE_INTERNET_LINK_DEFAULT_RCV_UDP_PORT 8888
|
||||||
|
#define FEATURE_INTERNET_LINK_BUFFER_TIME_MS 500
|
||||||
|
|
||||||
|
#if defined(FEATURE_4x4_KEYPAD)|| defined (FEATURE_3x4_KEYPAD)
|
||||||
|
#define KEYPAD_ROWS 4 //KeyPad Rows
|
||||||
|
#if defined(FEATURE_4x4_KEYPAD)
|
||||||
|
#define KEYPAD_COLS 4 //keypad Columns
|
||||||
|
#else
|
||||||
|
#define KEYPAD_COLS 3
|
||||||
|
#endif
|
||||||
|
#define mem1 0 //Memory numbers for Keypad: Actual memory numbers start with "0"
|
||||||
|
#define mem2 1
|
||||||
|
#define mem3 2
|
||||||
|
#define mem4 3
|
||||||
|
#define mem5 4
|
||||||
|
#define mem6 5
|
||||||
|
#define mem7 6
|
||||||
|
#define mem8 7
|
||||||
|
#define mem9 8
|
||||||
|
#define mem10 9
|
||||||
|
#define mem11 10
|
||||||
|
#define mem12 11
|
||||||
|
#endif //#if defined(FEATURE_4x4_KEYPAD)|| defined (FEATURE_3x4_KEYPAD)
|
||||||
|
|
||||||
|
#define initial_sidetone_mode 1 // Sidetone mode, 0=OFF, 1=ON, 2=PADDLE_ONLY
|
||||||
|
|
||||||
|
#define sd_card_spi_ss_line 4
|
||||||
|
|
||||||
|
#if defined(OPTION_DFROBOT_LCD_COMMAND_BUTTONS)
|
||||||
|
|
||||||
|
// For V1.1 board use these values
|
||||||
|
#define dfrobot_btnRIGHT_analog 50
|
||||||
|
#define dfrobot_btnUP_analog 250
|
||||||
|
#define dfrobot_btnDOWN_analog 450
|
||||||
|
#define dfrobot_btnLEFT_analog 650
|
||||||
|
#define dfrobot_btnSELECT_analog 850
|
||||||
|
|
||||||
|
// For V1.0 board use these values
|
||||||
|
// #define dfrobot_btnRIGHT_analog 50
|
||||||
|
// #define dfrobot_btnUP_analog 195
|
||||||
|
// #define dfrobot_btnDOWN_analog 380
|
||||||
|
// #define dfrobot_btnLEFT_analog 555
|
||||||
|
// #define dfrobot_btnSELECT_analog 790
|
||||||
|
|
||||||
|
// button to memory mappings (0 = command button, 1 = memory 1, 2 = memory 2, etc.)
|
||||||
|
#define dfrobot_btnRIGHT 2
|
||||||
|
#define dfrobot_btnUP 1
|
||||||
|
#define dfrobot_btnDOWN 3
|
||||||
|
#define dfrobot_btnLEFT 4
|
||||||
|
#define dfrobot_btnSELECT 0
|
||||||
|
#define dfrobot_btnNONE 255 // do not change
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define sequencer_pins_active_state HIGH
|
||||||
|
#define sequencer_pins_inactive_state LOW
|
||||||
|
#define ptt_line_active_state HIGH
|
||||||
|
#define ptt_line_inactive_state LOW
|
||||||
|
#define tx_key_line_active_state HIGH
|
||||||
|
#define tx_key_line_inactive_state LOW
|
||||||
|
#define ptt_input_pin_active_state LOW
|
||||||
|
#define ptt_input_pin_inactive_state HIGH
|
||||||
|
#define tx_inhibit_pin_active_state LOW
|
||||||
|
#define tx_inhibit_pin_inactive_state HIGH
|
||||||
|
#define tx_pause_pin_active_state LOW
|
||||||
|
#define tx_pause_pin_inactive_state HIGH
|
||||||
|
#define sidetone_line_active_state HIGH
|
||||||
|
#define sidetone_line_inactive_state LOW
|
||||||
|
|
||||||
|
#if defined(ARDUINO_MAPLE_MINI)
|
||||||
|
#define button_value_factor 4095 //sp5iou contributed
|
||||||
|
#else
|
||||||
|
#define button_value_factor 1023
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define farnsworth_timing_calibration 1.15
|
||||||
|
|
||||||
|
#define sidetone_volume_low_limit 10
|
||||||
|
#define sidetone_volume_high_limit 500
|
||||||
|
|
||||||
|
#define custom_startup_field "your custom text here" // an example could be callsign and name, eg. "AB1XYZ Bob", (or "Worlds best operator" which requires a 20 column display), string length shouldo be no more than the number of columns on the display
|
||||||
|
|
||||||
|
#define command_mode_acknowledgement_character 'E'
|
||||||
|
|
||||||
|
#if defined(FEATURE_COMMAND_MODE_ENHANCED_CMD_ACKNOWLEDGEMENT)
|
||||||
|
#define command_a_iambic_a "A"
|
||||||
|
#define command_b_iambic_b "B"
|
||||||
|
#define command_c_single_paddle "SINGLE"
|
||||||
|
#define command_d_ultimatic "ULT"
|
||||||
|
#define command_h_weight_dit_dah_ratio_default "R"
|
||||||
|
#define command_i_tx_on "TX ON"
|
||||||
|
#define command_i_tx_off "TX OFF"
|
||||||
|
#define command_k_dit_dah_buffers_on "ON"
|
||||||
|
#define command_k_dit_dah_buffers_off "OFF"
|
||||||
|
#define command_n_paddle_reverse "REV"
|
||||||
|
#define command_n_paddle_normal "NORM"
|
||||||
|
#define command_o_sidetone_off "ST OFF"
|
||||||
|
#define command_o_sidetone_paddle_only "ST PD ONLY"
|
||||||
|
#define command_o_sidetone_on "ST ON"
|
||||||
|
#define command_t_tune_mode "TUNE"
|
||||||
|
#define command_v_potentiometer_on "POT ON"
|
||||||
|
#define command_v_potentiometer_off "POT OFF"
|
||||||
|
|
||||||
|
#define command_error "ERR"
|
||||||
|
|
||||||
|
#endif //FEATURE_COMMAND_MODE_ENHANCED_CMD_ACKNOWLEDGEMENT
|
318
k3ng_keyer/keyer_settings_mortty.h
Executable file
318
k3ng_keyer/keyer_settings_mortty.h
Executable file
|
@ -0,0 +1,318 @@
|
||||||
|
// Initial and hardcoded settings
|
||||||
|
#define initial_speed_wpm 26 // "factory default" keyer speed setting
|
||||||
|
#define initial_command_mode_speed_wpm 20 // "factory default" command mode speed setting
|
||||||
|
#define initial_sidetone_freq 600 // "factory default" sidetone frequency setting
|
||||||
|
#define sidetone_hz_limit_low 299
|
||||||
|
#define sidetone_hz_limit_high 2001
|
||||||
|
#define hz_high_beep 1500 // frequency in hertz of high beep
|
||||||
|
#define hz_low_beep 400 // frequency in hertz of low beep
|
||||||
|
#define initial_dah_to_dit_ratio 300 // 300 = 3 / normal 3:1 ratio
|
||||||
|
#define initial_ptt_lead_time_tx1 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx1 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx2 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx2 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx3 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx3 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx4 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx4 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx5 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx5 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx6 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx6 10 // PTT tail time in mS
|
||||||
|
#define initial_qrss_dit_length 1 // QRSS dit length in seconds
|
||||||
|
#define initial_pot_wpm_low_value 13 // Potentiometer WPM fully CCW
|
||||||
|
#define initial_pot_wpm_high_value 35 // Potentiometer WPM fully CW
|
||||||
|
#define wpm_limit_low 5
|
||||||
|
#define wpm_limit_high 60
|
||||||
|
#define potentiometer_change_threshold 0.9 // don't change the keyer speed until pot wpm has changed more than this
|
||||||
|
#define send_buffer_size 150
|
||||||
|
#define default_length_letterspace 3
|
||||||
|
#define default_length_wordspace 7
|
||||||
|
#define default_keying_compensation 0 // number of milliseconds to extend all dits and dahs - for QSK on boatanchors
|
||||||
|
#define default_first_extension_time 0 // number of milliseconds to extend first sent dit or dah
|
||||||
|
#define default_pot_full_scale_reading 1023
|
||||||
|
#define default_weighting 50 // 50 = weighting factor of 1 (normal)
|
||||||
|
#define default_ptt_hang_time_wordspace_units 0.0
|
||||||
|
#define winkey_c0_wait_time 1 // the number of milliseconds to wait to send 0xc0 byte after send buffer has been sent
|
||||||
|
#define winkey_command_timeout_ms 5000
|
||||||
|
#define winkey_discard_bytes_startup 3 // this is used if OPTION_WINKEY_DISCARD_BYTES_AT_STARTUP is enabled above
|
||||||
|
#define winkey_xoff_threshold 20 // the number of chars in the buffer when we begin sending XOFFs
|
||||||
|
#define winkey_xon_threshold 10 // the number of chars in the buffer below which we deactivate XOFF
|
||||||
|
#define default_memory_repeat_time 3000 // time in milliseconds
|
||||||
|
#define LCD_COLUMNS 16
|
||||||
|
#define LCD_ROWS 2
|
||||||
|
#define lcd_i2c_address_mathertel_PCF8574 0x27 // I2C address of display for FEATURE_LCD_MATHERTEL_PCF8574
|
||||||
|
#define lcd_i2c_address_fdebrander_lcd 0x27 // I2C address of display for FEATURE_LCD_I2C_FDEBRABANDER
|
||||||
|
#define lcd_i2c_address_ydv1_lcd 0x27 // I2C address of display for FEATURE_LCD_YDv1
|
||||||
|
//#define lcd_i2c_address_ydv1_lcd 0x38 // I2C address of display for FEATURE_LCD_YDv1
|
||||||
|
#define lcd_i2c_address_sainsmart_lcd 0x27 // I2C address of display for FEATURE_LCD_SAINSMART_I2C
|
||||||
|
#define hell_pixel_microseconds 4025
|
||||||
|
#define program_memory_limit_consec_spaces 1
|
||||||
|
#define serial_leading_zeros 1 // set to 1 to activate leading zeros in serial numbers (i.e. #1 = 001)
|
||||||
|
#define serial_cut_numbers 0 // set to 1 to activate cut numbers in serial numbers (i.e. #10 = 1T, #19 = 1N)
|
||||||
|
#define go_to_sleep_inactivity_time 10 // minutes - FEATURE_SLEEP
|
||||||
|
#define dim_backlight_inactive_time 5 // minutes - FEATURE_LCD_BACKLIGHT_AUTO_DIM
|
||||||
|
#define default_cmos_super_keyer_iambic_b_timing_percent 33 // use with FEATURE_CMOS_SUPER_KEYER_IAMBIC_B_TIMING; should be between 0 to 99 % (0% = true iambic b;100% = iambic a behavior)
|
||||||
|
#define default_cw_echo_timing_factor 1.75 // "factory default" setting
|
||||||
|
#define default_autospace_timing_factor 2.0 // "factory default" setting
|
||||||
|
#define winkey_paddle_echo_buffer_decode_timing_factor 0.25
|
||||||
|
#define potentiometer_always_on 0
|
||||||
|
#define ptt_interlock_check_every_ms 100
|
||||||
|
#define ptt_interlock_active_state HIGH
|
||||||
|
#define unknown_cw_character '*'
|
||||||
|
#define cli_paddle_echo_on_at_boot 1
|
||||||
|
#define cli_straight_key_echo_on_at_boot 1
|
||||||
|
#define tx_key_dit_and_dah_pins_active_state HIGH
|
||||||
|
#define tx_key_dit_and_dah_pins_inactive_state LOW
|
||||||
|
#define potentiometer_check_interval_ms 0 //=====150
|
||||||
|
#define potentiometer_reading_threshold 1
|
||||||
|
#define default_paddle_interruption_quiet_time_element_lengths 0
|
||||||
|
#define default_wordsworth_wordspace 6
|
||||||
|
#define default_wordsworth_repetition 1
|
||||||
|
#define serial_program_memory_buffer_size 500
|
||||||
|
#define eeprom_write_time_ms 30000
|
||||||
|
|
||||||
|
#ifdef FEATURE_BUTTONS
|
||||||
|
#define analog_buttons_number_of_buttons 4
|
||||||
|
#define analog_buttons_r1 10
|
||||||
|
#define analog_buttons_r2 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#if defined(FEATURE_BUTTONS) && !defined(FEATURE_PS2_KEYBOARD) && !defined(FEATURE_USB_KEYBOARD) && !defined(FEATURE_COMMAND_LINE_INTERFACE) && !defined(FEATURE_WINKEY_EMULATION)
|
||||||
|
#define number_of_memories byte(analog_buttons_number_of_buttons-1)
|
||||||
|
#else
|
||||||
|
#define number_of_memories byte(12)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef FEATURE_CAPACITIVE_PADDLE_PINS
|
||||||
|
#define capacitance_threshold 2
|
||||||
|
#endif //FEATURE_CAPACITIVE_PADDLE_PINS
|
||||||
|
|
||||||
|
#ifdef FEATURE_LED_RING
|
||||||
|
#define led_ring_low_limit 10
|
||||||
|
#define led_ring_high_limit 50
|
||||||
|
#endif //FEATURE_LED_RING
|
||||||
|
|
||||||
|
#ifdef FEATURE_QLF
|
||||||
|
#define qlf_dit_max 125
|
||||||
|
#define qlf_dit_min 75
|
||||||
|
#define qlf_dah_max 200
|
||||||
|
#define qlf_dah_min 100
|
||||||
|
#define qlf_on_by_default 0
|
||||||
|
#endif //FEATURE_QLF
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef FEATURE_WINKEY_EMULATION
|
||||||
|
#ifdef OPTION_WINKEY_UCXLOG_9600_BAUD
|
||||||
|
#define WINKEY_DEFAULT_BAUD 9600
|
||||||
|
#else
|
||||||
|
#define WINKEY_DEFAULT_BAUD 1200
|
||||||
|
#endif //OPTION_WINKEY_UCXLOG_9600_BAUD
|
||||||
|
// alter these below to map alternate sidetones for Winkey interface protocol emulation
|
||||||
|
#ifdef OPTION_WINKEY_2_SUPPORT
|
||||||
|
#define WINKEY_SIDETONE_1 3759
|
||||||
|
#define WINKEY_SIDETONE_2 1879
|
||||||
|
#define WINKEY_SIDETONE_3 1252
|
||||||
|
#define WINKEY_SIDETONE_4 940
|
||||||
|
#define WINKEY_SIDETONE_5 752
|
||||||
|
#define WINKEY_SIDETONE_6 625
|
||||||
|
#define WINKEY_SIDETONE_7 535
|
||||||
|
#define WINKEY_SIDETONE_8 469
|
||||||
|
#define WINKEY_SIDETONE_9 417
|
||||||
|
#define WINKEY_SIDETONE_10 375
|
||||||
|
#else //OPTION_WINKEY_2_SUPPORT
|
||||||
|
#define WINKEY_SIDETONE_1 4000
|
||||||
|
#define WINKEY_SIDETONE_2 2000
|
||||||
|
#define WINKEY_SIDETONE_3 1333
|
||||||
|
#define WINKEY_SIDETONE_4 1000
|
||||||
|
#define WINKEY_SIDETONE_5 800
|
||||||
|
#define WINKEY_SIDETONE_6 666
|
||||||
|
#define WINKEY_SIDETONE_7 571
|
||||||
|
#define WINKEY_SIDETONE_8 500
|
||||||
|
#define WINKEY_SIDETONE_9 444
|
||||||
|
#define WINKEY_SIDETONE_10 400
|
||||||
|
#endif //OPTION_WINKEY_2_SUPPORT
|
||||||
|
|
||||||
|
#define WINKEY_1_REPORT_VERSION_NUMBER 10
|
||||||
|
#define WINKEY_2_REPORT_VERSION_NUMBER 23
|
||||||
|
|
||||||
|
// alter these to map to alternate hang time wordspace units
|
||||||
|
#define WINKEY_HANG_TIME_1_0 1.0
|
||||||
|
#define WINKEY_HANG_TIME_1_33 1.33
|
||||||
|
#define WINKEY_HANG_TIME_1_66 1.66
|
||||||
|
#define WINKEY_HANG_TIME_2_0 2.0
|
||||||
|
|
||||||
|
#define WINKEY_RETURN_THIS_FOR_ADMIN_GET_CAL 0x16
|
||||||
|
#define WINKEY_RETURN_THIS_FOR_ADMIN_PADDLE_A2D 0xEE
|
||||||
|
#define WINKEY_RETURN_THIS_FOR_ADMIN_SPEED_A2D 0x00
|
||||||
|
|
||||||
|
#endif //FEATURE_WINKEY_EMULATION
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#define PRIMARY_SERIAL_PORT &Serial
|
||||||
|
#define PRIMARY_SERIAL_PORT_BAUD 115200 // This applies only when the port is in Command Line Interface mode. In Winkey mode it will default to 1200.
|
||||||
|
|
||||||
|
#ifdef FEATURE_COMMAND_LINE_INTERFACE_ON_SECONDARY_PORT
|
||||||
|
#define SECONDARY_SERIAL_PORT &Serial1
|
||||||
|
#define SECONDARY_SERIAL_PORT_BAUD 115200
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#define CW_DECODER_SCREEN_COLUMNS 120 // word wrap at this many columns
|
||||||
|
#define CW_DECODER_SPACE_PRINT_THRESH 4.5 // print space if no tone for this many element lengths
|
||||||
|
#define CW_DECODER_SPACE_DECODE_THRESH 2.0 // invoke character decode if no tone for this many element lengths
|
||||||
|
#define CW_DECODER_NOISE_FILTER 20 // ignore elements shorter than this (mS)
|
||||||
|
|
||||||
|
#define STRAIGHT_KEY_ACTIVE_STATE LOW
|
||||||
|
|
||||||
|
#ifdef FEATURE_DYNAMIC_DAH_TO_DIT_RATIO
|
||||||
|
#define DYNAMIC_DAH_TO_DIT_RATIO_LOWER_LIMIT_WPM 30
|
||||||
|
#define DYNAMIC_DAH_TO_DIT_RATIO_LOWER_LIMIT_RATIO 300 // 300 = 3:1 ratio
|
||||||
|
#define DYNAMIC_DAH_TO_DIT_RATIO_UPPER_LIMIT_WPM 70
|
||||||
|
#define DYNAMIC_DAH_TO_DIT_RATIO_UPPER_LIMIT_RATIO 240 // 240 = 2.4:1 ratio
|
||||||
|
#endif //FEATURE_DYNAMIC_DAH_TO_DIT_RATIO
|
||||||
|
|
||||||
|
#if defined(FEATURE_COMPETITION_COMPRESSION_DETECTION)
|
||||||
|
#define COMPETITION_COMPRESSION_DETECTION_ARRAY_SIZE 16
|
||||||
|
#define COMPETITION_COMPRESSION_DETECTION_TIME_INTERCHAR_LOWER_LIMIT 1
|
||||||
|
#define COMPETITION_COMPRESSION_DETECTION_TIME_INTERCHAR_UPPER_LIMIT 6.0
|
||||||
|
#define COMPETITION_COMPRESSION_DETECTION_AVERAGE_ALARM_THRESHOLD 3.0
|
||||||
|
#endif //FEATURE_COMPETITION_COMPRESSION_DETECTION
|
||||||
|
|
||||||
|
#if defined(FEATURE_SLEEP)
|
||||||
|
#define KEYER_AWAKE_PIN_AWAKE_STATE HIGH
|
||||||
|
#define KEYER_AWAKE_PIN_ASLEEP_STATE LOW
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_LCD_BACKLIGHT_AUTO_DIM)
|
||||||
|
#define keyer_power_led_awake_duty 255 // PWM duty cycle. 0 is 0%, 255 is 100%
|
||||||
|
#define keyer_power_led_asleep_duty 25 // 25 is quite dim. Use 0 for off
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_ETHERNET)
|
||||||
|
// #define FEATURE_ETHERNET_IP {192,168,1,178} // default IP address ("192.168.1.178")
|
||||||
|
// #define FEATURE_ETHERNET_MAC {0xDE,0xAD,0xBE,0xEF,0xFE,0xED}
|
||||||
|
#define FEATURE_ETHERNET_IP {192,168,1,179} // default IP address ("192.168.1.179")
|
||||||
|
#define FEATURE_ETHERNET_MAC {0xDE,0xAD,0xBE,0xEF,0xFE,0xEE}
|
||||||
|
#define FEATURE_ETHERNET_DNS {8,8,8,8}
|
||||||
|
|
||||||
|
#define FEATURE_ETHERNET_GATEWAY {192,168,1,1} // default gateway
|
||||||
|
#define FEATURE_ETHERNET_SUBNET_MASK {255,255,255,0} // default subnet mask
|
||||||
|
#define FEATURE_ETHERNET_WEB_LISTENER_PORT 80
|
||||||
|
#define FEATURE_UDP_SEND_BUFFER_SIZE 128
|
||||||
|
#define FEATURE_UDP_RECEIVE_BUFFER_SIZE 128
|
||||||
|
#endif //FEATURE_ETHERNET
|
||||||
|
|
||||||
|
#define WEB_SERVER_CONTROL_TX_KEY_TIME_LIMIT_SECS 10
|
||||||
|
|
||||||
|
#define FEATURE_INTERNET_LINK_MAX_LINKS 2
|
||||||
|
#define FEATURE_INTERNET_LINK_DEFAULT_RCV_UDP_PORT 8888
|
||||||
|
#define FEATURE_INTERNET_LINK_BUFFER_TIME_MS 500
|
||||||
|
|
||||||
|
#if defined(FEATURE_4x4_KEYPAD)|| defined (FEATURE_3x4_KEYPAD)
|
||||||
|
#define KEYPAD_ROWS 4 //KeyPad Rows
|
||||||
|
#if defined(FEATURE_4x4_KEYPAD)
|
||||||
|
#define KEYPAD_COLS 4 //keypad Columns
|
||||||
|
#else
|
||||||
|
#define KEYPAD_COLS 3
|
||||||
|
#endif
|
||||||
|
#define mem1 0 //Memory numbers for Keypad: Actual memory numbers start with "0"
|
||||||
|
#define mem2 1
|
||||||
|
#define mem3 2
|
||||||
|
#define mem4 3
|
||||||
|
#define mem5 4
|
||||||
|
#define mem6 5
|
||||||
|
#define mem7 6
|
||||||
|
#define mem8 7
|
||||||
|
#define mem9 8
|
||||||
|
#define mem10 9
|
||||||
|
#define mem11 10
|
||||||
|
#define mem12 11
|
||||||
|
#endif //#if defined(FEATURE_4x4_KEYPAD)|| defined (FEATURE_3x4_KEYPAD)
|
||||||
|
|
||||||
|
#define initial_sidetone_mode 1 // Sidetone mode, 0=OFF, 1=ON, 2=PADDLE_ONLY
|
||||||
|
|
||||||
|
#define sd_card_spi_ss_line 4
|
||||||
|
|
||||||
|
|
||||||
|
#if defined(OPTION_DFROBOT_LCD_COMMAND_BUTTONS)
|
||||||
|
|
||||||
|
// For V1.1 board use these values
|
||||||
|
#define dfrobot_btnRIGHT_analog 50
|
||||||
|
#define dfrobot_btnUP_analog 250
|
||||||
|
#define dfrobot_btnDOWN_analog 450
|
||||||
|
#define dfrobot_btnLEFT_analog 650
|
||||||
|
#define dfrobot_btnSELECT_analog 850
|
||||||
|
|
||||||
|
// For V1.0 board use these values
|
||||||
|
// #define dfrobot_btnRIGHT_analog 50
|
||||||
|
// #define dfrobot_btnUP_analog 195
|
||||||
|
// #define dfrobot_btnDOWN_analog 380
|
||||||
|
// #define dfrobot_btnLEFT_analog 555
|
||||||
|
// #define dfrobot_btnSELECT_analog 790
|
||||||
|
|
||||||
|
// button to memory mappings (0 = command button, 1 = memory 1, 2 = memory 2, etc.)
|
||||||
|
#define dfrobot_btnRIGHT 2
|
||||||
|
#define dfrobot_btnUP 1
|
||||||
|
#define dfrobot_btnDOWN 3
|
||||||
|
#define dfrobot_btnLEFT 4
|
||||||
|
#define dfrobot_btnSELECT 0
|
||||||
|
#define dfrobot_btnNONE 255 // do not change
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#define sequencer_pins_active_state HIGH
|
||||||
|
#define sequencer_pins_inactive_state LOW
|
||||||
|
#define ptt_line_active_state HIGH
|
||||||
|
#define ptt_line_inactive_state LOW
|
||||||
|
#define tx_key_line_active_state HIGH
|
||||||
|
#define tx_key_line_inactive_state LOW
|
||||||
|
#define ptt_input_pin_active_state LOW
|
||||||
|
#define ptt_input_pin_inactive_state HIGH
|
||||||
|
#define tx_inhibit_pin_active_state LOW
|
||||||
|
#define tx_inhibit_pin_inactive_state HIGH
|
||||||
|
#define tx_pause_pin_active_state LOW
|
||||||
|
#define tx_pause_pin_inactive_state HIGH
|
||||||
|
#define sidetone_line_active_state HIGH
|
||||||
|
#define sidetone_line_inactive_state LOW
|
||||||
|
|
||||||
|
#if defined(ARDUINO_MAPLE_MINI)
|
||||||
|
#define button_value_factor 4095
|
||||||
|
#else
|
||||||
|
#define button_value_factor 1023
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define farnsworth_timing_calibration 1.15
|
||||||
|
|
||||||
|
#define sidetone_volume_low_limit 10
|
||||||
|
#define sidetone_volume_high_limit 500
|
||||||
|
|
||||||
|
#define custom_startup_field "your custom text here" // an example could be callsign and name, eg. "AB1XYZ Bob", (or "Worlds best operator" which requires a 20 column display), string length shouldo be no more than the number of columns on the display
|
||||||
|
|
||||||
|
#define command_mode_acknowledgement_character 'E'
|
||||||
|
|
||||||
|
#if defined(FEATURE_COMMAND_MODE_ENHANCED_CMD_ACKNOWLEDGEMENT)
|
||||||
|
#define command_a_iambic_a "A"
|
||||||
|
#define command_b_iambic_b "B"
|
||||||
|
#define command_c_single_paddle "SINGLE"
|
||||||
|
#define command_d_ultimatic "ULT"
|
||||||
|
#define command_h_weight_dit_dah_ratio_default "R"
|
||||||
|
#define command_i_tx_on "TX ON"
|
||||||
|
#define command_i_tx_off "TX OFF"
|
||||||
|
#define command_k_dit_dah_buffers_on "ON"
|
||||||
|
#define command_k_dit_dah_buffers_off "OFF"
|
||||||
|
#define command_n_paddle_reverse "REV"
|
||||||
|
#define command_n_paddle_normal "NORM"
|
||||||
|
#define command_o_sidetone_off "ST OFF"
|
||||||
|
#define command_o_sidetone_paddle_only "ST PD ONLY"
|
||||||
|
#define command_o_sidetone_on "ST ON"
|
||||||
|
#define command_t_tune_mode "TUNE"
|
||||||
|
#define command_v_potentiometer_on "POT ON"
|
||||||
|
#define command_v_potentiometer_off "POT OFF"
|
||||||
|
|
||||||
|
#define command_error "ERR"
|
||||||
|
|
||||||
|
#endif //FEATURE_COMMAND_MODE_ENHANCED_CMD_ACKNOWLEDGEMENT
|
318
k3ng_keyer/keyer_settings_mortty_regular.h
Executable file
318
k3ng_keyer/keyer_settings_mortty_regular.h
Executable file
|
@ -0,0 +1,318 @@
|
||||||
|
// Initial and hardcoded settings
|
||||||
|
#define initial_speed_wpm 26 // "factory default" keyer speed setting
|
||||||
|
#define initial_command_mode_speed_wpm 20 // "factory default" command mode speed setting
|
||||||
|
#define initial_sidetone_freq 600 // "factory default" sidetone frequency setting
|
||||||
|
#define sidetone_hz_limit_low 299
|
||||||
|
#define sidetone_hz_limit_high 2001
|
||||||
|
#define hz_high_beep 1500 // frequency in hertz of high beep
|
||||||
|
#define hz_low_beep 400 // frequency in hertz of low beep
|
||||||
|
#define initial_dah_to_dit_ratio 300 // 300 = 3 / normal 3:1 ratio
|
||||||
|
#define initial_ptt_lead_time_tx1 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx1 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx2 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx2 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx3 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx3 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx4 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx4 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx5 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx5 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx6 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx6 10 // PTT tail time in mS
|
||||||
|
#define initial_qrss_dit_length 1 // QRSS dit length in seconds
|
||||||
|
#define initial_pot_wpm_low_value 13 // Potentiometer WPM fully CCW
|
||||||
|
#define initial_pot_wpm_high_value 35 // Potentiometer WPM fully CW
|
||||||
|
#define wpm_limit_low 5
|
||||||
|
#define wpm_limit_high 60
|
||||||
|
#define potentiometer_change_threshold 0.9 // don't change the keyer speed until pot wpm has changed more than this
|
||||||
|
#define send_buffer_size 150
|
||||||
|
#define default_length_letterspace 3
|
||||||
|
#define default_length_wordspace 7
|
||||||
|
#define default_keying_compensation 0 // number of milliseconds to extend all dits and dahs - for QSK on boatanchors
|
||||||
|
#define default_first_extension_time 0 // number of milliseconds to extend first sent dit or dah
|
||||||
|
#define default_pot_full_scale_reading 1023
|
||||||
|
#define default_weighting 50 // 50 = weighting factor of 1 (normal)
|
||||||
|
#define default_ptt_hang_time_wordspace_units 0.0
|
||||||
|
#define winkey_c0_wait_time 1 // the number of milliseconds to wait to send 0xc0 byte after send buffer has been sent
|
||||||
|
#define winkey_command_timeout_ms 5000
|
||||||
|
#define winkey_discard_bytes_startup 3 // this is used if OPTION_WINKEY_DISCARD_BYTES_AT_STARTUP is enabled above
|
||||||
|
#define winkey_xoff_threshold 20 // the number of chars in the buffer when we begin sending XOFFs
|
||||||
|
#define winkey_xon_threshold 10 // the number of chars in the buffer below which we deactivate XOFF
|
||||||
|
#define default_memory_repeat_time 3000 // time in milliseconds
|
||||||
|
#define LCD_COLUMNS 16
|
||||||
|
#define LCD_ROWS 2
|
||||||
|
#define lcd_i2c_address_mathertel_PCF8574 0x27 // I2C address of display for FEATURE_LCD_MATHERTEL_PCF8574
|
||||||
|
#define lcd_i2c_address_fdebrander_lcd 0x27 // I2C address of display for FEATURE_LCD_I2C_FDEBRABANDER
|
||||||
|
#define lcd_i2c_address_ydv1_lcd 0x27 // I2C address of display for FEATURE_LCD_YDv1
|
||||||
|
//#define lcd_i2c_address_ydv1_lcd 0x38 // I2C address of display for FEATURE_LCD_YDv1
|
||||||
|
#define lcd_i2c_address_sainsmart_lcd 0x27 // I2C address of display for FEATURE_LCD_SAINSMART_I2C
|
||||||
|
#define hell_pixel_microseconds 4025
|
||||||
|
#define program_memory_limit_consec_spaces 1
|
||||||
|
#define serial_leading_zeros 1 // set to 1 to activate leading zeros in serial numbers (i.e. #1 = 001)
|
||||||
|
#define serial_cut_numbers 0 // set to 1 to activate cut numbers in serial numbers (i.e. #10 = 1T, #19 = 1N)
|
||||||
|
#define go_to_sleep_inactivity_time 10 // minutes - FEATURE_SLEEP
|
||||||
|
#define dim_backlight_inactive_time 5 // minutes - FEATURE_LCD_BACKLIGHT_AUTO_DIM
|
||||||
|
#define default_cmos_super_keyer_iambic_b_timing_percent 33 // use with FEATURE_CMOS_SUPER_KEYER_IAMBIC_B_TIMING; should be between 0 to 99 % (0% = true iambic b;100% = iambic a behavior)
|
||||||
|
#define default_cw_echo_timing_factor 1.75 // "factory default" setting
|
||||||
|
#define default_autospace_timing_factor 2.0 // "factory default" setting
|
||||||
|
#define winkey_paddle_echo_buffer_decode_timing_factor 0.25
|
||||||
|
#define potentiometer_always_on 0
|
||||||
|
#define ptt_interlock_check_every_ms 100
|
||||||
|
#define ptt_interlock_active_state HIGH
|
||||||
|
#define unknown_cw_character '*'
|
||||||
|
#define cli_paddle_echo_on_at_boot 1
|
||||||
|
#define cli_straight_key_echo_on_at_boot 1
|
||||||
|
#define tx_key_dit_and_dah_pins_active_state HIGH
|
||||||
|
#define tx_key_dit_and_dah_pins_inactive_state LOW
|
||||||
|
#define potentiometer_check_interval_ms 0 //=====150
|
||||||
|
#define potentiometer_reading_threshold 1
|
||||||
|
#define default_paddle_interruption_quiet_time_element_lengths 0
|
||||||
|
#define default_wordsworth_wordspace 6
|
||||||
|
#define default_wordsworth_repetition 1
|
||||||
|
#define serial_program_memory_buffer_size 500
|
||||||
|
#define eeprom_write_time_ms 30000
|
||||||
|
|
||||||
|
#ifdef FEATURE_BUTTONS
|
||||||
|
#define analog_buttons_number_of_buttons 4
|
||||||
|
#define analog_buttons_r1 10
|
||||||
|
#define analog_buttons_r2 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#if defined(FEATURE_BUTTONS) && !defined(FEATURE_PS2_KEYBOARD) && !defined(FEATURE_USB_KEYBOARD) && !defined(FEATURE_COMMAND_LINE_INTERFACE) && !defined(FEATURE_WINKEY_EMULATION)
|
||||||
|
#define number_of_memories byte(analog_buttons_number_of_buttons-1)
|
||||||
|
#else
|
||||||
|
#define number_of_memories byte(12)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef FEATURE_CAPACITIVE_PADDLE_PINS
|
||||||
|
#define capacitance_threshold 2
|
||||||
|
#endif //FEATURE_CAPACITIVE_PADDLE_PINS
|
||||||
|
|
||||||
|
#ifdef FEATURE_LED_RING
|
||||||
|
#define led_ring_low_limit 10
|
||||||
|
#define led_ring_high_limit 50
|
||||||
|
#endif //FEATURE_LED_RING
|
||||||
|
|
||||||
|
#ifdef FEATURE_QLF
|
||||||
|
#define qlf_dit_max 125
|
||||||
|
#define qlf_dit_min 75
|
||||||
|
#define qlf_dah_max 200
|
||||||
|
#define qlf_dah_min 100
|
||||||
|
#define qlf_on_by_default 0
|
||||||
|
#endif //FEATURE_QLF
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef FEATURE_WINKEY_EMULATION
|
||||||
|
#ifdef OPTION_WINKEY_UCXLOG_9600_BAUD
|
||||||
|
#define WINKEY_DEFAULT_BAUD 9600
|
||||||
|
#else
|
||||||
|
#define WINKEY_DEFAULT_BAUD 1200
|
||||||
|
#endif //OPTION_WINKEY_UCXLOG_9600_BAUD
|
||||||
|
// alter these below to map alternate sidetones for Winkey interface protocol emulation
|
||||||
|
#ifdef OPTION_WINKEY_2_SUPPORT
|
||||||
|
#define WINKEY_SIDETONE_1 3759
|
||||||
|
#define WINKEY_SIDETONE_2 1879
|
||||||
|
#define WINKEY_SIDETONE_3 1252
|
||||||
|
#define WINKEY_SIDETONE_4 940
|
||||||
|
#define WINKEY_SIDETONE_5 752
|
||||||
|
#define WINKEY_SIDETONE_6 625
|
||||||
|
#define WINKEY_SIDETONE_7 535
|
||||||
|
#define WINKEY_SIDETONE_8 469
|
||||||
|
#define WINKEY_SIDETONE_9 417
|
||||||
|
#define WINKEY_SIDETONE_10 375
|
||||||
|
#else //OPTION_WINKEY_2_SUPPORT
|
||||||
|
#define WINKEY_SIDETONE_1 4000
|
||||||
|
#define WINKEY_SIDETONE_2 2000
|
||||||
|
#define WINKEY_SIDETONE_3 1333
|
||||||
|
#define WINKEY_SIDETONE_4 1000
|
||||||
|
#define WINKEY_SIDETONE_5 800
|
||||||
|
#define WINKEY_SIDETONE_6 666
|
||||||
|
#define WINKEY_SIDETONE_7 571
|
||||||
|
#define WINKEY_SIDETONE_8 500
|
||||||
|
#define WINKEY_SIDETONE_9 444
|
||||||
|
#define WINKEY_SIDETONE_10 400
|
||||||
|
#endif //OPTION_WINKEY_2_SUPPORT
|
||||||
|
|
||||||
|
#define WINKEY_1_REPORT_VERSION_NUMBER 10
|
||||||
|
#define WINKEY_2_REPORT_VERSION_NUMBER 23
|
||||||
|
|
||||||
|
// alter these to map to alternate hang time wordspace units
|
||||||
|
#define WINKEY_HANG_TIME_1_0 1.0
|
||||||
|
#define WINKEY_HANG_TIME_1_33 1.33
|
||||||
|
#define WINKEY_HANG_TIME_1_66 1.66
|
||||||
|
#define WINKEY_HANG_TIME_2_0 2.0
|
||||||
|
|
||||||
|
#define WINKEY_RETURN_THIS_FOR_ADMIN_GET_CAL 0x16
|
||||||
|
#define WINKEY_RETURN_THIS_FOR_ADMIN_PADDLE_A2D 0xEE
|
||||||
|
#define WINKEY_RETURN_THIS_FOR_ADMIN_SPEED_A2D 0x00
|
||||||
|
|
||||||
|
#endif //FEATURE_WINKEY_EMULATION
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#define PRIMARY_SERIAL_PORT &Serial
|
||||||
|
#define PRIMARY_SERIAL_PORT_BAUD 115200 // This applies only when the port is in Command Line Interface mode. In Winkey mode it will default to 1200.
|
||||||
|
|
||||||
|
#ifdef FEATURE_COMMAND_LINE_INTERFACE_ON_SECONDARY_PORT
|
||||||
|
#define SECONDARY_SERIAL_PORT &Serial1
|
||||||
|
#define SECONDARY_SERIAL_PORT_BAUD 115200
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#define CW_DECODER_SCREEN_COLUMNS 120 // word wrap at this many columns
|
||||||
|
#define CW_DECODER_SPACE_PRINT_THRESH 4.5 // print space if no tone for this many element lengths
|
||||||
|
#define CW_DECODER_SPACE_DECODE_THRESH 2.0 // invoke character decode if no tone for this many element lengths
|
||||||
|
#define CW_DECODER_NOISE_FILTER 20 // ignore elements shorter than this (mS)
|
||||||
|
|
||||||
|
#define STRAIGHT_KEY_ACTIVE_STATE LOW
|
||||||
|
|
||||||
|
#ifdef FEATURE_DYNAMIC_DAH_TO_DIT_RATIO
|
||||||
|
#define DYNAMIC_DAH_TO_DIT_RATIO_LOWER_LIMIT_WPM 30
|
||||||
|
#define DYNAMIC_DAH_TO_DIT_RATIO_LOWER_LIMIT_RATIO 300 // 300 = 3:1 ratio
|
||||||
|
#define DYNAMIC_DAH_TO_DIT_RATIO_UPPER_LIMIT_WPM 70
|
||||||
|
#define DYNAMIC_DAH_TO_DIT_RATIO_UPPER_LIMIT_RATIO 240 // 240 = 2.4:1 ratio
|
||||||
|
#endif //FEATURE_DYNAMIC_DAH_TO_DIT_RATIO
|
||||||
|
|
||||||
|
#if defined(FEATURE_COMPETITION_COMPRESSION_DETECTION)
|
||||||
|
#define COMPETITION_COMPRESSION_DETECTION_ARRAY_SIZE 16
|
||||||
|
#define COMPETITION_COMPRESSION_DETECTION_TIME_INTERCHAR_LOWER_LIMIT 1
|
||||||
|
#define COMPETITION_COMPRESSION_DETECTION_TIME_INTERCHAR_UPPER_LIMIT 6.0
|
||||||
|
#define COMPETITION_COMPRESSION_DETECTION_AVERAGE_ALARM_THRESHOLD 3.0
|
||||||
|
#endif //FEATURE_COMPETITION_COMPRESSION_DETECTION
|
||||||
|
|
||||||
|
#if defined(FEATURE_SLEEP)
|
||||||
|
#define KEYER_AWAKE_PIN_AWAKE_STATE HIGH
|
||||||
|
#define KEYER_AWAKE_PIN_ASLEEP_STATE LOW
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_LCD_BACKLIGHT_AUTO_DIM)
|
||||||
|
#define keyer_power_led_awake_duty 255 // PWM duty cycle. 0 is 0%, 255 is 100%
|
||||||
|
#define keyer_power_led_asleep_duty 25 // 25 is quite dim. Use 0 for off
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_ETHERNET)
|
||||||
|
// #define FEATURE_ETHERNET_IP {192,168,1,178} // default IP address ("192.168.1.178")
|
||||||
|
// #define FEATURE_ETHERNET_MAC {0xDE,0xAD,0xBE,0xEF,0xFE,0xED}
|
||||||
|
#define FEATURE_ETHERNET_IP {192,168,1,179} // default IP address ("192.168.1.179")
|
||||||
|
#define FEATURE_ETHERNET_MAC {0xDE,0xAD,0xBE,0xEF,0xFE,0xEE}
|
||||||
|
#define FEATURE_ETHERNET_DNS {8,8,8,8}
|
||||||
|
|
||||||
|
#define FEATURE_ETHERNET_GATEWAY {192,168,1,1} // default gateway
|
||||||
|
#define FEATURE_ETHERNET_SUBNET_MASK {255,255,255,0} // default subnet mask
|
||||||
|
#define FEATURE_ETHERNET_WEB_LISTENER_PORT 80
|
||||||
|
#define FEATURE_UDP_SEND_BUFFER_SIZE 128
|
||||||
|
#define FEATURE_UDP_RECEIVE_BUFFER_SIZE 128
|
||||||
|
#endif //FEATURE_ETHERNET
|
||||||
|
|
||||||
|
#define WEB_SERVER_CONTROL_TX_KEY_TIME_LIMIT_SECS 10
|
||||||
|
|
||||||
|
#define FEATURE_INTERNET_LINK_MAX_LINKS 2
|
||||||
|
#define FEATURE_INTERNET_LINK_DEFAULT_RCV_UDP_PORT 8888
|
||||||
|
#define FEATURE_INTERNET_LINK_BUFFER_TIME_MS 500
|
||||||
|
|
||||||
|
#if defined(FEATURE_4x4_KEYPAD)|| defined (FEATURE_3x4_KEYPAD)
|
||||||
|
#define KEYPAD_ROWS 4 //KeyPad Rows
|
||||||
|
#if defined(FEATURE_4x4_KEYPAD)
|
||||||
|
#define KEYPAD_COLS 4 //keypad Columns
|
||||||
|
#else
|
||||||
|
#define KEYPAD_COLS 3
|
||||||
|
#endif
|
||||||
|
#define mem1 0 //Memory numbers for Keypad: Actual memory numbers start with "0"
|
||||||
|
#define mem2 1
|
||||||
|
#define mem3 2
|
||||||
|
#define mem4 3
|
||||||
|
#define mem5 4
|
||||||
|
#define mem6 5
|
||||||
|
#define mem7 6
|
||||||
|
#define mem8 7
|
||||||
|
#define mem9 8
|
||||||
|
#define mem10 9
|
||||||
|
#define mem11 10
|
||||||
|
#define mem12 11
|
||||||
|
#endif //#if defined(FEATURE_4x4_KEYPAD)|| defined (FEATURE_3x4_KEYPAD)
|
||||||
|
|
||||||
|
#define initial_sidetone_mode 1 // Sidetone mode, 0=OFF, 1=ON, 2=PADDLE_ONLY
|
||||||
|
|
||||||
|
#define sd_card_spi_ss_line 4
|
||||||
|
|
||||||
|
|
||||||
|
#if defined(OPTION_DFROBOT_LCD_COMMAND_BUTTONS)
|
||||||
|
|
||||||
|
// For V1.1 board use these values
|
||||||
|
#define dfrobot_btnRIGHT_analog 50
|
||||||
|
#define dfrobot_btnUP_analog 250
|
||||||
|
#define dfrobot_btnDOWN_analog 450
|
||||||
|
#define dfrobot_btnLEFT_analog 650
|
||||||
|
#define dfrobot_btnSELECT_analog 850
|
||||||
|
|
||||||
|
// For V1.0 board use these values
|
||||||
|
// #define dfrobot_btnRIGHT_analog 50
|
||||||
|
// #define dfrobot_btnUP_analog 195
|
||||||
|
// #define dfrobot_btnDOWN_analog 380
|
||||||
|
// #define dfrobot_btnLEFT_analog 555
|
||||||
|
// #define dfrobot_btnSELECT_analog 790
|
||||||
|
|
||||||
|
// button to memory mappings (0 = command button, 1 = memory 1, 2 = memory 2, etc.)
|
||||||
|
#define dfrobot_btnRIGHT 2
|
||||||
|
#define dfrobot_btnUP 1
|
||||||
|
#define dfrobot_btnDOWN 3
|
||||||
|
#define dfrobot_btnLEFT 4
|
||||||
|
#define dfrobot_btnSELECT 0
|
||||||
|
#define dfrobot_btnNONE 255 // do not change
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#define sequencer_pins_active_state HIGH
|
||||||
|
#define sequencer_pins_inactive_state LOW
|
||||||
|
#define ptt_line_active_state HIGH
|
||||||
|
#define ptt_line_inactive_state LOW
|
||||||
|
#define tx_key_line_active_state HIGH
|
||||||
|
#define tx_key_line_inactive_state LOW
|
||||||
|
#define ptt_input_pin_active_state LOW
|
||||||
|
#define ptt_input_pin_inactive_state HIGH
|
||||||
|
#define tx_inhibit_pin_active_state LOW
|
||||||
|
#define tx_inhibit_pin_inactive_state HIGH
|
||||||
|
#define tx_pause_pin_active_state LOW
|
||||||
|
#define tx_pause_pin_inactive_state HIGH
|
||||||
|
#define sidetone_line_active_state HIGH
|
||||||
|
#define sidetone_line_inactive_state LOW
|
||||||
|
|
||||||
|
#if defined(ARDUINO_MAPLE_MINI)
|
||||||
|
#define button_value_factor 4095
|
||||||
|
#else
|
||||||
|
#define button_value_factor 1023
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define farnsworth_timing_calibration 1.15
|
||||||
|
|
||||||
|
#define sidetone_volume_low_limit 10
|
||||||
|
#define sidetone_volume_high_limit 500
|
||||||
|
|
||||||
|
#define custom_startup_field "your custom text here" // an example could be callsign and name, eg. "AB1XYZ Bob", (or "Worlds best operator" which requires a 20 column display), string length shouldo be no more than the number of columns on the display
|
||||||
|
|
||||||
|
#define command_mode_acknowledgement_character 'E'
|
||||||
|
|
||||||
|
#if defined(FEATURE_COMMAND_MODE_ENHANCED_CMD_ACKNOWLEDGEMENT)
|
||||||
|
#define command_a_iambic_a "A"
|
||||||
|
#define command_b_iambic_b "B"
|
||||||
|
#define command_c_single_paddle "SINGLE"
|
||||||
|
#define command_d_ultimatic "ULT"
|
||||||
|
#define command_h_weight_dit_dah_ratio_default "R"
|
||||||
|
#define command_i_tx_on "TX ON"
|
||||||
|
#define command_i_tx_off "TX OFF"
|
||||||
|
#define command_k_dit_dah_buffers_on "ON"
|
||||||
|
#define command_k_dit_dah_buffers_off "OFF"
|
||||||
|
#define command_n_paddle_reverse "REV"
|
||||||
|
#define command_n_paddle_normal "NORM"
|
||||||
|
#define command_o_sidetone_off "ST OFF"
|
||||||
|
#define command_o_sidetone_paddle_only "ST PD ONLY"
|
||||||
|
#define command_o_sidetone_on "ST ON"
|
||||||
|
#define command_t_tune_mode "TUNE"
|
||||||
|
#define command_v_potentiometer_on "POT ON"
|
||||||
|
#define command_v_potentiometer_off "POT OFF"
|
||||||
|
|
||||||
|
#define command_error "ERR"
|
||||||
|
|
||||||
|
#endif //FEATURE_COMMAND_MODE_ENHANCED_CMD_ACKNOWLEDGEMENT
|
318
k3ng_keyer/keyer_settings_mortty_regular_with_potentiometer.h
Executable file
318
k3ng_keyer/keyer_settings_mortty_regular_with_potentiometer.h
Executable file
|
@ -0,0 +1,318 @@
|
||||||
|
// Initial and hardcoded settings
|
||||||
|
#define initial_speed_wpm 26 // "factory default" keyer speed setting
|
||||||
|
#define initial_command_mode_speed_wpm 20 // "factory default" command mode speed setting
|
||||||
|
#define initial_sidetone_freq 600 // "factory default" sidetone frequency setting
|
||||||
|
#define sidetone_hz_limit_low 299
|
||||||
|
#define sidetone_hz_limit_high 2001
|
||||||
|
#define hz_high_beep 1500 // frequency in hertz of high beep
|
||||||
|
#define hz_low_beep 400 // frequency in hertz of low beep
|
||||||
|
#define initial_dah_to_dit_ratio 300 // 300 = 3 / normal 3:1 ratio
|
||||||
|
#define initial_ptt_lead_time_tx1 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx1 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx2 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx2 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx3 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx3 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx4 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx4 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx5 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx5 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx6 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx6 10 // PTT tail time in mS
|
||||||
|
#define initial_qrss_dit_length 1 // QRSS dit length in seconds
|
||||||
|
#define initial_pot_wpm_low_value 13 // Potentiometer WPM fully CCW
|
||||||
|
#define initial_pot_wpm_high_value 35 // Potentiometer WPM fully CW
|
||||||
|
#define wpm_limit_low 5
|
||||||
|
#define wpm_limit_high 60
|
||||||
|
#define potentiometer_change_threshold 0.9 // don't change the keyer speed until pot wpm has changed more than this
|
||||||
|
#define send_buffer_size 150
|
||||||
|
#define default_length_letterspace 3
|
||||||
|
#define default_length_wordspace 7
|
||||||
|
#define default_keying_compensation 0 // number of milliseconds to extend all dits and dahs - for QSK on boatanchors
|
||||||
|
#define default_first_extension_time 0 // number of milliseconds to extend first sent dit or dah
|
||||||
|
#define default_pot_full_scale_reading 1023
|
||||||
|
#define default_weighting 50 // 50 = weighting factor of 1 (normal)
|
||||||
|
#define default_ptt_hang_time_wordspace_units 0.0
|
||||||
|
#define winkey_c0_wait_time 1 // the number of milliseconds to wait to send 0xc0 byte after send buffer has been sent
|
||||||
|
#define winkey_command_timeout_ms 5000
|
||||||
|
#define winkey_discard_bytes_startup 3 // this is used if OPTION_WINKEY_DISCARD_BYTES_AT_STARTUP is enabled above
|
||||||
|
#define winkey_xoff_threshold 20 // the number of chars in the buffer when we begin sending XOFFs
|
||||||
|
#define winkey_xon_threshold 10 // the number of chars in the buffer below which we deactivate XOFF
|
||||||
|
#define default_memory_repeat_time 3000 // time in milliseconds
|
||||||
|
#define LCD_COLUMNS 16
|
||||||
|
#define LCD_ROWS 2
|
||||||
|
#define lcd_i2c_address_mathertel_PCF8574 0x27 // I2C address of display for FEATURE_LCD_MATHERTEL_PCF8574
|
||||||
|
#define lcd_i2c_address_fdebrander_lcd 0x27 // I2C address of display for FEATURE_LCD_I2C_FDEBRABANDER
|
||||||
|
#define lcd_i2c_address_ydv1_lcd 0x27 // I2C address of display for FEATURE_LCD_YDv1
|
||||||
|
//#define lcd_i2c_address_ydv1_lcd 0x38 // I2C address of display for FEATURE_LCD_YDv1
|
||||||
|
#define lcd_i2c_address_sainsmart_lcd 0x27 // I2C address of display for FEATURE_LCD_SAINSMART_I2C
|
||||||
|
#define hell_pixel_microseconds 4025
|
||||||
|
#define program_memory_limit_consec_spaces 1
|
||||||
|
#define serial_leading_zeros 1 // set to 1 to activate leading zeros in serial numbers (i.e. #1 = 001)
|
||||||
|
#define serial_cut_numbers 0 // set to 1 to activate cut numbers in serial numbers (i.e. #10 = 1T, #19 = 1N)
|
||||||
|
#define go_to_sleep_inactivity_time 10 // minutes - FEATURE_SLEEP
|
||||||
|
#define dim_backlight_inactive_time 5 // minutes - FEATURE_LCD_BACKLIGHT_AUTO_DIM
|
||||||
|
#define default_cmos_super_keyer_iambic_b_timing_percent 33 // use with FEATURE_CMOS_SUPER_KEYER_IAMBIC_B_TIMING; should be between 0 to 99 % (0% = true iambic b;100% = iambic a behavior)
|
||||||
|
#define default_cw_echo_timing_factor 1.75 // "factory default" setting
|
||||||
|
#define default_autospace_timing_factor 2.0 // "factory default" setting
|
||||||
|
#define winkey_paddle_echo_buffer_decode_timing_factor 0.25
|
||||||
|
#define potentiometer_always_on 0
|
||||||
|
#define ptt_interlock_check_every_ms 100
|
||||||
|
#define ptt_interlock_active_state HIGH
|
||||||
|
#define unknown_cw_character '*'
|
||||||
|
#define cli_paddle_echo_on_at_boot 1
|
||||||
|
#define cli_straight_key_echo_on_at_boot 1
|
||||||
|
#define tx_key_dit_and_dah_pins_active_state HIGH
|
||||||
|
#define tx_key_dit_and_dah_pins_inactive_state LOW
|
||||||
|
#define potentiometer_check_interval_ms 0 //=====150
|
||||||
|
#define potentiometer_reading_threshold 1
|
||||||
|
#define default_paddle_interruption_quiet_time_element_lengths 0
|
||||||
|
#define default_wordsworth_wordspace 6
|
||||||
|
#define default_wordsworth_repetition 1
|
||||||
|
#define serial_program_memory_buffer_size 500
|
||||||
|
#define eeprom_write_time_ms 30000
|
||||||
|
|
||||||
|
#ifdef FEATURE_BUTTONS
|
||||||
|
#define analog_buttons_number_of_buttons 4
|
||||||
|
#define analog_buttons_r1 10
|
||||||
|
#define analog_buttons_r2 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#if defined(FEATURE_BUTTONS) && !defined(FEATURE_PS2_KEYBOARD) && !defined(FEATURE_USB_KEYBOARD) && !defined(FEATURE_COMMAND_LINE_INTERFACE) && !defined(FEATURE_WINKEY_EMULATION)
|
||||||
|
#define number_of_memories byte(analog_buttons_number_of_buttons-1)
|
||||||
|
#else
|
||||||
|
#define number_of_memories byte(12)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef FEATURE_CAPACITIVE_PADDLE_PINS
|
||||||
|
#define capacitance_threshold 2
|
||||||
|
#endif //FEATURE_CAPACITIVE_PADDLE_PINS
|
||||||
|
|
||||||
|
#ifdef FEATURE_LED_RING
|
||||||
|
#define led_ring_low_limit 10
|
||||||
|
#define led_ring_high_limit 50
|
||||||
|
#endif //FEATURE_LED_RING
|
||||||
|
|
||||||
|
#ifdef FEATURE_QLF
|
||||||
|
#define qlf_dit_max 125
|
||||||
|
#define qlf_dit_min 75
|
||||||
|
#define qlf_dah_max 200
|
||||||
|
#define qlf_dah_min 100
|
||||||
|
#define qlf_on_by_default 0
|
||||||
|
#endif //FEATURE_QLF
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef FEATURE_WINKEY_EMULATION
|
||||||
|
#ifdef OPTION_WINKEY_UCXLOG_9600_BAUD
|
||||||
|
#define WINKEY_DEFAULT_BAUD 9600
|
||||||
|
#else
|
||||||
|
#define WINKEY_DEFAULT_BAUD 1200
|
||||||
|
#endif //OPTION_WINKEY_UCXLOG_9600_BAUD
|
||||||
|
// alter these below to map alternate sidetones for Winkey interface protocol emulation
|
||||||
|
#ifdef OPTION_WINKEY_2_SUPPORT
|
||||||
|
#define WINKEY_SIDETONE_1 3759
|
||||||
|
#define WINKEY_SIDETONE_2 1879
|
||||||
|
#define WINKEY_SIDETONE_3 1252
|
||||||
|
#define WINKEY_SIDETONE_4 940
|
||||||
|
#define WINKEY_SIDETONE_5 752
|
||||||
|
#define WINKEY_SIDETONE_6 625
|
||||||
|
#define WINKEY_SIDETONE_7 535
|
||||||
|
#define WINKEY_SIDETONE_8 469
|
||||||
|
#define WINKEY_SIDETONE_9 417
|
||||||
|
#define WINKEY_SIDETONE_10 375
|
||||||
|
#else //OPTION_WINKEY_2_SUPPORT
|
||||||
|
#define WINKEY_SIDETONE_1 4000
|
||||||
|
#define WINKEY_SIDETONE_2 2000
|
||||||
|
#define WINKEY_SIDETONE_3 1333
|
||||||
|
#define WINKEY_SIDETONE_4 1000
|
||||||
|
#define WINKEY_SIDETONE_5 800
|
||||||
|
#define WINKEY_SIDETONE_6 666
|
||||||
|
#define WINKEY_SIDETONE_7 571
|
||||||
|
#define WINKEY_SIDETONE_8 500
|
||||||
|
#define WINKEY_SIDETONE_9 444
|
||||||
|
#define WINKEY_SIDETONE_10 400
|
||||||
|
#endif //OPTION_WINKEY_2_SUPPORT
|
||||||
|
|
||||||
|
#define WINKEY_1_REPORT_VERSION_NUMBER 10
|
||||||
|
#define WINKEY_2_REPORT_VERSION_NUMBER 23
|
||||||
|
|
||||||
|
// alter these to map to alternate hang time wordspace units
|
||||||
|
#define WINKEY_HANG_TIME_1_0 1.0
|
||||||
|
#define WINKEY_HANG_TIME_1_33 1.33
|
||||||
|
#define WINKEY_HANG_TIME_1_66 1.66
|
||||||
|
#define WINKEY_HANG_TIME_2_0 2.0
|
||||||
|
|
||||||
|
#define WINKEY_RETURN_THIS_FOR_ADMIN_GET_CAL 0x16
|
||||||
|
#define WINKEY_RETURN_THIS_FOR_ADMIN_PADDLE_A2D 0xEE
|
||||||
|
#define WINKEY_RETURN_THIS_FOR_ADMIN_SPEED_A2D 0x00
|
||||||
|
|
||||||
|
#endif //FEATURE_WINKEY_EMULATION
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#define PRIMARY_SERIAL_PORT &Serial
|
||||||
|
#define PRIMARY_SERIAL_PORT_BAUD 115200 // This applies only when the port is in Command Line Interface mode. In Winkey mode it will default to 1200.
|
||||||
|
|
||||||
|
#ifdef FEATURE_COMMAND_LINE_INTERFACE_ON_SECONDARY_PORT
|
||||||
|
#define SECONDARY_SERIAL_PORT &Serial1
|
||||||
|
#define SECONDARY_SERIAL_PORT_BAUD 115200
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#define CW_DECODER_SCREEN_COLUMNS 120 // word wrap at this many columns
|
||||||
|
#define CW_DECODER_SPACE_PRINT_THRESH 4.5 // print space if no tone for this many element lengths
|
||||||
|
#define CW_DECODER_SPACE_DECODE_THRESH 2.0 // invoke character decode if no tone for this many element lengths
|
||||||
|
#define CW_DECODER_NOISE_FILTER 20 // ignore elements shorter than this (mS)
|
||||||
|
|
||||||
|
#define STRAIGHT_KEY_ACTIVE_STATE LOW
|
||||||
|
|
||||||
|
#ifdef FEATURE_DYNAMIC_DAH_TO_DIT_RATIO
|
||||||
|
#define DYNAMIC_DAH_TO_DIT_RATIO_LOWER_LIMIT_WPM 30
|
||||||
|
#define DYNAMIC_DAH_TO_DIT_RATIO_LOWER_LIMIT_RATIO 300 // 300 = 3:1 ratio
|
||||||
|
#define DYNAMIC_DAH_TO_DIT_RATIO_UPPER_LIMIT_WPM 70
|
||||||
|
#define DYNAMIC_DAH_TO_DIT_RATIO_UPPER_LIMIT_RATIO 240 // 240 = 2.4:1 ratio
|
||||||
|
#endif //FEATURE_DYNAMIC_DAH_TO_DIT_RATIO
|
||||||
|
|
||||||
|
#if defined(FEATURE_COMPETITION_COMPRESSION_DETECTION)
|
||||||
|
#define COMPETITION_COMPRESSION_DETECTION_ARRAY_SIZE 16
|
||||||
|
#define COMPETITION_COMPRESSION_DETECTION_TIME_INTERCHAR_LOWER_LIMIT 1
|
||||||
|
#define COMPETITION_COMPRESSION_DETECTION_TIME_INTERCHAR_UPPER_LIMIT 6.0
|
||||||
|
#define COMPETITION_COMPRESSION_DETECTION_AVERAGE_ALARM_THRESHOLD 3.0
|
||||||
|
#endif //FEATURE_COMPETITION_COMPRESSION_DETECTION
|
||||||
|
|
||||||
|
#if defined(FEATURE_SLEEP)
|
||||||
|
#define KEYER_AWAKE_PIN_AWAKE_STATE HIGH
|
||||||
|
#define KEYER_AWAKE_PIN_ASLEEP_STATE LOW
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_LCD_BACKLIGHT_AUTO_DIM)
|
||||||
|
#define keyer_power_led_awake_duty 255 // PWM duty cycle. 0 is 0%, 255 is 100%
|
||||||
|
#define keyer_power_led_asleep_duty 25 // 25 is quite dim. Use 0 for off
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_ETHERNET)
|
||||||
|
// #define FEATURE_ETHERNET_IP {192,168,1,178} // default IP address ("192.168.1.178")
|
||||||
|
// #define FEATURE_ETHERNET_MAC {0xDE,0xAD,0xBE,0xEF,0xFE,0xED}
|
||||||
|
#define FEATURE_ETHERNET_IP {192,168,1,179} // default IP address ("192.168.1.179")
|
||||||
|
#define FEATURE_ETHERNET_MAC {0xDE,0xAD,0xBE,0xEF,0xFE,0xEE}
|
||||||
|
#define FEATURE_ETHERNET_DNS {8,8,8,8}
|
||||||
|
|
||||||
|
#define FEATURE_ETHERNET_GATEWAY {192,168,1,1} // default gateway
|
||||||
|
#define FEATURE_ETHERNET_SUBNET_MASK {255,255,255,0} // default subnet mask
|
||||||
|
#define FEATURE_ETHERNET_WEB_LISTENER_PORT 80
|
||||||
|
#define FEATURE_UDP_SEND_BUFFER_SIZE 128
|
||||||
|
#define FEATURE_UDP_RECEIVE_BUFFER_SIZE 128
|
||||||
|
#endif //FEATURE_ETHERNET
|
||||||
|
|
||||||
|
#define WEB_SERVER_CONTROL_TX_KEY_TIME_LIMIT_SECS 10
|
||||||
|
|
||||||
|
#define FEATURE_INTERNET_LINK_MAX_LINKS 2
|
||||||
|
#define FEATURE_INTERNET_LINK_DEFAULT_RCV_UDP_PORT 8888
|
||||||
|
#define FEATURE_INTERNET_LINK_BUFFER_TIME_MS 500
|
||||||
|
|
||||||
|
#if defined(FEATURE_4x4_KEYPAD)|| defined (FEATURE_3x4_KEYPAD)
|
||||||
|
#define KEYPAD_ROWS 4 //KeyPad Rows
|
||||||
|
#if defined(FEATURE_4x4_KEYPAD)
|
||||||
|
#define KEYPAD_COLS 4 //keypad Columns
|
||||||
|
#else
|
||||||
|
#define KEYPAD_COLS 3
|
||||||
|
#endif
|
||||||
|
#define mem1 0 //Memory numbers for Keypad: Actual memory numbers start with "0"
|
||||||
|
#define mem2 1
|
||||||
|
#define mem3 2
|
||||||
|
#define mem4 3
|
||||||
|
#define mem5 4
|
||||||
|
#define mem6 5
|
||||||
|
#define mem7 6
|
||||||
|
#define mem8 7
|
||||||
|
#define mem9 8
|
||||||
|
#define mem10 9
|
||||||
|
#define mem11 10
|
||||||
|
#define mem12 11
|
||||||
|
#endif //#if defined(FEATURE_4x4_KEYPAD)|| defined (FEATURE_3x4_KEYPAD)
|
||||||
|
|
||||||
|
#define initial_sidetone_mode 1 // Sidetone mode, 0=OFF, 1=ON, 2=PADDLE_ONLY
|
||||||
|
|
||||||
|
#define sd_card_spi_ss_line 4
|
||||||
|
|
||||||
|
|
||||||
|
#if defined(OPTION_DFROBOT_LCD_COMMAND_BUTTONS)
|
||||||
|
|
||||||
|
// For V1.1 board use these values
|
||||||
|
#define dfrobot_btnRIGHT_analog 50
|
||||||
|
#define dfrobot_btnUP_analog 250
|
||||||
|
#define dfrobot_btnDOWN_analog 450
|
||||||
|
#define dfrobot_btnLEFT_analog 650
|
||||||
|
#define dfrobot_btnSELECT_analog 850
|
||||||
|
|
||||||
|
// For V1.0 board use these values
|
||||||
|
// #define dfrobot_btnRIGHT_analog 50
|
||||||
|
// #define dfrobot_btnUP_analog 195
|
||||||
|
// #define dfrobot_btnDOWN_analog 380
|
||||||
|
// #define dfrobot_btnLEFT_analog 555
|
||||||
|
// #define dfrobot_btnSELECT_analog 790
|
||||||
|
|
||||||
|
// button to memory mappings (0 = command button, 1 = memory 1, 2 = memory 2, etc.)
|
||||||
|
#define dfrobot_btnRIGHT 2
|
||||||
|
#define dfrobot_btnUP 1
|
||||||
|
#define dfrobot_btnDOWN 3
|
||||||
|
#define dfrobot_btnLEFT 4
|
||||||
|
#define dfrobot_btnSELECT 0
|
||||||
|
#define dfrobot_btnNONE 255 // do not change
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#define sequencer_pins_active_state HIGH
|
||||||
|
#define sequencer_pins_inactive_state LOW
|
||||||
|
#define ptt_line_active_state HIGH
|
||||||
|
#define ptt_line_inactive_state LOW
|
||||||
|
#define tx_key_line_active_state HIGH
|
||||||
|
#define tx_key_line_inactive_state LOW
|
||||||
|
#define ptt_input_pin_active_state LOW
|
||||||
|
#define ptt_input_pin_inactive_state HIGH
|
||||||
|
#define tx_inhibit_pin_active_state LOW
|
||||||
|
#define tx_inhibit_pin_inactive_state HIGH
|
||||||
|
#define tx_pause_pin_active_state LOW
|
||||||
|
#define tx_pause_pin_inactive_state HIGH
|
||||||
|
#define sidetone_line_active_state HIGH
|
||||||
|
#define sidetone_line_inactive_state LOW
|
||||||
|
|
||||||
|
#if defined(ARDUINO_MAPLE_MINI)
|
||||||
|
#define button_value_factor 4095
|
||||||
|
#else
|
||||||
|
#define button_value_factor 1023
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define farnsworth_timing_calibration 1.15
|
||||||
|
|
||||||
|
#define sidetone_volume_low_limit 10
|
||||||
|
#define sidetone_volume_high_limit 500
|
||||||
|
|
||||||
|
#define custom_startup_field "your custom text here" // an example could be callsign and name, eg. "AB1XYZ Bob", (or "Worlds best operator" which requires a 20 column display), string length shouldo be no more than the number of columns on the display
|
||||||
|
|
||||||
|
#define command_mode_acknowledgement_character 'E'
|
||||||
|
|
||||||
|
#if defined(FEATURE_COMMAND_MODE_ENHANCED_CMD_ACKNOWLEDGEMENT)
|
||||||
|
#define command_a_iambic_a "A"
|
||||||
|
#define command_b_iambic_b "B"
|
||||||
|
#define command_c_single_paddle "SINGLE"
|
||||||
|
#define command_d_ultimatic "ULT"
|
||||||
|
#define command_h_weight_dit_dah_ratio_default "R"
|
||||||
|
#define command_i_tx_on "TX ON"
|
||||||
|
#define command_i_tx_off "TX OFF"
|
||||||
|
#define command_k_dit_dah_buffers_on "ON"
|
||||||
|
#define command_k_dit_dah_buffers_off "OFF"
|
||||||
|
#define command_n_paddle_reverse "REV"
|
||||||
|
#define command_n_paddle_normal "NORM"
|
||||||
|
#define command_o_sidetone_off "ST OFF"
|
||||||
|
#define command_o_sidetone_paddle_only "ST PD ONLY"
|
||||||
|
#define command_o_sidetone_on "ST ON"
|
||||||
|
#define command_t_tune_mode "TUNE"
|
||||||
|
#define command_v_potentiometer_on "POT ON"
|
||||||
|
#define command_v_potentiometer_off "POT OFF"
|
||||||
|
|
||||||
|
#define command_error "ERR"
|
||||||
|
|
||||||
|
#endif //FEATURE_COMMAND_MODE_ENHANCED_CMD_ACKNOWLEDGEMENT
|
318
k3ng_keyer/keyer_settings_mortty_so2r.h
Executable file
318
k3ng_keyer/keyer_settings_mortty_so2r.h
Executable file
|
@ -0,0 +1,318 @@
|
||||||
|
// Initial and hardcoded settings
|
||||||
|
#define initial_speed_wpm 26 // "factory default" keyer speed setting
|
||||||
|
#define initial_command_mode_speed_wpm 20 // "factory default" command mode speed setting
|
||||||
|
#define initial_sidetone_freq 600 // "factory default" sidetone frequency setting
|
||||||
|
#define sidetone_hz_limit_low 299
|
||||||
|
#define sidetone_hz_limit_high 2001
|
||||||
|
#define hz_high_beep 1500 // frequency in hertz of high beep
|
||||||
|
#define hz_low_beep 400 // frequency in hertz of low beep
|
||||||
|
#define initial_dah_to_dit_ratio 300 // 300 = 3 / normal 3:1 ratio
|
||||||
|
#define initial_ptt_lead_time_tx1 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx1 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx2 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx2 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx3 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx3 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx4 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx4 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx5 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx5 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx6 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx6 10 // PTT tail time in mS
|
||||||
|
#define initial_qrss_dit_length 1 // QRSS dit length in seconds
|
||||||
|
#define initial_pot_wpm_low_value 13 // Potentiometer WPM fully CCW
|
||||||
|
#define initial_pot_wpm_high_value 35 // Potentiometer WPM fully CW
|
||||||
|
#define wpm_limit_low 5
|
||||||
|
#define wpm_limit_high 60
|
||||||
|
#define potentiometer_change_threshold 0.9 // don't change the keyer speed until pot wpm has changed more than this
|
||||||
|
#define send_buffer_size 150
|
||||||
|
#define default_length_letterspace 3
|
||||||
|
#define default_length_wordspace 7
|
||||||
|
#define default_keying_compensation 0 // number of milliseconds to extend all dits and dahs - for QSK on boatanchors
|
||||||
|
#define default_first_extension_time 0 // number of milliseconds to extend first sent dit or dah
|
||||||
|
#define default_pot_full_scale_reading 1023
|
||||||
|
#define default_weighting 50 // 50 = weighting factor of 1 (normal)
|
||||||
|
#define default_ptt_hang_time_wordspace_units 0.0
|
||||||
|
#define winkey_c0_wait_time 1 // the number of milliseconds to wait to send 0xc0 byte after send buffer has been sent
|
||||||
|
#define winkey_command_timeout_ms 5000
|
||||||
|
#define winkey_discard_bytes_startup 3 // this is used if OPTION_WINKEY_DISCARD_BYTES_AT_STARTUP is enabled above
|
||||||
|
#define winkey_xoff_threshold 20 // the number of chars in the buffer when we begin sending XOFFs
|
||||||
|
#define winkey_xon_threshold 10 // the number of chars in the buffer below which we deactivate XOFF
|
||||||
|
#define default_memory_repeat_time 3000 // time in milliseconds
|
||||||
|
#define LCD_COLUMNS 16
|
||||||
|
#define LCD_ROWS 2
|
||||||
|
#define lcd_i2c_address_mathertel_PCF8574 0x27 // I2C address of display for FEATURE_LCD_MATHERTEL_PCF8574
|
||||||
|
#define lcd_i2c_address_fdebrander_lcd 0x27 // I2C address of display for FEATURE_LCD_I2C_FDEBRABANDER
|
||||||
|
#define lcd_i2c_address_ydv1_lcd 0x27 // I2C address of display for FEATURE_LCD_YDv1
|
||||||
|
//#define lcd_i2c_address_ydv1_lcd 0x38 // I2C address of display for FEATURE_LCD_YDv1
|
||||||
|
#define lcd_i2c_address_sainsmart_lcd 0x27 // I2C address of display for FEATURE_LCD_SAINSMART_I2C
|
||||||
|
#define hell_pixel_microseconds 4025
|
||||||
|
#define program_memory_limit_consec_spaces 1
|
||||||
|
#define serial_leading_zeros 1 // set to 1 to activate leading zeros in serial numbers (i.e. #1 = 001)
|
||||||
|
#define serial_cut_numbers 0 // set to 1 to activate cut numbers in serial numbers (i.e. #10 = 1T, #19 = 1N)
|
||||||
|
#define go_to_sleep_inactivity_time 10 // minutes - FEATURE_SLEEP
|
||||||
|
#define dim_backlight_inactive_time 5 // minutes - FEATURE_LCD_BACKLIGHT_AUTO_DIM
|
||||||
|
#define default_cmos_super_keyer_iambic_b_timing_percent 33 // use with FEATURE_CMOS_SUPER_KEYER_IAMBIC_B_TIMING; should be between 0 to 99 % (0% = true iambic b;100% = iambic a behavior)
|
||||||
|
#define default_cw_echo_timing_factor 1.75 // "factory default" setting
|
||||||
|
#define default_autospace_timing_factor 2.0 // "factory default" setting
|
||||||
|
#define winkey_paddle_echo_buffer_decode_timing_factor 0.25
|
||||||
|
#define potentiometer_always_on 0
|
||||||
|
#define ptt_interlock_check_every_ms 100
|
||||||
|
#define ptt_interlock_active_state HIGH
|
||||||
|
#define unknown_cw_character '*'
|
||||||
|
#define cli_paddle_echo_on_at_boot 1
|
||||||
|
#define cli_straight_key_echo_on_at_boot 1
|
||||||
|
#define tx_key_dit_and_dah_pins_active_state HIGH
|
||||||
|
#define tx_key_dit_and_dah_pins_inactive_state LOW
|
||||||
|
#define potentiometer_check_interval_ms 0 //=====150
|
||||||
|
#define potentiometer_reading_threshold 1
|
||||||
|
#define default_paddle_interruption_quiet_time_element_lengths 0
|
||||||
|
#define default_wordsworth_wordspace 6
|
||||||
|
#define default_wordsworth_repetition 1
|
||||||
|
#define serial_program_memory_buffer_size 500
|
||||||
|
#define eeprom_write_time_ms 30000
|
||||||
|
|
||||||
|
#ifdef FEATURE_BUTTONS
|
||||||
|
#define analog_buttons_number_of_buttons 4
|
||||||
|
#define analog_buttons_r1 10
|
||||||
|
#define analog_buttons_r2 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#if defined(FEATURE_BUTTONS) && !defined(FEATURE_PS2_KEYBOARD) && !defined(FEATURE_USB_KEYBOARD) && !defined(FEATURE_COMMAND_LINE_INTERFACE) && !defined(FEATURE_WINKEY_EMULATION)
|
||||||
|
#define number_of_memories byte(analog_buttons_number_of_buttons-1)
|
||||||
|
#else
|
||||||
|
#define number_of_memories byte(12)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef FEATURE_CAPACITIVE_PADDLE_PINS
|
||||||
|
#define capacitance_threshold 2
|
||||||
|
#endif //FEATURE_CAPACITIVE_PADDLE_PINS
|
||||||
|
|
||||||
|
#ifdef FEATURE_LED_RING
|
||||||
|
#define led_ring_low_limit 10
|
||||||
|
#define led_ring_high_limit 50
|
||||||
|
#endif //FEATURE_LED_RING
|
||||||
|
|
||||||
|
#ifdef FEATURE_QLF
|
||||||
|
#define qlf_dit_max 125
|
||||||
|
#define qlf_dit_min 75
|
||||||
|
#define qlf_dah_max 200
|
||||||
|
#define qlf_dah_min 100
|
||||||
|
#define qlf_on_by_default 0
|
||||||
|
#endif //FEATURE_QLF
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef FEATURE_WINKEY_EMULATION
|
||||||
|
#ifdef OPTION_WINKEY_UCXLOG_9600_BAUD
|
||||||
|
#define WINKEY_DEFAULT_BAUD 9600
|
||||||
|
#else
|
||||||
|
#define WINKEY_DEFAULT_BAUD 1200
|
||||||
|
#endif //OPTION_WINKEY_UCXLOG_9600_BAUD
|
||||||
|
// alter these below to map alternate sidetones for Winkey interface protocol emulation
|
||||||
|
#ifdef OPTION_WINKEY_2_SUPPORT
|
||||||
|
#define WINKEY_SIDETONE_1 3759
|
||||||
|
#define WINKEY_SIDETONE_2 1879
|
||||||
|
#define WINKEY_SIDETONE_3 1252
|
||||||
|
#define WINKEY_SIDETONE_4 940
|
||||||
|
#define WINKEY_SIDETONE_5 752
|
||||||
|
#define WINKEY_SIDETONE_6 625
|
||||||
|
#define WINKEY_SIDETONE_7 535
|
||||||
|
#define WINKEY_SIDETONE_8 469
|
||||||
|
#define WINKEY_SIDETONE_9 417
|
||||||
|
#define WINKEY_SIDETONE_10 375
|
||||||
|
#else //OPTION_WINKEY_2_SUPPORT
|
||||||
|
#define WINKEY_SIDETONE_1 4000
|
||||||
|
#define WINKEY_SIDETONE_2 2000
|
||||||
|
#define WINKEY_SIDETONE_3 1333
|
||||||
|
#define WINKEY_SIDETONE_4 1000
|
||||||
|
#define WINKEY_SIDETONE_5 800
|
||||||
|
#define WINKEY_SIDETONE_6 666
|
||||||
|
#define WINKEY_SIDETONE_7 571
|
||||||
|
#define WINKEY_SIDETONE_8 500
|
||||||
|
#define WINKEY_SIDETONE_9 444
|
||||||
|
#define WINKEY_SIDETONE_10 400
|
||||||
|
#endif //OPTION_WINKEY_2_SUPPORT
|
||||||
|
|
||||||
|
#define WINKEY_1_REPORT_VERSION_NUMBER 10
|
||||||
|
#define WINKEY_2_REPORT_VERSION_NUMBER 23
|
||||||
|
|
||||||
|
// alter these to map to alternate hang time wordspace units
|
||||||
|
#define WINKEY_HANG_TIME_1_0 1.0
|
||||||
|
#define WINKEY_HANG_TIME_1_33 1.33
|
||||||
|
#define WINKEY_HANG_TIME_1_66 1.66
|
||||||
|
#define WINKEY_HANG_TIME_2_0 2.0
|
||||||
|
|
||||||
|
#define WINKEY_RETURN_THIS_FOR_ADMIN_GET_CAL 0x16
|
||||||
|
#define WINKEY_RETURN_THIS_FOR_ADMIN_PADDLE_A2D 0xEE
|
||||||
|
#define WINKEY_RETURN_THIS_FOR_ADMIN_SPEED_A2D 0x00
|
||||||
|
|
||||||
|
#endif //FEATURE_WINKEY_EMULATION
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#define PRIMARY_SERIAL_PORT &Serial
|
||||||
|
#define PRIMARY_SERIAL_PORT_BAUD 115200 // This applies only when the port is in Command Line Interface mode. In Winkey mode it will default to 1200.
|
||||||
|
|
||||||
|
#ifdef FEATURE_COMMAND_LINE_INTERFACE_ON_SECONDARY_PORT
|
||||||
|
#define SECONDARY_SERIAL_PORT &Serial1
|
||||||
|
#define SECONDARY_SERIAL_PORT_BAUD 115200
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#define CW_DECODER_SCREEN_COLUMNS 120 // word wrap at this many columns
|
||||||
|
#define CW_DECODER_SPACE_PRINT_THRESH 4.5 // print space if no tone for this many element lengths
|
||||||
|
#define CW_DECODER_SPACE_DECODE_THRESH 2.0 // invoke character decode if no tone for this many element lengths
|
||||||
|
#define CW_DECODER_NOISE_FILTER 20 // ignore elements shorter than this (mS)
|
||||||
|
|
||||||
|
#define STRAIGHT_KEY_ACTIVE_STATE LOW
|
||||||
|
|
||||||
|
#ifdef FEATURE_DYNAMIC_DAH_TO_DIT_RATIO
|
||||||
|
#define DYNAMIC_DAH_TO_DIT_RATIO_LOWER_LIMIT_WPM 30
|
||||||
|
#define DYNAMIC_DAH_TO_DIT_RATIO_LOWER_LIMIT_RATIO 300 // 300 = 3:1 ratio
|
||||||
|
#define DYNAMIC_DAH_TO_DIT_RATIO_UPPER_LIMIT_WPM 70
|
||||||
|
#define DYNAMIC_DAH_TO_DIT_RATIO_UPPER_LIMIT_RATIO 240 // 240 = 2.4:1 ratio
|
||||||
|
#endif //FEATURE_DYNAMIC_DAH_TO_DIT_RATIO
|
||||||
|
|
||||||
|
#if defined(FEATURE_COMPETITION_COMPRESSION_DETECTION)
|
||||||
|
#define COMPETITION_COMPRESSION_DETECTION_ARRAY_SIZE 16
|
||||||
|
#define COMPETITION_COMPRESSION_DETECTION_TIME_INTERCHAR_LOWER_LIMIT 1
|
||||||
|
#define COMPETITION_COMPRESSION_DETECTION_TIME_INTERCHAR_UPPER_LIMIT 6.0
|
||||||
|
#define COMPETITION_COMPRESSION_DETECTION_AVERAGE_ALARM_THRESHOLD 3.0
|
||||||
|
#endif //FEATURE_COMPETITION_COMPRESSION_DETECTION
|
||||||
|
|
||||||
|
#if defined(FEATURE_SLEEP)
|
||||||
|
#define KEYER_AWAKE_PIN_AWAKE_STATE HIGH
|
||||||
|
#define KEYER_AWAKE_PIN_ASLEEP_STATE LOW
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_LCD_BACKLIGHT_AUTO_DIM)
|
||||||
|
#define keyer_power_led_awake_duty 255 // PWM duty cycle. 0 is 0%, 255 is 100%
|
||||||
|
#define keyer_power_led_asleep_duty 25 // 25 is quite dim. Use 0 for off
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_ETHERNET)
|
||||||
|
// #define FEATURE_ETHERNET_IP {192,168,1,178} // default IP address ("192.168.1.178")
|
||||||
|
// #define FEATURE_ETHERNET_MAC {0xDE,0xAD,0xBE,0xEF,0xFE,0xED}
|
||||||
|
#define FEATURE_ETHERNET_IP {192,168,1,179} // default IP address ("192.168.1.179")
|
||||||
|
#define FEATURE_ETHERNET_MAC {0xDE,0xAD,0xBE,0xEF,0xFE,0xEE}
|
||||||
|
#define FEATURE_ETHERNET_DNS {8,8,8,8}
|
||||||
|
|
||||||
|
#define FEATURE_ETHERNET_GATEWAY {192,168,1,1} // default gateway
|
||||||
|
#define FEATURE_ETHERNET_SUBNET_MASK {255,255,255,0} // default subnet mask
|
||||||
|
#define FEATURE_ETHERNET_WEB_LISTENER_PORT 80
|
||||||
|
#define FEATURE_UDP_SEND_BUFFER_SIZE 128
|
||||||
|
#define FEATURE_UDP_RECEIVE_BUFFER_SIZE 128
|
||||||
|
#endif //FEATURE_ETHERNET
|
||||||
|
|
||||||
|
#define WEB_SERVER_CONTROL_TX_KEY_TIME_LIMIT_SECS 10
|
||||||
|
|
||||||
|
#define FEATURE_INTERNET_LINK_MAX_LINKS 2
|
||||||
|
#define FEATURE_INTERNET_LINK_DEFAULT_RCV_UDP_PORT 8888
|
||||||
|
#define FEATURE_INTERNET_LINK_BUFFER_TIME_MS 500
|
||||||
|
|
||||||
|
#if defined(FEATURE_4x4_KEYPAD)|| defined (FEATURE_3x4_KEYPAD)
|
||||||
|
#define KEYPAD_ROWS 4 //KeyPad Rows
|
||||||
|
#if defined(FEATURE_4x4_KEYPAD)
|
||||||
|
#define KEYPAD_COLS 4 //keypad Columns
|
||||||
|
#else
|
||||||
|
#define KEYPAD_COLS 3
|
||||||
|
#endif
|
||||||
|
#define mem1 0 //Memory numbers for Keypad: Actual memory numbers start with "0"
|
||||||
|
#define mem2 1
|
||||||
|
#define mem3 2
|
||||||
|
#define mem4 3
|
||||||
|
#define mem5 4
|
||||||
|
#define mem6 5
|
||||||
|
#define mem7 6
|
||||||
|
#define mem8 7
|
||||||
|
#define mem9 8
|
||||||
|
#define mem10 9
|
||||||
|
#define mem11 10
|
||||||
|
#define mem12 11
|
||||||
|
#endif //#if defined(FEATURE_4x4_KEYPAD)|| defined (FEATURE_3x4_KEYPAD)
|
||||||
|
|
||||||
|
#define initial_sidetone_mode 1 // Sidetone mode, 0=OFF, 1=ON, 2=PADDLE_ONLY
|
||||||
|
|
||||||
|
#define sd_card_spi_ss_line 4
|
||||||
|
|
||||||
|
|
||||||
|
#if defined(OPTION_DFROBOT_LCD_COMMAND_BUTTONS)
|
||||||
|
|
||||||
|
// For V1.1 board use these values
|
||||||
|
#define dfrobot_btnRIGHT_analog 50
|
||||||
|
#define dfrobot_btnUP_analog 250
|
||||||
|
#define dfrobot_btnDOWN_analog 450
|
||||||
|
#define dfrobot_btnLEFT_analog 650
|
||||||
|
#define dfrobot_btnSELECT_analog 850
|
||||||
|
|
||||||
|
// For V1.0 board use these values
|
||||||
|
// #define dfrobot_btnRIGHT_analog 50
|
||||||
|
// #define dfrobot_btnUP_analog 195
|
||||||
|
// #define dfrobot_btnDOWN_analog 380
|
||||||
|
// #define dfrobot_btnLEFT_analog 555
|
||||||
|
// #define dfrobot_btnSELECT_analog 790
|
||||||
|
|
||||||
|
// button to memory mappings (0 = command button, 1 = memory 1, 2 = memory 2, etc.)
|
||||||
|
#define dfrobot_btnRIGHT 2
|
||||||
|
#define dfrobot_btnUP 1
|
||||||
|
#define dfrobot_btnDOWN 3
|
||||||
|
#define dfrobot_btnLEFT 4
|
||||||
|
#define dfrobot_btnSELECT 0
|
||||||
|
#define dfrobot_btnNONE 255 // do not change
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#define sequencer_pins_active_state HIGH
|
||||||
|
#define sequencer_pins_inactive_state LOW
|
||||||
|
#define ptt_line_active_state HIGH
|
||||||
|
#define ptt_line_inactive_state LOW
|
||||||
|
#define tx_key_line_active_state HIGH
|
||||||
|
#define tx_key_line_inactive_state LOW
|
||||||
|
#define ptt_input_pin_active_state LOW
|
||||||
|
#define ptt_input_pin_inactive_state HIGH
|
||||||
|
#define tx_inhibit_pin_active_state LOW
|
||||||
|
#define tx_inhibit_pin_inactive_state HIGH
|
||||||
|
#define tx_pause_pin_active_state LOW
|
||||||
|
#define tx_pause_pin_inactive_state HIGH
|
||||||
|
#define sidetone_line_active_state HIGH
|
||||||
|
#define sidetone_line_inactive_state LOW
|
||||||
|
|
||||||
|
#if defined(ARDUINO_MAPLE_MINI)
|
||||||
|
#define button_value_factor 4095
|
||||||
|
#else
|
||||||
|
#define button_value_factor 1023
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define farnsworth_timing_calibration 1.15
|
||||||
|
|
||||||
|
#define sidetone_volume_low_limit 10
|
||||||
|
#define sidetone_volume_high_limit 500
|
||||||
|
|
||||||
|
#define custom_startup_field "your custom text here" // an example could be callsign and name, eg. "AB1XYZ Bob", (or "Worlds best operator" which requires a 20 column display), string length shouldo be no more than the number of columns on the display
|
||||||
|
|
||||||
|
#define command_mode_acknowledgement_character 'E'
|
||||||
|
|
||||||
|
#if defined(FEATURE_COMMAND_MODE_ENHANCED_CMD_ACKNOWLEDGEMENT)
|
||||||
|
#define command_a_iambic_a "A"
|
||||||
|
#define command_b_iambic_b "B"
|
||||||
|
#define command_c_single_paddle "SINGLE"
|
||||||
|
#define command_d_ultimatic "ULT"
|
||||||
|
#define command_h_weight_dit_dah_ratio_default "R"
|
||||||
|
#define command_i_tx_on "TX ON"
|
||||||
|
#define command_i_tx_off "TX OFF"
|
||||||
|
#define command_k_dit_dah_buffers_on "ON"
|
||||||
|
#define command_k_dit_dah_buffers_off "OFF"
|
||||||
|
#define command_n_paddle_reverse "REV"
|
||||||
|
#define command_n_paddle_normal "NORM"
|
||||||
|
#define command_o_sidetone_off "ST OFF"
|
||||||
|
#define command_o_sidetone_paddle_only "ST PD ONLY"
|
||||||
|
#define command_o_sidetone_on "ST ON"
|
||||||
|
#define command_t_tune_mode "TUNE"
|
||||||
|
#define command_v_potentiometer_on "POT ON"
|
||||||
|
#define command_v_potentiometer_off "POT OFF"
|
||||||
|
|
||||||
|
#define command_error "ERR"
|
||||||
|
|
||||||
|
#endif //FEATURE_COMMAND_MODE_ENHANCED_CMD_ACKNOWLEDGEMENT
|
318
k3ng_keyer/keyer_settings_mortty_so2r_with_potentiometer.h
Executable file
318
k3ng_keyer/keyer_settings_mortty_so2r_with_potentiometer.h
Executable file
|
@ -0,0 +1,318 @@
|
||||||
|
// Initial and hardcoded settings
|
||||||
|
#define initial_speed_wpm 26 // "factory default" keyer speed setting
|
||||||
|
#define initial_command_mode_speed_wpm 20 // "factory default" command mode speed setting
|
||||||
|
#define initial_sidetone_freq 600 // "factory default" sidetone frequency setting
|
||||||
|
#define sidetone_hz_limit_low 299
|
||||||
|
#define sidetone_hz_limit_high 2001
|
||||||
|
#define hz_high_beep 1500 // frequency in hertz of high beep
|
||||||
|
#define hz_low_beep 400 // frequency in hertz of low beep
|
||||||
|
#define initial_dah_to_dit_ratio 300 // 300 = 3 / normal 3:1 ratio
|
||||||
|
#define initial_ptt_lead_time_tx1 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx1 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx2 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx2 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx3 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx3 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx4 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx4 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx5 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx5 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx6 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx6 10 // PTT tail time in mS
|
||||||
|
#define initial_qrss_dit_length 1 // QRSS dit length in seconds
|
||||||
|
#define initial_pot_wpm_low_value 13 // Potentiometer WPM fully CCW
|
||||||
|
#define initial_pot_wpm_high_value 35 // Potentiometer WPM fully CW
|
||||||
|
#define wpm_limit_low 5
|
||||||
|
#define wpm_limit_high 60
|
||||||
|
#define potentiometer_change_threshold 0.9 // don't change the keyer speed until pot wpm has changed more than this
|
||||||
|
#define send_buffer_size 150
|
||||||
|
#define default_length_letterspace 3
|
||||||
|
#define default_length_wordspace 7
|
||||||
|
#define default_keying_compensation 0 // number of milliseconds to extend all dits and dahs - for QSK on boatanchors
|
||||||
|
#define default_first_extension_time 0 // number of milliseconds to extend first sent dit or dah
|
||||||
|
#define default_pot_full_scale_reading 1023
|
||||||
|
#define default_weighting 50 // 50 = weighting factor of 1 (normal)
|
||||||
|
#define default_ptt_hang_time_wordspace_units 0.0
|
||||||
|
#define winkey_c0_wait_time 1 // the number of milliseconds to wait to send 0xc0 byte after send buffer has been sent
|
||||||
|
#define winkey_command_timeout_ms 5000
|
||||||
|
#define winkey_discard_bytes_startup 3 // this is used if OPTION_WINKEY_DISCARD_BYTES_AT_STARTUP is enabled above
|
||||||
|
#define winkey_xoff_threshold 20 // the number of chars in the buffer when we begin sending XOFFs
|
||||||
|
#define winkey_xon_threshold 10 // the number of chars in the buffer below which we deactivate XOFF
|
||||||
|
#define default_memory_repeat_time 3000 // time in milliseconds
|
||||||
|
#define LCD_COLUMNS 16
|
||||||
|
#define LCD_ROWS 2
|
||||||
|
#define lcd_i2c_address_mathertel_PCF8574 0x27 // I2C address of display for FEATURE_LCD_MATHERTEL_PCF8574
|
||||||
|
#define lcd_i2c_address_fdebrander_lcd 0x27 // I2C address of display for FEATURE_LCD_I2C_FDEBRABANDER
|
||||||
|
#define lcd_i2c_address_ydv1_lcd 0x27 // I2C address of display for FEATURE_LCD_YDv1
|
||||||
|
//#define lcd_i2c_address_ydv1_lcd 0x38 // I2C address of display for FEATURE_LCD_YDv1
|
||||||
|
#define lcd_i2c_address_sainsmart_lcd 0x27 // I2C address of display for FEATURE_LCD_SAINSMART_I2C
|
||||||
|
#define hell_pixel_microseconds 4025
|
||||||
|
#define program_memory_limit_consec_spaces 1
|
||||||
|
#define serial_leading_zeros 1 // set to 1 to activate leading zeros in serial numbers (i.e. #1 = 001)
|
||||||
|
#define serial_cut_numbers 0 // set to 1 to activate cut numbers in serial numbers (i.e. #10 = 1T, #19 = 1N)
|
||||||
|
#define go_to_sleep_inactivity_time 10 // minutes - FEATURE_SLEEP
|
||||||
|
#define dim_backlight_inactive_time 5 // minutes - FEATURE_LCD_BACKLIGHT_AUTO_DIM
|
||||||
|
#define default_cmos_super_keyer_iambic_b_timing_percent 33 // use with FEATURE_CMOS_SUPER_KEYER_IAMBIC_B_TIMING; should be between 0 to 99 % (0% = true iambic b;100% = iambic a behavior)
|
||||||
|
#define default_cw_echo_timing_factor 1.75 // "factory default" setting
|
||||||
|
#define default_autospace_timing_factor 2.0 // "factory default" setting
|
||||||
|
#define winkey_paddle_echo_buffer_decode_timing_factor 0.25
|
||||||
|
#define potentiometer_always_on 0
|
||||||
|
#define ptt_interlock_check_every_ms 100
|
||||||
|
#define ptt_interlock_active_state HIGH
|
||||||
|
#define unknown_cw_character '*'
|
||||||
|
#define cli_paddle_echo_on_at_boot 1
|
||||||
|
#define cli_straight_key_echo_on_at_boot 1
|
||||||
|
#define tx_key_dit_and_dah_pins_active_state HIGH
|
||||||
|
#define tx_key_dit_and_dah_pins_inactive_state LOW
|
||||||
|
#define potentiometer_check_interval_ms 0 //=====150
|
||||||
|
#define potentiometer_reading_threshold 1
|
||||||
|
#define default_paddle_interruption_quiet_time_element_lengths 0
|
||||||
|
#define default_wordsworth_wordspace 6
|
||||||
|
#define default_wordsworth_repetition 1
|
||||||
|
#define serial_program_memory_buffer_size 500
|
||||||
|
#define eeprom_write_time_ms 30000
|
||||||
|
|
||||||
|
#ifdef FEATURE_BUTTONS
|
||||||
|
#define analog_buttons_number_of_buttons 4
|
||||||
|
#define analog_buttons_r1 10
|
||||||
|
#define analog_buttons_r2 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#if defined(FEATURE_BUTTONS) && !defined(FEATURE_PS2_KEYBOARD) && !defined(FEATURE_USB_KEYBOARD) && !defined(FEATURE_COMMAND_LINE_INTERFACE) && !defined(FEATURE_WINKEY_EMULATION)
|
||||||
|
#define number_of_memories byte(analog_buttons_number_of_buttons-1)
|
||||||
|
#else
|
||||||
|
#define number_of_memories byte(12)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef FEATURE_CAPACITIVE_PADDLE_PINS
|
||||||
|
#define capacitance_threshold 2
|
||||||
|
#endif //FEATURE_CAPACITIVE_PADDLE_PINS
|
||||||
|
|
||||||
|
#ifdef FEATURE_LED_RING
|
||||||
|
#define led_ring_low_limit 10
|
||||||
|
#define led_ring_high_limit 50
|
||||||
|
#endif //FEATURE_LED_RING
|
||||||
|
|
||||||
|
#ifdef FEATURE_QLF
|
||||||
|
#define qlf_dit_max 125
|
||||||
|
#define qlf_dit_min 75
|
||||||
|
#define qlf_dah_max 200
|
||||||
|
#define qlf_dah_min 100
|
||||||
|
#define qlf_on_by_default 0
|
||||||
|
#endif //FEATURE_QLF
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef FEATURE_WINKEY_EMULATION
|
||||||
|
#ifdef OPTION_WINKEY_UCXLOG_9600_BAUD
|
||||||
|
#define WINKEY_DEFAULT_BAUD 9600
|
||||||
|
#else
|
||||||
|
#define WINKEY_DEFAULT_BAUD 1200
|
||||||
|
#endif //OPTION_WINKEY_UCXLOG_9600_BAUD
|
||||||
|
// alter these below to map alternate sidetones for Winkey interface protocol emulation
|
||||||
|
#ifdef OPTION_WINKEY_2_SUPPORT
|
||||||
|
#define WINKEY_SIDETONE_1 3759
|
||||||
|
#define WINKEY_SIDETONE_2 1879
|
||||||
|
#define WINKEY_SIDETONE_3 1252
|
||||||
|
#define WINKEY_SIDETONE_4 940
|
||||||
|
#define WINKEY_SIDETONE_5 752
|
||||||
|
#define WINKEY_SIDETONE_6 625
|
||||||
|
#define WINKEY_SIDETONE_7 535
|
||||||
|
#define WINKEY_SIDETONE_8 469
|
||||||
|
#define WINKEY_SIDETONE_9 417
|
||||||
|
#define WINKEY_SIDETONE_10 375
|
||||||
|
#else //OPTION_WINKEY_2_SUPPORT
|
||||||
|
#define WINKEY_SIDETONE_1 4000
|
||||||
|
#define WINKEY_SIDETONE_2 2000
|
||||||
|
#define WINKEY_SIDETONE_3 1333
|
||||||
|
#define WINKEY_SIDETONE_4 1000
|
||||||
|
#define WINKEY_SIDETONE_5 800
|
||||||
|
#define WINKEY_SIDETONE_6 666
|
||||||
|
#define WINKEY_SIDETONE_7 571
|
||||||
|
#define WINKEY_SIDETONE_8 500
|
||||||
|
#define WINKEY_SIDETONE_9 444
|
||||||
|
#define WINKEY_SIDETONE_10 400
|
||||||
|
#endif //OPTION_WINKEY_2_SUPPORT
|
||||||
|
|
||||||
|
#define WINKEY_1_REPORT_VERSION_NUMBER 10
|
||||||
|
#define WINKEY_2_REPORT_VERSION_NUMBER 23
|
||||||
|
|
||||||
|
// alter these to map to alternate hang time wordspace units
|
||||||
|
#define WINKEY_HANG_TIME_1_0 1.0
|
||||||
|
#define WINKEY_HANG_TIME_1_33 1.33
|
||||||
|
#define WINKEY_HANG_TIME_1_66 1.66
|
||||||
|
#define WINKEY_HANG_TIME_2_0 2.0
|
||||||
|
|
||||||
|
#define WINKEY_RETURN_THIS_FOR_ADMIN_GET_CAL 0x16
|
||||||
|
#define WINKEY_RETURN_THIS_FOR_ADMIN_PADDLE_A2D 0xEE
|
||||||
|
#define WINKEY_RETURN_THIS_FOR_ADMIN_SPEED_A2D 0x00
|
||||||
|
|
||||||
|
#endif //FEATURE_WINKEY_EMULATION
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#define PRIMARY_SERIAL_PORT &Serial
|
||||||
|
#define PRIMARY_SERIAL_PORT_BAUD 115200 // This applies only when the port is in Command Line Interface mode. In Winkey mode it will default to 1200.
|
||||||
|
|
||||||
|
#ifdef FEATURE_COMMAND_LINE_INTERFACE_ON_SECONDARY_PORT
|
||||||
|
#define SECONDARY_SERIAL_PORT &Serial1
|
||||||
|
#define SECONDARY_SERIAL_PORT_BAUD 115200
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#define CW_DECODER_SCREEN_COLUMNS 120 // word wrap at this many columns
|
||||||
|
#define CW_DECODER_SPACE_PRINT_THRESH 4.5 // print space if no tone for this many element lengths
|
||||||
|
#define CW_DECODER_SPACE_DECODE_THRESH 2.0 // invoke character decode if no tone for this many element lengths
|
||||||
|
#define CW_DECODER_NOISE_FILTER 20 // ignore elements shorter than this (mS)
|
||||||
|
|
||||||
|
#define STRAIGHT_KEY_ACTIVE_STATE LOW
|
||||||
|
|
||||||
|
#ifdef FEATURE_DYNAMIC_DAH_TO_DIT_RATIO
|
||||||
|
#define DYNAMIC_DAH_TO_DIT_RATIO_LOWER_LIMIT_WPM 30
|
||||||
|
#define DYNAMIC_DAH_TO_DIT_RATIO_LOWER_LIMIT_RATIO 300 // 300 = 3:1 ratio
|
||||||
|
#define DYNAMIC_DAH_TO_DIT_RATIO_UPPER_LIMIT_WPM 70
|
||||||
|
#define DYNAMIC_DAH_TO_DIT_RATIO_UPPER_LIMIT_RATIO 240 // 240 = 2.4:1 ratio
|
||||||
|
#endif //FEATURE_DYNAMIC_DAH_TO_DIT_RATIO
|
||||||
|
|
||||||
|
#if defined(FEATURE_COMPETITION_COMPRESSION_DETECTION)
|
||||||
|
#define COMPETITION_COMPRESSION_DETECTION_ARRAY_SIZE 16
|
||||||
|
#define COMPETITION_COMPRESSION_DETECTION_TIME_INTERCHAR_LOWER_LIMIT 1
|
||||||
|
#define COMPETITION_COMPRESSION_DETECTION_TIME_INTERCHAR_UPPER_LIMIT 6.0
|
||||||
|
#define COMPETITION_COMPRESSION_DETECTION_AVERAGE_ALARM_THRESHOLD 3.0
|
||||||
|
#endif //FEATURE_COMPETITION_COMPRESSION_DETECTION
|
||||||
|
|
||||||
|
#if defined(FEATURE_SLEEP)
|
||||||
|
#define KEYER_AWAKE_PIN_AWAKE_STATE HIGH
|
||||||
|
#define KEYER_AWAKE_PIN_ASLEEP_STATE LOW
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_LCD_BACKLIGHT_AUTO_DIM)
|
||||||
|
#define keyer_power_led_awake_duty 255 // PWM duty cycle. 0 is 0%, 255 is 100%
|
||||||
|
#define keyer_power_led_asleep_duty 25 // 25 is quite dim. Use 0 for off
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_ETHERNET)
|
||||||
|
// #define FEATURE_ETHERNET_IP {192,168,1,178} // default IP address ("192.168.1.178")
|
||||||
|
// #define FEATURE_ETHERNET_MAC {0xDE,0xAD,0xBE,0xEF,0xFE,0xED}
|
||||||
|
#define FEATURE_ETHERNET_IP {192,168,1,179} // default IP address ("192.168.1.179")
|
||||||
|
#define FEATURE_ETHERNET_MAC {0xDE,0xAD,0xBE,0xEF,0xFE,0xEE}
|
||||||
|
#define FEATURE_ETHERNET_DNS {8,8,8,8}
|
||||||
|
|
||||||
|
#define FEATURE_ETHERNET_GATEWAY {192,168,1,1} // default gateway
|
||||||
|
#define FEATURE_ETHERNET_SUBNET_MASK {255,255,255,0} // default subnet mask
|
||||||
|
#define FEATURE_ETHERNET_WEB_LISTENER_PORT 80
|
||||||
|
#define FEATURE_UDP_SEND_BUFFER_SIZE 128
|
||||||
|
#define FEATURE_UDP_RECEIVE_BUFFER_SIZE 128
|
||||||
|
#endif //FEATURE_ETHERNET
|
||||||
|
|
||||||
|
#define WEB_SERVER_CONTROL_TX_KEY_TIME_LIMIT_SECS 10
|
||||||
|
|
||||||
|
#define FEATURE_INTERNET_LINK_MAX_LINKS 2
|
||||||
|
#define FEATURE_INTERNET_LINK_DEFAULT_RCV_UDP_PORT 8888
|
||||||
|
#define FEATURE_INTERNET_LINK_BUFFER_TIME_MS 500
|
||||||
|
|
||||||
|
#if defined(FEATURE_4x4_KEYPAD)|| defined (FEATURE_3x4_KEYPAD)
|
||||||
|
#define KEYPAD_ROWS 4 //KeyPad Rows
|
||||||
|
#if defined(FEATURE_4x4_KEYPAD)
|
||||||
|
#define KEYPAD_COLS 4 //keypad Columns
|
||||||
|
#else
|
||||||
|
#define KEYPAD_COLS 3
|
||||||
|
#endif
|
||||||
|
#define mem1 0 //Memory numbers for Keypad: Actual memory numbers start with "0"
|
||||||
|
#define mem2 1
|
||||||
|
#define mem3 2
|
||||||
|
#define mem4 3
|
||||||
|
#define mem5 4
|
||||||
|
#define mem6 5
|
||||||
|
#define mem7 6
|
||||||
|
#define mem8 7
|
||||||
|
#define mem9 8
|
||||||
|
#define mem10 9
|
||||||
|
#define mem11 10
|
||||||
|
#define mem12 11
|
||||||
|
#endif //#if defined(FEATURE_4x4_KEYPAD)|| defined (FEATURE_3x4_KEYPAD)
|
||||||
|
|
||||||
|
#define initial_sidetone_mode 1 // Sidetone mode, 0=OFF, 1=ON, 2=PADDLE_ONLY
|
||||||
|
|
||||||
|
#define sd_card_spi_ss_line 4
|
||||||
|
|
||||||
|
|
||||||
|
#if defined(OPTION_DFROBOT_LCD_COMMAND_BUTTONS)
|
||||||
|
|
||||||
|
// For V1.1 board use these values
|
||||||
|
#define dfrobot_btnRIGHT_analog 50
|
||||||
|
#define dfrobot_btnUP_analog 250
|
||||||
|
#define dfrobot_btnDOWN_analog 450
|
||||||
|
#define dfrobot_btnLEFT_analog 650
|
||||||
|
#define dfrobot_btnSELECT_analog 850
|
||||||
|
|
||||||
|
// For V1.0 board use these values
|
||||||
|
// #define dfrobot_btnRIGHT_analog 50
|
||||||
|
// #define dfrobot_btnUP_analog 195
|
||||||
|
// #define dfrobot_btnDOWN_analog 380
|
||||||
|
// #define dfrobot_btnLEFT_analog 555
|
||||||
|
// #define dfrobot_btnSELECT_analog 790
|
||||||
|
|
||||||
|
// button to memory mappings (0 = command button, 1 = memory 1, 2 = memory 2, etc.)
|
||||||
|
#define dfrobot_btnRIGHT 2
|
||||||
|
#define dfrobot_btnUP 1
|
||||||
|
#define dfrobot_btnDOWN 3
|
||||||
|
#define dfrobot_btnLEFT 4
|
||||||
|
#define dfrobot_btnSELECT 0
|
||||||
|
#define dfrobot_btnNONE 255 // do not change
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#define sequencer_pins_active_state HIGH
|
||||||
|
#define sequencer_pins_inactive_state LOW
|
||||||
|
#define ptt_line_active_state HIGH
|
||||||
|
#define ptt_line_inactive_state LOW
|
||||||
|
#define tx_key_line_active_state HIGH
|
||||||
|
#define tx_key_line_inactive_state LOW
|
||||||
|
#define ptt_input_pin_active_state LOW
|
||||||
|
#define ptt_input_pin_inactive_state HIGH
|
||||||
|
#define tx_inhibit_pin_active_state LOW
|
||||||
|
#define tx_inhibit_pin_inactive_state HIGH
|
||||||
|
#define tx_pause_pin_active_state LOW
|
||||||
|
#define tx_pause_pin_inactive_state HIGH
|
||||||
|
#define sidetone_line_active_state HIGH
|
||||||
|
#define sidetone_line_inactive_state LOW
|
||||||
|
|
||||||
|
#if defined(ARDUINO_MAPLE_MINI)
|
||||||
|
#define button_value_factor 4095
|
||||||
|
#else
|
||||||
|
#define button_value_factor 1023
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define farnsworth_timing_calibration 1.15
|
||||||
|
|
||||||
|
#define sidetone_volume_low_limit 10
|
||||||
|
#define sidetone_volume_high_limit 500
|
||||||
|
|
||||||
|
#define custom_startup_field "your custom text here" // an example could be callsign and name, eg. "AB1XYZ Bob", (or "Worlds best operator" which requires a 20 column display), string length shouldo be no more than the number of columns on the display
|
||||||
|
|
||||||
|
#define command_mode_acknowledgement_character 'E'
|
||||||
|
|
||||||
|
#if defined(FEATURE_COMMAND_MODE_ENHANCED_CMD_ACKNOWLEDGEMENT)
|
||||||
|
#define command_a_iambic_a "A"
|
||||||
|
#define command_b_iambic_b "B"
|
||||||
|
#define command_c_single_paddle "SINGLE"
|
||||||
|
#define command_d_ultimatic "ULT"
|
||||||
|
#define command_h_weight_dit_dah_ratio_default "R"
|
||||||
|
#define command_i_tx_on "TX ON"
|
||||||
|
#define command_i_tx_off "TX OFF"
|
||||||
|
#define command_k_dit_dah_buffers_on "ON"
|
||||||
|
#define command_k_dit_dah_buffers_off "OFF"
|
||||||
|
#define command_n_paddle_reverse "REV"
|
||||||
|
#define command_n_paddle_normal "NORM"
|
||||||
|
#define command_o_sidetone_off "ST OFF"
|
||||||
|
#define command_o_sidetone_paddle_only "ST PD ONLY"
|
||||||
|
#define command_o_sidetone_on "ST ON"
|
||||||
|
#define command_t_tune_mode "TUNE"
|
||||||
|
#define command_v_potentiometer_on "POT ON"
|
||||||
|
#define command_v_potentiometer_off "POT OFF"
|
||||||
|
|
||||||
|
#define command_error "ERR"
|
||||||
|
|
||||||
|
#endif //FEATURE_COMMAND_MODE_ENHANCED_CMD_ACKNOWLEDGEMENT
|
309
k3ng_keyer/keyer_settings_nanokeyer_rev_b.h
Executable file
309
k3ng_keyer/keyer_settings_nanokeyer_rev_b.h
Executable file
|
@ -0,0 +1,309 @@
|
||||||
|
// Initial and hardcoded settings
|
||||||
|
#define initial_speed_wpm 26 // "factory default" keyer speed setting
|
||||||
|
#define initial_command_mode_speed_wpm 20 // "factory default" command mode speed setting
|
||||||
|
#define initial_sidetone_freq 600 // "factory default" sidetone frequency setting
|
||||||
|
#define sidetone_hz_limit_low 299
|
||||||
|
#define sidetone_hz_limit_high 2001
|
||||||
|
#define hz_high_beep 1500 // frequency in hertz of high beep
|
||||||
|
#define hz_low_beep 400 // frequency in hertz of low beep
|
||||||
|
#define initial_dah_to_dit_ratio 300 // 300 = 3 / normal 3:1 ratio
|
||||||
|
#define initial_ptt_lead_time_tx1 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx1 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx2 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx2 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx3 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx3 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx4 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx4 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx5 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx5 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx6 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx6 10 // PTT tail time in mS
|
||||||
|
#define initial_qrss_dit_length 1 // QRSS dit length in seconds
|
||||||
|
#define initial_pot_wpm_low_value 13 // Potentiometer WPM fully CCW
|
||||||
|
#define initial_pot_wpm_high_value 35 // Potentiometer WPM fully CW
|
||||||
|
#define wpm_limit_low 5
|
||||||
|
#define wpm_limit_high 60
|
||||||
|
#define potentiometer_change_threshold 0.9 // don't change the keyer speed until pot wpm has changed more than this
|
||||||
|
#define send_buffer_size 150
|
||||||
|
#define default_length_letterspace 3
|
||||||
|
#define default_length_wordspace 7
|
||||||
|
#define default_keying_compensation 0 // number of milliseconds to extend all dits and dahs - for QSK on boatanchors
|
||||||
|
#define default_first_extension_time 0 // number of milliseconds to extend first sent dit or dah
|
||||||
|
#define default_pot_full_scale_reading 1023
|
||||||
|
#define default_weighting 50 // 50 = weighting factor of 1 (normal)
|
||||||
|
#define default_ptt_hang_time_wordspace_units 0.0
|
||||||
|
#define winkey_c0_wait_time 1 // the number of milliseconds to wait to send 0xc0 byte after send buffer has been sent
|
||||||
|
#define winkey_command_timeout_ms 5000
|
||||||
|
#define winkey_discard_bytes_startup 3 // this is used if OPTION_WINKEY_DISCARD_BYTES_AT_STARTUP is enabled above
|
||||||
|
#define winkey_xoff_threshold 20 // the number of chars in the buffer when we begin sending XOFFs
|
||||||
|
#define winkey_xon_threshold 10 // the number of chars in the buffer below which we deactivate XOFF
|
||||||
|
#define default_memory_repeat_time 3000 // time in milliseconds
|
||||||
|
#define LCD_COLUMNS 16
|
||||||
|
#define LCD_ROWS 2
|
||||||
|
#define lcd_i2c_address_mathertel_PCF8574 0x27 // I2C address of display for FEATURE_LCD_MATHERTEL_PCF8574
|
||||||
|
#define lcd_i2c_address_fdebrander_lcd 0x27 // I2C address of display for FEATURE_LCD_I2C_FDEBRABANDER
|
||||||
|
#define lcd_i2c_address_ydv1_lcd 0x27 // I2C address of display for FEATURE_LCD_YDv1
|
||||||
|
//#define lcd_i2c_address_ydv1_lcd 0x38 // I2C address of display for FEATURE_LCD_YDv1
|
||||||
|
#define lcd_i2c_address_sainsmart_lcd 0x27 // I2C address of display for FEATURE_LCD_SAINSMART_I2C
|
||||||
|
#define hell_pixel_microseconds 4025
|
||||||
|
#define program_memory_limit_consec_spaces 1
|
||||||
|
#define serial_leading_zeros 1 // set to 1 to activate leading zeros in serial numbers (i.e. #1 = 001)
|
||||||
|
#define serial_cut_numbers 0 // set to 1 to activate cut numbers in serial numbers (i.e. #10 = 1T, #19 = 1N)
|
||||||
|
#define go_to_sleep_inactivity_time 10 // minutes - FEATURE_SLEEP
|
||||||
|
#define dim_backlight_inactive_time 5 // minutes - FEATURE_LCD_BACKLIGHT_AUTO_DIM
|
||||||
|
#define default_cmos_super_keyer_iambic_b_timing_percent 33 // use with FEATURE_CMOS_SUPER_KEYER_IAMBIC_B_TIMING; should be between 0 to 99 % (0% = true iambic b;100% = iambic a behavior)
|
||||||
|
#define default_cw_echo_timing_factor 1.75 // "factory default" setting
|
||||||
|
#define default_autospace_timing_factor 2.0 // "factory default" setting
|
||||||
|
#define winkey_paddle_echo_buffer_decode_timing_factor 0.25
|
||||||
|
#define potentiometer_always_on 0
|
||||||
|
#define ptt_interlock_check_every_ms 100
|
||||||
|
#define ptt_interlock_active_state HIGH
|
||||||
|
#define unknown_cw_character '*'
|
||||||
|
#define cli_paddle_echo_on_at_boot 1
|
||||||
|
#define cli_straight_key_echo_on_at_boot 1
|
||||||
|
#define tx_key_dit_and_dah_pins_active_state HIGH
|
||||||
|
#define tx_key_dit_and_dah_pins_inactive_state LOW
|
||||||
|
#define potentiometer_check_interval_ms 150
|
||||||
|
#define potentiometer_reading_threshold 1
|
||||||
|
#define default_paddle_interruption_quiet_time_element_lengths 0
|
||||||
|
#define default_wordsworth_wordspace 6
|
||||||
|
#define default_wordsworth_repetition 1
|
||||||
|
#define serial_program_memory_buffer_size 500
|
||||||
|
#define eeprom_write_time_ms 30000
|
||||||
|
|
||||||
|
#ifdef FEATURE_BUTTONS
|
||||||
|
#define analog_buttons_number_of_buttons 4
|
||||||
|
#define analog_buttons_r1 10
|
||||||
|
#define analog_buttons_r2 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#if defined(FEATURE_BUTTONS) && !defined(FEATURE_PS2_KEYBOARD) && !defined(FEATURE_USB_KEYBOARD) && !defined(FEATURE_COMMAND_LINE_INTERFACE) && !defined(FEATURE_WINKEY_EMULATION)
|
||||||
|
#define number_of_memories byte(analog_buttons_number_of_buttons-1)
|
||||||
|
#else
|
||||||
|
#define number_of_memories byte(3) //12
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef FEATURE_CAPACITIVE_PADDLE_PINS
|
||||||
|
#define capacitance_threshold 2
|
||||||
|
#endif //FEATURE_CAPACITIVE_PADDLE_PINS
|
||||||
|
|
||||||
|
#ifdef FEATURE_LED_RING
|
||||||
|
#define led_ring_low_limit 10
|
||||||
|
#define led_ring_high_limit 50
|
||||||
|
#endif //FEATURE_LED_RING
|
||||||
|
|
||||||
|
#ifdef FEATURE_QLF
|
||||||
|
#define qlf_dit_max 125
|
||||||
|
#define qlf_dit_min 75
|
||||||
|
#define qlf_dah_max 200
|
||||||
|
#define qlf_dah_min 100
|
||||||
|
#define qlf_on_by_default 0
|
||||||
|
#endif //FEATURE_QLF
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef FEATURE_WINKEY_EMULATION
|
||||||
|
#ifdef OPTION_WINKEY_UCXLOG_9600_BAUD
|
||||||
|
#define WINKEY_DEFAULT_BAUD 9600
|
||||||
|
#else
|
||||||
|
#define WINKEY_DEFAULT_BAUD 1200
|
||||||
|
#endif //OPTION_WINKEY_UCXLOG_9600_BAUD
|
||||||
|
// alter these below to map alternate sidetones for Winkey interface protocol emulation
|
||||||
|
#ifdef OPTION_WINKEY_2_SUPPORT
|
||||||
|
#define WINKEY_SIDETONE_1 3759
|
||||||
|
#define WINKEY_SIDETONE_2 1879
|
||||||
|
#define WINKEY_SIDETONE_3 1252
|
||||||
|
#define WINKEY_SIDETONE_4 940
|
||||||
|
#define WINKEY_SIDETONE_5 752
|
||||||
|
#define WINKEY_SIDETONE_6 625
|
||||||
|
#define WINKEY_SIDETONE_7 535
|
||||||
|
#define WINKEY_SIDETONE_8 469
|
||||||
|
#define WINKEY_SIDETONE_9 417
|
||||||
|
#define WINKEY_SIDETONE_10 375
|
||||||
|
#else //OPTION_WINKEY_2_SUPPORT
|
||||||
|
#define WINKEY_SIDETONE_1 4000
|
||||||
|
#define WINKEY_SIDETONE_2 2000
|
||||||
|
#define WINKEY_SIDETONE_3 1333
|
||||||
|
#define WINKEY_SIDETONE_4 1000
|
||||||
|
#define WINKEY_SIDETONE_5 800
|
||||||
|
#define WINKEY_SIDETONE_6 666
|
||||||
|
#define WINKEY_SIDETONE_7 571
|
||||||
|
#define WINKEY_SIDETONE_8 500
|
||||||
|
#define WINKEY_SIDETONE_9 444
|
||||||
|
#define WINKEY_SIDETONE_10 400
|
||||||
|
#endif //OPTION_WINKEY_2_SUPPORT
|
||||||
|
|
||||||
|
#define WINKEY_1_REPORT_VERSION_NUMBER 10
|
||||||
|
#define WINKEY_2_REPORT_VERSION_NUMBER 23
|
||||||
|
|
||||||
|
// alter these to map to alternate hang time wordspace units
|
||||||
|
#define WINKEY_HANG_TIME_1_0 1.0
|
||||||
|
#define WINKEY_HANG_TIME_1_33 1.33
|
||||||
|
#define WINKEY_HANG_TIME_1_66 1.66
|
||||||
|
#define WINKEY_HANG_TIME_2_0 2.0
|
||||||
|
|
||||||
|
#define WINKEY_RETURN_THIS_FOR_ADMIN_GET_CAL 0x16
|
||||||
|
#define WINKEY_RETURN_THIS_FOR_ADMIN_PADDLE_A2D 0xEE
|
||||||
|
#define WINKEY_RETURN_THIS_FOR_ADMIN_SPEED_A2D 0x00
|
||||||
|
|
||||||
|
#endif //FEATURE_WINKEY_EMULATION
|
||||||
|
|
||||||
|
#define PRIMARY_SERIAL_PORT &Serial
|
||||||
|
#define PRIMARY_SERIAL_PORT_BAUD 115200 // This applies only when the port is in Command Line Interface mode. In Winkey mode it will default to 1200.
|
||||||
|
|
||||||
|
#ifdef FEATURE_COMMAND_LINE_INTERFACE_ON_SECONDARY_PORT
|
||||||
|
#define SECONDARY_SERIAL_PORT &Serial1
|
||||||
|
#define SECONDARY_SERIAL_PORT_BAUD 115200
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define CW_DECODER_SCREEN_COLUMNS 40 // word wrap at this many columns
|
||||||
|
#define CW_DECODER_SPACE_PRINT_THRESH 4.5 // print space if no tone for this many element lengths
|
||||||
|
#define CW_DECODER_SPACE_DECODE_THRESH 2.0 // invoke character decode if no tone for this many element lengths
|
||||||
|
#define CW_DECODER_NOISE_FILTER 20 // ignore elements shorter than this (mS)
|
||||||
|
|
||||||
|
#define STRAIGHT_KEY_ACTIVE_STATE LOW
|
||||||
|
|
||||||
|
#ifdef FEATURE_DYNAMIC_DAH_TO_DIT_RATIO
|
||||||
|
#define DYNAMIC_DAH_TO_DIT_RATIO_LOWER_LIMIT_WPM 30
|
||||||
|
#define DYNAMIC_DAH_TO_DIT_RATIO_LOWER_LIMIT_RATIO 300 // 300 = 3:1 ratio
|
||||||
|
#define DYNAMIC_DAH_TO_DIT_RATIO_UPPER_LIMIT_WPM 70
|
||||||
|
#define DYNAMIC_DAH_TO_DIT_RATIO_UPPER_LIMIT_RATIO 240 // 240 = 2.4:1 ratio
|
||||||
|
#endif //FEATURE_DYNAMIC_DAH_TO_DIT_RATIO
|
||||||
|
|
||||||
|
#if defined(FEATURE_SLEEP)
|
||||||
|
#define KEYER_AWAKE_PIN_AWAKE_STATE HIGH
|
||||||
|
#define KEYER_AWAKE_PIN_ASLEEP_STATE LOW
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_LCD_BACKLIGHT_AUTO_DIM)
|
||||||
|
#define keyer_power_led_awake_duty 255 // PWM duty cycle. 0 is 0%, 255 is 100%
|
||||||
|
#define keyer_power_led_asleep_duty 25 // 25 is quite dim. Use 0 for off
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_ETHERNET)
|
||||||
|
// #define FEATURE_ETHERNET_IP {192,168,1,178} // default IP address ("192.168.1.178")
|
||||||
|
// #define FEATURE_ETHERNET_MAC {0xDE,0xAD,0xBE,0xEF,0xFE,0xED}
|
||||||
|
#define FEATURE_ETHERNET_IP {192,168,1,179} // default IP address ("192.168.1.178")
|
||||||
|
#define FEATURE_ETHERNET_MAC {0xDE,0xAD,0xBE,0xEF,0xFE,0xEE}
|
||||||
|
#define FEATURE_ETHERNET_DNS {8,8,8,8}
|
||||||
|
|
||||||
|
#define FEATURE_ETHERNET_GATEWAY {192,168,1,1} // default gateway
|
||||||
|
#define FEATURE_ETHERNET_SUBNET_MASK {255,255,255,0} // default subnet mask
|
||||||
|
#define FEATURE_ETHERNET_WEB_LISTENER_PORT 80
|
||||||
|
#define FEATURE_UDP_SEND_BUFFER_SIZE 128
|
||||||
|
#define FEATURE_UDP_RECEIVE_BUFFER_SIZE 128
|
||||||
|
#endif //FEATURE_ETHERNET
|
||||||
|
|
||||||
|
#define WEB_SERVER_CONTROL_TX_KEY_TIME_LIMIT_SECS 10
|
||||||
|
|
||||||
|
#define FEATURE_INTERNET_LINK_MAX_LINKS 2
|
||||||
|
#define FEATURE_INTERNET_LINK_DEFAULT_RCV_UDP_PORT 8888
|
||||||
|
#define FEATURE_INTERNET_LINK_BUFFER_TIME_MS 500
|
||||||
|
|
||||||
|
#if defined(FEATURE_4x4_KEYPAD)|| defined (FEATURE_3x4_KEYPAD)
|
||||||
|
#define KEYPAD_ROWS 4 //KeyPad Rows
|
||||||
|
#if defined(FEATURE_4x4_KEYPAD)
|
||||||
|
#define KEYPAD_COLS 4 //keypad Columns
|
||||||
|
#else
|
||||||
|
#define KEYPAD_COLS 3
|
||||||
|
#endif
|
||||||
|
#define mem1 0 //Memory numbers for Keypad: Actual memory numbers start with "0"
|
||||||
|
#define mem2 1
|
||||||
|
#define mem3 2
|
||||||
|
#define mem4 3
|
||||||
|
#define mem5 4
|
||||||
|
#define mem6 5
|
||||||
|
#define mem7 6
|
||||||
|
#define mem8 7
|
||||||
|
#define mem9 8
|
||||||
|
#define mem10 9
|
||||||
|
#define mem11 10
|
||||||
|
#define mem12 11
|
||||||
|
#endif //#if defined(FEATURE_4x4_KEYPAD)|| defined (FEATURE_3x4_KEYPAD)
|
||||||
|
|
||||||
|
#define initial_sidetone_mode 1 // Sidetone mode, 0=OFF, 1=ON, 2=PADDLE_ONLY
|
||||||
|
|
||||||
|
#define sd_card_spi_ss_line 4
|
||||||
|
|
||||||
|
#if defined(OPTION_DFROBOT_LCD_COMMAND_BUTTONS)
|
||||||
|
|
||||||
|
// For V1.1 board use these values
|
||||||
|
#define dfrobot_btnRIGHT_analog 50
|
||||||
|
#define dfrobot_btnUP_analog 250
|
||||||
|
#define dfrobot_btnDOWN_analog 450
|
||||||
|
#define dfrobot_btnLEFT_analog 650
|
||||||
|
#define dfrobot_btnSELECT_analog 850
|
||||||
|
|
||||||
|
// For V1.0 board use these values
|
||||||
|
// #define dfrobot_btnRIGHT_analog 50
|
||||||
|
// #define dfrobot_btnUP_analog 195
|
||||||
|
// #define dfrobot_btnDOWN_analog 380
|
||||||
|
// #define dfrobot_btnLEFT_analog 555
|
||||||
|
// #define dfrobot_btnSELECT_analog 790
|
||||||
|
|
||||||
|
// button to memory mappings (0 = command button, 1 = memory 1, 2 = memory 2, etc.)
|
||||||
|
#define dfrobot_btnRIGHT 2
|
||||||
|
#define dfrobot_btnUP 1
|
||||||
|
#define dfrobot_btnDOWN 3
|
||||||
|
#define dfrobot_btnLEFT 4
|
||||||
|
#define dfrobot_btnSELECT 0
|
||||||
|
#define dfrobot_btnNONE 255 // do not change
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define sequencer_pins_active_state HIGH
|
||||||
|
#define sequencer_pins_inactive_state LOW
|
||||||
|
|
||||||
|
#define sequencer_pins_active_state HIGH
|
||||||
|
#define sequencer_pins_inactive_state LOW
|
||||||
|
#define ptt_line_active_state HIGH
|
||||||
|
#define ptt_line_inactive_state LOW
|
||||||
|
#define tx_key_line_active_state HIGH
|
||||||
|
#define tx_key_line_inactive_state LOW
|
||||||
|
#define ptt_input_pin_active_state LOW
|
||||||
|
#define ptt_input_pin_inactive_state HIGH
|
||||||
|
#define tx_inhibit_pin_active_state LOW
|
||||||
|
#define tx_inhibit_pin_inactive_state HIGH
|
||||||
|
#define tx_pause_pin_active_state LOW
|
||||||
|
#define tx_pause_pin_inactive_state HIGH
|
||||||
|
#define sidetone_line_active_state HIGH
|
||||||
|
#define sidetone_line_inactive_state LOW
|
||||||
|
|
||||||
|
#if defined(ARDUINO_MAPLE_MINI)
|
||||||
|
#define button_value_factor 4095 //sp5iou contributed
|
||||||
|
#else
|
||||||
|
#define button_value_factor 1023
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define farnsworth_timing_calibration 1.15
|
||||||
|
|
||||||
|
#define sidetone_volume_low_limit 10
|
||||||
|
#define sidetone_volume_high_limit 500
|
||||||
|
|
||||||
|
#define custom_startup_field "your custom text here" // an example could be callsign and name, eg. "AB1XYZ Bob", (or "Worlds best operator" which requires a 20 column display), string length shouldo be no more than the number of columns on the display
|
||||||
|
|
||||||
|
#define command_mode_acknowledgement_character 'E'
|
||||||
|
|
||||||
|
#if defined(FEATURE_COMMAND_MODE_ENHANCED_CMD_ACKNOWLEDGEMENT)
|
||||||
|
#define command_a_iambic_a "A"
|
||||||
|
#define command_b_iambic_b "B"
|
||||||
|
#define command_c_single_paddle "SINGLE"
|
||||||
|
#define command_d_ultimatic "ULT"
|
||||||
|
#define command_h_weight_dit_dah_ratio_default "R"
|
||||||
|
#define command_i_tx_on "TX ON"
|
||||||
|
#define command_i_tx_off "TX OFF"
|
||||||
|
#define command_k_dit_dah_buffers_on "ON"
|
||||||
|
#define command_k_dit_dah_buffers_off "OFF"
|
||||||
|
#define command_n_paddle_reverse "REV"
|
||||||
|
#define command_n_paddle_normal "NORM"
|
||||||
|
#define command_o_sidetone_off "ST OFF"
|
||||||
|
#define command_o_sidetone_paddle_only "ST PD ONLY"
|
||||||
|
#define command_o_sidetone_on "ST ON"
|
||||||
|
#define command_t_tune_mode "TUNE"
|
||||||
|
#define command_v_potentiometer_on "POT ON"
|
||||||
|
#define command_v_potentiometer_off "POT OFF"
|
||||||
|
|
||||||
|
#define command_error "ERR"
|
||||||
|
|
||||||
|
#endif //FEATURE_COMMAND_MODE_ENHANCED_CMD_ACKNOWLEDGEMENT
|
310
k3ng_keyer/keyer_settings_nanokeyer_rev_d.h
Executable file
310
k3ng_keyer/keyer_settings_nanokeyer_rev_d.h
Executable file
|
@ -0,0 +1,310 @@
|
||||||
|
// Initial and hardcoded settings
|
||||||
|
#define initial_speed_wpm 26 // "factory default" keyer speed setting
|
||||||
|
#define initial_command_mode_speed_wpm 20 // "factory default" command mode speed setting
|
||||||
|
#define initial_sidetone_freq 600 // "factory default" sidetone frequency setting
|
||||||
|
#define sidetone_hz_limit_low 299
|
||||||
|
#define sidetone_hz_limit_high 2001
|
||||||
|
#define hz_high_beep 1500 // frequency in hertz of high beep
|
||||||
|
#define hz_low_beep 400 // frequency in hertz of low beep
|
||||||
|
#define initial_dah_to_dit_ratio 300 // 300 = 3 / normal 3:1 ratio
|
||||||
|
#define initial_ptt_lead_time_tx1 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx1 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx2 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx2 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx3 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx3 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx4 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx4 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx5 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx5 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx6 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx6 10 // PTT tail time in mS
|
||||||
|
#define initial_qrss_dit_length 1 // QRSS dit length in seconds
|
||||||
|
#define initial_pot_wpm_low_value 13 // Potentiometer WPM fully CCW
|
||||||
|
#define initial_pot_wpm_high_value 35 // Potentiometer WPM fully CW
|
||||||
|
#define wpm_limit_low 5
|
||||||
|
#define wpm_limit_high 60
|
||||||
|
#define potentiometer_change_threshold 0.9 // don't change the keyer speed until pot wpm has changed more than this
|
||||||
|
#define send_buffer_size 150
|
||||||
|
#define default_length_letterspace 3
|
||||||
|
#define default_length_wordspace 7
|
||||||
|
#define default_keying_compensation 0 // number of milliseconds to extend all dits and dahs - for QSK on boatanchors
|
||||||
|
#define default_first_extension_time 0 // number of milliseconds to extend first sent dit or dah
|
||||||
|
#define default_pot_full_scale_reading 1023
|
||||||
|
#define default_weighting 50 // 50 = weighting factor of 1 (normal)
|
||||||
|
#define default_ptt_hang_time_wordspace_units 0.0
|
||||||
|
#define winkey_c0_wait_time 1 // the number of milliseconds to wait to send 0xc0 byte after send buffer has been sent
|
||||||
|
#define winkey_command_timeout_ms 5000
|
||||||
|
#define winkey_discard_bytes_startup 3 // this is used if OPTION_WINKEY_DISCARD_BYTES_AT_STARTUP is enabled above
|
||||||
|
#define winkey_xoff_threshold 20 // the number of chars in the buffer when we begin sending XOFFs
|
||||||
|
#define winkey_xon_threshold 10 // the number of chars in the buffer below which we deactivate XOFF
|
||||||
|
#define default_memory_repeat_time 3000 // time in milliseconds
|
||||||
|
#define LCD_COLUMNS 16
|
||||||
|
#define LCD_ROWS 2
|
||||||
|
#define lcd_i2c_address_mathertel_PCF8574 0x27 // I2C address of display for FEATURE_LCD_MATHERTEL_PCF8574
|
||||||
|
#define lcd_i2c_address_fdebrander_lcd 0x27 // I2C address of display for FEATURE_LCD_I2C_FDEBRABANDER
|
||||||
|
#define lcd_i2c_address_ydv1_lcd 0x27 // I2C address of display for FEATURE_LCD_YDv1
|
||||||
|
//#define lcd_i2c_address_ydv1_lcd 0x38 // I2C address of display for FEATURE_LCD_YDv1
|
||||||
|
#define lcd_i2c_address_sainsmart_lcd 0x27 // I2C address of display for FEATURE_LCD_SAINSMART_I2C
|
||||||
|
#define hell_pixel_microseconds 4025
|
||||||
|
#define program_memory_limit_consec_spaces 1
|
||||||
|
#define serial_leading_zeros 1 // set to 1 to activate leading zeros in serial numbers (i.e. #1 = 001)
|
||||||
|
#define serial_cut_numbers 0 // set to 1 to activate cut numbers in serial numbers (i.e. #10 = 1T, #19 = 1N)
|
||||||
|
#define go_to_sleep_inactivity_time 10 // minutes - FEATURE_SLEEP
|
||||||
|
#define dim_backlight_inactive_time 5 // minutes - FEATURE_LCD_BACKLIGHT_AUTO_DIM
|
||||||
|
#define default_cmos_super_keyer_iambic_b_timing_percent 33 // use with FEATURE_CMOS_SUPER_KEYER_IAMBIC_B_TIMING; should be between 0 to 99 % (0% = true iambic b;100% = iambic a behavior)
|
||||||
|
#define default_cw_echo_timing_factor 1.75 // "factory default" setting
|
||||||
|
#define default_autospace_timing_factor 2.0 // "factory default" setting
|
||||||
|
#define winkey_paddle_echo_buffer_decode_timing_factor 0.25
|
||||||
|
#define potentiometer_always_on 0
|
||||||
|
#define ptt_interlock_check_every_ms 100
|
||||||
|
#define ptt_interlock_active_state HIGH
|
||||||
|
#define unknown_cw_character '*'
|
||||||
|
#define cli_paddle_echo_on_at_boot 1
|
||||||
|
#define cli_straight_key_echo_on_at_boot 1
|
||||||
|
#define tx_key_dit_and_dah_pins_active_state HIGH
|
||||||
|
#define tx_key_dit_and_dah_pins_inactive_state LOW
|
||||||
|
#define potentiometer_check_interval_ms 150
|
||||||
|
#define potentiometer_reading_threshold 1
|
||||||
|
#define default_paddle_interruption_quiet_time_element_lengths 0
|
||||||
|
#define default_wordsworth_wordspace 6
|
||||||
|
#define default_wordsworth_repetition 1
|
||||||
|
#define serial_program_memory_buffer_size 500
|
||||||
|
#define eeprom_write_time_ms 30000
|
||||||
|
|
||||||
|
#ifdef FEATURE_BUTTONS
|
||||||
|
#define analog_buttons_number_of_buttons 4
|
||||||
|
#define analog_buttons_r1 10
|
||||||
|
#define analog_buttons_r2 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#if defined(FEATURE_BUTTONS) && !defined(FEATURE_PS2_KEYBOARD) && !defined(FEATURE_USB_KEYBOARD) && !defined(FEATURE_COMMAND_LINE_INTERFACE) && !defined(FEATURE_WINKEY_EMULATION)
|
||||||
|
#define number_of_memories byte(analog_buttons_number_of_buttons-1)
|
||||||
|
#else
|
||||||
|
#define number_of_memories byte(12)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef FEATURE_CAPACITIVE_PADDLE_PINS
|
||||||
|
#define capacitance_threshold 2
|
||||||
|
#endif //FEATURE_CAPACITIVE_PADDLE_PINS
|
||||||
|
|
||||||
|
#ifdef FEATURE_LED_RING
|
||||||
|
#define led_ring_low_limit 10
|
||||||
|
#define led_ring_high_limit 50
|
||||||
|
#endif //FEATURE_LED_RING
|
||||||
|
|
||||||
|
#ifdef FEATURE_QLF
|
||||||
|
#define qlf_dit_max 125
|
||||||
|
#define qlf_dit_min 75
|
||||||
|
#define qlf_dah_max 200
|
||||||
|
#define qlf_dah_min 100
|
||||||
|
#define qlf_on_by_default 0
|
||||||
|
#endif //FEATURE_QLF
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef FEATURE_WINKEY_EMULATION
|
||||||
|
#ifdef OPTION_WINKEY_UCXLOG_9600_BAUD
|
||||||
|
#define WINKEY_DEFAULT_BAUD 9600
|
||||||
|
#else
|
||||||
|
#define WINKEY_DEFAULT_BAUD 1200
|
||||||
|
#endif //OPTION_WINKEY_UCXLOG_9600_BAUD
|
||||||
|
// alter these below to map alternate sidetones for Winkey interface protocol emulation
|
||||||
|
#ifdef OPTION_WINKEY_2_SUPPORT
|
||||||
|
#define WINKEY_SIDETONE_1 3759
|
||||||
|
#define WINKEY_SIDETONE_2 1879
|
||||||
|
#define WINKEY_SIDETONE_3 1252
|
||||||
|
#define WINKEY_SIDETONE_4 940
|
||||||
|
#define WINKEY_SIDETONE_5 752
|
||||||
|
#define WINKEY_SIDETONE_6 625
|
||||||
|
#define WINKEY_SIDETONE_7 535
|
||||||
|
#define WINKEY_SIDETONE_8 469
|
||||||
|
#define WINKEY_SIDETONE_9 417
|
||||||
|
#define WINKEY_SIDETONE_10 375
|
||||||
|
#else //OPTION_WINKEY_2_SUPPORT
|
||||||
|
#define WINKEY_SIDETONE_1 4000
|
||||||
|
#define WINKEY_SIDETONE_2 2000
|
||||||
|
#define WINKEY_SIDETONE_3 1333
|
||||||
|
#define WINKEY_SIDETONE_4 1000
|
||||||
|
#define WINKEY_SIDETONE_5 800
|
||||||
|
#define WINKEY_SIDETONE_6 666
|
||||||
|
#define WINKEY_SIDETONE_7 571
|
||||||
|
#define WINKEY_SIDETONE_8 500
|
||||||
|
#define WINKEY_SIDETONE_9 444
|
||||||
|
#define WINKEY_SIDETONE_10 400
|
||||||
|
#endif //OPTION_WINKEY_2_SUPPORT
|
||||||
|
|
||||||
|
#define WINKEY_1_REPORT_VERSION_NUMBER 10
|
||||||
|
#define WINKEY_2_REPORT_VERSION_NUMBER 23
|
||||||
|
|
||||||
|
// alter these to map to alternate hang time wordspace units
|
||||||
|
#define WINKEY_HANG_TIME_1_0 1.0
|
||||||
|
#define WINKEY_HANG_TIME_1_33 1.33
|
||||||
|
#define WINKEY_HANG_TIME_1_66 1.66
|
||||||
|
#define WINKEY_HANG_TIME_2_0 2.0
|
||||||
|
|
||||||
|
#define WINKEY_RETURN_THIS_FOR_ADMIN_GET_CAL 0x16
|
||||||
|
#define WINKEY_RETURN_THIS_FOR_ADMIN_PADDLE_A2D 0xEE
|
||||||
|
#define WINKEY_RETURN_THIS_FOR_ADMIN_SPEED_A2D 0x00
|
||||||
|
|
||||||
|
#endif //FEATURE_WINKEY_EMULATION
|
||||||
|
|
||||||
|
#define PRIMARY_SERIAL_PORT &Serial
|
||||||
|
#define PRIMARY_SERIAL_PORT_BAUD 115200 // This applies only when the port is in Command Line Interface mode. In Winkey mode it will default to 1200.
|
||||||
|
|
||||||
|
#ifdef FEATURE_COMMAND_LINE_INTERFACE_ON_SECONDARY_PORT
|
||||||
|
#define SECONDARY_SERIAL_PORT &Serial1
|
||||||
|
#define SECONDARY_SERIAL_PORT_BAUD 115200
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define CW_DECODER_SCREEN_COLUMNS 40 // word wrap at this many columns
|
||||||
|
#define CW_DECODER_SPACE_PRINT_THRESH 4.5 // print space if no tone for this many element lengths
|
||||||
|
#define CW_DECODER_SPACE_DECODE_THRESH 2.0 // invoke character decode if no tone for this many element lengths
|
||||||
|
#define CW_DECODER_NOISE_FILTER 20 // ignore elements shorter than this (mS)
|
||||||
|
|
||||||
|
#define STRAIGHT_KEY_ACTIVE_STATE LOW
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef FEATURE_DYNAMIC_DAH_TO_DIT_RATIO
|
||||||
|
#define DYNAMIC_DAH_TO_DIT_RATIO_LOWER_LIMIT_WPM 30
|
||||||
|
#define DYNAMIC_DAH_TO_DIT_RATIO_LOWER_LIMIT_RATIO 300 // 300 = 3:1 ratio
|
||||||
|
#define DYNAMIC_DAH_TO_DIT_RATIO_UPPER_LIMIT_WPM 70
|
||||||
|
#define DYNAMIC_DAH_TO_DIT_RATIO_UPPER_LIMIT_RATIO 240 // 240 = 2.4:1 ratio
|
||||||
|
#endif //FEATURE_DYNAMIC_DAH_TO_DIT_RATIO
|
||||||
|
|
||||||
|
#if defined(FEATURE_SLEEP)
|
||||||
|
#define KEYER_AWAKE_PIN_AWAKE_STATE HIGH
|
||||||
|
#define KEYER_AWAKE_PIN_ASLEEP_STATE LOW
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_LCD_BACKLIGHT_AUTO_DIM)
|
||||||
|
#define keyer_power_led_awake_duty 255 // PWM duty cycle. 0 is 0%, 255 is 100%
|
||||||
|
#define keyer_power_led_asleep_duty 25 // 25 is quite dim. Use 0 for off
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_ETHERNET)
|
||||||
|
// #define FEATURE_ETHERNET_IP {192,168,1,178} // default IP address ("192.168.1.178")
|
||||||
|
// #define FEATURE_ETHERNET_MAC {0xDE,0xAD,0xBE,0xEF,0xFE,0xED}
|
||||||
|
#define FEATURE_ETHERNET_IP {192,168,1,179} // default IP address ("192.168.1.178")
|
||||||
|
#define FEATURE_ETHERNET_MAC {0xDE,0xAD,0xBE,0xEF,0xFE,0xEE}
|
||||||
|
#define FEATURE_ETHERNET_DNS {8,8,8,8}
|
||||||
|
|
||||||
|
#define FEATURE_ETHERNET_GATEWAY {192,168,1,1} // default gateway
|
||||||
|
#define FEATURE_ETHERNET_SUBNET_MASK {255,255,255,0} // default subnet mask
|
||||||
|
#define FEATURE_ETHERNET_WEB_LISTENER_PORT 80
|
||||||
|
#define FEATURE_UDP_SEND_BUFFER_SIZE 128
|
||||||
|
#define FEATURE_UDP_RECEIVE_BUFFER_SIZE 128
|
||||||
|
#endif //FEATURE_ETHERNET
|
||||||
|
|
||||||
|
#define WEB_SERVER_CONTROL_TX_KEY_TIME_LIMIT_SECS 10
|
||||||
|
|
||||||
|
#define FEATURE_INTERNET_LINK_MAX_LINKS 2
|
||||||
|
#define FEATURE_INTERNET_LINK_DEFAULT_RCV_UDP_PORT 8888
|
||||||
|
#define FEATURE_INTERNET_LINK_BUFFER_TIME_MS 500
|
||||||
|
|
||||||
|
#if defined(FEATURE_4x4_KEYPAD)|| defined (FEATURE_3x4_KEYPAD)
|
||||||
|
#define KEYPAD_ROWS 4 //KeyPad Rows
|
||||||
|
#if defined(FEATURE_4x4_KEYPAD)
|
||||||
|
#define KEYPAD_COLS 4 //keypad Columns
|
||||||
|
#else
|
||||||
|
#define KEYPAD_COLS 3
|
||||||
|
#endif
|
||||||
|
#define mem1 0 //Memory numbers for Keypad: Actual memory numbers start with "0"
|
||||||
|
#define mem2 1
|
||||||
|
#define mem3 2
|
||||||
|
#define mem4 3
|
||||||
|
#define mem5 4
|
||||||
|
#define mem6 5
|
||||||
|
#define mem7 6
|
||||||
|
#define mem8 7
|
||||||
|
#define mem9 8
|
||||||
|
#define mem10 9
|
||||||
|
#define mem11 10
|
||||||
|
#define mem12 11
|
||||||
|
#endif //#if defined(FEATURE_4x4_KEYPAD)|| defined (FEATURE_3x4_KEYPAD)
|
||||||
|
|
||||||
|
#define initial_sidetone_mode 1 // Sidetone mode, 0=OFF, 1=ON, 2=PADDLE_ONLY
|
||||||
|
|
||||||
|
#define sd_card_spi_ss_line 4
|
||||||
|
|
||||||
|
#if defined(OPTION_DFROBOT_LCD_COMMAND_BUTTONS)
|
||||||
|
|
||||||
|
// For V1.1 board use these values
|
||||||
|
#define dfrobot_btnRIGHT_analog 50
|
||||||
|
#define dfrobot_btnUP_analog 250
|
||||||
|
#define dfrobot_btnDOWN_analog 450
|
||||||
|
#define dfrobot_btnLEFT_analog 650
|
||||||
|
#define dfrobot_btnSELECT_analog 850
|
||||||
|
|
||||||
|
// For V1.0 board use these values
|
||||||
|
// #define dfrobot_btnRIGHT_analog 50
|
||||||
|
// #define dfrobot_btnUP_analog 195
|
||||||
|
// #define dfrobot_btnDOWN_analog 380
|
||||||
|
// #define dfrobot_btnLEFT_analog 555
|
||||||
|
// #define dfrobot_btnSELECT_analog 790
|
||||||
|
|
||||||
|
// button to memory mappings (0 = command button, 1 = memory 1, 2 = memory 2, etc.)
|
||||||
|
#define dfrobot_btnRIGHT 2
|
||||||
|
#define dfrobot_btnUP 1
|
||||||
|
#define dfrobot_btnDOWN 3
|
||||||
|
#define dfrobot_btnLEFT 4
|
||||||
|
#define dfrobot_btnSELECT 0
|
||||||
|
#define dfrobot_btnNONE 255 // do not change
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define sequencer_pins_active_state HIGH
|
||||||
|
#define sequencer_pins_inactive_state LOW
|
||||||
|
|
||||||
|
#define sequencer_pins_active_state HIGH
|
||||||
|
#define sequencer_pins_inactive_state LOW
|
||||||
|
#define ptt_line_active_state HIGH
|
||||||
|
#define ptt_line_inactive_state LOW
|
||||||
|
#define tx_key_line_active_state HIGH
|
||||||
|
#define tx_key_line_inactive_state LOW
|
||||||
|
#define ptt_input_pin_active_state LOW
|
||||||
|
#define ptt_input_pin_inactive_state HIGH
|
||||||
|
#define tx_inhibit_pin_active_state LOW
|
||||||
|
#define tx_inhibit_pin_inactive_state HIGH
|
||||||
|
#define tx_pause_pin_active_state LOW
|
||||||
|
#define tx_pause_pin_inactive_state HIGH
|
||||||
|
#define sidetone_line_active_state HIGH
|
||||||
|
#define sidetone_line_inactive_state LOW
|
||||||
|
|
||||||
|
#if defined(ARDUINO_MAPLE_MINI)
|
||||||
|
#define button_value_factor 4095 //sp5iou contributed
|
||||||
|
#else
|
||||||
|
#define button_value_factor 1023
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define farnsworth_timing_calibration 1.15
|
||||||
|
|
||||||
|
#define sidetone_volume_low_limit 10
|
||||||
|
#define sidetone_volume_high_limit 500
|
||||||
|
|
||||||
|
#define custom_startup_field "your custom text here" // an example could be callsign and name, eg. "AB1XYZ Bob", (or "Worlds best operator" which requires a 20 column display), string length shouldo be no more than the number of columns on the display
|
||||||
|
|
||||||
|
#define command_mode_acknowledgement_character 'E'
|
||||||
|
|
||||||
|
#if defined(FEATURE_COMMAND_MODE_ENHANCED_CMD_ACKNOWLEDGEMENT)
|
||||||
|
#define command_a_iambic_a "A"
|
||||||
|
#define command_b_iambic_b "B"
|
||||||
|
#define command_c_single_paddle "SINGLE"
|
||||||
|
#define command_d_ultimatic "ULT"
|
||||||
|
#define command_h_weight_dit_dah_ratio_default "R"
|
||||||
|
#define command_i_tx_on "TX ON"
|
||||||
|
#define command_i_tx_off "TX OFF"
|
||||||
|
#define command_k_dit_dah_buffers_on "ON"
|
||||||
|
#define command_k_dit_dah_buffers_off "OFF"
|
||||||
|
#define command_n_paddle_reverse "REV"
|
||||||
|
#define command_n_paddle_normal "NORM"
|
||||||
|
#define command_o_sidetone_off "ST OFF"
|
||||||
|
#define command_o_sidetone_paddle_only "ST PD ONLY"
|
||||||
|
#define command_o_sidetone_on "ST ON"
|
||||||
|
#define command_t_tune_mode "TUNE"
|
||||||
|
#define command_v_potentiometer_on "POT ON"
|
||||||
|
#define command_v_potentiometer_off "POT OFF"
|
||||||
|
|
||||||
|
#define command_error "ERR"
|
||||||
|
|
||||||
|
#endif //FEATURE_COMMAND_MODE_ENHANCED_CMD_ACKNOWLEDGEMENT
|
312
k3ng_keyer/keyer_settings_open_interface.h
Executable file
312
k3ng_keyer/keyer_settings_open_interface.h
Executable file
|
@ -0,0 +1,312 @@
|
||||||
|
// This file is for the Open Interface http://remoteqth.com/open-interface.php
|
||||||
|
|
||||||
|
// Initial and hardcoded settings
|
||||||
|
#define initial_speed_wpm 26 // "factory default" keyer speed setting
|
||||||
|
#define initial_command_mode_speed_wpm 20 // "factory default" command mode speed setting
|
||||||
|
#define initial_sidetone_freq 600 // "factory default" sidetone frequency setting
|
||||||
|
#define sidetone_hz_limit_low 299
|
||||||
|
#define sidetone_hz_limit_high 2001
|
||||||
|
#define hz_high_beep 1500 // frequency in hertz of high beep
|
||||||
|
#define hz_low_beep 400 // frequency in hertz of low beep
|
||||||
|
#define initial_dah_to_dit_ratio 300 // 300 = 3 / normal 3:1 ratio
|
||||||
|
#define initial_ptt_lead_time_tx1 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx1 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx2 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx2 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx3 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx3 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx4 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx4 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx5 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx5 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx6 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx6 10 // PTT tail time in mS
|
||||||
|
#define initial_qrss_dit_length 1 // QRSS dit length in seconds
|
||||||
|
#define initial_pot_wpm_low_value 13 // Potentiometer WPM fully CCW
|
||||||
|
#define initial_pot_wpm_high_value 35 // Potentiometer WPM fully CW
|
||||||
|
#define wpm_limit_low 5
|
||||||
|
#define wpm_limit_high 60
|
||||||
|
#define potentiometer_change_threshold 0.9 // don't change the keyer speed until pot wpm has changed more than this
|
||||||
|
#define send_buffer_size 150
|
||||||
|
#define default_length_letterspace 3
|
||||||
|
#define default_length_wordspace 7
|
||||||
|
#define default_keying_compensation 0 // number of milliseconds to extend all dits and dahs - for QSK on boatanchors
|
||||||
|
#define default_first_extension_time 0 // number of milliseconds to extend first sent dit or dah
|
||||||
|
#define default_pot_full_scale_reading 1023
|
||||||
|
#define default_weighting 50 // 50 = weighting factor of 1 (normal)
|
||||||
|
#define default_ptt_hang_time_wordspace_units 0.0
|
||||||
|
#define winkey_c0_wait_time 1 // the number of milliseconds to wait to send 0xc0 byte after send buffer has been sent
|
||||||
|
#define winkey_command_timeout_ms 5000
|
||||||
|
#define winkey_discard_bytes_startup 3 // this is used if OPTION_WINKEY_DISCARD_BYTES_AT_STARTUP is enabled above
|
||||||
|
#define winkey_xoff_threshold 20 // the number of chars in the buffer when we begin sending XOFFs
|
||||||
|
#define winkey_xon_threshold 10 // the number of chars in the buffer below which we deactivate XOFF
|
||||||
|
#define default_memory_repeat_time 3000 // time in milliseconds
|
||||||
|
#define LCD_COLUMNS 16
|
||||||
|
#define LCD_ROWS 2
|
||||||
|
#define lcd_i2c_address_mathertel_PCF8574 0x27 // I2C address of display for FEATURE_LCD_MATHERTEL_PCF8574
|
||||||
|
#define lcd_i2c_address_fdebrander_lcd 0x27 // I2C address of display for FEATURE_LCD_I2C_FDEBRABANDER
|
||||||
|
#define lcd_i2c_address_ydv1_lcd 0x27 // I2C address of display for FEATURE_LCD_YDv1
|
||||||
|
//#define lcd_i2c_address_ydv1_lcd 0x38 // I2C address of display for FEATURE_LCD_YDv1
|
||||||
|
#define lcd_i2c_address_sainsmart_lcd 0x27 // I2C address of display for FEATURE_LCD_SAINSMART_I2C
|
||||||
|
#define hell_pixel_microseconds 4025
|
||||||
|
#define program_memory_limit_consec_spaces 1
|
||||||
|
#define serial_leading_zeros 1 // set to 1 to activate leading zeros in serial numbers (i.e. #1 = 001)
|
||||||
|
#define serial_cut_numbers 0 // set to 1 to activate cut numbers in serial numbers (i.e. #10 = 1T, #19 = 1N)
|
||||||
|
#define go_to_sleep_inactivity_time 10 // minutes - FEATURE_SLEEP
|
||||||
|
#define dim_backlight_inactive_time 5 // minutes - FEATURE_LCD_BACKLIGHT_AUTO_DIM
|
||||||
|
#define default_cmos_super_keyer_iambic_b_timing_percent 33 // use with FEATURE_CMOS_SUPER_KEYER_IAMBIC_B_TIMING; should be between 0 to 99 % (0% = true iambic b;100% = iambic a behavior)
|
||||||
|
#define default_cw_echo_timing_factor 1.75 // "factory default" setting
|
||||||
|
#define default_autospace_timing_factor 2.0 // "factory default" setting
|
||||||
|
#define winkey_paddle_echo_buffer_decode_timing_factor 0.25
|
||||||
|
#define potentiometer_always_on 0
|
||||||
|
#define ptt_interlock_check_every_ms 100
|
||||||
|
#define ptt_interlock_active_state HIGH
|
||||||
|
#define unknown_cw_character '*'
|
||||||
|
#define cli_paddle_echo_on_at_boot 1
|
||||||
|
#define cli_straight_key_echo_on_at_boot 1
|
||||||
|
#define tx_key_dit_and_dah_pins_active_state HIGH
|
||||||
|
#define tx_key_dit_and_dah_pins_inactive_state LOW
|
||||||
|
#define potentiometer_check_interval_ms 150
|
||||||
|
#define potentiometer_reading_threshold 1
|
||||||
|
#define default_paddle_interruption_quiet_time_element_lengths 0
|
||||||
|
#define default_wordsworth_wordspace 6
|
||||||
|
#define default_wordsworth_repetition 1
|
||||||
|
#define serial_program_memory_buffer_size 500
|
||||||
|
#define eeprom_write_time_ms 30000
|
||||||
|
|
||||||
|
#ifdef FEATURE_BUTTONS
|
||||||
|
#define analog_buttons_number_of_buttons 4
|
||||||
|
#define analog_buttons_r1 10
|
||||||
|
#define analog_buttons_r2 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#if defined(FEATURE_BUTTONS) && !defined(FEATURE_PS2_KEYBOARD) && !defined(FEATURE_USB_KEYBOARD) && !defined(FEATURE_COMMAND_LINE_INTERFACE) && !defined(FEATURE_WINKEY_EMULATION)
|
||||||
|
#define number_of_memories byte(analog_buttons_number_of_buttons-1)
|
||||||
|
#else
|
||||||
|
#define number_of_memories byte(12)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef FEATURE_CAPACITIVE_PADDLE_PINS
|
||||||
|
#define capacitance_threshold 2
|
||||||
|
#endif //FEATURE_CAPACITIVE_PADDLE_PINS
|
||||||
|
|
||||||
|
#ifdef FEATURE_LED_RING
|
||||||
|
#define led_ring_low_limit 10
|
||||||
|
#define led_ring_high_limit 50
|
||||||
|
#endif //FEATURE_LED_RING
|
||||||
|
|
||||||
|
#ifdef FEATURE_QLF
|
||||||
|
#define qlf_dit_max 125
|
||||||
|
#define qlf_dit_min 75
|
||||||
|
#define qlf_dah_max 200
|
||||||
|
#define qlf_dah_min 100
|
||||||
|
#define qlf_on_by_default 0
|
||||||
|
#endif //FEATURE_QLF
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef FEATURE_WINKEY_EMULATION
|
||||||
|
#ifdef OPTION_WINKEY_UCXLOG_9600_BAUD
|
||||||
|
#define WINKEY_DEFAULT_BAUD 9600
|
||||||
|
#else
|
||||||
|
#define WINKEY_DEFAULT_BAUD 1200
|
||||||
|
#endif //OPTION_WINKEY_UCXLOG_9600_BAUD
|
||||||
|
// alter these below to map alternate sidetones for Winkey interface protocol emulation
|
||||||
|
#ifdef OPTION_WINKEY_2_SUPPORT
|
||||||
|
#define WINKEY_SIDETONE_1 3759
|
||||||
|
#define WINKEY_SIDETONE_2 1879
|
||||||
|
#define WINKEY_SIDETONE_3 1252
|
||||||
|
#define WINKEY_SIDETONE_4 940
|
||||||
|
#define WINKEY_SIDETONE_5 752
|
||||||
|
#define WINKEY_SIDETONE_6 625
|
||||||
|
#define WINKEY_SIDETONE_7 535
|
||||||
|
#define WINKEY_SIDETONE_8 469
|
||||||
|
#define WINKEY_SIDETONE_9 417
|
||||||
|
#define WINKEY_SIDETONE_10 375
|
||||||
|
#else //OPTION_WINKEY_2_SUPPORT
|
||||||
|
#define WINKEY_SIDETONE_1 4000
|
||||||
|
#define WINKEY_SIDETONE_2 2000
|
||||||
|
#define WINKEY_SIDETONE_3 1333
|
||||||
|
#define WINKEY_SIDETONE_4 1000
|
||||||
|
#define WINKEY_SIDETONE_5 800
|
||||||
|
#define WINKEY_SIDETONE_6 666
|
||||||
|
#define WINKEY_SIDETONE_7 571
|
||||||
|
#define WINKEY_SIDETONE_8 500
|
||||||
|
#define WINKEY_SIDETONE_9 444
|
||||||
|
#define WINKEY_SIDETONE_10 400
|
||||||
|
#endif //OPTION_WINKEY_2_SUPPORT
|
||||||
|
|
||||||
|
#define WINKEY_1_REPORT_VERSION_NUMBER 10
|
||||||
|
#define WINKEY_2_REPORT_VERSION_NUMBER 23
|
||||||
|
|
||||||
|
// alter these to map to alternate hang time wordspace units
|
||||||
|
#define WINKEY_HANG_TIME_1_0 1.0
|
||||||
|
#define WINKEY_HANG_TIME_1_33 1.33
|
||||||
|
#define WINKEY_HANG_TIME_1_66 1.66
|
||||||
|
#define WINKEY_HANG_TIME_2_0 2.0
|
||||||
|
|
||||||
|
#define WINKEY_RETURN_THIS_FOR_ADMIN_GET_CAL 0x16
|
||||||
|
#define WINKEY_RETURN_THIS_FOR_ADMIN_PADDLE_A2D 0xEE
|
||||||
|
#define WINKEY_RETURN_THIS_FOR_ADMIN_SPEED_A2D 0x00
|
||||||
|
|
||||||
|
#endif //FEATURE_WINKEY_EMULATION
|
||||||
|
|
||||||
|
|
||||||
|
#define PRIMARY_SERIAL_PORT &Serial
|
||||||
|
#define PRIMARY_SERIAL_PORT_BAUD 115200 // This applies only when the port is in Command Line Interface mode. In Winkey mode it will default to 1200.
|
||||||
|
|
||||||
|
#ifdef FEATURE_COMMAND_LINE_INTERFACE_ON_SECONDARY_PORT
|
||||||
|
#define SECONDARY_SERIAL_PORT &Serial1
|
||||||
|
#define SECONDARY_SERIAL_PORT_BAUD 115200
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define CW_DECODER_SCREEN_COLUMNS 40 // word wrap at this many columns
|
||||||
|
#define CW_DECODER_SPACE_PRINT_THRESH 4.5 // print space if no tone for this many element lengths
|
||||||
|
#define CW_DECODER_SPACE_DECODE_THRESH 2.0 // invoke character decode if no tone for this many element lengths
|
||||||
|
#define CW_DECODER_NOISE_FILTER 20 // ignore elements shorter than this (mS)
|
||||||
|
|
||||||
|
#define STRAIGHT_KEY_ACTIVE_STATE LOW
|
||||||
|
|
||||||
|
#ifdef FEATURE_DYNAMIC_DAH_TO_DIT_RATIO
|
||||||
|
#define DYNAMIC_DAH_TO_DIT_RATIO_LOWER_LIMIT_WPM 30
|
||||||
|
#define DYNAMIC_DAH_TO_DIT_RATIO_LOWER_LIMIT_RATIO 300 // 300 = 3:1 ratio
|
||||||
|
#define DYNAMIC_DAH_TO_DIT_RATIO_UPPER_LIMIT_WPM 70
|
||||||
|
#define DYNAMIC_DAH_TO_DIT_RATIO_UPPER_LIMIT_RATIO 240 // 240 = 2.4:1 ratio
|
||||||
|
#endif //FEATURE_DYNAMIC_DAH_TO_DIT_RATIO
|
||||||
|
|
||||||
|
#if defined(FEATURE_SLEEP)
|
||||||
|
#define KEYER_AWAKE_PIN_AWAKE_STATE HIGH
|
||||||
|
#define KEYER_AWAKE_PIN_ASLEEP_STATE LOW
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_LCD_BACKLIGHT_AUTO_DIM)
|
||||||
|
#define keyer_power_led_awake_duty 255 // PWM duty cycle. 0 is 0%, 255 is 100%
|
||||||
|
#define keyer_power_led_asleep_duty 25 // 25 is quite dim. Use 0 for off
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_ETHERNET)
|
||||||
|
// #define FEATURE_ETHERNET_IP {192,168,1,178} // default IP address ("192.168.1.178")
|
||||||
|
// #define FEATURE_ETHERNET_MAC {0xDE,0xAD,0xBE,0xEF,0xFE,0xED}
|
||||||
|
#define FEATURE_ETHERNET_IP {192,168,1,179} // default IP address ("192.168.1.178")
|
||||||
|
#define FEATURE_ETHERNET_MAC {0xDE,0xAD,0xBE,0xEF,0xFE,0xEE}
|
||||||
|
#define FEATURE_ETHERNET_DNS {8,8,8,8}
|
||||||
|
|
||||||
|
#define FEATURE_ETHERNET_GATEWAY {192,168,1,1} // default gateway
|
||||||
|
#define FEATURE_ETHERNET_SUBNET_MASK {255,255,255,0} // default subnet mask
|
||||||
|
#define FEATURE_ETHERNET_WEB_LISTENER_PORT 80
|
||||||
|
#define FEATURE_UDP_SEND_BUFFER_SIZE 128
|
||||||
|
#define FEATURE_UDP_RECEIVE_BUFFER_SIZE 128
|
||||||
|
#endif //FEATURE_ETHERNET
|
||||||
|
|
||||||
|
#define WEB_SERVER_CONTROL_TX_KEY_TIME_LIMIT_SECS 10
|
||||||
|
|
||||||
|
#define FEATURE_INTERNET_LINK_MAX_LINKS 2
|
||||||
|
#define FEATURE_INTERNET_LINK_DEFAULT_RCV_UDP_PORT 8888
|
||||||
|
#define FEATURE_INTERNET_LINK_BUFFER_TIME_MS 500
|
||||||
|
|
||||||
|
#if defined(FEATURE_4x4_KEYPAD)|| defined (FEATURE_3x4_KEYPAD)
|
||||||
|
#define KEYPAD_ROWS 4 //KeyPad Rows
|
||||||
|
#if defined(FEATURE_4x4_KEYPAD)
|
||||||
|
#define KEYPAD_COLS 4 //keypad Columns
|
||||||
|
#else
|
||||||
|
#define KEYPAD_COLS 3
|
||||||
|
#endif
|
||||||
|
#define mem1 0 //Memory numbers for Keypad: Actual memory numbers start with "0"
|
||||||
|
#define mem2 1
|
||||||
|
#define mem3 2
|
||||||
|
#define mem4 3
|
||||||
|
#define mem5 4
|
||||||
|
#define mem6 5
|
||||||
|
#define mem7 6
|
||||||
|
#define mem8 7
|
||||||
|
#define mem9 8
|
||||||
|
#define mem10 9
|
||||||
|
#define mem11 10
|
||||||
|
#define mem12 11
|
||||||
|
#endif //#if defined(FEATURE_4x4_KEYPAD)|| defined (FEATURE_3x4_KEYPAD)
|
||||||
|
|
||||||
|
#define initial_sidetone_mode 1 // Sidetone mode, 0=OFF, 1=ON, 2=PADDLE_ONLY
|
||||||
|
|
||||||
|
#define sd_card_spi_ss_line 4
|
||||||
|
|
||||||
|
#if defined(OPTION_DFROBOT_LCD_COMMAND_BUTTONS)
|
||||||
|
|
||||||
|
// For V1.1 board use these values
|
||||||
|
#define dfrobot_btnRIGHT_analog 50
|
||||||
|
#define dfrobot_btnUP_analog 250
|
||||||
|
#define dfrobot_btnDOWN_analog 450
|
||||||
|
#define dfrobot_btnLEFT_analog 650
|
||||||
|
#define dfrobot_btnSELECT_analog 850
|
||||||
|
|
||||||
|
// For V1.0 board use these values
|
||||||
|
// #define dfrobot_btnRIGHT_analog 50
|
||||||
|
// #define dfrobot_btnUP_analog 195
|
||||||
|
// #define dfrobot_btnDOWN_analog 380
|
||||||
|
// #define dfrobot_btnLEFT_analog 555
|
||||||
|
// #define dfrobot_btnSELECT_analog 790
|
||||||
|
|
||||||
|
// button to memory mappings (0 = command button, 1 = memory 1, 2 = memory 2, etc.)
|
||||||
|
#define dfrobot_btnRIGHT 2
|
||||||
|
#define dfrobot_btnUP 1
|
||||||
|
#define dfrobot_btnDOWN 3
|
||||||
|
#define dfrobot_btnLEFT 4
|
||||||
|
#define dfrobot_btnSELECT 0
|
||||||
|
#define dfrobot_btnNONE 255 // do not change
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define sequencer_pins_active_state HIGH
|
||||||
|
#define sequencer_pins_inactive_state LOW
|
||||||
|
|
||||||
|
#define sequencer_pins_active_state HIGH
|
||||||
|
#define sequencer_pins_inactive_state LOW
|
||||||
|
#define ptt_line_active_state HIGH
|
||||||
|
#define ptt_line_inactive_state LOW
|
||||||
|
#define tx_key_line_active_state HIGH
|
||||||
|
#define tx_key_line_inactive_state LOW
|
||||||
|
#define ptt_input_pin_active_state LOW
|
||||||
|
#define ptt_input_pin_inactive_state HIGH
|
||||||
|
#define tx_inhibit_pin_active_state LOW
|
||||||
|
#define tx_inhibit_pin_inactive_state HIGH
|
||||||
|
#define tx_pause_pin_active_state LOW
|
||||||
|
#define tx_pause_pin_inactive_state HIGH
|
||||||
|
#define sidetone_line_active_state HIGH
|
||||||
|
#define sidetone_line_inactive_state LOW
|
||||||
|
|
||||||
|
#if defined(ARDUINO_MAPLE_MINI)
|
||||||
|
#define button_value_factor 4095 //sp5iou contributed
|
||||||
|
#else
|
||||||
|
#define button_value_factor 1023
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define farnsworth_timing_calibration 1.15
|
||||||
|
|
||||||
|
#define sidetone_volume_low_limit 10
|
||||||
|
#define sidetone_volume_high_limit 500
|
||||||
|
|
||||||
|
#define custom_startup_field "your custom text here" // an example could be callsign and name, eg. "AB1XYZ Bob", (or "Worlds best operator" which requires a 20 column display), string length shouldo be no more than the number of columns on the display
|
||||||
|
|
||||||
|
#define command_mode_acknowledgement_character 'E'
|
||||||
|
|
||||||
|
#if defined(FEATURE_COMMAND_MODE_ENHANCED_CMD_ACKNOWLEDGEMENT)
|
||||||
|
#define command_a_iambic_a "A"
|
||||||
|
#define command_b_iambic_b "B"
|
||||||
|
#define command_c_single_paddle "SINGLE"
|
||||||
|
#define command_d_ultimatic "ULT"
|
||||||
|
#define command_h_weight_dit_dah_ratio_default "R"
|
||||||
|
#define command_i_tx_on "TX ON"
|
||||||
|
#define command_i_tx_off "TX OFF"
|
||||||
|
#define command_k_dit_dah_buffers_on "ON"
|
||||||
|
#define command_k_dit_dah_buffers_off "OFF"
|
||||||
|
#define command_n_paddle_reverse "REV"
|
||||||
|
#define command_n_paddle_normal "NORM"
|
||||||
|
#define command_o_sidetone_off "ST OFF"
|
||||||
|
#define command_o_sidetone_paddle_only "ST PD ONLY"
|
||||||
|
#define command_o_sidetone_on "ST ON"
|
||||||
|
#define command_t_tune_mode "TUNE"
|
||||||
|
#define command_v_potentiometer_on "POT ON"
|
||||||
|
#define command_v_potentiometer_off "POT OFF"
|
||||||
|
|
||||||
|
#define command_error "ERR"
|
||||||
|
|
||||||
|
#endif //FEATURE_COMMAND_MODE_ENHANCED_CMD_ACKNOWLEDGEMENT
|
316
k3ng_keyer/keyer_settings_opencwkeyer_mk2.h
Executable file
316
k3ng_keyer/keyer_settings_opencwkeyer_mk2.h
Executable file
|
@ -0,0 +1,316 @@
|
||||||
|
// Initial and hardcoded settings
|
||||||
|
#define initial_speed_wpm 25 // "factory default" keyer speed setting
|
||||||
|
#define initial_command_mode_speed_wpm 20 // "factory default" command mode speed setting
|
||||||
|
#define initial_sidetone_freq 600 // "factory default" sidetone frequency setting
|
||||||
|
#define sidetone_hz_limit_low 299
|
||||||
|
#define sidetone_hz_limit_high 2001
|
||||||
|
#define hz_high_beep 1500 // frequency in hertz of high beep
|
||||||
|
#define hz_low_beep 400 // frequency in hertz of low beep
|
||||||
|
#define initial_dah_to_dit_ratio 300 // 300 = 3 / normal 3:1 ratio
|
||||||
|
#define initial_ptt_lead_time_tx1 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx1 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx2 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx2 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx3 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx3 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx4 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx4 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx5 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx5 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx6 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx6 10 // PTT tail time in mS
|
||||||
|
#define initial_qrss_dit_length 1 // QRSS dit length in seconds
|
||||||
|
#define initial_pot_wpm_low_value 13 // Potentiometer WPM fully CCW
|
||||||
|
#define initial_pot_wpm_high_value 40 // Potentiometer WPM fully CW
|
||||||
|
#define wpm_limit_low 5
|
||||||
|
#define wpm_limit_high 60
|
||||||
|
#define potentiometer_change_threshold 0.9 // don't change the keyer speed until pot wpm has changed more than this
|
||||||
|
#define send_buffer_size 150
|
||||||
|
#define default_length_letterspace 3
|
||||||
|
#define default_length_wordspace 7
|
||||||
|
#define default_keying_compensation 0 // number of milliseconds to extend all dits and dahs - for QSK on boatanchors
|
||||||
|
#define default_first_extension_time 0 // number of milliseconds to extend first sent dit or dah
|
||||||
|
#define default_pot_full_scale_reading 1023
|
||||||
|
#define default_weighting 50 // 50 = weighting factor of 1 (normal)
|
||||||
|
#define default_ptt_hang_time_wordspace_units 0.0
|
||||||
|
#define winkey_c0_wait_time 1 // the number of milliseconds to wait to send 0xc0 byte after send buffer has been sent
|
||||||
|
#define winkey_command_timeout_ms 5000
|
||||||
|
#define winkey_discard_bytes_startup 3 // this is used if OPTION_WINKEY_DISCARD_BYTES_AT_STARTUP is enabled above
|
||||||
|
#define winkey_xoff_threshold 20 // the number of chars in the buffer when we begin sending XOFFs
|
||||||
|
#define winkey_xon_threshold 10 // the number of chars in the buffer below which we deactivate XOFF
|
||||||
|
#define default_memory_repeat_time 3000 // time in milliseconds
|
||||||
|
#define LCD_COLUMNS 16
|
||||||
|
#define LCD_ROWS 2
|
||||||
|
#define lcd_i2c_address_mathertel_PCF8574 0x27 // I2C address of display for FEATURE_LCD_MATHERTEL_PCF8574
|
||||||
|
#define lcd_i2c_address_fdebrander_lcd 0x27 // I2C address of display for FEATURE_LCD_I2C_FDEBRABANDER
|
||||||
|
#define lcd_i2c_address_ydv1_lcd 0x27 // I2C address of display for FEATURE_LCD_YDv1
|
||||||
|
//#define lcd_i2c_address_ydv1_lcd 0x38 // I2C address of display for FEATURE_LCD_YDv1
|
||||||
|
#define lcd_i2c_address_sainsmart_lcd 0x27 // I2C address of display for FEATURE_LCD_SAINSMART_I2C
|
||||||
|
#define hell_pixel_microseconds 4025
|
||||||
|
#define program_memory_limit_consec_spaces 1
|
||||||
|
#define serial_leading_zeros 1 // set to 1 to activate leading zeros in serial numbers (i.e. #1 = 001)
|
||||||
|
#define serial_cut_numbers 0 // set to 1 to activate cut numbers in serial numbers (i.e. #10 = 1T, #19 = 1N)
|
||||||
|
#define go_to_sleep_inactivity_time 10 // minutes - FEATURE_SLEEP
|
||||||
|
#define dim_backlight_inactive_time 5 // minutes - FEATURE_LCD_BACKLIGHT_AUTO_DIM
|
||||||
|
#define default_cmos_super_keyer_iambic_b_timing_percent 33 // use with FEATURE_CMOS_SUPER_KEYER_IAMBIC_B_TIMING; should be between 0 to 99 % (0% = true iambic b;100% = iambic a behavior)
|
||||||
|
#define default_cw_echo_timing_factor 1.75 // "factory default" setting
|
||||||
|
#define default_autospace_timing_factor 2.0 // "factory default" setting
|
||||||
|
#define winkey_paddle_echo_buffer_decode_timing_factor 0.25
|
||||||
|
#define potentiometer_always_on 0
|
||||||
|
#define ptt_interlock_check_every_ms 100
|
||||||
|
#define ptt_interlock_active_state HIGH
|
||||||
|
#define unknown_cw_character '*'
|
||||||
|
#define cli_paddle_echo_on_at_boot 1
|
||||||
|
#define cli_straight_key_echo_on_at_boot 1
|
||||||
|
#define tx_key_dit_and_dah_pins_active_state HIGH
|
||||||
|
#define tx_key_dit_and_dah_pins_inactive_state LOW
|
||||||
|
#define potentiometer_check_interval_ms 150
|
||||||
|
#define potentiometer_reading_threshold 1
|
||||||
|
#define default_paddle_interruption_quiet_time_element_lengths 0
|
||||||
|
#define default_wordsworth_wordspace 6
|
||||||
|
#define default_wordsworth_repetition 1
|
||||||
|
#define serial_program_memory_buffer_size 500
|
||||||
|
#define eeprom_write_time_ms 30000
|
||||||
|
|
||||||
|
#ifdef FEATURE_BUTTONS
|
||||||
|
#define analog_buttons_number_of_buttons 3 // includes the command button (command button + 3 memory buttons = 4)
|
||||||
|
#define analog_buttons_r1 10
|
||||||
|
#define analog_buttons_r2 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#if defined(FEATURE_BUTTONS) && !defined(FEATURE_PS2_KEYBOARD) && !defined(FEATURE_USB_KEYBOARD) && !defined(FEATURE_COMMAND_LINE_INTERFACE) && !defined(FEATURE_WINKEY_EMULATION)
|
||||||
|
#define number_of_memories byte(analog_buttons_number_of_buttons-1)
|
||||||
|
#else
|
||||||
|
#define number_of_memories byte(12)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef FEATURE_CAPACITIVE_PADDLE_PINS
|
||||||
|
#define capacitance_threshold 2
|
||||||
|
#endif //FEATURE_CAPACITIVE_PADDLE_PINS
|
||||||
|
|
||||||
|
#ifdef FEATURE_LED_RING
|
||||||
|
#define led_ring_low_limit 10
|
||||||
|
#define led_ring_high_limit 50
|
||||||
|
#endif //FEATURE_LED_RING
|
||||||
|
|
||||||
|
#ifdef FEATURE_QLF
|
||||||
|
#define qlf_dit_max 125
|
||||||
|
#define qlf_dit_min 75
|
||||||
|
#define qlf_dah_max 200
|
||||||
|
#define qlf_dah_min 100
|
||||||
|
#define qlf_on_by_default 0
|
||||||
|
#endif //FEATURE_QLF
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef FEATURE_WINKEY_EMULATION
|
||||||
|
#ifdef OPTION_WINKEY_UCXLOG_9600_BAUD
|
||||||
|
#define WINKEY_DEFAULT_BAUD 9600
|
||||||
|
#else
|
||||||
|
#define WINKEY_DEFAULT_BAUD 1200
|
||||||
|
#endif //OPTION_WINKEY_UCXLOG_9600_BAUD
|
||||||
|
// alter these below to map alternate sidetones for Winkey interface protocol emulation
|
||||||
|
#ifdef OPTION_WINKEY_2_SUPPORT
|
||||||
|
#define WINKEY_SIDETONE_1 3759
|
||||||
|
#define WINKEY_SIDETONE_2 1879
|
||||||
|
#define WINKEY_SIDETONE_3 1252
|
||||||
|
#define WINKEY_SIDETONE_4 940
|
||||||
|
#define WINKEY_SIDETONE_5 752
|
||||||
|
#define WINKEY_SIDETONE_6 625
|
||||||
|
#define WINKEY_SIDETONE_7 535
|
||||||
|
#define WINKEY_SIDETONE_8 469
|
||||||
|
#define WINKEY_SIDETONE_9 417
|
||||||
|
#define WINKEY_SIDETONE_10 375
|
||||||
|
#else //OPTION_WINKEY_2_SUPPORT
|
||||||
|
#define WINKEY_SIDETONE_1 4000
|
||||||
|
#define WINKEY_SIDETONE_2 2000
|
||||||
|
#define WINKEY_SIDETONE_3 1333
|
||||||
|
#define WINKEY_SIDETONE_4 1000
|
||||||
|
#define WINKEY_SIDETONE_5 800
|
||||||
|
#define WINKEY_SIDETONE_6 666
|
||||||
|
#define WINKEY_SIDETONE_7 571
|
||||||
|
#define WINKEY_SIDETONE_8 500
|
||||||
|
#define WINKEY_SIDETONE_9 444
|
||||||
|
#define WINKEY_SIDETONE_10 400
|
||||||
|
#endif //OPTION_WINKEY_2_SUPPORT
|
||||||
|
|
||||||
|
#define WINKEY_1_REPORT_VERSION_NUMBER 10
|
||||||
|
#define WINKEY_2_REPORT_VERSION_NUMBER 23
|
||||||
|
|
||||||
|
// alter these to map to alternate hang time wordspace units
|
||||||
|
#define WINKEY_HANG_TIME_1_0 1.0
|
||||||
|
#define WINKEY_HANG_TIME_1_33 1.33
|
||||||
|
#define WINKEY_HANG_TIME_1_66 1.66
|
||||||
|
#define WINKEY_HANG_TIME_2_0 2.0
|
||||||
|
|
||||||
|
#define WINKEY_RETURN_THIS_FOR_ADMIN_GET_CAL 0x16
|
||||||
|
#define WINKEY_RETURN_THIS_FOR_ADMIN_PADDLE_A2D 0xEE
|
||||||
|
#define WINKEY_RETURN_THIS_FOR_ADMIN_SPEED_A2D 0x00
|
||||||
|
|
||||||
|
#endif //FEATURE_WINKEY_EMULATION
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#define PRIMARY_SERIAL_PORT &Serial
|
||||||
|
#define PRIMARY_SERIAL_PORT_BAUD 115200 // This applies only when the port is in Command Line Interface mode. In Winkey mode it will default to 1200.
|
||||||
|
|
||||||
|
#ifdef FEATURE_COMMAND_LINE_INTERFACE_ON_SECONDARY_PORT
|
||||||
|
#define SECONDARY_SERIAL_PORT &Serial1
|
||||||
|
#define SECONDARY_SERIAL_PORT_BAUD 115200
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#define CW_DECODER_SCREEN_COLUMNS 120 // word wrap at this many columns
|
||||||
|
#define CW_DECODER_SPACE_PRINT_THRESH 4.5 // print space if no tone for this many element lengths
|
||||||
|
#define CW_DECODER_SPACE_DECODE_THRESH 2.0 // invoke character decode if no tone for this many element lengths
|
||||||
|
#define CW_DECODER_NOISE_FILTER 20 // ignore elements shorter than this (mS)
|
||||||
|
|
||||||
|
#define STRAIGHT_KEY_ACTIVE_STATE LOW
|
||||||
|
|
||||||
|
#ifdef FEATURE_DYNAMIC_DAH_TO_DIT_RATIO
|
||||||
|
#define DYNAMIC_DAH_TO_DIT_RATIO_LOWER_LIMIT_WPM 30
|
||||||
|
#define DYNAMIC_DAH_TO_DIT_RATIO_LOWER_LIMIT_RATIO 300 // 300 = 3:1 ratio
|
||||||
|
#define DYNAMIC_DAH_TO_DIT_RATIO_UPPER_LIMIT_WPM 70
|
||||||
|
#define DYNAMIC_DAH_TO_DIT_RATIO_UPPER_LIMIT_RATIO 240 // 240 = 2.4:1 ratio
|
||||||
|
#endif //FEATURE_DYNAMIC_DAH_TO_DIT_RATIO
|
||||||
|
|
||||||
|
#if defined(FEATURE_COMPETITION_COMPRESSION_DETECTION)
|
||||||
|
#define COMPETITION_COMPRESSION_DETECTION_ARRAY_SIZE 16
|
||||||
|
#define COMPETITION_COMPRESSION_DETECTION_TIME_INTERCHAR_LOWER_LIMIT 1
|
||||||
|
#define COMPETITION_COMPRESSION_DETECTION_TIME_INTERCHAR_UPPER_LIMIT 6.0
|
||||||
|
#define COMPETITION_COMPRESSION_DETECTION_AVERAGE_ALARM_THRESHOLD 3.0
|
||||||
|
#endif //FEATURE_COMPETITION_COMPRESSION_DETECTION
|
||||||
|
|
||||||
|
#if defined(FEATURE_SLEEP)
|
||||||
|
#define KEYER_AWAKE_PIN_AWAKE_STATE HIGH
|
||||||
|
#define KEYER_AWAKE_PIN_ASLEEP_STATE LOW
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_LCD_BACKLIGHT_AUTO_DIM)
|
||||||
|
#define keyer_power_led_awake_duty 255 // PWM duty cycle. 0 is 0%, 255 is 100%
|
||||||
|
#define keyer_power_led_asleep_duty 25 // 25 is quite dim. Use 0 for off
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_ETHERNET)
|
||||||
|
// #define FEATURE_ETHERNET_IP {192,168,1,178} // default IP address ("192.168.1.178")
|
||||||
|
// #define FEATURE_ETHERNET_MAC {0xDE,0xAD,0xBE,0xEF,0xFE,0xED}
|
||||||
|
#define FEATURE_ETHERNET_IP {192,168,1,179} // default IP address ("192.168.1.179")
|
||||||
|
#define FEATURE_ETHERNET_MAC {0xDE,0xAD,0xBE,0xEF,0xFE,0xEE}
|
||||||
|
#define FEATURE_ETHERNET_DNS {8,8,8,8}
|
||||||
|
|
||||||
|
#define FEATURE_ETHERNET_GATEWAY {192,168,1,1} // default gateway
|
||||||
|
#define FEATURE_ETHERNET_SUBNET_MASK {255,255,255,0} // default subnet mask
|
||||||
|
#define FEATURE_ETHERNET_WEB_LISTENER_PORT 80
|
||||||
|
#define FEATURE_UDP_SEND_BUFFER_SIZE 128
|
||||||
|
#define FEATURE_UDP_RECEIVE_BUFFER_SIZE 128
|
||||||
|
#endif //FEATURE_ETHERNET
|
||||||
|
|
||||||
|
#define WEB_SERVER_CONTROL_TX_KEY_TIME_LIMIT_SECS 10
|
||||||
|
|
||||||
|
#define FEATURE_INTERNET_LINK_MAX_LINKS 2
|
||||||
|
#define FEATURE_INTERNET_LINK_DEFAULT_RCV_UDP_PORT 8888
|
||||||
|
#define FEATURE_INTERNET_LINK_BUFFER_TIME_MS 500
|
||||||
|
|
||||||
|
#if defined(FEATURE_4x4_KEYPAD)|| defined (FEATURE_3x4_KEYPAD)
|
||||||
|
#define KEYPAD_ROWS 4 //KeyPad Rows
|
||||||
|
#if defined(FEATURE_4x4_KEYPAD)
|
||||||
|
#define KEYPAD_COLS 4 //keypad Columns
|
||||||
|
#else
|
||||||
|
#define KEYPAD_COLS 3
|
||||||
|
#endif
|
||||||
|
#define mem1 0 //Memory numbers for Keypad: Actual memory numbers start with "0"
|
||||||
|
#define mem2 1
|
||||||
|
#define mem3 2
|
||||||
|
#define mem4 3
|
||||||
|
#define mem5 4
|
||||||
|
#define mem6 5
|
||||||
|
#define mem7 6
|
||||||
|
#define mem8 7
|
||||||
|
#define mem9 8
|
||||||
|
#define mem10 9
|
||||||
|
#define mem11 10
|
||||||
|
#define mem12 11
|
||||||
|
#endif //#if defined(FEATURE_4x4_KEYPAD)|| defined (FEATURE_3x4_KEYPAD)
|
||||||
|
|
||||||
|
#define initial_sidetone_mode 1 // Sidetone mode, 0=OFF, 1=ON, 2=PADDLE_ONLY
|
||||||
|
|
||||||
|
#define sd_card_spi_ss_line 4
|
||||||
|
|
||||||
|
#if defined(OPTION_DFROBOT_LCD_COMMAND_BUTTONS)
|
||||||
|
|
||||||
|
// For V1.1 board use these values
|
||||||
|
#define dfrobot_btnRIGHT_analog 50
|
||||||
|
#define dfrobot_btnUP_analog 250
|
||||||
|
#define dfrobot_btnDOWN_analog 450
|
||||||
|
#define dfrobot_btnLEFT_analog 650
|
||||||
|
#define dfrobot_btnSELECT_analog 850
|
||||||
|
|
||||||
|
// For V1.0 board use these values
|
||||||
|
// #define dfrobot_btnRIGHT_analog 50
|
||||||
|
// #define dfrobot_btnUP_analog 195
|
||||||
|
// #define dfrobot_btnDOWN_analog 380
|
||||||
|
// #define dfrobot_btnLEFT_analog 555
|
||||||
|
// #define dfrobot_btnSELECT_analog 790
|
||||||
|
|
||||||
|
// button to memory mappings (0 = command button, 1 = memory 1, 2 = memory 2, etc.)
|
||||||
|
#define dfrobot_btnRIGHT 2
|
||||||
|
#define dfrobot_btnUP 1
|
||||||
|
#define dfrobot_btnDOWN 3
|
||||||
|
#define dfrobot_btnLEFT 4
|
||||||
|
#define dfrobot_btnSELECT 0
|
||||||
|
#define dfrobot_btnNONE 255 // do not change
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define sequencer_pins_active_state HIGH
|
||||||
|
#define sequencer_pins_inactive_state LOW
|
||||||
|
#define ptt_line_active_state HIGH
|
||||||
|
#define ptt_line_inactive_state LOW
|
||||||
|
#define tx_key_line_active_state HIGH
|
||||||
|
#define tx_key_line_inactive_state LOW
|
||||||
|
#define ptt_input_pin_active_state LOW
|
||||||
|
#define ptt_input_pin_inactive_state HIGH
|
||||||
|
#define tx_inhibit_pin_active_state LOW
|
||||||
|
#define tx_inhibit_pin_inactive_state HIGH
|
||||||
|
#define tx_pause_pin_active_state LOW
|
||||||
|
#define tx_pause_pin_inactive_state HIGH
|
||||||
|
#define sidetone_line_active_state HIGH
|
||||||
|
#define sidetone_line_inactive_state LOW
|
||||||
|
|
||||||
|
#if defined(ARDUINO_MAPLE_MINI)
|
||||||
|
#define button_value_factor 4095 //sp5iou contributed
|
||||||
|
#else
|
||||||
|
#define button_value_factor 1023
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define farnsworth_timing_calibration 1.15
|
||||||
|
|
||||||
|
#define sidetone_volume_low_limit 10
|
||||||
|
#define sidetone_volume_high_limit 500
|
||||||
|
|
||||||
|
#define custom_startup_field "your custom text here" // an example could be callsign and name, eg. "AB1XYZ Bob", (or "Worlds best operator" which requires a 20 column display), string length shouldo be no more than the number of columns on the display
|
||||||
|
|
||||||
|
#define command_mode_acknowledgement_character 'E'
|
||||||
|
|
||||||
|
#if defined(FEATURE_COMMAND_MODE_ENHANCED_CMD_ACKNOWLEDGEMENT)
|
||||||
|
#define command_a_iambic_a "A"
|
||||||
|
#define command_b_iambic_b "B"
|
||||||
|
#define command_c_single_paddle "SINGLE"
|
||||||
|
#define command_d_ultimatic "ULT"
|
||||||
|
#define command_h_weight_dit_dah_ratio_default "R"
|
||||||
|
#define command_i_tx_on "TX ON"
|
||||||
|
#define command_i_tx_off "TX OFF"
|
||||||
|
#define command_k_dit_dah_buffers_on "ON"
|
||||||
|
#define command_k_dit_dah_buffers_off "OFF"
|
||||||
|
#define command_n_paddle_reverse "REV"
|
||||||
|
#define command_n_paddle_normal "NORM"
|
||||||
|
#define command_o_sidetone_off "ST OFF"
|
||||||
|
#define command_o_sidetone_paddle_only "ST PD ONLY"
|
||||||
|
#define command_o_sidetone_on "ST ON"
|
||||||
|
#define command_t_tune_mode "TUNE"
|
||||||
|
#define command_v_potentiometer_on "POT ON"
|
||||||
|
#define command_v_potentiometer_off "POT OFF"
|
||||||
|
|
||||||
|
#define command_error "ERR"
|
||||||
|
|
||||||
|
#endif //FEATURE_COMMAND_MODE_ENHANCED_CMD_ACKNOWLEDGEMENT
|
652
k3ng_keyer/keyer_settings_test.h
Executable file
652
k3ng_keyer/keyer_settings_test.h
Executable file
|
@ -0,0 +1,652 @@
|
||||||
|
|
||||||
|
// ######## ######## ###### ########
|
||||||
|
// ## ## ## ## ##
|
||||||
|
// ## ## ## ##
|
||||||
|
// ## ###### ###### ##
|
||||||
|
// ## ## ## ##
|
||||||
|
// ## ## ## ## ##
|
||||||
|
// ## ######## ###### ##
|
||||||
|
|
||||||
|
#define TEST_SETTINGS_1
|
||||||
|
// #define TEST_SETTINGS_2
|
||||||
|
|
||||||
|
#if defined(TEST_SETTINGS_1)
|
||||||
|
|
||||||
|
#define initial_speed_wpm 26 // "factory default" keyer speed setting
|
||||||
|
#define initial_command_mode_speed_wpm 20 // "factory default" command mode speed setting
|
||||||
|
#define initial_sidetone_freq 600 // "factory default" sidetone frequency setting
|
||||||
|
#define sidetone_hz_limit_low 299
|
||||||
|
#define sidetone_hz_limit_high 2001
|
||||||
|
#define hz_high_beep 1500 // frequency in hertz of high beep
|
||||||
|
#define hz_low_beep 400 // frequency in hertz of low beep
|
||||||
|
#define initial_dah_to_dit_ratio 300 // 300 = 3 / normal 3:1 ratio
|
||||||
|
#define initial_ptt_lead_time_tx1 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx1 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx2 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx2 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx3 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx3 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx4 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx4 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx5 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx5 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx6 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx6 10 // PTT tail time in mS
|
||||||
|
#define initial_qrss_dit_length 1 // QRSS dit length in seconds
|
||||||
|
#define initial_pot_wpm_low_value 13 // Potentiometer WPM fully CCW
|
||||||
|
#define initial_pot_wpm_high_value 35 // Potentiometer WPM fully CW
|
||||||
|
#define wpm_limit_low 5
|
||||||
|
#define wpm_limit_high 60
|
||||||
|
#define potentiometer_change_threshold 0.9 // don't change the keyer speed until pot wpm has changed more than this
|
||||||
|
#define send_buffer_size 150
|
||||||
|
#define default_length_letterspace 3
|
||||||
|
#define default_length_wordspace 7
|
||||||
|
#define default_keying_compensation 0 // number of milliseconds to extend all dits and dahs - for QSK on boatanchors
|
||||||
|
#define default_first_extension_time 0 // number of milliseconds to extend first sent dit or dah
|
||||||
|
#define default_pot_full_scale_reading 1023
|
||||||
|
#define default_weighting 50 // 50 = weighting factor of 1 (normal)
|
||||||
|
#define default_ptt_hang_time_wordspace_units 0.0
|
||||||
|
#define winkey_c0_wait_time 1 // the number of milliseconds to wait to send 0xc0 byte after send buffer has been sent
|
||||||
|
#define winkey_command_timeout_ms 5000
|
||||||
|
#define winkey_discard_bytes_startup 3 // this is used if OPTION_WINKEY_DISCARD_BYTES_AT_STARTUP is enabled above
|
||||||
|
#define winkey_xoff_threshold 20 // the number of chars in the buffer when we begin sending XOFFs
|
||||||
|
#define winkey_xon_threshold 10 // the number of chars in the buffer below which we deactivate XOFF
|
||||||
|
#define default_memory_repeat_time 3000 // time in milliseconds
|
||||||
|
#define LCD_COLUMNS 16
|
||||||
|
#define LCD_ROWS 2
|
||||||
|
#define lcd_i2c_address_mathertel_PCF8574 0x27 // I2C address of display for FEATURE_LCD_MATHERTEL_PCF8574
|
||||||
|
#define lcd_i2c_address_fdebrander_lcd 0x27 // I2C address of display for FEATURE_LCD_I2C_FDEBRABANDER
|
||||||
|
#define lcd_i2c_address_ydv1_lcd 0x27 // I2C address of display for FEATURE_LCD_YDv1
|
||||||
|
//#define lcd_i2c_address_ydv1_lcd 0x38 // I2C address of display for FEATURE_LCD_YDv1
|
||||||
|
#define lcd_i2c_address_sainsmart_lcd 0x27 // I2C address of display for FEATURE_LCD_SAINSMART_I2C
|
||||||
|
#define hell_pixel_microseconds 4025
|
||||||
|
#define program_memory_limit_consec_spaces 1
|
||||||
|
#define serial_leading_zeros 1 // set to 1 to activate leading zeros in serial numbers (i.e. #1 = 001)
|
||||||
|
#define serial_cut_numbers 0 // set to 1 to activate cut numbers in serial numbers (i.e. #10 = 1T, #19 = 1N)
|
||||||
|
#define go_to_sleep_inactivity_time 10 // minutes - FEATURE_SLEEP
|
||||||
|
#define dim_backlight_inactive_time 5 // minutes - FEATURE_LCD_BACKLIGHT_AUTO_DIM
|
||||||
|
#define default_cmos_super_keyer_iambic_b_timing_percent 33 // use with FEATURE_CMOS_SUPER_KEYER_IAMBIC_B_TIMING; should be between 0 to 99 % (0% = true iambic b;100% = iambic a behavior)
|
||||||
|
#define default_cw_echo_timing_factor 1.75 // "factory default" setting
|
||||||
|
#define default_autospace_timing_factor 2.0 // "factory default" setting
|
||||||
|
#define winkey_paddle_echo_buffer_decode_timing_factor 0.25
|
||||||
|
#define potentiometer_always_on 0
|
||||||
|
#define ptt_interlock_check_every_ms 100
|
||||||
|
#define ptt_interlock_active_state HIGH
|
||||||
|
#define unknown_cw_character '*'
|
||||||
|
#define cli_paddle_echo_on_at_boot 1
|
||||||
|
#define cli_straight_key_echo_on_at_boot 1
|
||||||
|
#define tx_key_dit_and_dah_pins_active_state LOW
|
||||||
|
#define tx_key_dit_and_dah_pins_inactive_state HIGH
|
||||||
|
#define potentiometer_check_interval_ms 150
|
||||||
|
#define potentiometer_reading_threshold 1
|
||||||
|
#define default_paddle_interruption_quiet_time_element_lengths 0
|
||||||
|
#define default_wordsworth_wordspace 6
|
||||||
|
#define default_wordsworth_repetition 1
|
||||||
|
#define serial_program_memory_buffer_size 500
|
||||||
|
#define eeprom_write_time_ms 30000
|
||||||
|
|
||||||
|
#ifdef FEATURE_BUTTONS
|
||||||
|
#define analog_buttons_number_of_buttons 4
|
||||||
|
#define analog_buttons_r1 10
|
||||||
|
#define analog_buttons_r2 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#if defined(FEATURE_BUTTONS) && !defined(FEATURE_PS2_KEYBOARD) && !defined(FEATURE_USB_KEYBOARD) && !defined(FEATURE_COMMAND_LINE_INTERFACE) && !defined(FEATURE_WINKEY_EMULATION)
|
||||||
|
#define number_of_memories byte(analog_buttons_number_of_buttons-1)
|
||||||
|
#else
|
||||||
|
#define number_of_memories byte(12)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef FEATURE_CAPACITIVE_PADDLE_PINS
|
||||||
|
#define capacitance_threshold 2
|
||||||
|
#endif //FEATURE_CAPACITIVE_PADDLE_PINS
|
||||||
|
|
||||||
|
#ifdef FEATURE_LED_RING
|
||||||
|
#define led_ring_low_limit 10
|
||||||
|
#define led_ring_high_limit 50
|
||||||
|
#endif //FEATURE_LED_RING
|
||||||
|
|
||||||
|
#ifdef FEATURE_QLF
|
||||||
|
#define qlf_dit_max 125
|
||||||
|
#define qlf_dit_min 75
|
||||||
|
#define qlf_dah_max 200
|
||||||
|
#define qlf_dah_min 100
|
||||||
|
#define qlf_on_by_default 0
|
||||||
|
#endif //FEATURE_QLF
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef FEATURE_WINKEY_EMULATION
|
||||||
|
#ifdef OPTION_WINKEY_UCXLOG_9600_BAUD
|
||||||
|
#define WINKEY_DEFAULT_BAUD 9600
|
||||||
|
#else
|
||||||
|
#define WINKEY_DEFAULT_BAUD 1200
|
||||||
|
#endif //OPTION_WINKEY_UCXLOG_9600_BAUD
|
||||||
|
// alter these below to map alternate sidetones for Winkey interface protocol emulation
|
||||||
|
#ifdef OPTION_WINKEY_2_SUPPORT
|
||||||
|
#define WINKEY_SIDETONE_1 3759
|
||||||
|
#define WINKEY_SIDETONE_2 1879
|
||||||
|
#define WINKEY_SIDETONE_3 1252
|
||||||
|
#define WINKEY_SIDETONE_4 940
|
||||||
|
#define WINKEY_SIDETONE_5 752
|
||||||
|
#define WINKEY_SIDETONE_6 625
|
||||||
|
#define WINKEY_SIDETONE_7 535
|
||||||
|
#define WINKEY_SIDETONE_8 469
|
||||||
|
#define WINKEY_SIDETONE_9 417
|
||||||
|
#define WINKEY_SIDETONE_10 375
|
||||||
|
#else //OPTION_WINKEY_2_SUPPORT
|
||||||
|
#define WINKEY_SIDETONE_1 4000
|
||||||
|
#define WINKEY_SIDETONE_2 2000
|
||||||
|
#define WINKEY_SIDETONE_3 1333
|
||||||
|
#define WINKEY_SIDETONE_4 1000
|
||||||
|
#define WINKEY_SIDETONE_5 800
|
||||||
|
#define WINKEY_SIDETONE_6 666
|
||||||
|
#define WINKEY_SIDETONE_7 571
|
||||||
|
#define WINKEY_SIDETONE_8 500
|
||||||
|
#define WINKEY_SIDETONE_9 444
|
||||||
|
#define WINKEY_SIDETONE_10 400
|
||||||
|
#endif //OPTION_WINKEY_2_SUPPORT
|
||||||
|
|
||||||
|
#define WINKEY_1_REPORT_VERSION_NUMBER 10
|
||||||
|
#define WINKEY_2_REPORT_VERSION_NUMBER 23
|
||||||
|
|
||||||
|
// alter these to map to alternate hang time wordspace units
|
||||||
|
#define WINKEY_HANG_TIME_1_0 1.0
|
||||||
|
#define WINKEY_HANG_TIME_1_33 1.33
|
||||||
|
#define WINKEY_HANG_TIME_1_66 1.66
|
||||||
|
#define WINKEY_HANG_TIME_2_0 2.0
|
||||||
|
|
||||||
|
#define WINKEY_RETURN_THIS_FOR_ADMIN_GET_CAL 0x16
|
||||||
|
#define WINKEY_RETURN_THIS_FOR_ADMIN_PADDLE_A2D 0xEE
|
||||||
|
#define WINKEY_RETURN_THIS_FOR_ADMIN_SPEED_A2D 0x00
|
||||||
|
|
||||||
|
#endif //FEATURE_WINKEY_EMULATION
|
||||||
|
|
||||||
|
|
||||||
|
#define PRIMARY_SERIAL_PORT &Serial
|
||||||
|
#define PRIMARY_SERIAL_PORT_BAUD 115200 // This applies only when the port is in Command Line Interface mode. In Winkey mode it will default to 1200.
|
||||||
|
|
||||||
|
#ifdef FEATURE_COMMAND_LINE_INTERFACE_ON_SECONDARY_PORT
|
||||||
|
#define SECONDARY_SERIAL_PORT &Serial1
|
||||||
|
#define SECONDARY_SERIAL_PORT_BAUD 115200
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#define CW_DECODER_SCREEN_COLUMNS 120 // word wrap at this many columns
|
||||||
|
#define CW_DECODER_SPACE_PRINT_THRESH 4.5 // print space if no tone for this many element lengths
|
||||||
|
#define CW_DECODER_SPACE_DECODE_THRESH 2.0 // invoke character decode if no tone for this many element lengths
|
||||||
|
#define CW_DECODER_NOISE_FILTER 20 // ignore elements shorter than this (mS)
|
||||||
|
|
||||||
|
#define STRAIGHT_KEY_ACTIVE_STATE LOW
|
||||||
|
|
||||||
|
#ifdef FEATURE_DYNAMIC_DAH_TO_DIT_RATIO
|
||||||
|
#define DYNAMIC_DAH_TO_DIT_RATIO_LOWER_LIMIT_WPM 30
|
||||||
|
#define DYNAMIC_DAH_TO_DIT_RATIO_LOWER_LIMIT_RATIO 300 // 300 = 3:1 ratio
|
||||||
|
#define DYNAMIC_DAH_TO_DIT_RATIO_UPPER_LIMIT_WPM 70
|
||||||
|
#define DYNAMIC_DAH_TO_DIT_RATIO_UPPER_LIMIT_RATIO 240 // 240 = 2.4:1 ratio
|
||||||
|
#endif //FEATURE_DYNAMIC_DAH_TO_DIT_RATIO
|
||||||
|
|
||||||
|
#if defined(FEATURE_COMPETITION_COMPRESSION_DETECTION)
|
||||||
|
#define COMPETITION_COMPRESSION_DETECTION_ARRAY_SIZE 16
|
||||||
|
#define COMPETITION_COMPRESSION_DETECTION_TIME_INTERCHAR_LOWER_LIMIT 1
|
||||||
|
#define COMPETITION_COMPRESSION_DETECTION_TIME_INTERCHAR_UPPER_LIMIT 6.0
|
||||||
|
#define COMPETITION_COMPRESSION_DETECTION_AVERAGE_ALARM_THRESHOLD 3.0
|
||||||
|
#endif //FEATURE_COMPETITION_COMPRESSION_DETECTION
|
||||||
|
|
||||||
|
#if defined(FEATURE_SLEEP)
|
||||||
|
#define KEYER_AWAKE_PIN_AWAKE_STATE HIGH
|
||||||
|
#define KEYER_AWAKE_PIN_ASLEEP_STATE LOW
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_LCD_BACKLIGHT_AUTO_DIM)
|
||||||
|
#define keyer_power_led_awake_duty 255 // PWM duty cycle. 0 is 0%, 255 is 100%
|
||||||
|
#define keyer_power_led_asleep_duty 25 // 25 is quite dim. Use 0 for off
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_ETHERNET)
|
||||||
|
#define FEATURE_ETHERNET_IP {192,168,1,178} // default IP address ("192.168.1.178")
|
||||||
|
#define FEATURE_ETHERNET_MAC {0xDE,0xAD,0xBE,0xEF,0xFE,0xED}
|
||||||
|
#define FEATURE_ETHERNET_DNS {8,8,8,8}
|
||||||
|
// #define FEATURE_ETHERNET_IP {192,168,1,179} // default IP address ("192.168.1.179")
|
||||||
|
// #define FEATURE_ETHERNET_MAC {0xDE,0xAD,0xBE,0xEF,0xFE,0xEE}
|
||||||
|
|
||||||
|
#define FEATURE_ETHERNET_GATEWAY {192,168,1,1} // default gateway
|
||||||
|
#define FEATURE_ETHERNET_SUBNET_MASK {255,255,255,0} // default subnet mask
|
||||||
|
#define FEATURE_ETHERNET_WEB_LISTENER_PORT 80
|
||||||
|
#define FEATURE_UDP_SEND_BUFFER_SIZE 128
|
||||||
|
#define FEATURE_UDP_RECEIVE_BUFFER_SIZE 128
|
||||||
|
#endif //FEATURE_ETHERNET
|
||||||
|
|
||||||
|
#define FEATURE_INTERNET_LINK_MAX_LINKS 2
|
||||||
|
#define FEATURE_INTERNET_LINK_DEFAULT_RCV_UDP_PORT 8888
|
||||||
|
#define FEATURE_INTERNET_LINK_BUFFER_TIME_MS 500 // increase this time if you have greater than 500 ms latency on your link
|
||||||
|
#define FEATURE_INTERNET_LINK_SVC_DURING_LOOP_TIME_MS 20
|
||||||
|
#define FEATURE_INTERNET_LINK_KEY_DOWN_TIMEOUT_SECS 8
|
||||||
|
|
||||||
|
#define WEB_SERVER_CONTROL_TX_KEY_TIME_LIMIT_SECS 10
|
||||||
|
|
||||||
|
#if defined(FEATURE_4x4_KEYPAD)|| defined (FEATURE_3x4_KEYPAD)
|
||||||
|
#define KEYPAD_ROWS 4 //KeyPad Rows
|
||||||
|
#if defined(FEATURE_4x4_KEYPAD)
|
||||||
|
#define KEYPAD_COLS 4 //keypad Columns
|
||||||
|
#else
|
||||||
|
#define KEYPAD_COLS 3
|
||||||
|
#endif
|
||||||
|
#define mem1 0 //Memory numbers for Keypad: Actual memory numbers start with "0"
|
||||||
|
#define mem2 1
|
||||||
|
#define mem3 2
|
||||||
|
#define mem4 3
|
||||||
|
#define mem5 4
|
||||||
|
#define mem6 5
|
||||||
|
#define mem7 6
|
||||||
|
#define mem8 7
|
||||||
|
#define mem9 8
|
||||||
|
#define mem10 9
|
||||||
|
#define mem11 10
|
||||||
|
#define mem12 11
|
||||||
|
#endif //#if defined(FEATURE_4x4_KEYPAD)|| defined (FEATURE_3x4_KEYPAD)
|
||||||
|
|
||||||
|
#define initial_sidetone_mode 1 // Sidetone mode, 0=OFF, 1=ON, 2=PADDLE_ONLY
|
||||||
|
|
||||||
|
#define sd_card_spi_ss_line 4
|
||||||
|
|
||||||
|
|
||||||
|
#if defined(OPTION_DFROBOT_LCD_COMMAND_BUTTONS)
|
||||||
|
|
||||||
|
// For V1.1 board use these values
|
||||||
|
#define dfrobot_btnRIGHT_analog 50
|
||||||
|
#define dfrobot_btnUP_analog 250
|
||||||
|
#define dfrobot_btnDOWN_analog 450
|
||||||
|
#define dfrobot_btnLEFT_analog 650
|
||||||
|
#define dfrobot_btnSELECT_analog 850
|
||||||
|
|
||||||
|
// For V1.0 board use these values
|
||||||
|
// #define dfrobot_btnRIGHT_analog 50
|
||||||
|
// #define dfrobot_btnUP_analog 195
|
||||||
|
// #define dfrobot_btnDOWN_analog 380
|
||||||
|
// #define dfrobot_btnLEFT_analog 555
|
||||||
|
// #define dfrobot_btnSELECT_analog 790
|
||||||
|
|
||||||
|
// button to memory mappings (0 = command button, 1 = memory 1, 2 = memory 2, etc.)
|
||||||
|
#define dfrobot_btnRIGHT 2
|
||||||
|
#define dfrobot_btnUP 1
|
||||||
|
#define dfrobot_btnDOWN 3
|
||||||
|
#define dfrobot_btnLEFT 4
|
||||||
|
#define dfrobot_btnSELECT 0
|
||||||
|
#define dfrobot_btnNONE 255 // do not change
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#define sequencer_pins_active_state HIGH
|
||||||
|
#define sequencer_pins_inactive_state LOW
|
||||||
|
#define ptt_line_active_state HIGH
|
||||||
|
#define ptt_line_inactive_state LOW
|
||||||
|
#define tx_key_line_active_state HIGH
|
||||||
|
#define tx_key_line_inactive_state LOW
|
||||||
|
#define ptt_input_pin_active_state LOW
|
||||||
|
#define ptt_input_pin_inactive_state HIGH
|
||||||
|
#define tx_inhibit_pin_active_state LOW
|
||||||
|
#define tx_inhibit_pin_inactive_state HIGH
|
||||||
|
#define tx_pause_pin_active_state LOW
|
||||||
|
#define tx_pause_pin_inactive_state HIGH
|
||||||
|
#define sidetone_line_active_state HIGH
|
||||||
|
#define sidetone_line_inactive_state LOW
|
||||||
|
|
||||||
|
#if defined(ARDUINO_MAPLE_MINI)
|
||||||
|
#define button_value_factor 4095
|
||||||
|
#else
|
||||||
|
#define button_value_factor 1023
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define farnsworth_timing_calibration 1.15
|
||||||
|
|
||||||
|
#define sidetone_volume_low_limit 10
|
||||||
|
#define sidetone_volume_high_limit 500
|
||||||
|
|
||||||
|
#define command_mode_acknowledgement_character 'C'
|
||||||
|
|
||||||
|
#if defined(FEATURE_COMMAND_MODE_ENHANCED_CMD_ACKNOWLEDGEMENT)
|
||||||
|
#define command_a_iambic_a "A"
|
||||||
|
#define command_b_iambic_b "B"
|
||||||
|
#define command_c_single_paddle "SINGLE"
|
||||||
|
#define command_d_ultimatic "ULT"
|
||||||
|
#define command_h_weight_dit_dah_ratio_default "R"
|
||||||
|
#define command_i_tx_on "TX ON"
|
||||||
|
#define command_i_tx_off "TX OFF"
|
||||||
|
#define command_k_dit_dah_buffers_on "ON"
|
||||||
|
#define command_k_dit_dah_buffers_off "OFF"
|
||||||
|
#define command_n_paddle_reverse "REV"
|
||||||
|
#define command_n_paddle_normal "NORM"
|
||||||
|
#define command_o_sidetone_off "ST OFF"
|
||||||
|
#define command_o_sidetone_paddle_only "ST PD ONLY"
|
||||||
|
#define command_o_sidetone_on "ST ON"
|
||||||
|
#define command_t_tune_mode "TUNE"
|
||||||
|
#define command_v_potentiometer_on "POT ON"
|
||||||
|
#define command_v_potentiometer_off "POT OFF"
|
||||||
|
|
||||||
|
#define command_error "ERR"
|
||||||
|
|
||||||
|
#endif //FEATURE_COMMAND_MODE_ENHANCED_CMD_ACKNOWLEDGEMENT
|
||||||
|
|
||||||
|
#endif //TEST_SETTINGS_1
|
||||||
|
|
||||||
|
//*********************************************************************************************************************
|
||||||
|
//*********************************************************************************************************************
|
||||||
|
//*********************************************************************************************************************
|
||||||
|
//*********************************************************************************************************************
|
||||||
|
//*********************************************************************************************************************
|
||||||
|
|
||||||
|
#if defined(TEST_SETTINGS_2)
|
||||||
|
|
||||||
|
|
||||||
|
#define initial_speed_wpm 17 // "factory default" keyer speed setting
|
||||||
|
#define initial_sidetone_freq 588 // "factory default" sidetone frequency setting
|
||||||
|
#define sidetone_hz_limit_low 299
|
||||||
|
#define sidetone_hz_limit_high 2001
|
||||||
|
#define hz_high_beep 1500 // frequency in hertz of high beep
|
||||||
|
#define hz_low_beep 400 // frequency in hertz of low beep
|
||||||
|
#define initial_dah_to_dit_ratio 300 // 300 = 3 / normal 3:1 ratio
|
||||||
|
#define initial_ptt_lead_time_tx1 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx1 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx2 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx2 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx3 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx3 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx4 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx4 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx5 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx5 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx6 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx6 10 // PTT tail time in mS
|
||||||
|
#define initial_qrss_dit_length 1 // QRSS dit length in seconds
|
||||||
|
#define initial_pot_wpm_low_value 12 // Potentiometer WPM fully CCW
|
||||||
|
#define initial_pot_wpm_high_value 30 // Potentiometer WPM fully CW
|
||||||
|
#define wpm_limit_low 5
|
||||||
|
#define wpm_limit_high 60
|
||||||
|
#define potentiometer_change_threshold 0.9 // don't change the keyer speed until pot wpm has changed more than this
|
||||||
|
#define potentiometer_reading_threshold 1
|
||||||
|
#define send_buffer_size 150
|
||||||
|
#define default_length_letterspace 3
|
||||||
|
#define default_length_wordspace 7
|
||||||
|
#define default_keying_compensation 0 // number of milliseconds to extend all dits and dahs - for QSK on boatanchors
|
||||||
|
#define default_first_extension_time 0 // number of milliseconds to extend first sent dit or dah
|
||||||
|
#define default_pot_full_scale_reading 1023
|
||||||
|
#define default_weighting 50 // 50 = weighting factor of 1 (normal)
|
||||||
|
#define default_ptt_hang_time_wordspace_units 0.0
|
||||||
|
#define winkey_c0_wait_time 1 // the number of milliseconds to wait to send 0xc0 byte after send buffer has been sent
|
||||||
|
#define winkey_command_timeout_ms 5000
|
||||||
|
#define winkey_discard_bytes_startup 3 // this is used if OPTION_WINKEY_DISCARD_BYTES_AT_STARTUP is enabled above
|
||||||
|
#define winkey_xoff_threshold 20 // the number of chars in the buffer when we begin sending XOFFs
|
||||||
|
#define winkey_xon_threshold 10 // the number of chars in the buffer below which we deactivate XOFF
|
||||||
|
#define default_memory_repeat_time 3000 // time in milliseconds
|
||||||
|
#define LCD_COLUMNS 16
|
||||||
|
#define LCD_ROWS 2
|
||||||
|
#define lcd_i2c_address_mathertel_PCF8574 0x27 // I2C address of display
|
||||||
|
#define hell_pixel_microseconds 4025
|
||||||
|
#define program_memory_limit_consec_spaces 1
|
||||||
|
#define serial_leading_zeros 1 // set to 1 to activate leading zeros in serial numbers (i.e. #1 = 001)
|
||||||
|
#define serial_cut_numbers 0 // set to 1 to activate cut numbers in serial numbers (i.e. #10 = 1T, #19 = 1N)
|
||||||
|
#define go_to_sleep_inactivity_time 10 // minutes - FEATURE_SLEEP
|
||||||
|
#define default_cmos_super_keyer_iambic_b_timing_percent 33 // use with FEATURE_CMOS_SUPER_KEYER_IAMBIC_B_TIMING; should be between 0 to 99 % (0% = true iambic b;100% = iambic a behavior)
|
||||||
|
#define cw_echo_timing_factor 0.25
|
||||||
|
#define winkey_paddle_echo_buffer_decode_time_factor 1600.0
|
||||||
|
#define potentiometer_always_on 0
|
||||||
|
#define ptt_interlock_check_every_ms 100
|
||||||
|
#define ptt_interlock_active_state HIGH
|
||||||
|
#define unknown_cw_character '*'
|
||||||
|
#define cli_paddle_echo_on_at_boot 1
|
||||||
|
#define cli_straight_key_echo_on_at_boot 1
|
||||||
|
#define tx_key_dit_and_dah_pins_active_state HIGH
|
||||||
|
#define tx_key_dit_and_dah_pins_inactive_state LOW
|
||||||
|
#define potentiometer_check_interval_ms 150
|
||||||
|
#define default_paddle_interruption_quiet_time_element_lengths 0
|
||||||
|
#define default_wordsworth_wordspace 6
|
||||||
|
#define default_wordsworth_repetition 1
|
||||||
|
#define serial_program_memory_buffer_size 500
|
||||||
|
#define eeprom_write_time_ms 30000
|
||||||
|
|
||||||
|
#ifdef FEATURE_BUTTONS
|
||||||
|
#define analog_buttons_number_of_buttons 4 // includes the command button (command button + 3 memory buttons = 4)
|
||||||
|
#define analog_buttons_r1 10
|
||||||
|
#define analog_buttons_r2 1.2
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#if defined(FEATURE_BUTTONS) && !defined(FEATURE_PS2_KEYBOARD) && !defined(FEATURE_USB_KEYBOARD) && !defined(FEATURE_COMMAND_LINE_INTERFACE) && !defined(FEATURE_WINKEY_EMULATION)
|
||||||
|
#define number_of_memories byte(analog_buttons_number_of_buttons-1)
|
||||||
|
#else
|
||||||
|
#define number_of_memories byte(12)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef FEATURE_CAPACITIVE_PADDLE_PINS
|
||||||
|
#define capacitance_threshold 2
|
||||||
|
#endif //FEATURE_CAPACITIVE_PADDLE_PINS
|
||||||
|
|
||||||
|
#ifdef FEATURE_LED_RING
|
||||||
|
#define led_ring_low_limit 10
|
||||||
|
#define led_ring_high_limit 50
|
||||||
|
#endif //FEATURE_LED_RING
|
||||||
|
|
||||||
|
#ifdef FEATURE_QLF
|
||||||
|
#define qlf_dit_max 125
|
||||||
|
#define qlf_dit_min 75
|
||||||
|
#define qlf_dah_max 200
|
||||||
|
#define qlf_dah_min 100
|
||||||
|
#define qlf_on_by_default 0
|
||||||
|
#endif //FEATURE_QLF
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef FEATURE_WINKEY_EMULATION
|
||||||
|
#ifdef OPTION_WINKEY_UCXLOG_9600_BAUD
|
||||||
|
#define WINKEY_DEFAULT_BAUD 9600
|
||||||
|
#else
|
||||||
|
#define WINKEY_DEFAULT_BAUD 1200
|
||||||
|
#endif //OPTION_WINKEY_UCXLOG_9600_BAUD
|
||||||
|
// alter these below to map alternate sidetones for Winkey interface protocol emulation
|
||||||
|
#ifdef OPTION_WINKEY_2_SUPPORT
|
||||||
|
#define WINKEY_SIDETONE_1 3759
|
||||||
|
#define WINKEY_SIDETONE_2 1879
|
||||||
|
#define WINKEY_SIDETONE_3 1252
|
||||||
|
#define WINKEY_SIDETONE_4 940
|
||||||
|
#define WINKEY_SIDETONE_5 752
|
||||||
|
#define WINKEY_SIDETONE_6 625
|
||||||
|
#define WINKEY_SIDETONE_7 535
|
||||||
|
#define WINKEY_SIDETONE_8 469
|
||||||
|
#define WINKEY_SIDETONE_9 417
|
||||||
|
#define WINKEY_SIDETONE_10 375
|
||||||
|
#else //OPTION_WINKEY_2_SUPPORT
|
||||||
|
#define WINKEY_SIDETONE_1 4000
|
||||||
|
#define WINKEY_SIDETONE_2 2000
|
||||||
|
#define WINKEY_SIDETONE_3 1333
|
||||||
|
#define WINKEY_SIDETONE_4 1000
|
||||||
|
#define WINKEY_SIDETONE_5 800
|
||||||
|
#define WINKEY_SIDETONE_6 666
|
||||||
|
#define WINKEY_SIDETONE_7 571
|
||||||
|
#define WINKEY_SIDETONE_8 500
|
||||||
|
#define WINKEY_SIDETONE_9 444
|
||||||
|
#define WINKEY_SIDETONE_10 400
|
||||||
|
#endif //OPTION_WINKEY_2_SUPPORT
|
||||||
|
|
||||||
|
#define WINKEY_1_REPORT_VERSION_NUMBER 10
|
||||||
|
#define WINKEY_2_REPORT_VERSION_NUMBER 23
|
||||||
|
|
||||||
|
// alter these to map to alternate hang time wordspace units
|
||||||
|
#define WINKEY_HANG_TIME_1_0 1.0
|
||||||
|
#define WINKEY_HANG_TIME_1_33 1.33
|
||||||
|
#define WINKEY_HANG_TIME_1_66 1.66
|
||||||
|
#define WINKEY_HANG_TIME_2_0 2.0
|
||||||
|
|
||||||
|
#define WINKEY_RETURN_THIS_FOR_ADMIN_GET_CAL 0x16
|
||||||
|
#define WINKEY_RETURN_THIS_FOR_ADMIN_PADDLE_A2D 0xEE
|
||||||
|
#define WINKEY_RETURN_THIS_FOR_ADMIN_SPEED_A2D 0x00
|
||||||
|
|
||||||
|
#endif //FEATURE_WINKEY_EMULATION
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#define PRIMARY_SERIAL_PORT &Serial
|
||||||
|
#define PRIMARY_SERIAL_PORT_BAUD 115200 // This applies only when the port is in Command Line Interface mode. In Winkey mode it will default to 1200.
|
||||||
|
|
||||||
|
#ifdef FEATURE_COMMAND_LINE_INTERFACE_ON_SECONDARY_PORT
|
||||||
|
#define SECONDARY_SERIAL_PORT &Serial1
|
||||||
|
#define SECONDARY_SERIAL_PORT_BAUD 115200
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#define CW_DECODER_SCREEN_COLUMNS 120 // word wrap at this many columns
|
||||||
|
#define CW_DECODER_SPACE_PRINT_THRESH 4.5 // print space if no tone for this many element lengths
|
||||||
|
#define CW_DECODER_SPACE_DECODE_THRESH 2.0 // invoke character decode if no tone for this many element lengths
|
||||||
|
#define CW_DECODER_NOISE_FILTER 20 // ignore elements shorter than this (mS)
|
||||||
|
|
||||||
|
#define STRAIGHT_KEY_ACTIVE_STATE LOW
|
||||||
|
|
||||||
|
#ifdef FEATURE_DYNAMIC_DAH_TO_DIT_RATIO
|
||||||
|
#define DYNAMIC_DAH_TO_DIT_RATIO_LOWER_LIMIT_WPM 30
|
||||||
|
#define DYNAMIC_DAH_TO_DIT_RATIO_LOWER_LIMIT_RATIO 300 // 300 = 3:1 ratio
|
||||||
|
#define DYNAMIC_DAH_TO_DIT_RATIO_UPPER_LIMIT_WPM 70
|
||||||
|
#define DYNAMIC_DAH_TO_DIT_RATIO_UPPER_LIMIT_RATIO 240 // 240 = 2.4:1 ratio
|
||||||
|
#endif //FEATURE_DYNAMIC_DAH_TO_DIT_RATIO
|
||||||
|
|
||||||
|
#if defined(FEATURE_COMPETITION_COMPRESSION_DETECTION)
|
||||||
|
#define COMPETITION_COMPRESSION_DETECTION_ARRAY_SIZE 16
|
||||||
|
#define COMPETITION_COMPRESSION_DETECTION_TIME_INTERCHAR_LOWER_LIMIT 1
|
||||||
|
#define COMPETITION_COMPRESSION_DETECTION_TIME_INTERCHAR_UPPER_LIMIT 6.0
|
||||||
|
#define COMPETITION_COMPRESSION_DETECTION_AVERAGE_ALARM_THRESHOLD 3.0
|
||||||
|
#endif //FEATURE_COMPETITION_COMPRESSION_DETECTION
|
||||||
|
|
||||||
|
#if defined(FEATURE_SLEEP)
|
||||||
|
#define KEYER_AWAKE_PIN_AWAKE_STATE HIGH
|
||||||
|
#define KEYER_AWAKE_PIN_ASLEEP_STATE LOW
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_ETHERNET)
|
||||||
|
// #define FEATURE_ETHERNET_IP {192,168,1,178} // default IP address ("192.168.1.178")
|
||||||
|
// #define FEATURE_ETHERNET_MAC {0xDE,0xAD,0xBE,0xEF,0xFE,0xED}
|
||||||
|
#define FEATURE_ETHERNET_IP {192,168,1,179} // default IP address ("192.168.1.179")
|
||||||
|
#define FEATURE_ETHERNET_MAC {0xDE,0xAD,0xBE,0xEF,0xFE,0xEE}
|
||||||
|
|
||||||
|
#define FEATURE_ETHERNET_GATEWAY {192,168,1,1} // default gateway
|
||||||
|
#define FEATURE_ETHERNET_SUBNET_MASK {255,255,255,0} // default subnet mask
|
||||||
|
#define FEATURE_ETHERNET_WEB_LISTENER_PORT 80
|
||||||
|
#define FEATURE_UDP_SEND_BUFFER_SIZE 128
|
||||||
|
#define FEATURE_UDP_RECEIVE_BUFFER_SIZE 128
|
||||||
|
#endif //FEATURE_ETHERNET
|
||||||
|
|
||||||
|
#define WEB_SERVER_CONTROL_TX_KEY_TIME_LIMIT_SECS 10
|
||||||
|
|
||||||
|
#define FEATURE_INTERNET_LINK_MAX_LINKS 2
|
||||||
|
#define FEATURE_INTERNET_LINK_DEFAULT_RCV_UDP_PORT 8888
|
||||||
|
#define FEATURE_INTERNET_LINK_BUFFER_TIME_MS 500
|
||||||
|
|
||||||
|
#if defined(FEATURE_4x4_KEYPAD)|| defined (FEATURE_3x4_KEYPAD)
|
||||||
|
#define KEYPAD_ROWS 4 //KeyPad Rows
|
||||||
|
#if defined(FEATURE_4x4_KEYPAD)
|
||||||
|
#define KEYPAD_COLS 4 //keypad Columns
|
||||||
|
#else
|
||||||
|
#define KEYPAD_COLS 3
|
||||||
|
#endif
|
||||||
|
#define mem1 0 //Memory numbers for Keypad: Actual memory numbers start with "0"
|
||||||
|
#define mem2 1
|
||||||
|
#define mem3 2
|
||||||
|
#define mem4 3
|
||||||
|
#define mem5 4
|
||||||
|
#define mem6 5
|
||||||
|
#define mem7 6
|
||||||
|
#define mem8 7
|
||||||
|
#define mem9 8
|
||||||
|
#define mem10 9
|
||||||
|
#define mem11 10
|
||||||
|
#define mem12 11
|
||||||
|
#endif //#if defined(FEATURE_4x4_KEYPAD)|| defined (FEATURE_3x4_KEYPAD)
|
||||||
|
|
||||||
|
#define initial_sidetone_mode 1 // Sidetone mode, 0=OFF, 1=ON, 2=PADDLE_ONLY
|
||||||
|
#define initial_command_mode_speed_wpm 20
|
||||||
|
|
||||||
|
#if defined(OPTION_DFROBOT_LCD_COMMAND_BUTTONS)
|
||||||
|
|
||||||
|
// For V1.1 board use these values
|
||||||
|
#define dfrobot_btnRIGHT_analog 50
|
||||||
|
#define dfrobot_btnUP_analog 250
|
||||||
|
#define dfrobot_btnDOWN_analog 450
|
||||||
|
#define dfrobot_btnLEFT_analog 650
|
||||||
|
#define dfrobot_btnSELECT_analog 850
|
||||||
|
|
||||||
|
// For V1.0 board use these values
|
||||||
|
// #define dfrobot_btnRIGHT_analog 50
|
||||||
|
// #define dfrobot_btnUP_analog 195
|
||||||
|
// #define dfrobot_btnDOWN_analog 380
|
||||||
|
// #define dfrobot_btnLEFT_analog 555
|
||||||
|
// #define dfrobot_btnSELECT_analog 790
|
||||||
|
|
||||||
|
// button to memory mappings (0 = command button, 1 = memory 1, 2 = memory 2, etc.)
|
||||||
|
#define dfrobot_btnRIGHT 2
|
||||||
|
#define dfrobot_btnUP 1
|
||||||
|
#define dfrobot_btnDOWN 3
|
||||||
|
#define dfrobot_btnLEFT 4
|
||||||
|
#define dfrobot_btnSELECT 0
|
||||||
|
#define dfrobot_btnNONE 255 // do not change
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#define sequencer_pins_active_state HIGH
|
||||||
|
#define sequencer_pins_inactive_state LOW
|
||||||
|
#define ptt_line_active_state HIGH
|
||||||
|
#define ptt_line_inactive_state LOW
|
||||||
|
#define tx_key_line_active_state HIGH
|
||||||
|
#define tx_key_line_inactive_state LOW
|
||||||
|
#define ptt_input_pin_active_state LOW
|
||||||
|
#define ptt_input_pin_inactive_state HIGH
|
||||||
|
#define tx_inhibit_pin_active_state LOW
|
||||||
|
#define tx_inhibit_pin_inactive_state HIGH
|
||||||
|
#define tx_pause_pin_active_state LOW
|
||||||
|
#define tx_pause_pin_inactive_state HIGH
|
||||||
|
|
||||||
|
|
||||||
|
#if defined(ARDUINO_MAPLE_MINI)
|
||||||
|
#define button_value_factor 4095 //sp5iou contributed
|
||||||
|
#else
|
||||||
|
#define button_value_factor 1023
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define farnsworth_timing_calibration 1.15
|
||||||
|
|
||||||
|
#define sidetone_volume_low_limit 10
|
||||||
|
#define sidetone_volume_high_limit 500
|
||||||
|
|
||||||
|
#define custom_startup_field "your custom text here" // an example could be callsign and name, eg. "AB1XYZ Bob", (or "Worlds best operator" which requires a 20 column display), string length shouldo be no more than the number of columns on the display
|
||||||
|
|
||||||
|
#define command_mode_acknowledgement_character 'R'
|
||||||
|
|
||||||
|
#if defined(FEATURE_COMMAND_MODE_ENHANCED_CMD_ACKNOWLEDGEMENT)
|
||||||
|
#define command_a_iambic_a "A"
|
||||||
|
#define command_b_iambic_b "B"
|
||||||
|
#define command_c_single_paddle "SINGLE"
|
||||||
|
#define command_d_ultimatic "ULT"
|
||||||
|
#define command_h_weight_dit_dah_ratio_default "R"
|
||||||
|
#define command_i_tx_on "TX ON"
|
||||||
|
#define command_i_tx_off "TX OFF"
|
||||||
|
#define command_k_dit_dah_buffers_on "ON"
|
||||||
|
#define command_k_dit_dah_buffers_off "OFF"
|
||||||
|
#define command_n_paddle_reverse "REV"
|
||||||
|
#define command_n_paddle_normal "NORM"
|
||||||
|
#define command_o_sidetone_off "ST OFF"
|
||||||
|
#define command_o_sidetone_paddle_only "ST PD ONLY"
|
||||||
|
#define command_o_sidetone_on "ST ON"
|
||||||
|
#define command_v_potentiometer_on "POT ON"
|
||||||
|
#define command_v_potentiometer_off "POT OFF"
|
||||||
|
|
||||||
|
#define command_error "ERR"
|
||||||
|
|
||||||
|
#endif //FEATURE_COMMAND_MODE_ENHANCED_CMD_ACKNOWLEDGEMENT
|
||||||
|
|
||||||
|
#endif //TEST_SETTINGS_2
|
||||||
|
|
||||||
|
// ######## ######## ###### ########
|
||||||
|
// ## ## ## ## ##
|
||||||
|
// ## ## ## ##
|
||||||
|
// ## ###### ###### ##
|
||||||
|
// ## ## ## ##
|
||||||
|
// ## ## ## ## ##
|
||||||
|
// ## ######## ###### ##
|
361
k3ng_keyer/keyer_settings_test_everything.h
Executable file
361
k3ng_keyer/keyer_settings_test_everything.h
Executable file
|
@ -0,0 +1,361 @@
|
||||||
|
|
||||||
|
// ######## ######## ###### ########
|
||||||
|
// ## ## ## ## ##
|
||||||
|
// ## ## ## ## EVERYTHING
|
||||||
|
// ## ###### ###### ##
|
||||||
|
// ## ## ## ##
|
||||||
|
// ## ## ## ## ##
|
||||||
|
// ## ######## ###### ##
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#define initial_speed_wpm 26 // "factory default" keyer speed setting
|
||||||
|
#define initial_command_mode_speed_wpm 20 // "factory default" command mode speed setting
|
||||||
|
#define initial_sidetone_freq 600 // "factory default" sidetone frequency setting
|
||||||
|
#define sidetone_hz_limit_low 299
|
||||||
|
#define sidetone_hz_limit_high 2001
|
||||||
|
#define hz_high_beep 1500 // frequency in hertz of high beep
|
||||||
|
#define hz_low_beep 400 // frequency in hertz of low beep
|
||||||
|
#define initial_dah_to_dit_ratio 300 // 300 = 3 / normal 3:1 ratio
|
||||||
|
#define initial_ptt_lead_time_tx1 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx1 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx2 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx2 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx3 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx3 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx4 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx4 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx5 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx5 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx6 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx6 10 // PTT tail time in mS
|
||||||
|
#define initial_qrss_dit_length 1 // QRSS dit length in seconds
|
||||||
|
#define initial_pot_wpm_low_value 13 // Potentiometer WPM fully CCW
|
||||||
|
#define initial_pot_wpm_high_value 35 // Potentiometer WPM fully CW
|
||||||
|
#define wpm_limit_low 5
|
||||||
|
#define wpm_limit_high 60
|
||||||
|
#define potentiometer_change_threshold 0.9 // don't change the keyer speed until pot wpm has changed more than this
|
||||||
|
#define send_buffer_size 150
|
||||||
|
#define default_length_letterspace 3
|
||||||
|
#define default_length_wordspace 7
|
||||||
|
#define default_keying_compensation 0 // number of milliseconds to extend all dits and dahs - for QSK on boatanchors
|
||||||
|
#define default_first_extension_time 0 // number of milliseconds to extend first sent dit or dah
|
||||||
|
#define default_pot_full_scale_reading 1023
|
||||||
|
#define default_weighting 50 // 50 = weighting factor of 1 (normal)
|
||||||
|
#define default_ptt_hang_time_wordspace_units 0.0
|
||||||
|
#define winkey_c0_wait_time 1 // the number of milliseconds to wait to send 0xc0 byte after send buffer has been sent
|
||||||
|
#define winkey_command_timeout_ms 5000
|
||||||
|
#define winkey_discard_bytes_startup 3 // this is used if OPTION_WINKEY_DISCARD_BYTES_AT_STARTUP is enabled above
|
||||||
|
#define winkey_xoff_threshold 20 // the number of chars in the buffer when we begin sending XOFFs
|
||||||
|
#define winkey_xon_threshold 10 // the number of chars in the buffer below which we deactivate XOFF
|
||||||
|
#define default_memory_repeat_time 3000 // time in milliseconds
|
||||||
|
#define LCD_COLUMNS 16
|
||||||
|
#define LCD_ROWS 2
|
||||||
|
#define lcd_i2c_address_mathertel_PCF8574 0x27 // I2C address of display for FEATURE_LCD_MATHERTEL_PCF8574
|
||||||
|
#define lcd_i2c_address_fdebrander_lcd 0x27 // I2C address of display for FEATURE_LCD_I2C_FDEBRABANDER
|
||||||
|
#define lcd_i2c_address_ydv1_lcd 0x27 // I2C address of display for FEATURE_LCD_YDv1
|
||||||
|
//#define lcd_i2c_address_ydv1_lcd 0x38 // I2C address of display for FEATURE_LCD_YDv1
|
||||||
|
#define lcd_i2c_address_sainsmart_lcd 0x27 // I2C address of display for FEATURE_LCD_SAINSMART_I2C
|
||||||
|
#define hell_pixel_microseconds 4025
|
||||||
|
#define program_memory_limit_consec_spaces 1
|
||||||
|
#define serial_leading_zeros 1 // set to 1 to activate leading zeros in serial numbers (i.e. #1 = 001)
|
||||||
|
#define serial_cut_numbers 0 // set to 1 to activate cut numbers in serial numbers (i.e. #10 = 1T, #19 = 1N)
|
||||||
|
#define go_to_sleep_inactivity_time 10 // minutes - FEATURE_SLEEP
|
||||||
|
#define dim_backlight_inactive_time 5 // minutes - FEATURE_LCD_BACKLIGHT_AUTO_DIM
|
||||||
|
#define default_cmos_super_keyer_iambic_b_timing_percent 33 // use with FEATURE_CMOS_SUPER_KEYER_IAMBIC_B_TIMING; should be between 0 to 99 % (0% = true iambic b;100% = iambic a behavior)
|
||||||
|
#define default_cw_echo_timing_factor 1.75 // "factory default" setting
|
||||||
|
#define default_autospace_timing_factor 2.0 // "factory default" setting
|
||||||
|
#define winkey_paddle_echo_buffer_decode_timing_factor 0.25
|
||||||
|
#define potentiometer_always_on 0
|
||||||
|
#define ptt_interlock_check_every_ms 100
|
||||||
|
#define ptt_interlock_active_state HIGH
|
||||||
|
#define unknown_cw_character '*'
|
||||||
|
#define cli_paddle_echo_on_at_boot 1
|
||||||
|
#define cli_straight_key_echo_on_at_boot 1
|
||||||
|
#define tx_key_dit_and_dah_pins_active_state LOW
|
||||||
|
#define tx_key_dit_and_dah_pins_inactive_state HIGH
|
||||||
|
#define potentiometer_check_interval_ms 150
|
||||||
|
#define potentiometer_reading_threshold 1
|
||||||
|
#define default_paddle_interruption_quiet_time_element_lengths 0
|
||||||
|
#define default_wordsworth_wordspace 6
|
||||||
|
#define default_wordsworth_repetition 1
|
||||||
|
#define serial_program_memory_buffer_size 500
|
||||||
|
#define eeprom_write_time_ms 30000
|
||||||
|
|
||||||
|
#ifdef FEATURE_BUTTONS
|
||||||
|
#define analog_buttons_number_of_buttons 4
|
||||||
|
#define analog_buttons_r1 10
|
||||||
|
#define analog_buttons_r2 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#if defined(FEATURE_BUTTONS) && !defined(FEATURE_PS2_KEYBOARD) && !defined(FEATURE_USB_KEYBOARD) && !defined(FEATURE_COMMAND_LINE_INTERFACE) && !defined(FEATURE_WINKEY_EMULATION)
|
||||||
|
#define number_of_memories byte(analog_buttons_number_of_buttons-1)
|
||||||
|
#else
|
||||||
|
#define number_of_memories byte(12)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef FEATURE_CAPACITIVE_PADDLE_PINS
|
||||||
|
#define capacitance_threshold 2
|
||||||
|
#endif //FEATURE_CAPACITIVE_PADDLE_PINS
|
||||||
|
|
||||||
|
#ifdef FEATURE_LED_RING
|
||||||
|
#define led_ring_low_limit 10
|
||||||
|
#define led_ring_high_limit 50
|
||||||
|
#endif //FEATURE_LED_RING
|
||||||
|
|
||||||
|
#ifdef FEATURE_QLF
|
||||||
|
#define qlf_dit_max 125
|
||||||
|
#define qlf_dit_min 75
|
||||||
|
#define qlf_dah_max 200
|
||||||
|
#define qlf_dah_min 100
|
||||||
|
#define qlf_on_by_default 0
|
||||||
|
#endif //FEATURE_QLF
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef FEATURE_WINKEY_EMULATION
|
||||||
|
#ifdef OPTION_WINKEY_UCXLOG_9600_BAUD
|
||||||
|
#define WINKEY_DEFAULT_BAUD 9600
|
||||||
|
#else
|
||||||
|
#define WINKEY_DEFAULT_BAUD 1200
|
||||||
|
#endif //OPTION_WINKEY_UCXLOG_9600_BAUD
|
||||||
|
// alter these below to map alternate sidetones for Winkey interface protocol emulation
|
||||||
|
#ifdef OPTION_WINKEY_2_SUPPORT
|
||||||
|
#define WINKEY_SIDETONE_1 3759
|
||||||
|
#define WINKEY_SIDETONE_2 1879
|
||||||
|
#define WINKEY_SIDETONE_3 1252
|
||||||
|
#define WINKEY_SIDETONE_4 940
|
||||||
|
#define WINKEY_SIDETONE_5 752
|
||||||
|
#define WINKEY_SIDETONE_6 625
|
||||||
|
#define WINKEY_SIDETONE_7 535
|
||||||
|
#define WINKEY_SIDETONE_8 469
|
||||||
|
#define WINKEY_SIDETONE_9 417
|
||||||
|
#define WINKEY_SIDETONE_10 375
|
||||||
|
#else //OPTION_WINKEY_2_SUPPORT
|
||||||
|
#define WINKEY_SIDETONE_1 4000
|
||||||
|
#define WINKEY_SIDETONE_2 2000
|
||||||
|
#define WINKEY_SIDETONE_3 1333
|
||||||
|
#define WINKEY_SIDETONE_4 1000
|
||||||
|
#define WINKEY_SIDETONE_5 800
|
||||||
|
#define WINKEY_SIDETONE_6 666
|
||||||
|
#define WINKEY_SIDETONE_7 571
|
||||||
|
#define WINKEY_SIDETONE_8 500
|
||||||
|
#define WINKEY_SIDETONE_9 444
|
||||||
|
#define WINKEY_SIDETONE_10 400
|
||||||
|
#endif //OPTION_WINKEY_2_SUPPORT
|
||||||
|
|
||||||
|
#define WINKEY_1_REPORT_VERSION_NUMBER 10
|
||||||
|
#define WINKEY_2_REPORT_VERSION_NUMBER 23
|
||||||
|
|
||||||
|
// alter these to map to alternate hang time wordspace units
|
||||||
|
#define WINKEY_HANG_TIME_1_0 1.0
|
||||||
|
#define WINKEY_HANG_TIME_1_33 1.33
|
||||||
|
#define WINKEY_HANG_TIME_1_66 1.66
|
||||||
|
#define WINKEY_HANG_TIME_2_0 2.0
|
||||||
|
|
||||||
|
#define WINKEY_RETURN_THIS_FOR_ADMIN_GET_CAL 0x16
|
||||||
|
#define WINKEY_RETURN_THIS_FOR_ADMIN_PADDLE_A2D 0xEE
|
||||||
|
#define WINKEY_RETURN_THIS_FOR_ADMIN_SPEED_A2D 0x00
|
||||||
|
|
||||||
|
#endif //FEATURE_WINKEY_EMULATION
|
||||||
|
|
||||||
|
|
||||||
|
#define PRIMARY_SERIAL_PORT &Serial
|
||||||
|
#define PRIMARY_SERIAL_PORT_BAUD 115200 // This applies only when the port is in Command Line Interface mode. In Winkey mode it will default to 1200.
|
||||||
|
|
||||||
|
#ifdef FEATURE_COMMAND_LINE_INTERFACE_ON_SECONDARY_PORT
|
||||||
|
#define SECONDARY_SERIAL_PORT &Serial1
|
||||||
|
#define SECONDARY_SERIAL_PORT_BAUD 115200
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#define CW_DECODER_SCREEN_COLUMNS 120 // word wrap at this many columns
|
||||||
|
#define CW_DECODER_SPACE_PRINT_THRESH 4.5 // print space if no tone for this many element lengths
|
||||||
|
#define CW_DECODER_SPACE_DECODE_THRESH 2.0 // invoke character decode if no tone for this many element lengths
|
||||||
|
#define CW_DECODER_NOISE_FILTER 20 // ignore elements shorter than this (mS)
|
||||||
|
|
||||||
|
#define STRAIGHT_KEY_ACTIVE_STATE LOW
|
||||||
|
|
||||||
|
#ifdef FEATURE_DYNAMIC_DAH_TO_DIT_RATIO
|
||||||
|
#define DYNAMIC_DAH_TO_DIT_RATIO_LOWER_LIMIT_WPM 30
|
||||||
|
#define DYNAMIC_DAH_TO_DIT_RATIO_LOWER_LIMIT_RATIO 300 // 300 = 3:1 ratio
|
||||||
|
#define DYNAMIC_DAH_TO_DIT_RATIO_UPPER_LIMIT_WPM 70
|
||||||
|
#define DYNAMIC_DAH_TO_DIT_RATIO_UPPER_LIMIT_RATIO 240 // 240 = 2.4:1 ratio
|
||||||
|
#endif //FEATURE_DYNAMIC_DAH_TO_DIT_RATIO
|
||||||
|
|
||||||
|
#if defined(FEATURE_COMPETITION_COMPRESSION_DETECTION)
|
||||||
|
#define COMPETITION_COMPRESSION_DETECTION_ARRAY_SIZE 16
|
||||||
|
#define COMPETITION_COMPRESSION_DETECTION_TIME_INTERCHAR_LOWER_LIMIT 1
|
||||||
|
#define COMPETITION_COMPRESSION_DETECTION_TIME_INTERCHAR_UPPER_LIMIT 6.0
|
||||||
|
#define COMPETITION_COMPRESSION_DETECTION_AVERAGE_ALARM_THRESHOLD 3.0
|
||||||
|
#endif //FEATURE_COMPETITION_COMPRESSION_DETECTION
|
||||||
|
|
||||||
|
#if defined(FEATURE_SLEEP)
|
||||||
|
#define KEYER_AWAKE_PIN_AWAKE_STATE HIGH
|
||||||
|
#define KEYER_AWAKE_PIN_ASLEEP_STATE LOW
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_LCD_BACKLIGHT_AUTO_DIM)
|
||||||
|
#define keyer_power_led_awake_duty 255 // PWM duty cycle. 0 is 0%, 255 is 100%
|
||||||
|
#define keyer_power_led_asleep_duty 25 // 25 is quite dim. Use 0 for off
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_ETHERNET)
|
||||||
|
#define FEATURE_ETHERNET_IP {192,168,1,178} // default IP address ("192.168.1.178")
|
||||||
|
#define FEATURE_ETHERNET_MAC {0xDE,0xAD,0xBE,0xEF,0xFE,0xED}
|
||||||
|
#define FEATURE_ETHERNET_DNS {8,8,8,8}
|
||||||
|
// #define FEATURE_ETHERNET_IP {192,168,1,179} // default IP address ("192.168.1.179")
|
||||||
|
// #define FEATURE_ETHERNET_MAC {0xDE,0xAD,0xBE,0xEF,0xFE,0xEE}
|
||||||
|
|
||||||
|
#define FEATURE_ETHERNET_GATEWAY {192,168,1,1} // default gateway
|
||||||
|
#define FEATURE_ETHERNET_SUBNET_MASK {255,255,255,0} // default subnet mask
|
||||||
|
#define FEATURE_ETHERNET_WEB_LISTENER_PORT 80
|
||||||
|
#define FEATURE_UDP_SEND_BUFFER_SIZE 128
|
||||||
|
#define FEATURE_UDP_RECEIVE_BUFFER_SIZE 128
|
||||||
|
#endif //FEATURE_ETHERNET
|
||||||
|
|
||||||
|
#define FEATURE_INTERNET_LINK_MAX_LINKS 2
|
||||||
|
#define FEATURE_INTERNET_LINK_DEFAULT_RCV_UDP_PORT 8888
|
||||||
|
#define FEATURE_INTERNET_LINK_BUFFER_TIME_MS 500 // increase this time if you have greater than 500 ms latency on your link
|
||||||
|
#define FEATURE_INTERNET_LINK_SVC_DURING_LOOP_TIME_MS 20
|
||||||
|
#define FEATURE_INTERNET_LINK_KEY_DOWN_TIMEOUT_SECS 8
|
||||||
|
|
||||||
|
#define WEB_SERVER_CONTROL_TX_KEY_TIME_LIMIT_SECS 10
|
||||||
|
|
||||||
|
#if defined(FEATURE_4x4_KEYPAD)|| defined (FEATURE_3x4_KEYPAD)
|
||||||
|
#define KEYPAD_ROWS 4 //KeyPad Rows
|
||||||
|
#if defined(FEATURE_4x4_KEYPAD)
|
||||||
|
#define KEYPAD_COLS 4 //keypad Columns
|
||||||
|
#else
|
||||||
|
#define KEYPAD_COLS 3
|
||||||
|
#endif
|
||||||
|
#define mem1 0 //Memory numbers for Keypad: Actual memory numbers start with "0"
|
||||||
|
#define mem2 1
|
||||||
|
#define mem3 2
|
||||||
|
#define mem4 3
|
||||||
|
#define mem5 4
|
||||||
|
#define mem6 5
|
||||||
|
#define mem7 6
|
||||||
|
#define mem8 7
|
||||||
|
#define mem9 8
|
||||||
|
#define mem10 9
|
||||||
|
#define mem11 10
|
||||||
|
#define mem12 11
|
||||||
|
#endif //#if defined(FEATURE_4x4_KEYPAD)|| defined (FEATURE_3x4_KEYPAD)
|
||||||
|
|
||||||
|
#define initial_sidetone_mode 1 // Sidetone mode, 0=OFF, 1=ON, 2=PADDLE_ONLY
|
||||||
|
|
||||||
|
#define sd_card_spi_ss_line 4
|
||||||
|
|
||||||
|
|
||||||
|
#if defined(OPTION_DFROBOT_LCD_COMMAND_BUTTONS)
|
||||||
|
|
||||||
|
// For V1.1 board use these values
|
||||||
|
#define dfrobot_btnRIGHT_analog 50
|
||||||
|
#define dfrobot_btnUP_analog 250
|
||||||
|
#define dfrobot_btnDOWN_analog 450
|
||||||
|
#define dfrobot_btnLEFT_analog 650
|
||||||
|
#define dfrobot_btnSELECT_analog 850
|
||||||
|
|
||||||
|
// For V1.0 board use these values
|
||||||
|
// #define dfrobot_btnRIGHT_analog 50
|
||||||
|
// #define dfrobot_btnUP_analog 195
|
||||||
|
// #define dfrobot_btnDOWN_analog 380
|
||||||
|
// #define dfrobot_btnLEFT_analog 555
|
||||||
|
// #define dfrobot_btnSELECT_analog 790
|
||||||
|
|
||||||
|
// button to memory mappings (0 = command button, 1 = memory 1, 2 = memory 2, etc.)
|
||||||
|
#define dfrobot_btnRIGHT 2
|
||||||
|
#define dfrobot_btnUP 1
|
||||||
|
#define dfrobot_btnDOWN 3
|
||||||
|
#define dfrobot_btnLEFT 4
|
||||||
|
#define dfrobot_btnSELECT 0
|
||||||
|
#define dfrobot_btnNONE 255 // do not change
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#define sequencer_pins_active_state HIGH
|
||||||
|
#define sequencer_pins_inactive_state LOW
|
||||||
|
#define ptt_line_active_state HIGH
|
||||||
|
#define ptt_line_inactive_state LOW
|
||||||
|
#define tx_key_line_active_state HIGH
|
||||||
|
#define tx_key_line_inactive_state LOW
|
||||||
|
#define ptt_input_pin_active_state LOW
|
||||||
|
#define ptt_input_pin_inactive_state HIGH
|
||||||
|
#define tx_inhibit_pin_active_state LOW
|
||||||
|
#define tx_inhibit_pin_inactive_state HIGH
|
||||||
|
#define tx_pause_pin_active_state LOW
|
||||||
|
#define tx_pause_pin_inactive_state HIGH
|
||||||
|
#define sidetone_line_active_state HIGH
|
||||||
|
#define sidetone_line_inactive_state LOW
|
||||||
|
|
||||||
|
#if defined(ARDUINO_MAPLE_MINI)
|
||||||
|
#define button_value_factor 4095
|
||||||
|
#else
|
||||||
|
#define button_value_factor 1023
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define farnsworth_timing_calibration 1.15
|
||||||
|
|
||||||
|
#define sidetone_volume_low_limit 10
|
||||||
|
#define sidetone_volume_high_limit 500
|
||||||
|
|
||||||
|
#ifdef FEATURE_SO2R_BASE
|
||||||
|
#ifdef FEATURE_POTENTIOMETER
|
||||||
|
#ifdef FEATURE_SO2R_SWITCHES
|
||||||
|
#ifdef FEATURE_SO2R_ANTENNAS
|
||||||
|
#define SO2R_DEVICE_NAME "SO2R Mini PSA"
|
||||||
|
#else
|
||||||
|
#define SO2R_DEVICE_NAME "SO2R Mini PS"
|
||||||
|
#endif
|
||||||
|
#else
|
||||||
|
#ifdef FEATURE_SO2R_ANTENNAS
|
||||||
|
#define SO2R_DEVICE_NAME "SO2R Mini PA"
|
||||||
|
#else
|
||||||
|
#define SO2R_DEVICE_NAME "SO2R Mini P"
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
#else
|
||||||
|
#ifdef FEATURE_SO2R_SWITCHES
|
||||||
|
#ifdef FEATURE_SO2R_ANTENNAS
|
||||||
|
#define SO2R_DEVICE_NAME "SO2R Mini SA"
|
||||||
|
#else
|
||||||
|
#define SO2R_DEVICE_NAME "SO2R Mini S"
|
||||||
|
#endif
|
||||||
|
#else
|
||||||
|
#ifdef FEATURE_SO2R_ANTENNAS
|
||||||
|
#define SO2R_DEVICE_NAME "SO2R Mini A"
|
||||||
|
#else
|
||||||
|
#define SO2R_DEVICE_NAME "SO2R Mini"
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define custom_startup_field "your custom text here" // an example could be callsign and name, eg. "AB1XYZ Bob", (or "Worlds best operator" which requires a 20 column display), string length shouldo be no more than the number of columns on the display
|
||||||
|
|
||||||
|
#define command_mode_acknowledgement_character 'E'
|
||||||
|
|
||||||
|
#if defined(FEATURE_COMMAND_MODE_ENHANCED_CMD_ACKNOWLEDGEMENT)
|
||||||
|
#define command_a_iambic_a "A"
|
||||||
|
#define command_b_iambic_b "B"
|
||||||
|
#define command_c_single_paddle "SINGLE"
|
||||||
|
#define command_d_ultimatic "ULT"
|
||||||
|
#define command_h_weight_dit_dah_ratio_default "R"
|
||||||
|
#define command_i_tx_on "TX ON"
|
||||||
|
#define command_i_tx_off "TX OFF"
|
||||||
|
#define command_k_dit_dah_buffers_on "ON"
|
||||||
|
#define command_k_dit_dah_buffers_off "OFF"
|
||||||
|
#define command_n_paddle_reverse "REV"
|
||||||
|
#define command_n_paddle_normal "NORM"
|
||||||
|
#define command_o_sidetone_off "ST OFF"
|
||||||
|
#define command_o_sidetone_paddle_only "ST PD ONLY"
|
||||||
|
#define command_o_sidetone_on "ST ON"
|
||||||
|
#define command_t_tune_mode "TUNE"
|
||||||
|
#define command_v_potentiometer_on "POT ON"
|
||||||
|
#define command_v_potentiometer_off "POT OFF"
|
||||||
|
|
||||||
|
#define command_error "ERR"
|
||||||
|
|
||||||
|
#endif //FEATURE_COMMAND_MODE_ENHANCED_CMD_ACKNOWLEDGEMENT
|
310
k3ng_keyer/keyer_settings_tinykeyer.h
Executable file
310
k3ng_keyer/keyer_settings_tinykeyer.h
Executable file
|
@ -0,0 +1,310 @@
|
||||||
|
// Initial and hardcoded settings
|
||||||
|
// TinyKeyer by OK1RR
|
||||||
|
#define initial_speed_wpm 30 // "factory default" keyer speed setting
|
||||||
|
#define initial_command_mode_speed_wpm 20 // "factory default" command mode speed setting
|
||||||
|
#define initial_sidetone_freq 444 // "factory default" sidetone frequency setting
|
||||||
|
#define sidetone_hz_limit_low 299
|
||||||
|
#define sidetone_hz_limit_high 2001
|
||||||
|
#define hz_high_beep 1500 // frequency in hertz of high beep
|
||||||
|
#define hz_low_beep 300 // frequency in hertz of low beep
|
||||||
|
#define initial_dah_to_dit_ratio 300 // 300 = 3 / normal 3:1 ratio
|
||||||
|
#define initial_ptt_lead_time_tx1 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx1 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx2 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx2 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx3 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx3 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx4 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx4 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx5 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx5 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx6 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx6 10 // PTT tail time in mS
|
||||||
|
#define initial_qrss_dit_length 1 // QRSS dit length in seconds
|
||||||
|
#define initial_pot_wpm_low_value 13 // Potentiometer WPM fully CCW
|
||||||
|
#define initial_pot_wpm_high_value 35 // Potentiometer WPM fully CW
|
||||||
|
#define wpm_limit_low 5
|
||||||
|
#define wpm_limit_high 90
|
||||||
|
#define potentiometer_change_threshold 0.9 // don't change the keyer speed until pot wpm has changed more than this
|
||||||
|
#define send_buffer_size 250
|
||||||
|
#define default_length_letterspace 3
|
||||||
|
#define default_length_wordspace 7
|
||||||
|
#define default_keying_compensation 0 // number of milliseconds to extend all dits and dahs - for QSK on boatanchors
|
||||||
|
#define default_first_extension_time 0 // number of milliseconds to extend first sent dit or dah
|
||||||
|
#define default_pot_full_scale_reading 1023
|
||||||
|
#define default_weighting 50 // 50 = weighting factor of 1 (normal)
|
||||||
|
#define default_ptt_hang_time_wordspace_units 0.0
|
||||||
|
#define winkey_c0_wait_time 1 // the number of milliseconds to wait to send 0xc0 byte after send buffer has been sent
|
||||||
|
#define winkey_command_timeout_ms 5000
|
||||||
|
#define winkey_discard_bytes_startup 3 // this is used if OPTION_WINKEY_DISCARD_BYTES_AT_STARTUP is enabled above
|
||||||
|
#define winkey_xoff_threshold 20 // the number of chars in the buffer when we begin sending XOFFs
|
||||||
|
#define winkey_xon_threshold 10 // the number of chars in the buffer below which we deactivate XOFF
|
||||||
|
#define default_memory_repeat_time 3000 // time in milliseconds
|
||||||
|
#define LCD_COLUMNS 16
|
||||||
|
#define LCD_ROWS 2
|
||||||
|
#define lcd_i2c_address_mathertel_PCF8574 0x27 // I2C address of display for FEATURE_LCD_MATHERTEL_PCF8574
|
||||||
|
#define lcd_i2c_address_fdebrander_lcd 0x27 // I2C address of display for FEATURE_LCD_I2C_FDEBRABANDER
|
||||||
|
#define lcd_i2c_address_ydv1_lcd 0x27 // I2C address of display for FEATURE_LCD_YDv1
|
||||||
|
//#define lcd_i2c_address_ydv1_lcd 0x38 // I2C address of display for FEATURE_LCD_YDv1
|
||||||
|
#define lcd_i2c_address_sainsmart_lcd 0x27 // I2C address of display for FEATURE_LCD_SAINSMART_I2C
|
||||||
|
#define hell_pixel_microseconds 4025
|
||||||
|
#define program_memory_limit_consec_spaces 1
|
||||||
|
#define serial_leading_zeros 1 // set to 1 to activate leading zeros in serial numbers (i.e. #1 = 001)
|
||||||
|
#define serial_cut_numbers 0 // set to 1 to activate cut numbers in serial numbers (i.e. #10 = 1T, #19 = 1N)
|
||||||
|
#define go_to_sleep_inactivity_time 10 // minutes - FEATURE_SLEEP
|
||||||
|
#define dim_backlight_inactive_time 5 // minutes - FEATURE_LCD_BACKLIGHT_AUTO_DIM
|
||||||
|
#define default_cmos_super_keyer_iambic_b_timing_percent 33 // use with FEATURE_CMOS_SUPER_KEYER_IAMBIC_B_TIMING; should be between 0 to 99 % (0% = true iambic b;100% = iambic a behavior)
|
||||||
|
#define default_cw_echo_timing_factor 1.75 // "factory default" setting
|
||||||
|
#define default_autospace_timing_factor 2.0 // "factory default" setting
|
||||||
|
#define winkey_paddle_echo_buffer_decode_timing_factor 0.25
|
||||||
|
#define potentiometer_always_on 0
|
||||||
|
#define ptt_interlock_check_every_ms 100
|
||||||
|
#define ptt_interlock_active_state HIGH
|
||||||
|
#define unknown_cw_character '*'
|
||||||
|
#define cli_paddle_echo_on_at_boot 1
|
||||||
|
#define cli_straight_key_echo_on_at_boot 1
|
||||||
|
#define tx_key_dit_and_dah_pins_active_state HIGH
|
||||||
|
#define tx_key_dit_and_dah_pins_inactive_state LOW
|
||||||
|
#define potentiometer_check_interval_ms 150
|
||||||
|
#define potentiometer_reading_threshold 1
|
||||||
|
#define default_paddle_interruption_quiet_time_element_lengths 7
|
||||||
|
#define default_wordsworth_wordspace 6
|
||||||
|
#define default_wordsworth_repetition 1
|
||||||
|
#define serial_program_memory_buffer_size 500
|
||||||
|
#define eeprom_write_time_ms 30000
|
||||||
|
|
||||||
|
#ifdef FEATURE_BUTTONS
|
||||||
|
#define analog_buttons_number_of_buttons 1
|
||||||
|
#define analog_buttons_r1 10
|
||||||
|
#define analog_buttons_r2 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#if defined(FEATURE_BUTTONS) && !defined(FEATURE_PS2_KEYBOARD) && !defined(FEATURE_USB_KEYBOARD) && !defined(FEATURE_COMMAND_LINE_INTERFACE) && !defined(FEATURE_WINKEY_EMULATION)
|
||||||
|
#define number_of_memories byte(analog_buttons_number_of_buttons-1)
|
||||||
|
#else
|
||||||
|
#define number_of_memories byte(1)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef FEATURE_CAPACITIVE_PADDLE_PINS
|
||||||
|
#define capacitance_threshold 2
|
||||||
|
#endif //FEATURE_CAPACITIVE_PADDLE_PINS
|
||||||
|
|
||||||
|
#ifdef FEATURE_LED_RING
|
||||||
|
#define led_ring_low_limit 10
|
||||||
|
#define led_ring_high_limit 50
|
||||||
|
#endif //FEATURE_LED_RING
|
||||||
|
|
||||||
|
#ifdef FEATURE_QLF
|
||||||
|
#define qlf_dit_max 125
|
||||||
|
#define qlf_dit_min 75
|
||||||
|
#define qlf_dah_max 200
|
||||||
|
#define qlf_dah_min 100
|
||||||
|
#define qlf_on_by_default 0
|
||||||
|
#endif //FEATURE_QLF
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef FEATURE_WINKEY_EMULATION
|
||||||
|
#ifdef OPTION_WINKEY_UCXLOG_9600_BAUD
|
||||||
|
#define WINKEY_DEFAULT_BAUD 9600
|
||||||
|
#else
|
||||||
|
#define WINKEY_DEFAULT_BAUD 1200
|
||||||
|
#endif //OPTION_WINKEY_UCXLOG_9600_BAUD
|
||||||
|
// alter these below to map alternate sidetones for Winkey interface protocol emulation
|
||||||
|
#ifdef OPTION_WINKEY_2_SUPPORT
|
||||||
|
#define WINKEY_SIDETONE_1 3759
|
||||||
|
#define WINKEY_SIDETONE_2 1879
|
||||||
|
#define WINKEY_SIDETONE_3 1252
|
||||||
|
#define WINKEY_SIDETONE_4 940
|
||||||
|
#define WINKEY_SIDETONE_5 752
|
||||||
|
#define WINKEY_SIDETONE_6 625
|
||||||
|
#define WINKEY_SIDETONE_7 535
|
||||||
|
#define WINKEY_SIDETONE_8 469
|
||||||
|
#define WINKEY_SIDETONE_9 417
|
||||||
|
#define WINKEY_SIDETONE_10 375
|
||||||
|
#else //OPTION_WINKEY_2_SUPPORT
|
||||||
|
#define WINKEY_SIDETONE_1 4000
|
||||||
|
#define WINKEY_SIDETONE_2 2000
|
||||||
|
#define WINKEY_SIDETONE_3 1333
|
||||||
|
#define WINKEY_SIDETONE_4 1000
|
||||||
|
#define WINKEY_SIDETONE_5 800
|
||||||
|
#define WINKEY_SIDETONE_6 666
|
||||||
|
#define WINKEY_SIDETONE_7 571
|
||||||
|
#define WINKEY_SIDETONE_8 500
|
||||||
|
#define WINKEY_SIDETONE_9 444
|
||||||
|
#define WINKEY_SIDETONE_10 400
|
||||||
|
#endif //OPTION_WINKEY_2_SUPPORT
|
||||||
|
|
||||||
|
#define WINKEY_1_REPORT_VERSION_NUMBER 10
|
||||||
|
#define WINKEY_2_REPORT_VERSION_NUMBER 23
|
||||||
|
|
||||||
|
// alter these to map to alternate hang time wordspace units
|
||||||
|
#define WINKEY_HANG_TIME_1_0 1.0
|
||||||
|
#define WINKEY_HANG_TIME_1_33 1.33
|
||||||
|
#define WINKEY_HANG_TIME_1_66 1.66
|
||||||
|
#define WINKEY_HANG_TIME_2_0 2.0
|
||||||
|
|
||||||
|
#define WINKEY_RETURN_THIS_FOR_ADMIN_GET_CAL 0x16
|
||||||
|
#define WINKEY_RETURN_THIS_FOR_ADMIN_PADDLE_A2D 0xEE
|
||||||
|
#define WINKEY_RETURN_THIS_FOR_ADMIN_SPEED_A2D 0x00
|
||||||
|
|
||||||
|
#endif //FEATURE_WINKEY_EMULATION
|
||||||
|
|
||||||
|
#define PRIMARY_SERIAL_PORT &Serial
|
||||||
|
#define PRIMARY_SERIAL_PORT_BAUD 115200 // This applies only when the port is in Command Line Interface mode. In Winkey mode it will default to 1200.
|
||||||
|
|
||||||
|
#ifdef FEATURE_COMMAND_LINE_INTERFACE_ON_SECONDARY_PORT
|
||||||
|
#define SECONDARY_SERIAL_PORT &Serial1
|
||||||
|
#define SECONDARY_SERIAL_PORT_BAUD 115200
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define CW_DECODER_SCREEN_COLUMNS 40 // word wrap at this many columns
|
||||||
|
#define CW_DECODER_SPACE_PRINT_THRESH 4.5 // print space if no tone for this many element lengths
|
||||||
|
#define CW_DECODER_SPACE_DECODE_THRESH 2.0 // invoke character decode if no tone for this many element lengths
|
||||||
|
#define CW_DECODER_NOISE_FILTER 20 // ignore elements shorter than this (mS)
|
||||||
|
|
||||||
|
#define STRAIGHT_KEY_ACTIVE_STATE LOW
|
||||||
|
|
||||||
|
#ifdef FEATURE_DYNAMIC_DAH_TO_DIT_RATIO
|
||||||
|
#define DYNAMIC_DAH_TO_DIT_RATIO_LOWER_LIMIT_WPM 30
|
||||||
|
#define DYNAMIC_DAH_TO_DIT_RATIO_LOWER_LIMIT_RATIO 300 // 300 = 3:1 ratio
|
||||||
|
#define DYNAMIC_DAH_TO_DIT_RATIO_UPPER_LIMIT_WPM 70
|
||||||
|
#define DYNAMIC_DAH_TO_DIT_RATIO_UPPER_LIMIT_RATIO 240 // 240 = 2.4:1 ratio
|
||||||
|
#endif //FEATURE_DYNAMIC_DAH_TO_DIT_RATIO
|
||||||
|
|
||||||
|
#if defined(FEATURE_SLEEP)
|
||||||
|
#define KEYER_AWAKE_PIN_AWAKE_STATE HIGH
|
||||||
|
#define KEYER_AWAKE_PIN_ASLEEP_STATE LOW
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_LCD_BACKLIGHT_AUTO_DIM)
|
||||||
|
#define keyer_power_led_awake_duty 255 // PWM duty cycle. 0 is 0%, 255 is 100%
|
||||||
|
#define keyer_power_led_asleep_duty 25 // 25 is quite dim. Use 0 for off
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_ETHERNET)
|
||||||
|
// #define FEATURE_ETHERNET_IP {192,168,1,178} // default IP address ("192.168.1.178")
|
||||||
|
// #define FEATURE_ETHERNET_MAC {0xDE,0xAD,0xBE,0xEF,0xFE,0xED}
|
||||||
|
#define FEATURE_ETHERNET_IP {192,168,1,179} // default IP address ("192.168.1.178")
|
||||||
|
#define FEATURE_ETHERNET_MAC {0xDE,0xAD,0xBE,0xEF,0xFE,0xEE}
|
||||||
|
#define FEATURE_ETHERNET_DNS {8,8,8,8}
|
||||||
|
|
||||||
|
#define FEATURE_ETHERNET_GATEWAY {192,168,1,1} // default gateway
|
||||||
|
#define FEATURE_ETHERNET_SUBNET_MASK {255,255,255,0} // default subnet mask
|
||||||
|
#define FEATURE_ETHERNET_WEB_LISTENER_PORT 80
|
||||||
|
#define FEATURE_UDP_SEND_BUFFER_SIZE 128
|
||||||
|
#define FEATURE_UDP_RECEIVE_BUFFER_SIZE 128
|
||||||
|
#endif //FEATURE_ETHERNET
|
||||||
|
|
||||||
|
#define WEB_SERVER_CONTROL_TX_KEY_TIME_LIMIT_SECS 10
|
||||||
|
|
||||||
|
#define FEATURE_INTERNET_LINK_MAX_LINKS 2
|
||||||
|
#define FEATURE_INTERNET_LINK_DEFAULT_RCV_UDP_PORT 8888
|
||||||
|
#define FEATURE_INTERNET_LINK_BUFFER_TIME_MS 500
|
||||||
|
|
||||||
|
#if defined(FEATURE_4x4_KEYPAD)|| defined (FEATURE_3x4_KEYPAD)
|
||||||
|
#define KEYPAD_ROWS 4 //KeyPad Rows
|
||||||
|
#if defined(FEATURE_4x4_KEYPAD)
|
||||||
|
#define KEYPAD_COLS 4 //keypad Columns
|
||||||
|
#else
|
||||||
|
#define KEYPAD_COLS 3
|
||||||
|
#endif
|
||||||
|
#define mem1 0 //Memory numbers for Keypad: Actual memory numbers start with "0"
|
||||||
|
#define mem2 1
|
||||||
|
#define mem3 2
|
||||||
|
#define mem4 3
|
||||||
|
#define mem5 4
|
||||||
|
#define mem6 5
|
||||||
|
#define mem7 6
|
||||||
|
#define mem8 7
|
||||||
|
#define mem9 8
|
||||||
|
#define mem10 9
|
||||||
|
#define mem11 10
|
||||||
|
#define mem12 11
|
||||||
|
#endif //#if defined(FEATURE_4x4_KEYPAD)|| defined (FEATURE_3x4_KEYPAD)
|
||||||
|
|
||||||
|
#define initial_sidetone_mode 1 // Sidetone mode, 0=OFF, 1=ON, 2=PADDLE_ONLY
|
||||||
|
|
||||||
|
#define sd_card_spi_ss_line 4
|
||||||
|
|
||||||
|
#if defined(OPTION_DFROBOT_LCD_COMMAND_BUTTONS)
|
||||||
|
|
||||||
|
// For V1.1 board use these values
|
||||||
|
#define dfrobot_btnRIGHT_analog 50
|
||||||
|
#define dfrobot_btnUP_analog 250
|
||||||
|
#define dfrobot_btnDOWN_analog 450
|
||||||
|
#define dfrobot_btnLEFT_analog 650
|
||||||
|
#define dfrobot_btnSELECT_analog 850
|
||||||
|
|
||||||
|
// For V1.0 board use these values
|
||||||
|
// #define dfrobot_btnRIGHT_analog 50
|
||||||
|
// #define dfrobot_btnUP_analog 195
|
||||||
|
// #define dfrobot_btnDOWN_analog 380
|
||||||
|
// #define dfrobot_btnLEFT_analog 555
|
||||||
|
// #define dfrobot_btnSELECT_analog 790
|
||||||
|
|
||||||
|
// button to memory mappings (0 = command button, 1 = memory 1, 2 = memory 2, etc.)
|
||||||
|
#define dfrobot_btnRIGHT 2
|
||||||
|
#define dfrobot_btnUP 1
|
||||||
|
#define dfrobot_btnDOWN 3
|
||||||
|
#define dfrobot_btnLEFT 4
|
||||||
|
#define dfrobot_btnSELECT 0
|
||||||
|
#define dfrobot_btnNONE 255 // do not change
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define sequencer_pins_active_state HIGH
|
||||||
|
#define sequencer_pins_inactive_state LOW
|
||||||
|
|
||||||
|
#define sequencer_pins_active_state HIGH
|
||||||
|
#define sequencer_pins_inactive_state LOW
|
||||||
|
#define ptt_line_active_state HIGH
|
||||||
|
#define ptt_line_inactive_state LOW
|
||||||
|
#define tx_key_line_active_state HIGH
|
||||||
|
#define tx_key_line_inactive_state LOW
|
||||||
|
#define ptt_input_pin_active_state LOW
|
||||||
|
#define ptt_input_pin_inactive_state HIGH
|
||||||
|
#define tx_inhibit_pin_active_state LOW
|
||||||
|
#define tx_inhibit_pin_inactive_state HIGH
|
||||||
|
#define tx_pause_pin_active_state LOW
|
||||||
|
#define tx_pause_pin_inactive_state HIGH
|
||||||
|
#define sidetone_line_active_state HIGH
|
||||||
|
#define sidetone_line_inactive_state LOW
|
||||||
|
|
||||||
|
#if defined(ARDUINO_MAPLE_MINI)
|
||||||
|
#define button_value_factor 4095 //sp5iou contributed
|
||||||
|
#else
|
||||||
|
#define button_value_factor 1023
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define farnsworth_timing_calibration 1.15
|
||||||
|
|
||||||
|
#define sidetone_volume_low_limit 10
|
||||||
|
#define sidetone_volume_high_limit 500
|
||||||
|
|
||||||
|
#define custom_startup_field "your custom text here" // an example could be callsign and name, eg. "AB1XYZ Bob", (or "Worlds best operator" which requires a 20 column display), string length shouldo be no more than the number of columns on the display
|
||||||
|
|
||||||
|
#define command_mode_acknowledgement_character 'E'
|
||||||
|
|
||||||
|
#if defined(FEATURE_COMMAND_MODE_ENHANCED_CMD_ACKNOWLEDGEMENT)
|
||||||
|
#define command_a_iambic_a "A"
|
||||||
|
#define command_b_iambic_b "B"
|
||||||
|
#define command_c_single_paddle "SINGLE"
|
||||||
|
#define command_d_ultimatic "ULT"
|
||||||
|
#define command_h_weight_dit_dah_ratio_default "R"
|
||||||
|
#define command_i_tx_on "TX ON"
|
||||||
|
#define command_i_tx_off "TX OFF"
|
||||||
|
#define command_k_dit_dah_buffers_on "ON"
|
||||||
|
#define command_k_dit_dah_buffers_off "OFF"
|
||||||
|
#define command_n_paddle_reverse "REV"
|
||||||
|
#define command_n_paddle_normal "NORM"
|
||||||
|
#define command_o_sidetone_off "ST OFF"
|
||||||
|
#define command_o_sidetone_paddle_only "ST PD ONLY"
|
||||||
|
#define command_o_sidetone_on "ST ON"
|
||||||
|
#define command_t_tune_mode "TUNE"
|
||||||
|
#define command_v_potentiometer_on "POT ON"
|
||||||
|
#define command_v_potentiometer_off "POT OFF"
|
||||||
|
|
||||||
|
#define command_error "ERR"
|
||||||
|
|
||||||
|
#endif //FEATURE_COMMAND_MODE_ENHANCED_CMD_ACKNOWLEDGEMENT
|
317
k3ng_keyer/keyer_settings_yaacwk.h
Executable file
317
k3ng_keyer/keyer_settings_yaacwk.h
Executable file
|
@ -0,0 +1,317 @@
|
||||||
|
// Initial and hardcoded settings
|
||||||
|
#define initial_speed_wpm 26 // "factory default" keyer speed setting
|
||||||
|
#define initial_command_mode_speed_wpm 20 // "factory default" command mode speed setting
|
||||||
|
#define initial_sidetone_freq 600 // "factory default" sidetone frequency setting
|
||||||
|
#define sidetone_hz_limit_low 299
|
||||||
|
#define sidetone_hz_limit_high 2001
|
||||||
|
#define hz_high_beep 1500 // frequency in hertz of high beep
|
||||||
|
#define hz_low_beep 400 // frequency in hertz of low beep
|
||||||
|
#define initial_dah_to_dit_ratio 300 // 300 = 3 / normal 3:1 ratio
|
||||||
|
#define initial_ptt_lead_time_tx1 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx1 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx2 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx2 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx3 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx3 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx4 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx4 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx5 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx5 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx6 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx6 10 // PTT tail time in mS
|
||||||
|
#define initial_qrss_dit_length 1 // QRSS dit length in seconds
|
||||||
|
#define initial_pot_wpm_low_value 13 // Potentiometer WPM fully CCW
|
||||||
|
#define initial_pot_wpm_high_value 35 // Potentiometer WPM fully CW
|
||||||
|
#define wpm_limit_low 5
|
||||||
|
#define wpm_limit_high 60
|
||||||
|
#define potentiometer_change_threshold 0.9 // don't change the keyer speed until pot wpm has changed more than this
|
||||||
|
#define send_buffer_size 150
|
||||||
|
#define default_length_letterspace 3
|
||||||
|
#define default_length_wordspace 7
|
||||||
|
#define default_keying_compensation 0 // number of milliseconds to extend all dits and dahs - for QSK on boatanchors
|
||||||
|
#define default_first_extension_time 0 // number of milliseconds to extend first sent dit or dah
|
||||||
|
#define default_pot_full_scale_reading 1023
|
||||||
|
#define default_weighting 50 // 50 = weighting factor of 1 (normal)
|
||||||
|
#define default_ptt_hang_time_wordspace_units 0.0
|
||||||
|
#define winkey_c0_wait_time 1 // the number of milliseconds to wait to send 0xc0 byte after send buffer has been sent
|
||||||
|
#define winkey_command_timeout_ms 5000
|
||||||
|
#define winkey_discard_bytes_startup 3 // this is used if OPTION_WINKEY_DISCARD_BYTES_AT_STARTUP is enabled above
|
||||||
|
#define winkey_xoff_threshold 20 // the number of chars in the buffer when we begin sending XOFFs
|
||||||
|
#define winkey_xon_threshold 10 // the number of chars in the buffer below which we deactivate XOFF
|
||||||
|
#define default_memory_repeat_time 3000 // time in milliseconds
|
||||||
|
#define LCD_COLUMNS 20
|
||||||
|
#define LCD_ROWS 4
|
||||||
|
#define lcd_i2c_address_mathertel_PCF8574 0x27 // I2C address of display for FEATURE_LCD_MATHERTEL_PCF8574
|
||||||
|
#define lcd_i2c_address_fdebrander_lcd 0x27 // I2C address of display for FEATURE_LCD_I2C_FDEBRABANDER
|
||||||
|
#define lcd_i2c_address_ydv1_lcd 0x27 // I2C address of display for FEATURE_LCD_YDv1
|
||||||
|
//#define lcd_i2c_address_ydv1_lcd 0x38 // I2C address of display for FEATURE_LCD_YDv1
|
||||||
|
#define lcd_i2c_address_sainsmart_lcd 0x27 // I2C address of display for FEATURE_LCD_SAINSMART_I2C
|
||||||
|
#define hell_pixel_microseconds 4025
|
||||||
|
#define program_memory_limit_consec_spaces 1
|
||||||
|
#define serial_leading_zeros 1 // set to 1 to activate leading zeros in serial numbers (i.e. #1 = 001)
|
||||||
|
#define serial_cut_numbers 0 // set to 1 to activate cut numbers in serial numbers (i.e. #10 = 1T, #19 = 1N)
|
||||||
|
#define go_to_sleep_inactivity_time 10 // minutes - FEATURE_SLEEP
|
||||||
|
#define dim_backlight_inactive_time 5 // minutes - FEATURE_LCD_BACKLIGHT_AUTO_DIM
|
||||||
|
#define default_cmos_super_keyer_iambic_b_timing_percent 33 // use with FEATURE_CMOS_SUPER_KEYER_IAMBIC_B_TIMING; should be between 0 to 99 % (0% = true iambic b;100% = iambic a behavior)
|
||||||
|
#define default_cw_echo_timing_factor 1.75 // "factory default" setting
|
||||||
|
#define default_autospace_timing_factor 2.0 // "factory default" setting
|
||||||
|
#define winkey_paddle_echo_buffer_decode_timing_factor 0.25
|
||||||
|
#define potentiometer_always_on 1
|
||||||
|
#define ptt_interlock_check_every_ms 100
|
||||||
|
#define ptt_interlock_active_state HIGH
|
||||||
|
#define unknown_cw_character '*'
|
||||||
|
#define cli_paddle_echo_on_at_boot 1
|
||||||
|
#define cli_straight_key_echo_on_at_boot 1
|
||||||
|
#define tx_key_dit_and_dah_pins_active_state HIGH
|
||||||
|
#define tx_key_dit_and_dah_pins_inactive_state LOW
|
||||||
|
#define potentiometer_check_interval_ms 150
|
||||||
|
#define potentiometer_reading_threshold 1
|
||||||
|
#define default_paddle_interruption_quiet_time_element_lengths 0
|
||||||
|
#define default_wordsworth_wordspace 6
|
||||||
|
#define default_wordsworth_repetition 1
|
||||||
|
#define serial_program_memory_buffer_size 500
|
||||||
|
#define eeprom_write_time_ms 30000
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef FEATURE_BUTTONS
|
||||||
|
#define analog_buttons_number_of_buttons 8
|
||||||
|
#define analog_buttons_r1 10
|
||||||
|
#define analog_buttons_r2 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#if defined(FEATURE_BUTTONS) && !defined(FEATURE_PS2_KEYBOARD) && !defined(FEATURE_USB_KEYBOARD) && !defined(FEATURE_COMMAND_LINE_INTERFACE) && !defined(FEATURE_WINKEY_EMULATION)
|
||||||
|
#define number_of_memories byte(analog_buttons_number_of_buttons-1)
|
||||||
|
#else
|
||||||
|
#define number_of_memories byte(12)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef FEATURE_CAPACITIVE_PADDLE_PINS
|
||||||
|
#define capacitance_threshold 2
|
||||||
|
#endif //FEATURE_CAPACITIVE_PADDLE_PINS
|
||||||
|
|
||||||
|
#ifdef FEATURE_LED_RING
|
||||||
|
#define led_ring_low_limit 10
|
||||||
|
#define led_ring_high_limit 50
|
||||||
|
#endif //FEATURE_LED_RING
|
||||||
|
|
||||||
|
#ifdef FEATURE_QLF
|
||||||
|
#define qlf_dit_max 125
|
||||||
|
#define qlf_dit_min 75
|
||||||
|
#define qlf_dah_max 200
|
||||||
|
#define qlf_dah_min 100
|
||||||
|
#define qlf_on_by_default 0
|
||||||
|
#endif //FEATURE_QLF
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef FEATURE_WINKEY_EMULATION
|
||||||
|
#ifdef OPTION_WINKEY_UCXLOG_9600_BAUD
|
||||||
|
#define WINKEY_DEFAULT_BAUD 9600
|
||||||
|
#else
|
||||||
|
#define WINKEY_DEFAULT_BAUD 1200
|
||||||
|
#endif //OPTION_WINKEY_UCXLOG_9600_BAUD
|
||||||
|
// alter these below to map alternate sidetones for Winkey interface protocol emulation
|
||||||
|
#ifdef OPTION_WINKEY_2_SUPPORT
|
||||||
|
#define WINKEY_SIDETONE_1 3759
|
||||||
|
#define WINKEY_SIDETONE_2 1879
|
||||||
|
#define WINKEY_SIDETONE_3 1252
|
||||||
|
#define WINKEY_SIDETONE_4 940
|
||||||
|
#define WINKEY_SIDETONE_5 752
|
||||||
|
#define WINKEY_SIDETONE_6 625
|
||||||
|
#define WINKEY_SIDETONE_7 535
|
||||||
|
#define WINKEY_SIDETONE_8 469
|
||||||
|
#define WINKEY_SIDETONE_9 417
|
||||||
|
#define WINKEY_SIDETONE_10 375
|
||||||
|
#else //OPTION_WINKEY_2_SUPPORT
|
||||||
|
#define WINKEY_SIDETONE_1 4000
|
||||||
|
#define WINKEY_SIDETONE_2 2000
|
||||||
|
#define WINKEY_SIDETONE_3 1333
|
||||||
|
#define WINKEY_SIDETONE_4 1000
|
||||||
|
#define WINKEY_SIDETONE_5 800
|
||||||
|
#define WINKEY_SIDETONE_6 666
|
||||||
|
#define WINKEY_SIDETONE_7 571
|
||||||
|
#define WINKEY_SIDETONE_8 500
|
||||||
|
#define WINKEY_SIDETONE_9 444
|
||||||
|
#define WINKEY_SIDETONE_10 400
|
||||||
|
#endif //OPTION_WINKEY_2_SUPPORT
|
||||||
|
|
||||||
|
#define WINKEY_1_REPORT_VERSION_NUMBER 10
|
||||||
|
#define WINKEY_2_REPORT_VERSION_NUMBER 23
|
||||||
|
|
||||||
|
// alter these to map to alternate hang time wordspace units
|
||||||
|
#define WINKEY_HANG_TIME_1_0 1.0
|
||||||
|
#define WINKEY_HANG_TIME_1_33 1.33
|
||||||
|
#define WINKEY_HANG_TIME_1_66 1.66
|
||||||
|
#define WINKEY_HANG_TIME_2_0 2.0
|
||||||
|
|
||||||
|
#define WINKEY_RETURN_THIS_FOR_ADMIN_GET_CAL 0x16
|
||||||
|
#define WINKEY_RETURN_THIS_FOR_ADMIN_PADDLE_A2D 0xEE
|
||||||
|
#define WINKEY_RETURN_THIS_FOR_ADMIN_SPEED_A2D 0x00
|
||||||
|
|
||||||
|
#endif //FEATURE_WINKEY_EMULATION
|
||||||
|
|
||||||
|
|
||||||
|
#define PRIMARY_SERIAL_PORT &Serial
|
||||||
|
#define PRIMARY_SERIAL_PORT_BAUD 115200 // This applies only when the port is in Command Line Interface mode. In Winkey mode it will default to 1200.
|
||||||
|
|
||||||
|
#ifdef FEATURE_COMMAND_LINE_INTERFACE_ON_SECONDARY_PORT
|
||||||
|
#define SECONDARY_SERIAL_PORT &Serial1
|
||||||
|
#define SECONDARY_SERIAL_PORT_BAUD 115200
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define CW_DECODER_SCREEN_COLUMNS 40 // word wrap at this many columns
|
||||||
|
#define CW_DECODER_SPACE_PRINT_THRESH 4.5 // print space if no tone for this many element lengths
|
||||||
|
#define CW_DECODER_SPACE_DECODE_THRESH 2.0 // invoke character decode if no tone for this many element lengths
|
||||||
|
#define CW_DECODER_NOISE_FILTER 20 // ignore elements shorter than this (mS)
|
||||||
|
|
||||||
|
#define STRAIGHT_KEY_ACTIVE_STATE LOW
|
||||||
|
|
||||||
|
#ifdef FEATURE_DYNAMIC_DAH_TO_DIT_RATIO
|
||||||
|
#define DYNAMIC_DAH_TO_DIT_RATIO_LOWER_LIMIT_WPM 30
|
||||||
|
#define DYNAMIC_DAH_TO_DIT_RATIO_LOWER_LIMIT_RATIO 300 // 300 = 3:1 ratio
|
||||||
|
#define DYNAMIC_DAH_TO_DIT_RATIO_UPPER_LIMIT_WPM 70
|
||||||
|
#define DYNAMIC_DAH_TO_DIT_RATIO_UPPER_LIMIT_RATIO 240 // 240 = 2.4:1 ratio
|
||||||
|
#endif //FEATURE_DYNAMIC_DAH_TO_DIT_RATIO
|
||||||
|
|
||||||
|
#if defined(FEATURE_COMPETITION_COMPRESSION_DETECTION)
|
||||||
|
#define COMPETITION_COMPRESSION_DETECTION_ARRAY_SIZE 16
|
||||||
|
#define COMPETITION_COMPRESSION_DETECTION_TIME_INTERCHAR_LOWER_LIMIT 1
|
||||||
|
#define COMPETITION_COMPRESSION_DETECTION_TIME_INTERCHAR_UPPER_LIMIT 6.0
|
||||||
|
#define COMPETITION_COMPRESSION_DETECTION_AVERAGE_ALARM_THRESHOLD 3.0
|
||||||
|
#endif //FEATURE_COMPETITION_COMPRESSION_DETECTION
|
||||||
|
|
||||||
|
#if defined(FEATURE_SLEEP)
|
||||||
|
#define KEYER_AWAKE_PIN_AWAKE_STATE HIGH
|
||||||
|
#define KEYER_AWAKE_PIN_ASLEEP_STATE LOW
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_LCD_BACKLIGHT_AUTO_DIM)
|
||||||
|
#define keyer_power_led_awake_duty 255 // PWM duty cycle. 0 is 0%, 255 is 100%
|
||||||
|
#define keyer_power_led_asleep_duty 25 // 25 is quite dim. Use 0 for off
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_ETHERNET)
|
||||||
|
// #define FEATURE_ETHERNET_IP {192,168,1,178} // default IP address ("192.168.1.178")
|
||||||
|
// #define FEATURE_ETHERNET_MAC {0xDE,0xAD,0xBE,0xEF,0xFE,0xED}
|
||||||
|
#define FEATURE_ETHERNET_IP {192,168,1,179} // default IP address ("192.168.1.178")
|
||||||
|
#define FEATURE_ETHERNET_MAC {0xDE,0xAD,0xBE,0xEF,0xFE,0xEE}
|
||||||
|
#define FEATURE_ETHERNET_DNS {8,8,8,8}
|
||||||
|
|
||||||
|
#define FEATURE_ETHERNET_GATEWAY {192,168,1,1} // default gateway
|
||||||
|
#define FEATURE_ETHERNET_SUBNET_MASK {255,255,255,0} // default subnet mask
|
||||||
|
#define FEATURE_ETHERNET_WEB_LISTENER_PORT 80
|
||||||
|
#define FEATURE_UDP_SEND_BUFFER_SIZE 128
|
||||||
|
#define FEATURE_UDP_RECEIVE_BUFFER_SIZE 128
|
||||||
|
#endif //FEATURE_ETHERNET
|
||||||
|
|
||||||
|
#define WEB_SERVER_CONTROL_TX_KEY_TIME_LIMIT_SECS 10
|
||||||
|
|
||||||
|
#define FEATURE_INTERNET_LINK_MAX_LINKS 2
|
||||||
|
#define FEATURE_INTERNET_LINK_DEFAULT_RCV_UDP_PORT 8888
|
||||||
|
#define FEATURE_INTERNET_LINK_BUFFER_TIME_MS 500
|
||||||
|
|
||||||
|
#if defined(FEATURE_4x4_KEYPAD)|| defined (FEATURE_3x4_KEYPAD)
|
||||||
|
#define KEYPAD_ROWS 4 //KeyPad Rows
|
||||||
|
#if defined(FEATURE_4x4_KEYPAD)
|
||||||
|
#define KEYPAD_COLS 4 //keypad Columns
|
||||||
|
#else
|
||||||
|
#define KEYPAD_COLS 3
|
||||||
|
#endif
|
||||||
|
#define mem1 0 //Memory numbers for Keypad: Actual memory numbers start with "0"
|
||||||
|
#define mem2 1
|
||||||
|
#define mem3 2
|
||||||
|
#define mem4 3
|
||||||
|
#define mem5 4
|
||||||
|
#define mem6 5
|
||||||
|
#define mem7 6
|
||||||
|
#define mem8 7
|
||||||
|
#define mem9 8
|
||||||
|
#define mem10 9
|
||||||
|
#define mem11 10
|
||||||
|
#define mem12 11
|
||||||
|
#endif //#if defined(FEATURE_4x4_KEYPAD)|| defined (FEATURE_3x4_KEYPAD)
|
||||||
|
|
||||||
|
#define initial_sidetone_mode 1 // Sidetone mode, 0=OFF, 1=ON, 2=PADDLE_ONLY
|
||||||
|
|
||||||
|
#define sd_card_spi_ss_line 4
|
||||||
|
|
||||||
|
#if defined(OPTION_DFROBOT_LCD_COMMAND_BUTTONS)
|
||||||
|
|
||||||
|
// For V1.1 board use these values
|
||||||
|
#define dfrobot_btnRIGHT_analog 50
|
||||||
|
#define dfrobot_btnUP_analog 250
|
||||||
|
#define dfrobot_btnDOWN_analog 450
|
||||||
|
#define dfrobot_btnLEFT_analog 650
|
||||||
|
#define dfrobot_btnSELECT_analog 850
|
||||||
|
|
||||||
|
// For V1.0 board use these values
|
||||||
|
// #define dfrobot_btnRIGHT_analog 50
|
||||||
|
// #define dfrobot_btnUP_analog 195
|
||||||
|
// #define dfrobot_btnDOWN_analog 380
|
||||||
|
// #define dfrobot_btnLEFT_analog 555
|
||||||
|
// #define dfrobot_btnSELECT_analog 790
|
||||||
|
|
||||||
|
// button to memory mappings (0 = command button, 1 = memory 1, 2 = memory 2, etc.)
|
||||||
|
#define dfrobot_btnRIGHT 2
|
||||||
|
#define dfrobot_btnUP 1
|
||||||
|
#define dfrobot_btnDOWN 3
|
||||||
|
#define dfrobot_btnLEFT 4
|
||||||
|
#define dfrobot_btnSELECT 0
|
||||||
|
#define dfrobot_btnNONE 255 // do not change
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#define sequencer_pins_active_state HIGH
|
||||||
|
#define sequencer_pins_inactive_state LOW
|
||||||
|
#define ptt_line_active_state HIGH
|
||||||
|
#define ptt_line_inactive_state LOW
|
||||||
|
#define tx_key_line_active_state HIGH
|
||||||
|
#define tx_key_line_inactive_state LOW
|
||||||
|
#define ptt_input_pin_active_state LOW
|
||||||
|
#define ptt_input_pin_inactive_state HIGH
|
||||||
|
#define tx_inhibit_pin_active_state LOW
|
||||||
|
#define tx_inhibit_pin_inactive_state HIGH
|
||||||
|
#define tx_pause_pin_active_state LOW
|
||||||
|
#define tx_pause_pin_inactive_state HIGH
|
||||||
|
#define sidetone_line_active_state HIGH
|
||||||
|
#define sidetone_line_inactive_state LOW
|
||||||
|
|
||||||
|
#if defined(ARDUINO_MAPLE_MINI)
|
||||||
|
#define button_value_factor 4095 //sp5iou contributed
|
||||||
|
#else
|
||||||
|
#define button_value_factor 1023
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define farnsworth_timing_calibration 1.15
|
||||||
|
|
||||||
|
#define sidetone_volume_low_limit 10
|
||||||
|
#define sidetone_volume_high_limit 500
|
||||||
|
|
||||||
|
#define custom_startup_field "your custom text here" // an example could be callsign and name, eg. "AB1XYZ Bob", (or "Worlds best operator" which requires a 20 column display), string length shouldo be no more than the number of columns on the display
|
||||||
|
|
||||||
|
#define command_mode_acknowledgement_character 'E'
|
||||||
|
|
||||||
|
#if defined(FEATURE_COMMAND_MODE_ENHANCED_CMD_ACKNOWLEDGEMENT)
|
||||||
|
#define command_a_iambic_a "A"
|
||||||
|
#define command_b_iambic_b "B"
|
||||||
|
#define command_c_single_paddle "SINGLE"
|
||||||
|
#define command_d_ultimatic "ULT"
|
||||||
|
#define command_h_weight_dit_dah_ratio_default "R"
|
||||||
|
#define command_i_tx_on "TX ON"
|
||||||
|
#define command_i_tx_off "TX OFF"
|
||||||
|
#define command_k_dit_dah_buffers_on "ON"
|
||||||
|
#define command_k_dit_dah_buffers_off "OFF"
|
||||||
|
#define command_n_paddle_reverse "REV"
|
||||||
|
#define command_n_paddle_normal "NORM"
|
||||||
|
#define command_o_sidetone_off "ST OFF"
|
||||||
|
#define command_o_sidetone_paddle_only "ST PD ONLY"
|
||||||
|
#define command_o_sidetone_on "ST ON"
|
||||||
|
#define command_t_tune_mode "TUNE"
|
||||||
|
#define command_v_potentiometer_on "POT ON"
|
||||||
|
#define command_v_potentiometer_off "POT OFF"
|
||||||
|
|
||||||
|
#define command_error "ERR"
|
||||||
|
|
||||||
|
#endif //FEATURE_COMMAND_MODE_ENHANCED_CMD_ACKNOWLEDGEMENT
|
||||||
|
|
351
k3ng_keyer/keyer_settings_yccc_so2r_mini.h
Executable file
351
k3ng_keyer/keyer_settings_yccc_so2r_mini.h
Executable file
|
@ -0,0 +1,351 @@
|
||||||
|
// Initial and hardcoded settings
|
||||||
|
#define initial_speed_wpm 26 // "factory default" keyer speed setting
|
||||||
|
#define initial_command_mode_speed_wpm 20 // "factory default" command mode speed setting
|
||||||
|
#define initial_sidetone_freq 600 // "factory default" sidetone frequency setting
|
||||||
|
#define sidetone_hz_limit_low 299
|
||||||
|
#define sidetone_hz_limit_high 2001
|
||||||
|
#define hz_high_beep 1500 // frequency in hertz of high beep
|
||||||
|
#define hz_low_beep 400 // frequency in hertz of low beep
|
||||||
|
#define initial_dah_to_dit_ratio 300 // 300 = 3 / normal 3:1 ratio
|
||||||
|
#define initial_ptt_lead_time_tx1 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx1 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx2 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx2 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx3 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx3 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx4 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx4 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx5 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx5 10 // PTT tail time in mS
|
||||||
|
#define initial_ptt_lead_time_tx6 0 // PTT lead time in mS
|
||||||
|
#define initial_ptt_tail_time_tx6 10 // PTT tail time in mS
|
||||||
|
#define initial_qrss_dit_length 1 // QRSS dit length in seconds
|
||||||
|
#define initial_pot_wpm_low_value 13 // Potentiometer WPM fully CCW
|
||||||
|
#define initial_pot_wpm_high_value 35 // Potentiometer WPM fully CW
|
||||||
|
#define wpm_limit_low 5
|
||||||
|
#define wpm_limit_high 60
|
||||||
|
#define potentiometer_change_threshold 0.9 // don't change the keyer speed until pot wpm has changed more than this
|
||||||
|
#define send_buffer_size 150
|
||||||
|
#define default_length_letterspace 3
|
||||||
|
#define default_length_wordspace 7
|
||||||
|
#define default_keying_compensation 0 // number of milliseconds to extend all dits and dahs - for QSK on boatanchors
|
||||||
|
#define default_first_extension_time 0 // number of milliseconds to extend first sent dit or dah
|
||||||
|
#define default_pot_full_scale_reading 1023
|
||||||
|
#define default_weighting 50 // 50 = weighting factor of 1 (normal)
|
||||||
|
#define default_ptt_hang_time_wordspace_units 0.0
|
||||||
|
#define winkey_c0_wait_time 1 // the number of milliseconds to wait to send 0xc0 byte after send buffer has been sent
|
||||||
|
#define winkey_command_timeout_ms 5000
|
||||||
|
#define winkey_discard_bytes_startup 3 // this is used if OPTION_WINKEY_DISCARD_BYTES_AT_STARTUP is enabled above
|
||||||
|
#define winkey_xoff_threshold 20 // the number of chars in the buffer when we begin sending XOFFs
|
||||||
|
#define winkey_xon_threshold 10 // the number of chars in the buffer below which we deactivate XOFF
|
||||||
|
#define default_memory_repeat_time 3000 // time in milliseconds
|
||||||
|
#define LCD_COLUMNS 16
|
||||||
|
#define LCD_ROWS 2
|
||||||
|
#define lcd_i2c_address_mathertel_PCF8574 0x27 // I2C address of display for FEATURE_LCD_MATHERTEL_PCF8574
|
||||||
|
#define lcd_i2c_address_fdebrander_lcd 0x27 // I2C address of display for FEATURE_LCD_I2C_FDEBRABANDER
|
||||||
|
#define lcd_i2c_address_ydv1_lcd 0x27 // I2C address of display for FEATURE_LCD_YDv1
|
||||||
|
//#define lcd_i2c_address_ydv1_lcd 0x38 // I2C address of display for FEATURE_LCD_YDv1
|
||||||
|
#define lcd_i2c_address_sainsmart_lcd 0x27 // I2C address of display for FEATURE_LCD_SAINSMART_I2C
|
||||||
|
#define hell_pixel_microseconds 4025
|
||||||
|
#define program_memory_limit_consec_spaces 1
|
||||||
|
#define serial_leading_zeros 1 // set to 1 to activate leading zeros in serial numbers (i.e. #1 = 001)
|
||||||
|
#define serial_cut_numbers 0 // set to 1 to activate cut numbers in serial numbers (i.e. #10 = 1T, #19 = 1N)
|
||||||
|
#define go_to_sleep_inactivity_time 10 // minutes - FEATURE_SLEEP
|
||||||
|
#define dim_backlight_inactive_time 5 // minutes - FEATURE_LCD_BACKLIGHT_AUTO_DIM
|
||||||
|
#define default_cmos_super_keyer_iambic_b_timing_percent 33 // use with FEATURE_CMOS_SUPER_KEYER_IAMBIC_B_TIMING; should be between 0 to 99 % (0% = true iambic b;100% = iambic a behavior)
|
||||||
|
#define default_cw_echo_timing_factor 1.75 // "factory default" setting
|
||||||
|
#define default_autospace_timing_factor 2.0 // "factory default" setting
|
||||||
|
#define winkey_paddle_echo_buffer_decode_timing_factor 0.25
|
||||||
|
#define potentiometer_always_on 0
|
||||||
|
#define ptt_interlock_check_every_ms 100
|
||||||
|
#define ptt_interlock_active_state HIGH
|
||||||
|
#define unknown_cw_character '*'
|
||||||
|
#define cli_paddle_echo_on_at_boot 1
|
||||||
|
#define cli_straight_key_echo_on_at_boot 1
|
||||||
|
#define tx_key_dit_and_dah_pins_active_state HIGH
|
||||||
|
#define tx_key_dit_and_dah_pins_inactive_state LOW
|
||||||
|
#define potentiometer_check_interval_ms 0 //=====150
|
||||||
|
#define potentiometer_reading_threshold 1
|
||||||
|
#define default_paddle_interruption_quiet_time_element_lengths 0
|
||||||
|
#define default_wordsworth_wordspace 6
|
||||||
|
#define default_wordsworth_repetition 1
|
||||||
|
#define serial_program_memory_buffer_size 500
|
||||||
|
#define eeprom_write_time_ms 30000
|
||||||
|
|
||||||
|
#ifdef FEATURE_BUTTONS
|
||||||
|
#define analog_buttons_number_of_buttons 4
|
||||||
|
#define analog_buttons_r1 10
|
||||||
|
#define analog_buttons_r2 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#if defined(FEATURE_BUTTONS) && !defined(FEATURE_PS2_KEYBOARD) && !defined(FEATURE_USB_KEYBOARD) && !defined(FEATURE_COMMAND_LINE_INTERFACE) && !defined(FEATURE_WINKEY_EMULATION)
|
||||||
|
#define number_of_memories byte(analog_buttons_number_of_buttons-1)
|
||||||
|
#else
|
||||||
|
#define number_of_memories byte(12)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef FEATURE_CAPACITIVE_PADDLE_PINS
|
||||||
|
#define capacitance_threshold 2
|
||||||
|
#endif //FEATURE_CAPACITIVE_PADDLE_PINS
|
||||||
|
|
||||||
|
#ifdef FEATURE_LED_RING
|
||||||
|
#define led_ring_low_limit 10
|
||||||
|
#define led_ring_high_limit 50
|
||||||
|
#endif //FEATURE_LED_RING
|
||||||
|
|
||||||
|
#ifdef FEATURE_QLF
|
||||||
|
#define qlf_dit_max 125
|
||||||
|
#define qlf_dit_min 75
|
||||||
|
#define qlf_dah_max 200
|
||||||
|
#define qlf_dah_min 100
|
||||||
|
#define qlf_on_by_default 0
|
||||||
|
#endif //FEATURE_QLF
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef FEATURE_WINKEY_EMULATION
|
||||||
|
#if defined(OPTION_WINKEY_UCXLOG_9600_BAUD) || defined(FEATURE_SO2R_BASE)
|
||||||
|
#define WINKEY_DEFAULT_BAUD 9600
|
||||||
|
#else
|
||||||
|
#define WINKEY_DEFAULT_BAUD 1200
|
||||||
|
#endif //OPTION_WINKEY_UCXLOG_9600_BAUD || FEATURE_SO2R_BASE
|
||||||
|
// alter these below to map alternate sidetones for Winkey interface protocol emulation
|
||||||
|
#ifdef OPTION_WINKEY_2_SUPPORT
|
||||||
|
#define WINKEY_SIDETONE_1 3759
|
||||||
|
#define WINKEY_SIDETONE_2 1879
|
||||||
|
#define WINKEY_SIDETONE_3 1252
|
||||||
|
#define WINKEY_SIDETONE_4 940
|
||||||
|
#define WINKEY_SIDETONE_5 752
|
||||||
|
#define WINKEY_SIDETONE_6 625
|
||||||
|
#define WINKEY_SIDETONE_7 535
|
||||||
|
#define WINKEY_SIDETONE_8 469
|
||||||
|
#define WINKEY_SIDETONE_9 417
|
||||||
|
#define WINKEY_SIDETONE_10 375
|
||||||
|
#else //OPTION_WINKEY_2_SUPPORT
|
||||||
|
#define WINKEY_SIDETONE_1 4000
|
||||||
|
#define WINKEY_SIDETONE_2 2000
|
||||||
|
#define WINKEY_SIDETONE_3 1333
|
||||||
|
#define WINKEY_SIDETONE_4 1000
|
||||||
|
#define WINKEY_SIDETONE_5 800
|
||||||
|
#define WINKEY_SIDETONE_6 666
|
||||||
|
#define WINKEY_SIDETONE_7 571
|
||||||
|
#define WINKEY_SIDETONE_8 500
|
||||||
|
#define WINKEY_SIDETONE_9 444
|
||||||
|
#define WINKEY_SIDETONE_10 400
|
||||||
|
#endif //OPTION_WINKEY_2_SUPPORT
|
||||||
|
|
||||||
|
#define WINKEY_1_REPORT_VERSION_NUMBER 10
|
||||||
|
#define WINKEY_2_REPORT_VERSION_NUMBER 23
|
||||||
|
|
||||||
|
// alter these to map to alternate hang time wordspace units
|
||||||
|
#define WINKEY_HANG_TIME_1_0 1.0
|
||||||
|
#define WINKEY_HANG_TIME_1_33 1.33
|
||||||
|
#define WINKEY_HANG_TIME_1_66 1.66
|
||||||
|
#define WINKEY_HANG_TIME_2_0 2.0
|
||||||
|
|
||||||
|
#define WINKEY_RETURN_THIS_FOR_ADMIN_GET_CAL 0x16
|
||||||
|
#define WINKEY_RETURN_THIS_FOR_ADMIN_PADDLE_A2D 0xEE
|
||||||
|
#define WINKEY_RETURN_THIS_FOR_ADMIN_SPEED_A2D 0x00
|
||||||
|
|
||||||
|
#endif //FEATURE_WINKEY_EMULATION
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#define PRIMARY_SERIAL_PORT &Serial
|
||||||
|
#define PRIMARY_SERIAL_PORT_BAUD 115200 // This applies only when the port is in Command Line Interface mode. In Winkey mode it will default to 1200.
|
||||||
|
|
||||||
|
#ifdef FEATURE_COMMAND_LINE_INTERFACE_ON_SECONDARY_PORT
|
||||||
|
#define SECONDARY_SERIAL_PORT &Serial1
|
||||||
|
#define SECONDARY_SERIAL_PORT_BAUD 115200
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#define CW_DECODER_SCREEN_COLUMNS 120 // word wrap at this many columns
|
||||||
|
#define CW_DECODER_SPACE_PRINT_THRESH 4.5 // print space if no tone for this many element lengths
|
||||||
|
#define CW_DECODER_SPACE_DECODE_THRESH 2.0 // invoke character decode if no tone for this many element lengths
|
||||||
|
#define CW_DECODER_NOISE_FILTER 20 // ignore elements shorter than this (mS)
|
||||||
|
|
||||||
|
#define STRAIGHT_KEY_ACTIVE_STATE LOW
|
||||||
|
|
||||||
|
#ifdef FEATURE_DYNAMIC_DAH_TO_DIT_RATIO
|
||||||
|
#define DYNAMIC_DAH_TO_DIT_RATIO_LOWER_LIMIT_WPM 30
|
||||||
|
#define DYNAMIC_DAH_TO_DIT_RATIO_LOWER_LIMIT_RATIO 300 // 300 = 3:1 ratio
|
||||||
|
#define DYNAMIC_DAH_TO_DIT_RATIO_UPPER_LIMIT_WPM 70
|
||||||
|
#define DYNAMIC_DAH_TO_DIT_RATIO_UPPER_LIMIT_RATIO 240 // 240 = 2.4:1 ratio
|
||||||
|
#endif //FEATURE_DYNAMIC_DAH_TO_DIT_RATIO
|
||||||
|
|
||||||
|
#if defined(FEATURE_COMPETITION_COMPRESSION_DETECTION)
|
||||||
|
#define COMPETITION_COMPRESSION_DETECTION_ARRAY_SIZE 16
|
||||||
|
#define COMPETITION_COMPRESSION_DETECTION_TIME_INTERCHAR_LOWER_LIMIT 1
|
||||||
|
#define COMPETITION_COMPRESSION_DETECTION_TIME_INTERCHAR_UPPER_LIMIT 6.0
|
||||||
|
#define COMPETITION_COMPRESSION_DETECTION_AVERAGE_ALARM_THRESHOLD 3.0
|
||||||
|
#endif //FEATURE_COMPETITION_COMPRESSION_DETECTION
|
||||||
|
|
||||||
|
#if defined(FEATURE_SLEEP)
|
||||||
|
#define KEYER_AWAKE_PIN_AWAKE_STATE HIGH
|
||||||
|
#define KEYER_AWAKE_PIN_ASLEEP_STATE LOW
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_LCD_BACKLIGHT_AUTO_DIM)
|
||||||
|
#define keyer_power_led_awake_duty 255 // PWM duty cycle. 0 is 0%, 255 is 100%
|
||||||
|
#define keyer_power_led_asleep_duty 25 // 25 is quite dim. Use 0 for off
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FEATURE_ETHERNET)
|
||||||
|
// #define FEATURE_ETHERNET_IP {192,168,1,178} // default IP address ("192.168.1.178")
|
||||||
|
// #define FEATURE_ETHERNET_MAC {0xDE,0xAD,0xBE,0xEF,0xFE,0xED}
|
||||||
|
#define FEATURE_ETHERNET_IP {192,168,1,179} // default IP address ("192.168.1.179")
|
||||||
|
#define FEATURE_ETHERNET_MAC {0xDE,0xAD,0xBE,0xEF,0xFE,0xEE}
|
||||||
|
#define FEATURE_ETHERNET_DNS {8,8,8,8}
|
||||||
|
|
||||||
|
#define FEATURE_ETHERNET_GATEWAY {192,168,1,1} // default gateway
|
||||||
|
#define FEATURE_ETHERNET_SUBNET_MASK {255,255,255,0} // default subnet mask
|
||||||
|
#define FEATURE_ETHERNET_WEB_LISTENER_PORT 80
|
||||||
|
#define FEATURE_UDP_SEND_BUFFER_SIZE 128
|
||||||
|
#define FEATURE_UDP_RECEIVE_BUFFER_SIZE 128
|
||||||
|
#endif //FEATURE_ETHERNET
|
||||||
|
|
||||||
|
#define WEB_SERVER_CONTROL_TX_KEY_TIME_LIMIT_SECS 10
|
||||||
|
|
||||||
|
#define FEATURE_INTERNET_LINK_MAX_LINKS 2
|
||||||
|
#define FEATURE_INTERNET_LINK_DEFAULT_RCV_UDP_PORT 8888
|
||||||
|
#define FEATURE_INTERNET_LINK_BUFFER_TIME_MS 500
|
||||||
|
|
||||||
|
#if defined(FEATURE_4x4_KEYPAD)|| defined (FEATURE_3x4_KEYPAD)
|
||||||
|
#define KEYPAD_ROWS 4 //KeyPad Rows
|
||||||
|
#if defined(FEATURE_4x4_KEYPAD)
|
||||||
|
#define KEYPAD_COLS 4 //keypad Columns
|
||||||
|
#else
|
||||||
|
#define KEYPAD_COLS 3
|
||||||
|
#endif
|
||||||
|
#define mem1 0 //Memory numbers for Keypad: Actual memory numbers start with "0"
|
||||||
|
#define mem2 1
|
||||||
|
#define mem3 2
|
||||||
|
#define mem4 3
|
||||||
|
#define mem5 4
|
||||||
|
#define mem6 5
|
||||||
|
#define mem7 6
|
||||||
|
#define mem8 7
|
||||||
|
#define mem9 8
|
||||||
|
#define mem10 9
|
||||||
|
#define mem11 10
|
||||||
|
#define mem12 11
|
||||||
|
#endif //#if defined(FEATURE_4x4_KEYPAD)|| defined (FEATURE_3x4_KEYPAD)
|
||||||
|
|
||||||
|
#define initial_sidetone_mode 1 // Sidetone mode, 0=OFF, 1=ON, 2=PADDLE_ONLY
|
||||||
|
|
||||||
|
#define sd_card_spi_ss_line 4
|
||||||
|
|
||||||
|
|
||||||
|
#if defined(OPTION_DFROBOT_LCD_COMMAND_BUTTONS)
|
||||||
|
|
||||||
|
// For V1.1 board use these values
|
||||||
|
#define dfrobot_btnRIGHT_analog 50
|
||||||
|
#define dfrobot_btnUP_analog 250
|
||||||
|
#define dfrobot_btnDOWN_analog 450
|
||||||
|
#define dfrobot_btnLEFT_analog 650
|
||||||
|
#define dfrobot_btnSELECT_analog 850
|
||||||
|
|
||||||
|
// For V1.0 board use these values
|
||||||
|
// #define dfrobot_btnRIGHT_analog 50
|
||||||
|
// #define dfrobot_btnUP_analog 195
|
||||||
|
// #define dfrobot_btnDOWN_analog 380
|
||||||
|
// #define dfrobot_btnLEFT_analog 555
|
||||||
|
// #define dfrobot_btnSELECT_analog 790
|
||||||
|
|
||||||
|
// button to memory mappings (0 = command button, 1 = memory 1, 2 = memory 2, etc.)
|
||||||
|
#define dfrobot_btnRIGHT 2
|
||||||
|
#define dfrobot_btnUP 1
|
||||||
|
#define dfrobot_btnDOWN 3
|
||||||
|
#define dfrobot_btnLEFT 4
|
||||||
|
#define dfrobot_btnSELECT 0
|
||||||
|
#define dfrobot_btnNONE 255 // do not change
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#define sequencer_pins_active_state HIGH
|
||||||
|
#define sequencer_pins_inactive_state LOW
|
||||||
|
#define ptt_line_active_state HIGH
|
||||||
|
#define ptt_line_inactive_state LOW
|
||||||
|
#define tx_key_line_active_state HIGH
|
||||||
|
#define tx_key_line_inactive_state LOW
|
||||||
|
#define ptt_input_pin_active_state LOW
|
||||||
|
#define ptt_input_pin_inactive_state HIGH
|
||||||
|
#define tx_inhibit_pin_active_state LOW
|
||||||
|
#define tx_inhibit_pin_inactive_state HIGH
|
||||||
|
#define tx_pause_pin_active_state LOW
|
||||||
|
#define tx_pause_pin_inactive_state HIGH
|
||||||
|
#define sidetone_line_active_state HIGH
|
||||||
|
#define sidetone_line_inactive_state LOW
|
||||||
|
|
||||||
|
#if defined(ARDUINO_MAPLE_MINI)
|
||||||
|
#define button_value_factor 4095
|
||||||
|
#else
|
||||||
|
#define button_value_factor 1023
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define farnsworth_timing_calibration 1.15
|
||||||
|
|
||||||
|
#define sidetone_volume_low_limit 10
|
||||||
|
#define sidetone_volume_high_limit 500
|
||||||
|
|
||||||
|
#ifdef FEATURE_SO2R_BASE
|
||||||
|
#ifdef FEATURE_POTENTIOMETER
|
||||||
|
#ifdef FEATURE_SO2R_SWITCHES
|
||||||
|
#ifdef FEATURE_SO2R_ANTENNAS
|
||||||
|
#define SO2R_DEVICE_NAME "SO2R Mini PSA"
|
||||||
|
#else
|
||||||
|
#define SO2R_DEVICE_NAME "SO2R Mini PS"
|
||||||
|
#endif
|
||||||
|
#else
|
||||||
|
#ifdef FEATURE_SO2R_ANTENNAS
|
||||||
|
#define SO2R_DEVICE_NAME "SO2R Mini PA"
|
||||||
|
#else
|
||||||
|
#define SO2R_DEVICE_NAME "SO2R Mini P"
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
#else
|
||||||
|
#ifdef FEATURE_SO2R_SWITCHES
|
||||||
|
#ifdef FEATURE_SO2R_ANTENNAS
|
||||||
|
#define SO2R_DEVICE_NAME "SO2R Mini SA"
|
||||||
|
#else
|
||||||
|
#define SO2R_DEVICE_NAME "SO2R Mini S"
|
||||||
|
#endif
|
||||||
|
#else
|
||||||
|
#ifdef FEATURE_SO2R_ANTENNAS
|
||||||
|
#define SO2R_DEVICE_NAME "SO2R Mini A"
|
||||||
|
#else
|
||||||
|
#define SO2R_DEVICE_NAME "SO2R Mini"
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define custom_startup_field "your custom text here" // an example could be callsign and name, eg. "AB1XYZ Bob", (or "Worlds best operator" which requires a 20 column display), string length shouldo be no more than the number of columns on the display
|
||||||
|
|
||||||
|
#define command_mode_acknowledgement_character 'E'
|
||||||
|
|
||||||
|
#if defined(FEATURE_COMMAND_MODE_ENHANCED_CMD_ACKNOWLEDGEMENT)
|
||||||
|
#define command_a_iambic_a "A"
|
||||||
|
#define command_b_iambic_b "B"
|
||||||
|
#define command_c_single_paddle "SINGLE"
|
||||||
|
#define command_d_ultimatic "ULT"
|
||||||
|
#define command_h_weight_dit_dah_ratio_default "R"
|
||||||
|
#define command_i_tx_on "TX ON"
|
||||||
|
#define command_i_tx_off "TX OFF"
|
||||||
|
#define command_k_dit_dah_buffers_on "ON"
|
||||||
|
#define command_k_dit_dah_buffers_off "OFF"
|
||||||
|
#define command_n_paddle_reverse "REV"
|
||||||
|
#define command_n_paddle_normal "NORM"
|
||||||
|
#define command_o_sidetone_off "ST OFF"
|
||||||
|
#define command_o_sidetone_paddle_only "ST PD ONLY"
|
||||||
|
#define command_o_sidetone_on "ST ON"
|
||||||
|
#define command_t_tune_mode "TUNE"
|
||||||
|
#define command_v_potentiometer_on "POT ON"
|
||||||
|
#define command_v_potentiometer_off "POT OFF"
|
||||||
|
|
||||||
|
#define command_error "ERR"
|
||||||
|
|
||||||
|
#endif //FEATURE_COMMAND_MODE_ENHANCED_CMD_ACKNOWLEDGEMENT
|
||||||
|
|
39
k3ng_keyer/keyer_stm32duino.h
Executable file
39
k3ng_keyer/keyer_stm32duino.h
Executable file
|
@ -0,0 +1,39 @@
|
||||||
|
/* keyer_stm32fduino.h
|
||||||
|
|
||||||
|
|
||||||
|
Use this file to enables clean compilation using the STM32duino board support for STM32 ARM
|
||||||
|
processors. This requires the installation of https://github.com/rogerclarkmelbourne/Arduino_STM32
|
||||||
|
|
||||||
|
For more information about STM32duino visit the primary support forum: http://www.stm32duino.com/
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
void initialize_pins(void);
|
||||||
|
void initialize_keyer_state(void);
|
||||||
|
void initialize_potentiometer(void);
|
||||||
|
void initialize_rotary_encoder(void);
|
||||||
|
void initialize_default_modes(void);
|
||||||
|
void initialize_watchdog(void);
|
||||||
|
void initialize_ethernet_variables(void);
|
||||||
|
void check_eeprom_for_initialization(void);
|
||||||
|
void check_for_beacon_mode(void);
|
||||||
|
void check_for_debug_modes(void);
|
||||||
|
void initialize_analog_button_array(void);
|
||||||
|
void initialize_serial_ports(void);
|
||||||
|
void initialize_ps2_keyboard(void);
|
||||||
|
void initialize_usb(void);
|
||||||
|
void initialize_cw_keyboard(void);
|
||||||
|
void initialize_display(void);
|
||||||
|
void initialize_ethernet(void);
|
||||||
|
void initialize_udp(void);
|
||||||
|
void initialize_web_server(void);
|
||||||
|
void initialize_debug_startup(void);
|
||||||
|
|
||||||
|
void check_paddles(void);
|
||||||
|
void service_dit_dah_buffers(void);
|
||||||
|
void service_send_buffer(byte);
|
||||||
|
void check_ptt_tail(void);
|
||||||
|
void check_for_dirty_configuration(void);
|
||||||
|
void tone(uint32_t, uint32_t, uint32_t);
|
||||||
|
void noTone(uint32_t);
|
||||||
|
void serial_status(PRIMARY_SERIAL_CLS*);
|
266
k3ng_keyer/keyer_training_text_czech.h
Executable file
266
k3ng_keyer/keyer_training_text_czech.h
Executable file
|
@ -0,0 +1,266 @@
|
||||||
|
// keyer_training_text_czech.h
|
||||||
|
// Czech word list contributed by Martin, OK1RR
|
||||||
|
// English word list originally from gen_cw_words.pl - a program that generates words in a random order,
|
||||||
|
// intended to be used during morse code practice.
|
||||||
|
// Original gen_cw_words.pl code Copyright (C) 2015,2017 Andy Stewart (KB1OIQ)
|
||||||
|
// https://sourceforge.net/projects/kb1oiq-k1ig-wordsworth/
|
||||||
|
|
||||||
|
// two letter word array
|
||||||
|
const char s2_1[] PROGMEM = "DO";
|
||||||
|
const char s2_2[] PROGMEM = "NA";
|
||||||
|
const char s2_3[] PROGMEM = "PO";
|
||||||
|
const char s2_4[] PROGMEM = "MY";
|
||||||
|
const char s2_5[] PROGMEM = "TO";
|
||||||
|
const char s2_6[] PROGMEM = "NE";
|
||||||
|
const char s2_7[] PROGMEM = "VY";
|
||||||
|
const char s2_8[] PROGMEM = "ZE";
|
||||||
|
const char s2_9[] PROGMEM = "VE";
|
||||||
|
const char s2_10[] PROGMEM = "JA";
|
||||||
|
const char s2_11[] PROGMEM = "TY";
|
||||||
|
const char s2_12[] PROGMEM = "BY";
|
||||||
|
const char s2_13[] PROGMEM = "ON";
|
||||||
|
const char s2_14[] PROGMEM = "SE";
|
||||||
|
const char s2_15[] PROGMEM = "AZ";
|
||||||
|
const char s2_16[] PROGMEM = "TU";
|
||||||
|
const char s2_17[] PROGMEM = "TI";
|
||||||
|
const char s2_18[] PROGMEM = "ZA";
|
||||||
|
const char s2_19[] PROGMEM = "CI";
|
||||||
|
const char s2_20[] PROGMEM = "CO";
|
||||||
|
const char s2_21[] PROGMEM = "JI";
|
||||||
|
const char s2_22[] PROGMEM = "MU";
|
||||||
|
const char s2_23[] PROGMEM = "JE";
|
||||||
|
const char s2_24[] PROGMEM = "UZ";
|
||||||
|
const byte s2_size = 24;
|
||||||
|
const char* const s2_table[] PROGMEM =
|
||||||
|
{s2_1,s2_2,s2_3,s2_4,s2_5,s2_6,s2_7,s2_8,s2_9,s2_10,
|
||||||
|
s2_11,s2_12,s2_13,s2_14,s2_15,s2_16,s2_17,s2_18,s2_19,s2_20,
|
||||||
|
s2_21,s2_22,s2_23,s2_24};
|
||||||
|
|
||||||
|
// three letter word array
|
||||||
|
const char s3_1[] PROGMEM = "DVA";
|
||||||
|
const char s3_2[] PROGMEM = "TRI";
|
||||||
|
const char s3_3[] PROGMEM = "MUJ";
|
||||||
|
const char s3_4[] PROGMEM = "NAS";
|
||||||
|
const char s3_5[] PROGMEM = "ONA";
|
||||||
|
const char s3_6[] PROGMEM = "ONI";
|
||||||
|
const char s3_7[] PROGMEM = "ONO";
|
||||||
|
const char s3_8[] PROGMEM = "VAS";
|
||||||
|
const char s3_9[] PROGMEM = "VSE";
|
||||||
|
const char s3_10[] PROGMEM = "POD";
|
||||||
|
const char s3_11[] PROGMEM = "NAD";
|
||||||
|
const char s3_12[] PROGMEM = "KDE";
|
||||||
|
const char s3_13[] PROGMEM = "KDY";
|
||||||
|
const char s3_14[] PROGMEM = "KAM";
|
||||||
|
const char s3_15[] PROGMEM = "KUS";
|
||||||
|
const char s3_16[] PROGMEM = "DEN";
|
||||||
|
const char s3_17[] PROGMEM = "TAM";
|
||||||
|
const char s3_18[] PROGMEM = "DAT";
|
||||||
|
const char s3_19[] PROGMEM = "DAM";
|
||||||
|
const char s3_20[] PROGMEM = "DAS";
|
||||||
|
const char s3_21[] PROGMEM = "MIT";
|
||||||
|
const char s3_22[] PROGMEM = "JIT";
|
||||||
|
const char s3_23[] PROGMEM = "NEZ";
|
||||||
|
const char s3_24[] PROGMEM = "ROK";
|
||||||
|
const char s3_25[] PROGMEM = "PAK";
|
||||||
|
const char s3_26[] PROGMEM = "DIK";
|
||||||
|
const char s3_27[] PROGMEM = "DUM";
|
||||||
|
const char s3_28[] PROGMEM = "PRO";
|
||||||
|
const char s3_29[] PROGMEM = "PRI";
|
||||||
|
const char s3_30[] PROGMEM = "OKO";
|
||||||
|
const char s3_31[] PROGMEM = "CAS";
|
||||||
|
const char s3_32[] PROGMEM = "CAJ";
|
||||||
|
const char s3_33[] PROGMEM = "CIL";
|
||||||
|
const char s3_34[] PROGMEM = "COP";
|
||||||
|
const char s3_35[] PROGMEM = "MUZ";
|
||||||
|
const char s3_36[] PROGMEM = "ASI";
|
||||||
|
const char s3_37[] PROGMEM = "BEZ";
|
||||||
|
const char s3_38[] PROGMEM = "BOJ";
|
||||||
|
const char s3_39[] PROGMEM = "BUH";
|
||||||
|
const byte s3_size = 39;
|
||||||
|
const char* const s3_table[] PROGMEM =
|
||||||
|
{s3_1,s3_2,s3_3,s3_4,s3_5,s3_6,s3_7,s3_8,s3_9,s3_10,
|
||||||
|
s3_11,s3_12,s3_13,s3_14,s3_15,s3_16,s3_17,s3_18,s3_19,s3_20,
|
||||||
|
s3_21,s3_22,s3_23,s3_24,s3_25,s3_26,s3_27,s3_28,s3_29,s3_30,
|
||||||
|
s3_31,s3_32,s3_33,s3_34,s3_35,s3_36,s3_37,s3_38,s3_39};
|
||||||
|
|
||||||
|
// four letter word array
|
||||||
|
const char s4_1[] PROGMEM = "TATO";
|
||||||
|
const char s4_2[] PROGMEM = "TITO";
|
||||||
|
const char s4_3[] PROGMEM = "TOTO";
|
||||||
|
const char s4_4[] PROGMEM = "DOMA";
|
||||||
|
const char s4_5[] PROGMEM = "STAT";
|
||||||
|
const char s4_6[] PROGMEM = "TADY";
|
||||||
|
const char s4_7[] PROGMEM = "DOBA";
|
||||||
|
const char s4_8[] PROGMEM = "TAKE";
|
||||||
|
const char s4_9[] PROGMEM = "PRED";
|
||||||
|
const char s4_10[] PROGMEM = "SVET";
|
||||||
|
const char s4_11[] PROGMEM = "BRZY";
|
||||||
|
const char s4_12[] PROGMEM = "TVUJ";
|
||||||
|
const char s4_13[] PROGMEM = "TATA";
|
||||||
|
const char s4_14[] PROGMEM = "MAMA";
|
||||||
|
const char s4_15[] PROGMEM = "PSIK";
|
||||||
|
const char s4_16[] PROGMEM = "ZENA";
|
||||||
|
const char s4_17[] PROGMEM = "DITE";
|
||||||
|
const char s4_18[] PROGMEM = "DETI";
|
||||||
|
const char s4_19[] PROGMEM = "KONE";
|
||||||
|
const char s4_20[] PROGMEM = "DUHA";
|
||||||
|
const char s4_21[] PROGMEM = "RUKA";
|
||||||
|
const char s4_22[] PROGMEM = "NOHA";
|
||||||
|
const char s4_23[] PROGMEM = "PRST";
|
||||||
|
const char s4_24[] PROGMEM = "POLE";
|
||||||
|
const char s4_25[] PROGMEM = "MORE";
|
||||||
|
const char s4_26[] PROGMEM = "VITR";
|
||||||
|
const char s4_27[] PROGMEM = "MLHA";
|
||||||
|
const char s4_28[] PROGMEM = "VODA";
|
||||||
|
const char s4_29[] PROGMEM = "VAHA";
|
||||||
|
const char s4_30[] PROGMEM = "PIVO";
|
||||||
|
const char s4_31[] PROGMEM = "HRAT";
|
||||||
|
const char s4_32[] PROGMEM = "RADA";
|
||||||
|
const char s4_33[] PROGMEM = "PANI";
|
||||||
|
const byte s4_size = 33;
|
||||||
|
const char* const s4_table[] PROGMEM =
|
||||||
|
{s4_1,s4_2,s4_3,s4_4,s4_5,s4_6,s4_7,s4_8,s4_9,s4_10,
|
||||||
|
s4_11,s4_12,s4_13,s4_14,s4_15,s4_16,s4_17,s4_18,s4_19,s4_20,
|
||||||
|
s4_21,s4_22,s4_23,s4_24,s4_25,s4_26,s4_27,s4_28,s4_29,s4_30,
|
||||||
|
s4_31,s4_32,s4_33};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
const char name_1[] PROGMEM = "ANDY";
|
||||||
|
const char name_2[] PROGMEM = "JOSEF";
|
||||||
|
const char name_3[] PROGMEM = "JIRI";
|
||||||
|
const char name_4[] PROGMEM = "KAREL";
|
||||||
|
const char name_5[] PROGMEM = "HONZA";
|
||||||
|
const char name_6[] PROGMEM = "FRANTA";
|
||||||
|
const char name_7[] PROGMEM = "PETR";
|
||||||
|
const char name_8[] PROGMEM = "PAVEL";
|
||||||
|
const char name_9[] PROGMEM = "JINDRA";
|
||||||
|
const char name_10[] PROGMEM = "FILIP";
|
||||||
|
const char name_11[] PROGMEM = "MILAN";
|
||||||
|
const char name_12[] PROGMEM = "MARTIN";
|
||||||
|
const char name_13[] PROGMEM = "DAVID";
|
||||||
|
const char name_14[] PROGMEM = "TOMAS";
|
||||||
|
const char name_15[] PROGMEM = "HANKA";
|
||||||
|
const char name_16[] PROGMEM = "SASA";
|
||||||
|
const char name_17[] PROGMEM = "IVAN";
|
||||||
|
const char name_18[] PROGMEM = "BERT";
|
||||||
|
const char name_19[] PROGMEM = "VASEK";
|
||||||
|
const char name_20[] PROGMEM = "ALAN";
|
||||||
|
const char name_21[] PROGMEM = "JIRKA";
|
||||||
|
const char name_22[] PROGMEM = "JERRY";
|
||||||
|
const char name_23[] PROGMEM = "PEPA";
|
||||||
|
const char name_24[] PROGMEM = "JIRINA";
|
||||||
|
const char name_25[] PROGMEM = "RISA";
|
||||||
|
const char name_26[] PROGMEM = "DAN";
|
||||||
|
const char name_27[] PROGMEM = "LUBOS";
|
||||||
|
const char name_28[] PROGMEM = "TONDA";
|
||||||
|
const char name_29[] PROGMEM = "LADA";
|
||||||
|
const char name_30[] PROGMEM = "VLADA";
|
||||||
|
const char name_31[] PROGMEM = "JENDA";
|
||||||
|
const char name_32[] PROGMEM = "CYRIL";
|
||||||
|
const char name_33[] PROGMEM = "BOHOUS";
|
||||||
|
const char name_34[] PROGMEM = "KAMIL";
|
||||||
|
const char name_35[] PROGMEM = "RENE";
|
||||||
|
const char name_36[] PROGMEM = "PATRIK";
|
||||||
|
const char name_37[] PROGMEM = "SIMON";
|
||||||
|
const char name_38[] PROGMEM = "ALEX";
|
||||||
|
const char name_39[] PROGMEM = "LOJZA";
|
||||||
|
const char name_40[] PROGMEM = "MATEJ";
|
||||||
|
const char name_41[] PROGMEM = "FERDA";
|
||||||
|
const char name_42[] PROGMEM = "MARIE";
|
||||||
|
const char name_43[] PROGMEM = "ZDENEK";
|
||||||
|
const char name_44[] PROGMEM = "JULEK";
|
||||||
|
const char name_45[] PROGMEM = "STANDA";
|
||||||
|
const char name_46[] PROGMEM = "SLAVEK";
|
||||||
|
const char name_47[] PROGMEM = "VILDA";
|
||||||
|
const char name_48[] PROGMEM = "VERA";
|
||||||
|
const char name_49[] PROGMEM = "GUSTA";
|
||||||
|
const byte name_size = 49;
|
||||||
|
const char* const name_table[] PROGMEM =
|
||||||
|
{name_1,name_2,name_3,name_4,name_5,name_6,name_7,name_8,name_9,name_10,
|
||||||
|
name_11,name_12,name_13,name_14,name_15,name_16,name_17,name_18,name_19,name_20,
|
||||||
|
name_21,name_22,name_23,name_24,name_25,name_26,name_27,name_28,name_29,name_30,
|
||||||
|
name_31,name_32,name_33,name_34,name_35,name_36,name_37,name_38,name_39,name_40,
|
||||||
|
name_41,name_42,name_43,name_44,name_45,name_46,name_47,name_48,name_49};
|
||||||
|
|
||||||
|
// CW QSO word array
|
||||||
|
const char qso_1[] PROGMEM = "QRL?";
|
||||||
|
const char qso_2[] PROGMEM = "QRM";
|
||||||
|
const char qso_3[] PROGMEM = "QRN";
|
||||||
|
const char qso_4[] PROGMEM = "QRS";
|
||||||
|
const char qso_5[] PROGMEM = "QRT";
|
||||||
|
const char qso_6[] PROGMEM = "QRZ";
|
||||||
|
const char qso_7[] PROGMEM = "QSL";
|
||||||
|
const char qso_8[] PROGMEM = "QSO";
|
||||||
|
const char qso_9[] PROGMEM = "QSY";
|
||||||
|
const char qso_10[] PROGMEM = "QTH";
|
||||||
|
const char qso_11[] PROGMEM = "QRX";
|
||||||
|
const char qso_12[] PROGMEM = "ABT";
|
||||||
|
const char qso_13[] PROGMEM = "AGE";
|
||||||
|
const char qso_14[] PROGMEM = "ANT";
|
||||||
|
const char qso_15[] PROGMEM = "BEAM";
|
||||||
|
const char qso_16[] PROGMEM = "BK";
|
||||||
|
const char qso_17[] PROGMEM = "QRP";
|
||||||
|
const char qso_18[] PROGMEM = "AGN";
|
||||||
|
const char qso_19[] PROGMEM = "C";
|
||||||
|
const char qso_20[] PROGMEM = "CL";
|
||||||
|
const char qso_21[] PROGMEM = "CPY";
|
||||||
|
const char qso_22[] PROGMEM = "CQ";
|
||||||
|
const char qso_23[] PROGMEM = "CUL";
|
||||||
|
const char qso_24[] PROGMEM = "DE";
|
||||||
|
const char qso_25[] PROGMEM = "DX";
|
||||||
|
const char qso_26[] PROGMEM = "ES";
|
||||||
|
const char qso_27[] PROGMEM = "EL";
|
||||||
|
const char qso_28[] PROGMEM = "FB";
|
||||||
|
const char qso_29[] PROGMEM = "HI";
|
||||||
|
const char qso_30[] PROGMEM = "HW?";
|
||||||
|
const char qso_31[] PROGMEM = "HR";
|
||||||
|
const char qso_32[] PROGMEM = "K";
|
||||||
|
const char qso_33[] PROGMEM = "=";
|
||||||
|
const char qso_34[] PROGMEM = "<";
|
||||||
|
const char qso_35[] PROGMEM = "%";
|
||||||
|
const char qso_36[] PROGMEM = ">";
|
||||||
|
const char qso_37[] PROGMEM = "LID";
|
||||||
|
const char qso_38[] PROGMEM = "LOOP";
|
||||||
|
const char qso_39[] PROGMEM = "NAME";
|
||||||
|
const char qso_40[] PROGMEM = "OM";
|
||||||
|
const char qso_41[] PROGMEM = "OP";
|
||||||
|
const char qso_42[] PROGMEM = "PKT";
|
||||||
|
const char qso_43[] PROGMEM = "PSE";
|
||||||
|
const char qso_44[] PROGMEM = "R";
|
||||||
|
const char qso_45[] PROGMEM = "RPT";
|
||||||
|
const char qso_46[] PROGMEM = "RST";
|
||||||
|
const char qso_47[] PROGMEM = "RIG";
|
||||||
|
const char qso_48[] PROGMEM = "TEMP";
|
||||||
|
const char qso_49[] PROGMEM = "TEST";
|
||||||
|
const char qso_50[] PROGMEM = "TU";
|
||||||
|
const char qso_51[] PROGMEM = "TKS";
|
||||||
|
const char qso_52[] PROGMEM = "TNX";
|
||||||
|
const char qso_53[] PROGMEM = "VERT";
|
||||||
|
const char qso_54[] PROGMEM = "WATT";
|
||||||
|
const char qso_55[] PROGMEM = "WX";
|
||||||
|
const char qso_56[] PROGMEM = "YAGI";
|
||||||
|
const char qso_57[] PROGMEM = "YRS";
|
||||||
|
const char qso_58[] PROGMEM = "73";
|
||||||
|
const char qso_59[] PROGMEM = "88";
|
||||||
|
const char qso_60[] PROGMEM = "?";
|
||||||
|
const char qso_61[] PROGMEM = "/";
|
||||||
|
const char qso_62[] PROGMEM = "VY";
|
||||||
|
const char qso_63[] PROGMEM = "YL";
|
||||||
|
const char qso_64[] PROGMEM = "XYL";
|
||||||
|
const char qso_65[] PROGMEM = "MY";
|
||||||
|
const char qso_66[] PROGMEM = "UR";
|
||||||
|
const char qso_67[] PROGMEM = "IS";
|
||||||
|
const char qso_68[] PROGMEM = "QSB";
|
||||||
|
const char qso_69[] PROGMEM = "QRQ";
|
||||||
|
const char qso_70[] PROGMEM = "HVE";
|
||||||
|
const char qso_71[] PROGMEM = "HPE";
|
||||||
|
const char qso_72[] PROGMEM = "BEST";
|
||||||
|
const byte qso_size = 72;
|
||||||
|
const char* const qso_table[] PROGMEM =
|
||||||
|
{qso_1,qso_2,qso_3,qso_4,qso_5,qso_6,qso_7,qso_8,qso_9,qso_10,qso_11,qso_12,qso_13,qso_14,qso_15,qso_16,qso_17,qso_18,qso_19,qso_20,
|
||||||
|
qso_21,qso_22,qso_23,qso_24,qso_25,qso_26,qso_27,qso_28,qso_29,qso_30,qso_31,qso_32,qso_33,qso_34,qso_35,qso_36,qso_37,qso_38,qso_39,qso_40,
|
||||||
|
qso_41,qso_42,qso_43,qso_44,qso_45,qso_46,qso_47,qso_48,qso_49,qso_50,qso_51,qso_52,qso_53,qso_54,qso_55,qso_56,qso_57,qso_58,qso_59,qso_60,
|
||||||
|
qso_61,qso_62,qso_63,qso_64,qso_65,qso_66,qso_67,qso_68,qso_69,qso_70,qso_71,qso_72};
|
||||||
|
|
||||||
|
|
264
k3ng_keyer/keyer_training_text_english.h
Executable file
264
k3ng_keyer/keyer_training_text_english.h
Executable file
|
@ -0,0 +1,264 @@
|
||||||
|
// English word list originally from gen_cw_words.pl - a program that generates words in a random order,
|
||||||
|
// intended to be used during morse code practice.
|
||||||
|
// Original gen_cw_words.pl code Copyright (C) 2015,2017 Andy Stewart (KB1OIQ)
|
||||||
|
// https://sourceforge.net/projects/kb1oiq-k1ig-wordsworth/
|
||||||
|
|
||||||
|
// two letter word array
|
||||||
|
const char s2_1[] PROGMEM = "TO";
|
||||||
|
const char s2_2[] PROGMEM = "IN";
|
||||||
|
const char s2_3[] PROGMEM = "IT";
|
||||||
|
const char s2_4[] PROGMEM = "IS";
|
||||||
|
const char s2_5[] PROGMEM = "BE";
|
||||||
|
const char s2_6[] PROGMEM = "AS";
|
||||||
|
const char s2_7[] PROGMEM = "AT";
|
||||||
|
const char s2_8[] PROGMEM = "SO";
|
||||||
|
const char s2_9[] PROGMEM = "WE";
|
||||||
|
const char s2_10[] PROGMEM = "HE";
|
||||||
|
const char s2_11[] PROGMEM = "BY";
|
||||||
|
const char s2_12[] PROGMEM = "OR";
|
||||||
|
const char s2_13[] PROGMEM = "ON";
|
||||||
|
const char s2_14[] PROGMEM = "DO";
|
||||||
|
const char s2_15[] PROGMEM = "IF";
|
||||||
|
const char s2_16[] PROGMEM = "ME";
|
||||||
|
const char s2_17[] PROGMEM = "MY";
|
||||||
|
const char s2_18[] PROGMEM = "UP";
|
||||||
|
const char s2_19[] PROGMEM = "AN";
|
||||||
|
const char s2_20[] PROGMEM = "GO";
|
||||||
|
const char s2_21[] PROGMEM = "NO";
|
||||||
|
const char s2_22[] PROGMEM = "US";
|
||||||
|
const char s2_23[] PROGMEM = "AM";
|
||||||
|
const char s2_24[] PROGMEM = "OF";
|
||||||
|
const byte s2_size = 24;
|
||||||
|
const char* const s2_table[] PROGMEM =
|
||||||
|
{s2_1,s2_2,s2_3,s2_4,s2_5,s2_6,s2_7,s2_8,s2_9,s2_10,
|
||||||
|
s2_11,s2_12,s2_13,s2_14,s2_15,s2_16,s2_17,s2_18,s2_19,s2_20,
|
||||||
|
s2_21,s2_22,s2_23,s2_24};
|
||||||
|
|
||||||
|
// three letter word array
|
||||||
|
const char s3_1[] PROGMEM = "THE";
|
||||||
|
const char s3_2[] PROGMEM = "AND";
|
||||||
|
const char s3_3[] PROGMEM = "FOR";
|
||||||
|
const char s3_4[] PROGMEM = "ARE";
|
||||||
|
const char s3_5[] PROGMEM = "BUT";
|
||||||
|
const char s3_6[] PROGMEM = "NOT";
|
||||||
|
const char s3_7[] PROGMEM = "YOU";
|
||||||
|
const char s3_8[] PROGMEM = "ALL";
|
||||||
|
const char s3_9[] PROGMEM = "ANY";
|
||||||
|
const char s3_10[] PROGMEM = "CAN";
|
||||||
|
const char s3_11[] PROGMEM = "HAD";
|
||||||
|
const char s3_12[] PROGMEM = "HER";
|
||||||
|
const char s3_13[] PROGMEM = "WAS";
|
||||||
|
const char s3_14[] PROGMEM = "ONE";
|
||||||
|
const char s3_15[] PROGMEM = "OUR";
|
||||||
|
const char s3_16[] PROGMEM = "OUT";
|
||||||
|
const char s3_17[] PROGMEM = "DAY";
|
||||||
|
const char s3_18[] PROGMEM = "GET";
|
||||||
|
const char s3_19[] PROGMEM = "HAS";
|
||||||
|
const char s3_20[] PROGMEM = "HIM";
|
||||||
|
const char s3_21[] PROGMEM = "HIS";
|
||||||
|
const char s3_22[] PROGMEM = "HOW";
|
||||||
|
const char s3_23[] PROGMEM = "MAN";
|
||||||
|
const char s3_24[] PROGMEM = "NEW";
|
||||||
|
const char s3_25[] PROGMEM = "NOW";
|
||||||
|
const char s3_26[] PROGMEM = "OLD";
|
||||||
|
const char s3_27[] PROGMEM = "SEE";
|
||||||
|
const char s3_28[] PROGMEM = "TWO";
|
||||||
|
const char s3_29[] PROGMEM = "WAY";
|
||||||
|
const char s3_30[] PROGMEM = "WHO";
|
||||||
|
const char s3_31[] PROGMEM = "BOY";
|
||||||
|
const char s3_32[] PROGMEM = "DID";
|
||||||
|
const char s3_33[] PROGMEM = "ITS";
|
||||||
|
const char s3_34[] PROGMEM = "LET";
|
||||||
|
const char s3_35[] PROGMEM = "PUT";
|
||||||
|
const char s3_36[] PROGMEM = "SAY";
|
||||||
|
const char s3_37[] PROGMEM = "SHE";
|
||||||
|
const char s3_38[] PROGMEM = "TOO";
|
||||||
|
const char s3_39[] PROGMEM = "USE";
|
||||||
|
const byte s3_size = 39;
|
||||||
|
const char* const s3_table[] PROGMEM =
|
||||||
|
{s3_1,s3_2,s3_3,s3_4,s3_5,s3_6,s3_7,s3_8,s3_9,s3_10,
|
||||||
|
s3_11,s3_12,s3_13,s3_14,s3_15,s3_16,s3_17,s3_18,s3_19,s3_20,
|
||||||
|
s3_21,s3_22,s3_23,s3_24,s3_25,s3_26,s3_27,s3_28,s3_29,s3_30,
|
||||||
|
s3_31,s3_32,s3_33,s3_34,s3_35,s3_36,s3_37,s3_38,s3_39};
|
||||||
|
|
||||||
|
// four letter word array
|
||||||
|
const char s4_1[] PROGMEM = "THAT";
|
||||||
|
const char s4_2[] PROGMEM = "WITH";
|
||||||
|
const char s4_3[] PROGMEM = "HAVE";
|
||||||
|
const char s4_4[] PROGMEM = "THIS";
|
||||||
|
const char s4_5[] PROGMEM = "WILL";
|
||||||
|
const char s4_6[] PROGMEM = "YOUR";
|
||||||
|
const char s4_7[] PROGMEM = "FROM";
|
||||||
|
const char s4_8[] PROGMEM = "THEY";
|
||||||
|
const char s4_9[] PROGMEM = "KNOW";
|
||||||
|
const char s4_10[] PROGMEM = "WANT";
|
||||||
|
const char s4_11[] PROGMEM = "BEEN";
|
||||||
|
const char s4_12[] PROGMEM = "GOOD";
|
||||||
|
const char s4_13[] PROGMEM = "MUCH";
|
||||||
|
const char s4_14[] PROGMEM = "SOME";
|
||||||
|
const char s4_15[] PROGMEM = "TIME";
|
||||||
|
const char s4_16[] PROGMEM = "VERY";
|
||||||
|
const char s4_17[] PROGMEM = "WHEN";
|
||||||
|
const char s4_18[] PROGMEM = "COME";
|
||||||
|
const char s4_19[] PROGMEM = "HERE";
|
||||||
|
const char s4_20[] PROGMEM = "JUST";
|
||||||
|
const char s4_21[] PROGMEM = "LIKE";
|
||||||
|
const char s4_22[] PROGMEM = "LONG";
|
||||||
|
const char s4_23[] PROGMEM = "MAKE";
|
||||||
|
const char s4_24[] PROGMEM = "MANY";
|
||||||
|
const char s4_25[] PROGMEM = "MORE";
|
||||||
|
const char s4_26[] PROGMEM = "ONLY";
|
||||||
|
const char s4_27[] PROGMEM = "OVER";
|
||||||
|
const char s4_28[] PROGMEM = "SUCH";
|
||||||
|
const char s4_29[] PROGMEM = "TAKE";
|
||||||
|
const char s4_30[] PROGMEM = "THAN";
|
||||||
|
const char s4_31[] PROGMEM = "THEM";
|
||||||
|
const char s4_32[] PROGMEM = "WELL";
|
||||||
|
const char s4_33[] PROGMEM = "WERE";
|
||||||
|
const byte s4_size = 33;
|
||||||
|
const char* const s4_table[] PROGMEM =
|
||||||
|
{s4_1,s4_2,s4_3,s4_4,s4_5,s4_6,s4_7,s4_8,s4_9,s4_10,
|
||||||
|
s4_11,s4_12,s4_13,s4_14,s4_15,s4_16,s4_17,s4_18,s4_19,s4_20,
|
||||||
|
s4_21,s4_22,s4_23,s4_24,s4_25,s4_26,s4_27,s4_28,s4_29,s4_30,
|
||||||
|
s4_31,s4_32,s4_33};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
const char name_1[] PROGMEM = "ANDY";
|
||||||
|
const char name_2[] PROGMEM = "BOB";
|
||||||
|
const char name_3[] PROGMEM = "BILL";
|
||||||
|
const char name_4[] PROGMEM = "JOHN";
|
||||||
|
const char name_5[] PROGMEM = "GEORGE";
|
||||||
|
const char name_6[] PROGMEM = "TOM";
|
||||||
|
const char name_7[] PROGMEM = "RICH";
|
||||||
|
const char name_8[] PROGMEM = "STEVE";
|
||||||
|
const char name_9[] PROGMEM = "TIM";
|
||||||
|
const char name_10[] PROGMEM = "SCOTT";
|
||||||
|
const char name_11[] PROGMEM = "FRED";
|
||||||
|
const char name_12[] PROGMEM = "DOUG";
|
||||||
|
const char name_13[] PROGMEM = "DAVE";
|
||||||
|
const char name_14[] PROGMEM = "GARY";
|
||||||
|
const char name_15[] PROGMEM = "JIM";
|
||||||
|
const char name_16[] PROGMEM = "CHRIS";
|
||||||
|
const char name_17[] PROGMEM = "MIKE";
|
||||||
|
const char name_18[] PROGMEM = "ED";
|
||||||
|
const char name_19[] PROGMEM = "AL";
|
||||||
|
const char name_20[] PROGMEM = "ALAN";
|
||||||
|
const char name_21[] PROGMEM = "RON";
|
||||||
|
const char name_22[] PROGMEM = "JERRY";
|
||||||
|
const char name_23[] PROGMEM = "ART";
|
||||||
|
const char name_24[] PROGMEM = "GREG";
|
||||||
|
const char name_25[] PROGMEM = "RICK";
|
||||||
|
const char name_26[] PROGMEM = "DAN";
|
||||||
|
const char name_27[] PROGMEM = "KEN";
|
||||||
|
const char name_28[] PROGMEM = "TONY";
|
||||||
|
const char name_29[] PROGMEM = "CARL";
|
||||||
|
const char name_30[] PROGMEM = "PHIL";
|
||||||
|
const char name_31[] PROGMEM = "JOE";
|
||||||
|
const char name_32[] PROGMEM = "JON";
|
||||||
|
const char name_33[] PROGMEM = "LARRY";
|
||||||
|
const char name_34[] PROGMEM = "DON";
|
||||||
|
const char name_35[] PROGMEM = "DICK";
|
||||||
|
const char name_36[] PROGMEM = "PAUL";
|
||||||
|
const char name_37[] PROGMEM = "SERGE";
|
||||||
|
const char name_38[] PROGMEM = "ALEX";
|
||||||
|
const char name_39[] PROGMEM = "VLAD";
|
||||||
|
const char name_40[] PROGMEM = "JEFF";
|
||||||
|
const char name_41[] PROGMEM = "CHAS";
|
||||||
|
const char name_42[] PROGMEM = "JACK";
|
||||||
|
const char name_43[] PROGMEM = "GENE";
|
||||||
|
const char name_44[] PROGMEM = "BERT";
|
||||||
|
const char name_45[] PROGMEM = "OLEG";
|
||||||
|
const char name_46[] PROGMEM = "PETE";
|
||||||
|
const char name_47[] PROGMEM = "PAT";
|
||||||
|
const char name_48[] PROGMEM = "JUAN";
|
||||||
|
const char name_49[] PROGMEM = "GUS";
|
||||||
|
const byte name_size = 49;
|
||||||
|
const char* const name_table[] PROGMEM =
|
||||||
|
{name_1,name_2,name_3,name_4,name_5,name_6,name_7,name_8,name_9,name_10,
|
||||||
|
name_11,name_12,name_13,name_14,name_15,name_16,name_17,name_18,name_19,name_20,
|
||||||
|
name_21,name_22,name_23,name_24,name_25,name_26,name_27,name_28,name_29,name_30,
|
||||||
|
name_31,name_32,name_33,name_34,name_35,name_36,name_37,name_38,name_39,name_40,
|
||||||
|
name_41,name_42,name_43,name_44,name_45,name_46,name_47,name_48,name_49};
|
||||||
|
|
||||||
|
// CW QSO word array
|
||||||
|
const char qso_1[] PROGMEM = "QRL?";
|
||||||
|
const char qso_2[] PROGMEM = "QRM";
|
||||||
|
const char qso_3[] PROGMEM = "QRN";
|
||||||
|
const char qso_4[] PROGMEM = "QRS";
|
||||||
|
const char qso_5[] PROGMEM = "QRT";
|
||||||
|
const char qso_6[] PROGMEM = "QRZ";
|
||||||
|
const char qso_7[] PROGMEM = "QSL";
|
||||||
|
const char qso_8[] PROGMEM = "QSO";
|
||||||
|
const char qso_9[] PROGMEM = "QSY";
|
||||||
|
const char qso_10[] PROGMEM = "QTH";
|
||||||
|
const char qso_11[] PROGMEM = "QRX";
|
||||||
|
const char qso_12[] PROGMEM = "ABT";
|
||||||
|
const char qso_13[] PROGMEM = "AGE";
|
||||||
|
const char qso_14[] PROGMEM = "ANT";
|
||||||
|
const char qso_15[] PROGMEM = "BEAM";
|
||||||
|
const char qso_16[] PROGMEM = "BK";
|
||||||
|
const char qso_17[] PROGMEM = "QRP";
|
||||||
|
const char qso_18[] PROGMEM = "AGN";
|
||||||
|
const char qso_19[] PROGMEM = "C";
|
||||||
|
const char qso_20[] PROGMEM = "CL";
|
||||||
|
const char qso_21[] PROGMEM = "CPY";
|
||||||
|
const char qso_22[] PROGMEM = "CQ";
|
||||||
|
const char qso_23[] PROGMEM = "CUL";
|
||||||
|
const char qso_24[] PROGMEM = "DE";
|
||||||
|
const char qso_25[] PROGMEM = "DX";
|
||||||
|
const char qso_26[] PROGMEM = "ES";
|
||||||
|
const char qso_27[] PROGMEM = "EL";
|
||||||
|
const char qso_28[] PROGMEM = "FB";
|
||||||
|
const char qso_29[] PROGMEM = "HI";
|
||||||
|
const char qso_30[] PROGMEM = "HW?";
|
||||||
|
const char qso_31[] PROGMEM = "HR";
|
||||||
|
const char qso_32[] PROGMEM = "K";
|
||||||
|
const char qso_33[] PROGMEM = "=";
|
||||||
|
const char qso_34[] PROGMEM = "<";
|
||||||
|
const char qso_35[] PROGMEM = "%";
|
||||||
|
const char qso_36[] PROGMEM = ">";
|
||||||
|
const char qso_37[] PROGMEM = "LID";
|
||||||
|
const char qso_38[] PROGMEM = "LOOP";
|
||||||
|
const char qso_39[] PROGMEM = "NAME";
|
||||||
|
const char qso_40[] PROGMEM = "OM";
|
||||||
|
const char qso_41[] PROGMEM = "OP";
|
||||||
|
const char qso_42[] PROGMEM = "PKT";
|
||||||
|
const char qso_43[] PROGMEM = "PSE";
|
||||||
|
const char qso_44[] PROGMEM = "R";
|
||||||
|
const char qso_45[] PROGMEM = "RPT";
|
||||||
|
const char qso_46[] PROGMEM = "RST";
|
||||||
|
const char qso_47[] PROGMEM = "RIG";
|
||||||
|
const char qso_48[] PROGMEM = "TEMP";
|
||||||
|
const char qso_49[] PROGMEM = "TEST";
|
||||||
|
const char qso_50[] PROGMEM = "TU";
|
||||||
|
const char qso_51[] PROGMEM = "TKS";
|
||||||
|
const char qso_52[] PROGMEM = "TNX";
|
||||||
|
const char qso_53[] PROGMEM = "VERT";
|
||||||
|
const char qso_54[] PROGMEM = "WATT";
|
||||||
|
const char qso_55[] PROGMEM = "WX";
|
||||||
|
const char qso_56[] PROGMEM = "YAGI";
|
||||||
|
const char qso_57[] PROGMEM = "YRS";
|
||||||
|
const char qso_58[] PROGMEM = "73";
|
||||||
|
const char qso_59[] PROGMEM = "88";
|
||||||
|
const char qso_60[] PROGMEM = "?";
|
||||||
|
const char qso_61[] PROGMEM = "/";
|
||||||
|
const char qso_62[] PROGMEM = "VY";
|
||||||
|
const char qso_63[] PROGMEM = "YL";
|
||||||
|
const char qso_64[] PROGMEM = "XYL";
|
||||||
|
const char qso_65[] PROGMEM = "MY";
|
||||||
|
const char qso_66[] PROGMEM = "UR";
|
||||||
|
const char qso_67[] PROGMEM = "IS";
|
||||||
|
const char qso_68[] PROGMEM = "QSB";
|
||||||
|
const char qso_69[] PROGMEM = "QRQ";
|
||||||
|
const char qso_70[] PROGMEM = "HVE";
|
||||||
|
const char qso_71[] PROGMEM = "HPE";
|
||||||
|
const char qso_72[] PROGMEM = "BEST";
|
||||||
|
const byte qso_size = 72;
|
||||||
|
const char* const qso_table[] PROGMEM =
|
||||||
|
{qso_1,qso_2,qso_3,qso_4,qso_5,qso_6,qso_7,qso_8,qso_9,qso_10,qso_11,qso_12,qso_13,qso_14,qso_15,qso_16,qso_17,qso_18,qso_19,qso_20,
|
||||||
|
qso_21,qso_22,qso_23,qso_24,qso_25,qso_26,qso_27,qso_28,qso_29,qso_30,qso_31,qso_32,qso_33,qso_34,qso_35,qso_36,qso_37,qso_38,qso_39,qso_40,
|
||||||
|
qso_41,qso_42,qso_43,qso_44,qso_45,qso_46,qso_47,qso_48,qso_49,qso_50,qso_51,qso_52,qso_53,qso_54,qso_55,qso_56,qso_57,qso_58,qso_59,qso_60,
|
||||||
|
qso_61,qso_62,qso_63,qso_64,qso_65,qso_66,qso_67,qso_68,qso_69,qso_70,qso_71,qso_72};
|
||||||
|
|
||||||
|
|
248
k3ng_keyer/keyer_training_text_norsk.h
Executable file
248
k3ng_keyer/keyer_training_text_norsk.h
Executable file
|
@ -0,0 +1,248 @@
|
||||||
|
// keyer_training_text_norsk.h
|
||||||
|
// Norwegian word list contributed by Karl, LA3FY
|
||||||
|
// English word list originally from gen_cw_words.pl - a program that generates words in a random order,
|
||||||
|
// intended to be used during morse code practice.
|
||||||
|
// Original gen_cw_words.pl code Copyright (C) 2015,2017 Andy Stewart (KB1OIQ)
|
||||||
|
// https://sourceforge.net/projects/kb1oiq-k1ig-wordsworth/
|
||||||
|
|
||||||
|
// two letter word array
|
||||||
|
const char s2_1[] PROGMEM = "OG";
|
||||||
|
const char s2_2[] PROGMEM = "PÅ";
|
||||||
|
const char s2_3[] PROGMEM = "GÅ";
|
||||||
|
const char s2_4[] PROGMEM = "ER";
|
||||||
|
const char s2_5[] PROGMEM = "EN";
|
||||||
|
const char s2_6[] PROGMEM = "AV";
|
||||||
|
const char s2_7[] PROGMEM = "AT";
|
||||||
|
const char s2_8[] PROGMEM = "DE";
|
||||||
|
const char s2_9[] PROGMEM = "ET";
|
||||||
|
const char s2_10[] PROGMEM = "SÅ";
|
||||||
|
const char s2_11[] PROGMEM = "VI";
|
||||||
|
const char s2_12[] PROGMEM = "DU";
|
||||||
|
const char s2_13[] PROGMEM = "DA";
|
||||||
|
const char s2_14[] PROGMEM = "UT";
|
||||||
|
const char s2_15[] PROGMEM = "SA";
|
||||||
|
const char s2_16[] PROGMEM = "NÅ";
|
||||||
|
const char s2_17[] PROGMEM = "NY";
|
||||||
|
const char s2_18[] PROGMEM = "HA";
|
||||||
|
const char s2_19[] PROGMEM = "ÅR";
|
||||||
|
const char s2_20[] PROGMEM = "FÅ";
|
||||||
|
const char s2_21[] PROGMEM = "TO";
|
||||||
|
const char s2_22[] PROGMEM = "SE";
|
||||||
|
const byte s2_size = 22;
|
||||||
|
const char* const s2_table[] PROGMEM =
|
||||||
|
{s2_1,s2_2,s2_3,s2_4,s2_5,s2_6,s2_7,s2_8,s2_9,s2_10,
|
||||||
|
s2_11,s2_12,s2_13,s2_14,s2_15,s2_16,s2_17,s2_18,s2_19,s2_20,
|
||||||
|
s2_21,s2_22};
|
||||||
|
|
||||||
|
// three letter word array
|
||||||
|
const char s3_1[] PROGMEM = "DET";
|
||||||
|
const char s3_2[] PROGMEM = "SOM";
|
||||||
|
const char s3_3[] PROGMEM = "HAN";
|
||||||
|
const char s3_4[] PROGMEM = "FOR";
|
||||||
|
const char s3_5[] PROGMEM = "MED";
|
||||||
|
const char s3_6[] PROGMEM = "VAR";
|
||||||
|
const char s3_7[] PROGMEM = "DEN";
|
||||||
|
const char s3_8[] PROGMEM = "HAR";
|
||||||
|
const char s3_9[] PROGMEM = "JEG";
|
||||||
|
const char s3_10[] PROGMEM = "MEN";
|
||||||
|
const char s3_11[] PROGMEM = "SEG";
|
||||||
|
const char s3_12[] PROGMEM = "HUN";
|
||||||
|
const char s3_13[] PROGMEM = "VÅR";
|
||||||
|
const char s3_14[] PROGMEM = "FRA";
|
||||||
|
const char s3_15[] PROGMEM = "KAN";
|
||||||
|
const char s3_16[] PROGMEM = "BLE";
|
||||||
|
const char s3_17[] PROGMEM = "VIL";
|
||||||
|
const char s3_18[] PROGMEM = "HAM";
|
||||||
|
const char s3_19[] PROGMEM = "VED";
|
||||||
|
const char s3_20[] PROGMEM = "NOE";
|
||||||
|
const char s3_21[] PROGMEM = "MEG";
|
||||||
|
const char s3_22[] PROGMEM = "MOT";
|
||||||
|
const char s3_23[] PROGMEM = "OPP";
|
||||||
|
const char s3_24[] PROGMEM = "DER";
|
||||||
|
const char s3_25[] PROGMEM = "NÅR";
|
||||||
|
const char s3_26[] PROGMEM = "INN";
|
||||||
|
const char s3_27[] PROGMEM = "DEM";
|
||||||
|
const char s3_28[] PROGMEM = "SIN";
|
||||||
|
const char s3_29[] PROGMEM = "KOM";
|
||||||
|
const char s3_30[] PROGMEM = "ENN";
|
||||||
|
const char s3_31[] PROGMEM = "BLI";
|
||||||
|
const char s3_32[] PROGMEM = "FØR";
|
||||||
|
const char s3_33[] PROGMEM = "GÅR";
|
||||||
|
const char s3_34[] PROGMEM = "HER";
|
||||||
|
const char s3_35[] PROGMEM = "MER";
|
||||||
|
const char s3_36[] PROGMEM = "HVA";
|
||||||
|
const char s3_37[] PROGMEM = "ALT";
|
||||||
|
const char s3_38[] PROGMEM = "OSS";
|
||||||
|
const byte s3_size = 38;
|
||||||
|
const char* const s3_table[] PROGMEM =
|
||||||
|
{s3_1,s3_2,s3_3,s3_4,s3_5,s3_6,s3_7,s3_8,s3_9,s3_10,
|
||||||
|
s3_11,s3_12,s3_13,s3_14,s3_15,s3_16,s3_17,s3_18,s3_19,s3_20,
|
||||||
|
s3_21,s3_22,s3_23,s3_24,s3_25,s3_26,s3_27,s3_28,s3_29,s3_30,
|
||||||
|
s3_31,s3_32,s3_33,s3_34,s3_35,s3_36,s3_37,s3_38};
|
||||||
|
|
||||||
|
// four letter word array
|
||||||
|
const char s4_1[] PROGMEM = "IKKE";
|
||||||
|
const char s4_2[] PROGMEM = "OVER";
|
||||||
|
const char s4_3[] PROGMEM = "OGSÅ";
|
||||||
|
const char s4_4[] PROGMEM = "BARE";
|
||||||
|
const char s4_5[] PROGMEM = "VÆRE";
|
||||||
|
const char s4_6[] PROGMEM = "BLIR";
|
||||||
|
const char s4_7[] PROGMEM = "ALLE";
|
||||||
|
const char s4_8[] PROGMEM = "NOEN";
|
||||||
|
const char s4_9[] PROGMEM = "SELV";
|
||||||
|
const char s4_10[] PROGMEM = "SIER";
|
||||||
|
const char s4_11[] PROGMEM = "HANS";
|
||||||
|
const char s4_12[] PROGMEM = "GIKK";
|
||||||
|
const char s4_13[] PROGMEM = "FIKK";
|
||||||
|
const char s4_14[] PROGMEM = "DASH";
|
||||||
|
const char s4_15[] PROGMEM = "HVOR";
|
||||||
|
const char s4_16[] PROGMEM = "HELE";
|
||||||
|
const byte s4_size = 16;
|
||||||
|
const char* const s4_table[] PROGMEM =
|
||||||
|
{s4_1,s4_2,s4_3,s4_4,s4_5,s4_6,s4_7,s4_8,s4_9,s4_10,
|
||||||
|
s4_11,s4_12,s4_13,s4_14,s4_15,s4_16};
|
||||||
|
|
||||||
|
// common names
|
||||||
|
|
||||||
|
const char name_1[] PROGMEM = "JAN";
|
||||||
|
const char name_2[] PROGMEM = "PER";
|
||||||
|
const char name_3[] PROGMEM = "BJØRN";
|
||||||
|
const char name_4[] PROGMEM = "OLE";
|
||||||
|
const char name_5[] PROGMEM = "KJELL";
|
||||||
|
const char name_6[] PROGMEM = "LARS";
|
||||||
|
const char name_7[] PROGMEM = "ARNE";
|
||||||
|
const char name_8[] PROGMEM = "KNUT";
|
||||||
|
const char name_9[] PROGMEM = "SVEIN";
|
||||||
|
const char name_10[] PROGMEM = "HANS";
|
||||||
|
const char name_11[] PROGMEM = "ODD";
|
||||||
|
const char name_12[] PROGMEM = "TOR";
|
||||||
|
const char name_13[] PROGMEM = "GEIR";
|
||||||
|
const char name_14[] PROGMEM = "TERJE";
|
||||||
|
const char name_15[] PROGMEM = "THOMAS";
|
||||||
|
const char name_16[] PROGMEM = "MORTEN";
|
||||||
|
const char name_17[] PROGMEM = "JOHN";
|
||||||
|
const char name_18[] PROGMEM = "ERIK";
|
||||||
|
const char name_19[] PROGMEM = "ANDERS";
|
||||||
|
const char name_20[] PROGMEM = "RUNE";
|
||||||
|
const char name_21[] PROGMEM = "MARTIN";
|
||||||
|
const char name_22[] PROGMEM = "ANDREAS";
|
||||||
|
const char name_23[] PROGMEM = "TROND";
|
||||||
|
const char name_24[] PROGMEM = "TORE";
|
||||||
|
const char name_25[] PROGMEM = "HARALD";
|
||||||
|
const char name_26[] PROGMEM = "OLAV";
|
||||||
|
const char name_27[] PROGMEM = "GUNNAR";
|
||||||
|
const char name_28[] PROGMEM = "JON";
|
||||||
|
const char name_29[] PROGMEM = "ROLF";
|
||||||
|
const char name_30[] PROGMEM = "LEIF";
|
||||||
|
const char name_31[] PROGMEM = "TOM";
|
||||||
|
const char name_32[] PROGMEM = "STIAN";
|
||||||
|
const char name_33[] PROGMEM = "KRISTIAN";
|
||||||
|
const char name_34[] PROGMEM = "NILS";
|
||||||
|
const char name_35[] PROGMEM = "ØYVIND";
|
||||||
|
const char name_36[] PROGMEM = "HELGE";
|
||||||
|
const char name_37[] PROGMEM = "ESPEN";
|
||||||
|
const char name_38[] PROGMEM = "EINAR";
|
||||||
|
const char name_39[] PROGMEM = "MARIUS";
|
||||||
|
const char name_40[] PROGMEM = "KÅRE";
|
||||||
|
const char name_41[] PROGMEM = "DANIEL";
|
||||||
|
const char name_42[] PROGMEM = "MAGNUS";
|
||||||
|
const char name_43[] PROGMEM = "FREDRIK";
|
||||||
|
const char name_44[] PROGMEM = "CHRISTIAN";
|
||||||
|
const char name_45[] PROGMEM = "STEINAR";
|
||||||
|
const char name_46[] PROGMEM = "EIRIK";
|
||||||
|
const char name_47[] PROGMEM = "HÅKON";
|
||||||
|
const char name_48[] PROGMEM = "ØYSTEIN";
|
||||||
|
const char name_49[] PROGMEM = "HENRIK";
|
||||||
|
const char name_50[] PROGMEM = "KARL";
|
||||||
|
const byte name_size = 50;
|
||||||
|
const char* const name_table[] PROGMEM =
|
||||||
|
{name_1,name_2,name_3,name_4,name_5,name_6,name_7,name_8,name_9,name_10,
|
||||||
|
name_11,name_12,name_13,name_14,name_15,name_16,name_17,name_18,name_19,name_20,
|
||||||
|
name_21,name_22,name_23,name_24,name_25,name_26,name_27,name_28,name_29,name_30,
|
||||||
|
name_31,name_32,name_33,name_34,name_35,name_36,name_37,name_38,name_39,name_40,
|
||||||
|
name_41,name_42,name_43,name_44,name_45,name_46,name_47,name_48,name_49,name_50};
|
||||||
|
|
||||||
|
|
||||||
|
// CW QSO word array
|
||||||
|
const char qso_1[] PROGMEM = "QRL?";
|
||||||
|
const char qso_2[] PROGMEM = "QRM";
|
||||||
|
const char qso_3[] PROGMEM = "QRN";
|
||||||
|
const char qso_4[] PROGMEM = "QRS";
|
||||||
|
const char qso_5[] PROGMEM = "QRT";
|
||||||
|
const char qso_6[] PROGMEM = "QRZ";
|
||||||
|
const char qso_7[] PROGMEM = "QSL";
|
||||||
|
const char qso_8[] PROGMEM = "QSO";
|
||||||
|
const char qso_9[] PROGMEM = "QSY";
|
||||||
|
const char qso_10[] PROGMEM = "QTH";
|
||||||
|
const char qso_11[] PROGMEM = "QRX";
|
||||||
|
const char qso_12[] PROGMEM = "ABT";
|
||||||
|
const char qso_13[] PROGMEM = "AGE";
|
||||||
|
const char qso_14[] PROGMEM = "ANT";
|
||||||
|
const char qso_15[] PROGMEM = "BEAM";
|
||||||
|
const char qso_16[] PROGMEM = "BK";
|
||||||
|
const char qso_17[] PROGMEM = "QRP";
|
||||||
|
const char qso_18[] PROGMEM = "AGN";
|
||||||
|
const char qso_19[] PROGMEM = "C";
|
||||||
|
const char qso_20[] PROGMEM = "CL";
|
||||||
|
const char qso_21[] PROGMEM = "CPY";
|
||||||
|
const char qso_22[] PROGMEM = "CQ";
|
||||||
|
const char qso_23[] PROGMEM = "CUL";
|
||||||
|
const char qso_24[] PROGMEM = "DE";
|
||||||
|
const char qso_25[] PROGMEM = "DX";
|
||||||
|
const char qso_26[] PROGMEM = "ES";
|
||||||
|
const char qso_27[] PROGMEM = "EL";
|
||||||
|
const char qso_28[] PROGMEM = "FB";
|
||||||
|
const char qso_29[] PROGMEM = "HI";
|
||||||
|
const char qso_30[] PROGMEM = "HW?";
|
||||||
|
const char qso_31[] PROGMEM = "HR";
|
||||||
|
const char qso_32[] PROGMEM = "K";
|
||||||
|
const char qso_33[] PROGMEM = "=";
|
||||||
|
const char qso_34[] PROGMEM = "<";
|
||||||
|
const char qso_35[] PROGMEM = "%";
|
||||||
|
const char qso_36[] PROGMEM = ">";
|
||||||
|
const char qso_37[] PROGMEM = "LID";
|
||||||
|
const char qso_38[] PROGMEM = "LOOP";
|
||||||
|
const char qso_39[] PROGMEM = "NAME";
|
||||||
|
const char qso_40[] PROGMEM = "OM";
|
||||||
|
const char qso_41[] PROGMEM = "OP";
|
||||||
|
const char qso_42[] PROGMEM = "PKT";
|
||||||
|
const char qso_43[] PROGMEM = "PSE";
|
||||||
|
const char qso_44[] PROGMEM = "R";
|
||||||
|
const char qso_45[] PROGMEM = "RPT";
|
||||||
|
const char qso_46[] PROGMEM = "RST";
|
||||||
|
const char qso_47[] PROGMEM = "RIG";
|
||||||
|
const char qso_48[] PROGMEM = "TEMP";
|
||||||
|
const char qso_49[] PROGMEM = "TEST";
|
||||||
|
const char qso_50[] PROGMEM = "TU";
|
||||||
|
const char qso_51[] PROGMEM = "TKS";
|
||||||
|
const char qso_52[] PROGMEM = "TNX";
|
||||||
|
const char qso_53[] PROGMEM = "VERT";
|
||||||
|
const char qso_54[] PROGMEM = "WATT";
|
||||||
|
const char qso_55[] PROGMEM = "WX";
|
||||||
|
const char qso_56[] PROGMEM = "YAGI";
|
||||||
|
const char qso_57[] PROGMEM = "YRS";
|
||||||
|
const char qso_58[] PROGMEM = "73";
|
||||||
|
const char qso_59[] PROGMEM = "88";
|
||||||
|
const char qso_60[] PROGMEM = "?";
|
||||||
|
const char qso_61[] PROGMEM = "/";
|
||||||
|
const char qso_62[] PROGMEM = "VY";
|
||||||
|
const char qso_63[] PROGMEM = "YL";
|
||||||
|
const char qso_64[] PROGMEM = "XYL";
|
||||||
|
const char qso_65[] PROGMEM = "MY";
|
||||||
|
const char qso_66[] PROGMEM = "UR";
|
||||||
|
const char qso_67[] PROGMEM = "IS";
|
||||||
|
const char qso_68[] PROGMEM = "QSB";
|
||||||
|
const char qso_69[] PROGMEM = "QRQ";
|
||||||
|
const char qso_70[] PROGMEM = "HVE";
|
||||||
|
const char qso_71[] PROGMEM = "HPE";
|
||||||
|
const char qso_72[] PROGMEM = "BEST";
|
||||||
|
const byte qso_size = 72;
|
||||||
|
const char* const qso_table[] PROGMEM =
|
||||||
|
{qso_1,qso_2,qso_3,qso_4,qso_5,qso_6,qso_7,qso_8,qso_9,qso_10,qso_11,qso_12,qso_13,qso_14,qso_15,qso_16,qso_17,qso_18,qso_19,qso_20,
|
||||||
|
qso_21,qso_22,qso_23,qso_24,qso_25,qso_26,qso_27,qso_28,qso_29,qso_30,qso_31,qso_32,qso_33,qso_34,qso_35,qso_36,qso_37,qso_38,qso_39,qso_40,
|
||||||
|
qso_41,qso_42,qso_43,qso_44,qso_45,qso_46,qso_47,qso_48,qso_49,qso_50,qso_51,qso_52,qso_53,qso_54,qso_55,qso_56,qso_57,qso_58,qso_59,qso_60,
|
||||||
|
qso_61,qso_62,qso_63,qso_64,qso_65,qso_66,qso_67,qso_68,qso_69,qso_70,qso_71,qso_72};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
151
k3ng_keyer/src/buttonarray/buttonarray.cpp
Executable file
151
k3ng_keyer/src/buttonarray/buttonarray.cpp
Executable file
|
@ -0,0 +1,151 @@
|
||||||
|
#include "Arduino.h"
|
||||||
|
#include "buttonarray.h"
|
||||||
|
|
||||||
|
/* contributed by W6IPA */
|
||||||
|
|
||||||
|
void Button::InitLimits(uint8_t step){
|
||||||
|
/*
|
||||||
|
|
||||||
|
typical button values:
|
||||||
|
|
||||||
|
0: -56 - 46
|
||||||
|
1: 47 - 131
|
||||||
|
2: 132 - 203
|
||||||
|
3: 203 - 264
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
int32_t button_value;
|
||||||
|
int32_t lower_button_value;
|
||||||
|
int32_t higher_button_value;
|
||||||
|
|
||||||
|
button_value = uint32_t(max_value * (float(step * r2_value)/float((step * r2_value) + r1_value)));
|
||||||
|
lower_button_value = uint32_t(max_value * (float((step-1) * r2_value)/float(((step-1) * r2_value) + r1_value)));
|
||||||
|
higher_button_value = uint32_t(max_value * (float((step+1) * r2_value)/float(((step+1) * r2_value) + r1_value)));
|
||||||
|
low_limit_= (button_value - ((button_value - lower_button_value)/2));
|
||||||
|
high_limit_= (button_value + ((higher_button_value - button_value)/2));
|
||||||
|
step_ = step;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Button::InitLimits(uint8_t step, int32_t low_limit, int32_t high_limit){
|
||||||
|
low_limit_ = low_limit;
|
||||||
|
high_limit_ = high_limit;
|
||||||
|
step_ = step;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Button::Pressed(int32_t analog_reading){
|
||||||
|
if ((analog_reading > low_limit_) && (analog_reading <= high_limit_)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
int32_t Button::high_limit(){
|
||||||
|
return high_limit_;
|
||||||
|
}
|
||||||
|
|
||||||
|
int32_t Button::low_limit(){
|
||||||
|
return low_limit_;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add all buttons in incremental order
|
||||||
|
void ButtonArray::AddAll(){
|
||||||
|
size_t index;
|
||||||
|
if (reversed_) {
|
||||||
|
index = nb_buttons_ - 1;
|
||||||
|
}
|
||||||
|
for(size_t i = 0; i < nb_buttons_; i++)
|
||||||
|
{
|
||||||
|
if (reversed_) {
|
||||||
|
Add(i, index);
|
||||||
|
index --;
|
||||||
|
} else {
|
||||||
|
Add(i, i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Adds a single button to the array
|
||||||
|
// Takes a step (rank in the resistor ladder), and the index in the button array.
|
||||||
|
void ButtonArray::Add(uint8_t step, uint8_t index){
|
||||||
|
Button button;
|
||||||
|
button.InitLimits(step);
|
||||||
|
button_array_[index] = button;
|
||||||
|
high_limit_ = max(button.high_limit() , high_limit_);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ButtonArray::Add(uint8_t step, uint8_t index, int32_t low_limit, int32_t high_limit){
|
||||||
|
Button button;
|
||||||
|
button.InitLimits(step, low_limit, high_limit);
|
||||||
|
button_array_[index] = button;
|
||||||
|
high_limit_ = max(high_limit, high_limit_);
|
||||||
|
}
|
||||||
|
|
||||||
|
int32_t ButtonArray::high_limit(){
|
||||||
|
return high_limit_;
|
||||||
|
}
|
||||||
|
|
||||||
|
int8_t ButtonArray::ReadButtons(){
|
||||||
|
uint32_t analog_read_temp = 0;
|
||||||
|
uint32_t analog_line_read_average = 0;
|
||||||
|
//uint8_t number_of_samples = 0;
|
||||||
|
|
||||||
|
for (byte x = 0; x < NUMBER_OF_BUTTON_READS_TO_AVERAGE; x++){
|
||||||
|
analog_read_temp = analogRead(pin_);
|
||||||
|
if (analog_read_temp <= high_limit_){
|
||||||
|
analog_line_read_average = (analog_line_read_average + analog_read_temp) / 2;
|
||||||
|
//analog_line_read_average = analog_line_read_average + analog_read_temp;
|
||||||
|
//number_of_samples++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//analog_line_read_average = analog_line_read_average / number_of_samples;
|
||||||
|
for (size_t x = 0; x < nb_buttons_; x++) {
|
||||||
|
Button button = button_array_[x];
|
||||||
|
if (button.Pressed(analog_line_read_average)) {
|
||||||
|
last_pressed_ms = millis();
|
||||||
|
return x;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
// returns true if analog reading indicate a pressed button
|
||||||
|
bool ButtonArray::AnyPressed() {
|
||||||
|
if (analogRead(pin_) <= high_limit_) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
// returns the index of the pressed button or -1 if none pressed
|
||||||
|
int8_t ButtonArray::Pressed() {
|
||||||
|
if (AnyPressed() && ((millis() - last_pressed_ms) > DEBOUNCE_MS )){
|
||||||
|
return ReadButtons();
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
// returns true if button at the provided index is pressed
|
||||||
|
bool ButtonArray::Pressed(uint8_t index) {
|
||||||
|
uint32_t analog_read_temp =0;
|
||||||
|
analog_read_temp = analogRead(pin_);
|
||||||
|
if ((analog_read_temp <= high_limit_) && ( index < nb_buttons_)) {
|
||||||
|
Button button = button_array_[index];
|
||||||
|
return button.Pressed(analog_read_temp);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
// Return true as long as the indicated button is held and the deadline not reached.
|
||||||
|
bool ButtonArray::Held(uint8_t index, uint32_t deadline) {
|
||||||
|
if (AnyPressed() &&
|
||||||
|
(millis() < deadline) &&
|
||||||
|
(ReadButtons() == index)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Return true as long as the indicated button is held
|
||||||
|
bool ButtonArray::Held(uint8_t index) {
|
||||||
|
if (AnyPressed() && (ReadButtons() == index)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
59
k3ng_keyer/src/buttonarray/buttonarray.h
Executable file
59
k3ng_keyer/src/buttonarray/buttonarray.h
Executable file
|
@ -0,0 +1,59 @@
|
||||||
|
#ifndef buttonarray_h
|
||||||
|
#define buttonarray_h
|
||||||
|
#include "Arduino.h"
|
||||||
|
#ifndef MAX_ARRAY_BUTTONS
|
||||||
|
#define MAX_ARRAY_BUTTONS 13
|
||||||
|
#endif
|
||||||
|
#define DEBOUNCE_MS 200
|
||||||
|
#define NUMBER_OF_BUTTON_READS_TO_AVERAGE 19
|
||||||
|
|
||||||
|
#if defined(ARDUINO_ARCH_ESP32) || defined(ARDUINO_GENERIC_STM32F103C)
|
||||||
|
#define max_value 4095
|
||||||
|
#else
|
||||||
|
#define max_value 1023
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define r1_value 10
|
||||||
|
#define r2_value 1
|
||||||
|
|
||||||
|
/* contributed by W6IPA */
|
||||||
|
|
||||||
|
class Button {
|
||||||
|
private:
|
||||||
|
int32_t low_limit_;
|
||||||
|
int32_t high_limit_;
|
||||||
|
uint8_t step_;
|
||||||
|
public:
|
||||||
|
Button(){};
|
||||||
|
void InitLimits(uint8_t step);
|
||||||
|
void InitLimits(uint8_t step, int32_t low_limit, int32_t high_limit);
|
||||||
|
bool Pressed(int32_t analog_reading);
|
||||||
|
int32_t high_limit();
|
||||||
|
int32_t low_limit();
|
||||||
|
};
|
||||||
|
|
||||||
|
class ButtonArray {
|
||||||
|
private:
|
||||||
|
Button button_array_[MAX_ARRAY_BUTTONS];
|
||||||
|
uint8_t pin_;
|
||||||
|
uint8_t nb_buttons_;
|
||||||
|
int32_t high_limit_;
|
||||||
|
bool reversed_;
|
||||||
|
int8_t ReadButtons();
|
||||||
|
bool AnyPressed();
|
||||||
|
|
||||||
|
public:
|
||||||
|
uint32_t last_pressed_ms;
|
||||||
|
ButtonArray(uint8_t pin, uint8_t nb, bool reversed): pin_(pin), nb_buttons_(nb), reversed_(reversed){};
|
||||||
|
void AddAll();
|
||||||
|
void Add(uint8_t step, uint8_t index);
|
||||||
|
void Add(uint8_t step, uint8_t index, int32_t low_limit, int32_t high_limit);
|
||||||
|
int32_t high_limit();
|
||||||
|
int8_t Pressed();
|
||||||
|
bool Pressed(uint8_t index);
|
||||||
|
bool Held(uint8_t index);
|
||||||
|
bool Held(uint8_t index, uint32_t deadline );
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
50
k3ng_keyer/src/buttonarray/buttonarray.ino
Executable file
50
k3ng_keyer/src/buttonarray/buttonarray.ino
Executable file
|
@ -0,0 +1,50 @@
|
||||||
|
// Button Array test
|
||||||
|
|
||||||
|
#include "buttonarray.h"
|
||||||
|
|
||||||
|
#define ARRAY_PIN A3
|
||||||
|
#define NB_BUTTONS 2
|
||||||
|
#define ENCODER_PIN A1
|
||||||
|
|
||||||
|
|
||||||
|
int button_array_high_limit[NB_BUTTONS];
|
||||||
|
int button_array_low_limit[NB_BUTTONS];
|
||||||
|
long button_depress_time;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
ButtonArray button_array(ARRAY_PIN, NB_BUTTONS, false);
|
||||||
|
ButtonArray encoder(ENCODER_PIN, 1, false);
|
||||||
|
|
||||||
|
void setup() {
|
||||||
|
Serial.begin(115200);
|
||||||
|
delay(1000);
|
||||||
|
button_array.AddAll();
|
||||||
|
encoder.AddAll();
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop() {
|
||||||
|
|
||||||
|
int analogbuttontemp = button_array.Pressed();
|
||||||
|
if (encoder.Pressed() == 0) {
|
||||||
|
Serial.println("encoder pressed ");
|
||||||
|
}
|
||||||
|
if (analogbuttontemp >= 0 ) {
|
||||||
|
// button pressed.
|
||||||
|
|
||||||
|
button_depress_time = button_array.last_pressed_ms;
|
||||||
|
|
||||||
|
while (button_array.Held(analogbuttontemp, button_depress_time + 1000)) {
|
||||||
|
|
||||||
|
}
|
||||||
|
if (millis() - button_depress_time < 400) {
|
||||||
|
Serial.print("button pressed ");
|
||||||
|
Serial.println(analogbuttontemp);
|
||||||
|
} else {
|
||||||
|
Serial.print("button ");
|
||||||
|
Serial.print(analogbuttontemp);
|
||||||
|
Serial.print(" held for ");
|
||||||
|
Serial.println(millis() - button_depress_time);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
BIN
keyer.png
Executable file
BIN
keyer.png
Executable file
Binary file not shown.
After Width: | Height: | Size: 150 KiB |
453
libraries/Adafruit_LiquidCrystal/Adafruit_LiquidCrystal.cpp
Executable file
453
libraries/Adafruit_LiquidCrystal/Adafruit_LiquidCrystal.cpp
Executable file
|
@ -0,0 +1,453 @@
|
||||||
|
#include "Arduino.h"
|
||||||
|
#include "Adafruit_LiquidCrystal.h"
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <inttypes.h>
|
||||||
|
|
||||||
|
// FOR Arduino Due
|
||||||
|
#if !defined(_BV)
|
||||||
|
# define _BV(bit) (1 << (bit))
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
// When the display powers up, it is configured as follows:
|
||||||
|
//
|
||||||
|
// 1. Display clear
|
||||||
|
// 2. Function set:
|
||||||
|
// DL = 1; 8-bit interface data
|
||||||
|
// N = 0; 1-line display
|
||||||
|
// F = 0; 5x8 dot character font
|
||||||
|
// 3. Display on/off control:
|
||||||
|
// D = 0; Display off
|
||||||
|
// C = 0; Cursor off
|
||||||
|
// B = 0; Blinking off
|
||||||
|
// 4. Entry mode set:
|
||||||
|
// I/D = 1; Increment by 1
|
||||||
|
// S = 0; No shift
|
||||||
|
//
|
||||||
|
// Note, however, that resetting the Arduino doesn't reset the LCD, so we
|
||||||
|
// can't assume that its in that state when a sketch starts (and the
|
||||||
|
// Adafruit_LiquidCrystal constructor is called).
|
||||||
|
|
||||||
|
Adafruit_LiquidCrystal::Adafruit_LiquidCrystal(uint8_t rs, uint8_t rw, uint8_t enable,
|
||||||
|
uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3,
|
||||||
|
uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7)
|
||||||
|
{
|
||||||
|
init(0, rs, rw, enable, d0, d1, d2, d3, d4, d5, d6, d7);
|
||||||
|
}
|
||||||
|
|
||||||
|
Adafruit_LiquidCrystal::Adafruit_LiquidCrystal(uint8_t rs, uint8_t enable,
|
||||||
|
uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3,
|
||||||
|
uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7)
|
||||||
|
{
|
||||||
|
init(0, rs, 255, enable, d0, d1, d2, d3, d4, d5, d6, d7);
|
||||||
|
}
|
||||||
|
|
||||||
|
Adafruit_LiquidCrystal::Adafruit_LiquidCrystal(uint8_t rs, uint8_t rw, uint8_t enable,
|
||||||
|
uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3)
|
||||||
|
{
|
||||||
|
init(1, rs, rw, enable, d0, d1, d2, d3, 0, 0, 0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
Adafruit_LiquidCrystal::Adafruit_LiquidCrystal(uint8_t rs, uint8_t enable,
|
||||||
|
uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3)
|
||||||
|
{
|
||||||
|
init(1, rs, 255, enable, d0, d1, d2, d3, 0, 0, 0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
Adafruit_LiquidCrystal::Adafruit_LiquidCrystal(uint8_t i2caddr) {
|
||||||
|
_i2cAddr = i2caddr;
|
||||||
|
|
||||||
|
_displayfunction = LCD_4BITMODE | LCD_1LINE | LCD_5x8DOTS;
|
||||||
|
|
||||||
|
// the I/O expander pinout
|
||||||
|
_rs_pin = 1;
|
||||||
|
_rw_pin = 255;
|
||||||
|
_enable_pin = 2;
|
||||||
|
_data_pins[0] = 3; // really d4
|
||||||
|
_data_pins[1] = 4; // really d5
|
||||||
|
_data_pins[2] = 5; // really d6
|
||||||
|
_data_pins[3] = 6; // really d7
|
||||||
|
|
||||||
|
// we can't begin() yet :(
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Adafruit_LiquidCrystal::Adafruit_LiquidCrystal(uint8_t data, uint8_t clock, uint8_t latch ) {
|
||||||
|
_i2cAddr = 255;
|
||||||
|
|
||||||
|
_displayfunction = LCD_4BITMODE | LCD_1LINE | LCD_5x8DOTS;
|
||||||
|
|
||||||
|
// the SPI expander pinout
|
||||||
|
_rs_pin = 1;
|
||||||
|
_rw_pin = 255;
|
||||||
|
_enable_pin = 2;
|
||||||
|
_data_pins[0] = 6; // really d4
|
||||||
|
_data_pins[1] = 5; // really d5
|
||||||
|
_data_pins[2] = 4; // really d6
|
||||||
|
_data_pins[3] = 3; // really d7
|
||||||
|
|
||||||
|
_SPIdata = data;
|
||||||
|
_SPIclock = clock;
|
||||||
|
_SPIlatch = latch;
|
||||||
|
|
||||||
|
_SPIbuff = 0;
|
||||||
|
|
||||||
|
// we can't begin() yet :(
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void Adafruit_LiquidCrystal::init(uint8_t fourbitmode, uint8_t rs, uint8_t rw, uint8_t enable,
|
||||||
|
uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3,
|
||||||
|
uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7)
|
||||||
|
{
|
||||||
|
_rs_pin = rs;
|
||||||
|
_rw_pin = rw;
|
||||||
|
_enable_pin = enable;
|
||||||
|
|
||||||
|
_data_pins[0] = d0;
|
||||||
|
_data_pins[1] = d1;
|
||||||
|
_data_pins[2] = d2;
|
||||||
|
_data_pins[3] = d3;
|
||||||
|
_data_pins[4] = d4;
|
||||||
|
_data_pins[5] = d5;
|
||||||
|
_data_pins[6] = d6;
|
||||||
|
_data_pins[7] = d7;
|
||||||
|
|
||||||
|
_i2cAddr = 255;
|
||||||
|
_SPIclock = _SPIdata = _SPIlatch = 255;
|
||||||
|
|
||||||
|
if (fourbitmode)
|
||||||
|
_displayfunction = LCD_4BITMODE | LCD_1LINE | LCD_5x8DOTS;
|
||||||
|
else
|
||||||
|
_displayfunction = LCD_8BITMODE | LCD_1LINE | LCD_5x8DOTS;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Adafruit_LiquidCrystal::begin(uint8_t cols, uint8_t lines, uint8_t dotsize) {
|
||||||
|
// check if i2c
|
||||||
|
if (_i2cAddr != 255) {
|
||||||
|
_i2c.begin(_i2cAddr);
|
||||||
|
|
||||||
|
_i2c.pinMode(7, OUTPUT); // backlight
|
||||||
|
_i2c.digitalWrite(7, HIGH); // backlight
|
||||||
|
|
||||||
|
for (uint8_t i=0; i<4; i++)
|
||||||
|
_pinMode(_data_pins[i], OUTPUT);
|
||||||
|
|
||||||
|
_i2c.pinMode(_rs_pin, OUTPUT);
|
||||||
|
_i2c.pinMode(_enable_pin, OUTPUT);
|
||||||
|
} else if (_SPIclock != 255) {
|
||||||
|
pinMode(_SPIdata, OUTPUT);
|
||||||
|
pinMode(_SPIclock, OUTPUT);
|
||||||
|
pinMode(_SPIlatch, OUTPUT);
|
||||||
|
_SPIbuff = 0x80; // backlight
|
||||||
|
} else {
|
||||||
|
pinMode(_rs_pin, OUTPUT);
|
||||||
|
// we can save 1 pin by not using RW. Indicate by passing 255 instead of pin#
|
||||||
|
if (_rw_pin != 255) {
|
||||||
|
pinMode(_rw_pin, OUTPUT);
|
||||||
|
}
|
||||||
|
pinMode(_enable_pin, OUTPUT);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if (lines > 1) {
|
||||||
|
_displayfunction |= LCD_2LINE;
|
||||||
|
}
|
||||||
|
_numlines = lines;
|
||||||
|
_currline = 0;
|
||||||
|
|
||||||
|
// for some 1 line displays you can select a 10 pixel high font
|
||||||
|
if ((dotsize != 0) && (lines == 1)) {
|
||||||
|
_displayfunction |= LCD_5x10DOTS;
|
||||||
|
}
|
||||||
|
|
||||||
|
// SEE PAGE 45/46 FOR INITIALIZATION SPECIFICATION!
|
||||||
|
// according to datasheet, we need at least 40ms after power rises above 2.7V
|
||||||
|
// before sending commands. Arduino can turn on way befer 4.5V so we'll wait 50
|
||||||
|
delayMicroseconds(50000);
|
||||||
|
// Now we pull both RS and R/W low to begin commands
|
||||||
|
_digitalWrite(_rs_pin, LOW);
|
||||||
|
_digitalWrite(_enable_pin, LOW);
|
||||||
|
if (_rw_pin != 255) {
|
||||||
|
_digitalWrite(_rw_pin, LOW);
|
||||||
|
}
|
||||||
|
|
||||||
|
//put the LCD into 4 bit or 8 bit mode
|
||||||
|
if (! (_displayfunction & LCD_8BITMODE)) {
|
||||||
|
// this is according to the hitachi HD44780 datasheet
|
||||||
|
// figure 24, pg 46
|
||||||
|
|
||||||
|
// we start in 8bit mode, try to set 4 bit mode
|
||||||
|
write4bits(0x03);
|
||||||
|
delayMicroseconds(4500); // wait min 4.1ms
|
||||||
|
|
||||||
|
// second try
|
||||||
|
write4bits(0x03);
|
||||||
|
delayMicroseconds(4500); // wait min 4.1ms
|
||||||
|
|
||||||
|
// third go!
|
||||||
|
write4bits(0x03);
|
||||||
|
delayMicroseconds(150);
|
||||||
|
|
||||||
|
// finally, set to 8-bit interface
|
||||||
|
write4bits(0x02);
|
||||||
|
} else {
|
||||||
|
// this is according to the hitachi HD44780 datasheet
|
||||||
|
// page 45 figure 23
|
||||||
|
|
||||||
|
// Send function set command sequence
|
||||||
|
command(LCD_FUNCTIONSET | _displayfunction);
|
||||||
|
delayMicroseconds(4500); // wait more than 4.1ms
|
||||||
|
|
||||||
|
// second try
|
||||||
|
command(LCD_FUNCTIONSET | _displayfunction);
|
||||||
|
delayMicroseconds(150);
|
||||||
|
|
||||||
|
// third go
|
||||||
|
command(LCD_FUNCTIONSET | _displayfunction);
|
||||||
|
}
|
||||||
|
|
||||||
|
// finally, set # lines, font size, etc.
|
||||||
|
command(LCD_FUNCTIONSET | _displayfunction);
|
||||||
|
|
||||||
|
// turn the display on with no cursor or blinking default
|
||||||
|
_displaycontrol = LCD_DISPLAYON | LCD_CURSOROFF | LCD_BLINKOFF;
|
||||||
|
display();
|
||||||
|
|
||||||
|
// clear it off
|
||||||
|
clear();
|
||||||
|
|
||||||
|
// Initialize to default text direction (for romance languages)
|
||||||
|
_displaymode = LCD_ENTRYLEFT | LCD_ENTRYSHIFTDECREMENT;
|
||||||
|
// set the entry mode
|
||||||
|
command(LCD_ENTRYMODESET | _displaymode);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/********** high level commands, for the user! */
|
||||||
|
void Adafruit_LiquidCrystal::clear()
|
||||||
|
{
|
||||||
|
command(LCD_CLEARDISPLAY); // clear display, set cursor position to zero
|
||||||
|
delayMicroseconds(2000); // this command takes a long time!
|
||||||
|
}
|
||||||
|
|
||||||
|
void Adafruit_LiquidCrystal::home()
|
||||||
|
{
|
||||||
|
command(LCD_RETURNHOME); // set cursor position to zero
|
||||||
|
delayMicroseconds(2000); // this command takes a long time!
|
||||||
|
}
|
||||||
|
|
||||||
|
void Adafruit_LiquidCrystal::setCursor(uint8_t col, uint8_t row)
|
||||||
|
{
|
||||||
|
int row_offsets[] = { 0x00, 0x40, 0x14, 0x54 };
|
||||||
|
if ( row > _numlines ) {
|
||||||
|
row = _numlines-1; // we count rows starting w/0
|
||||||
|
}
|
||||||
|
|
||||||
|
command(LCD_SETDDRAMADDR | (col + row_offsets[row]));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Turn the display on/off (quickly)
|
||||||
|
void Adafruit_LiquidCrystal::noDisplay() {
|
||||||
|
_displaycontrol &= ~LCD_DISPLAYON;
|
||||||
|
command(LCD_DISPLAYCONTROL | _displaycontrol);
|
||||||
|
}
|
||||||
|
void Adafruit_LiquidCrystal::display() {
|
||||||
|
_displaycontrol |= LCD_DISPLAYON;
|
||||||
|
command(LCD_DISPLAYCONTROL | _displaycontrol);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Turns the underline cursor on/off
|
||||||
|
void Adafruit_LiquidCrystal::noCursor() {
|
||||||
|
_displaycontrol &= ~LCD_CURSORON;
|
||||||
|
command(LCD_DISPLAYCONTROL | _displaycontrol);
|
||||||
|
}
|
||||||
|
void Adafruit_LiquidCrystal::cursor() {
|
||||||
|
_displaycontrol |= LCD_CURSORON;
|
||||||
|
command(LCD_DISPLAYCONTROL | _displaycontrol);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Turn on and off the blinking cursor
|
||||||
|
void Adafruit_LiquidCrystal::noBlink() {
|
||||||
|
_displaycontrol &= ~LCD_BLINKON;
|
||||||
|
command(LCD_DISPLAYCONTROL | _displaycontrol);
|
||||||
|
}
|
||||||
|
void Adafruit_LiquidCrystal::blink() {
|
||||||
|
_displaycontrol |= LCD_BLINKON;
|
||||||
|
command(LCD_DISPLAYCONTROL | _displaycontrol);
|
||||||
|
}
|
||||||
|
|
||||||
|
// These commands scroll the display without changing the RAM
|
||||||
|
void Adafruit_LiquidCrystal::scrollDisplayLeft(void) {
|
||||||
|
command(LCD_CURSORSHIFT | LCD_DISPLAYMOVE | LCD_MOVELEFT);
|
||||||
|
}
|
||||||
|
void Adafruit_LiquidCrystal::scrollDisplayRight(void) {
|
||||||
|
command(LCD_CURSORSHIFT | LCD_DISPLAYMOVE | LCD_MOVERIGHT);
|
||||||
|
}
|
||||||
|
|
||||||
|
// This is for text that flows Left to Right
|
||||||
|
void Adafruit_LiquidCrystal::leftToRight(void) {
|
||||||
|
_displaymode |= LCD_ENTRYLEFT;
|
||||||
|
command(LCD_ENTRYMODESET | _displaymode);
|
||||||
|
}
|
||||||
|
|
||||||
|
// This is for text that flows Right to Left
|
||||||
|
void Adafruit_LiquidCrystal::rightToLeft(void) {
|
||||||
|
_displaymode &= ~LCD_ENTRYLEFT;
|
||||||
|
command(LCD_ENTRYMODESET | _displaymode);
|
||||||
|
}
|
||||||
|
|
||||||
|
// This will 'right justify' text from the cursor
|
||||||
|
void Adafruit_LiquidCrystal::autoscroll(void) {
|
||||||
|
_displaymode |= LCD_ENTRYSHIFTINCREMENT;
|
||||||
|
command(LCD_ENTRYMODESET | _displaymode);
|
||||||
|
}
|
||||||
|
|
||||||
|
// This will 'left justify' text from the cursor
|
||||||
|
void Adafruit_LiquidCrystal::noAutoscroll(void) {
|
||||||
|
_displaymode &= ~LCD_ENTRYSHIFTINCREMENT;
|
||||||
|
command(LCD_ENTRYMODESET | _displaymode);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Allows us to fill the first 8 CGRAM locations
|
||||||
|
// with custom characters
|
||||||
|
void Adafruit_LiquidCrystal::createChar(uint8_t location, uint8_t charmap[]) {
|
||||||
|
location &= 0x7; // we only have 8 locations 0-7
|
||||||
|
command(LCD_SETCGRAMADDR | (location << 3));
|
||||||
|
for (int i=0; i<8; i++) {
|
||||||
|
write(charmap[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*********** mid level commands, for sending data/cmds */
|
||||||
|
|
||||||
|
inline void Adafruit_LiquidCrystal::command(uint8_t value) {
|
||||||
|
send(value, LOW);
|
||||||
|
}
|
||||||
|
|
||||||
|
#if ARDUINO >= 100
|
||||||
|
inline size_t Adafruit_LiquidCrystal::write(uint8_t value) {
|
||||||
|
send(value, HIGH);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
inline void Adafruit_LiquidCrystal::write(uint8_t value) {
|
||||||
|
send(value, HIGH);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/************ low level data pushing commands **********/
|
||||||
|
|
||||||
|
// little wrapper for i/o writes
|
||||||
|
void Adafruit_LiquidCrystal::_digitalWrite(uint8_t p, uint8_t d) {
|
||||||
|
if (_i2cAddr != 255) {
|
||||||
|
// an i2c command
|
||||||
|
_i2c.digitalWrite(p, d);
|
||||||
|
} else if (_SPIclock != 255) {
|
||||||
|
if (d == HIGH)
|
||||||
|
_SPIbuff |= (1 << p);
|
||||||
|
else
|
||||||
|
_SPIbuff &= ~(1 << p);
|
||||||
|
|
||||||
|
digitalWrite(_SPIlatch, LOW);
|
||||||
|
shiftOut(_SPIdata, _SPIclock, MSBFIRST,_SPIbuff);
|
||||||
|
digitalWrite(_SPIlatch, HIGH);
|
||||||
|
} else {
|
||||||
|
// straightup IO
|
||||||
|
digitalWrite(p, d);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Allows to set the backlight, if the LCD backpack is used
|
||||||
|
void Adafruit_LiquidCrystal::setBacklight(uint8_t status) {
|
||||||
|
// check if i2c or SPI
|
||||||
|
if ((_i2cAddr != 255) || (_SPIclock != 255)) {
|
||||||
|
_digitalWrite(7, status); // backlight is on pin 7
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// little wrapper for i/o directions
|
||||||
|
void Adafruit_LiquidCrystal::_pinMode(uint8_t p, uint8_t d) {
|
||||||
|
if (_i2cAddr != 255) {
|
||||||
|
// an i2c command
|
||||||
|
_i2c.pinMode(p, d);
|
||||||
|
} else if (_SPIclock != 255) {
|
||||||
|
// nothing!
|
||||||
|
} else {
|
||||||
|
// straightup IO
|
||||||
|
pinMode(p, d);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// write either command or data, with automatic 4/8-bit selection
|
||||||
|
void Adafruit_LiquidCrystal::send(uint8_t value, boolean mode) {
|
||||||
|
_digitalWrite(_rs_pin, mode);
|
||||||
|
|
||||||
|
// if there is a RW pin indicated, set it low to Write
|
||||||
|
if (_rw_pin != 255) {
|
||||||
|
_digitalWrite(_rw_pin, LOW);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_displayfunction & LCD_8BITMODE) {
|
||||||
|
write8bits(value);
|
||||||
|
} else {
|
||||||
|
write4bits(value>>4);
|
||||||
|
write4bits(value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Adafruit_LiquidCrystal::pulseEnable(void) {
|
||||||
|
_digitalWrite(_enable_pin, LOW);
|
||||||
|
delayMicroseconds(1);
|
||||||
|
_digitalWrite(_enable_pin, HIGH);
|
||||||
|
delayMicroseconds(1); // enable pulse must be >450ns
|
||||||
|
_digitalWrite(_enable_pin, LOW);
|
||||||
|
delayMicroseconds(100); // commands need > 37us to settle
|
||||||
|
}
|
||||||
|
|
||||||
|
void Adafruit_LiquidCrystal::write4bits(uint8_t value) {
|
||||||
|
if (_i2cAddr != 255) {
|
||||||
|
uint8_t out = 0;
|
||||||
|
|
||||||
|
out = _i2c.readGPIO();
|
||||||
|
|
||||||
|
|
||||||
|
// speed up for i2c since its sluggish
|
||||||
|
for (int i = 0; i < 4; i++) {
|
||||||
|
out &= ~_BV(_data_pins[i]);
|
||||||
|
out |= ((value >> i) & 0x1) << _data_pins[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
// make sure enable is low
|
||||||
|
out &= ~ _BV(_enable_pin);
|
||||||
|
|
||||||
|
_i2c.writeGPIO(out);
|
||||||
|
|
||||||
|
// pulse enable
|
||||||
|
delayMicroseconds(1);
|
||||||
|
out |= _BV(_enable_pin);
|
||||||
|
_i2c.writeGPIO(out);
|
||||||
|
delayMicroseconds(1);
|
||||||
|
out &= ~_BV(_enable_pin);
|
||||||
|
_i2c.writeGPIO(out);
|
||||||
|
delayMicroseconds(100);
|
||||||
|
} else {
|
||||||
|
for (int i = 0; i < 4; i++) {
|
||||||
|
_pinMode(_data_pins[i], OUTPUT);
|
||||||
|
_digitalWrite(_data_pins[i], (value >> i) & 0x01);
|
||||||
|
}
|
||||||
|
pulseEnable();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Adafruit_LiquidCrystal::write8bits(uint8_t value) {
|
||||||
|
for (int i = 0; i < 8; i++) {
|
||||||
|
_pinMode(_data_pins[i], OUTPUT);
|
||||||
|
_digitalWrite(_data_pins[i], (value >> i) & 0x01);
|
||||||
|
}
|
||||||
|
|
||||||
|
pulseEnable();
|
||||||
|
}
|
124
libraries/Adafruit_LiquidCrystal/Adafruit_LiquidCrystal.h
Executable file
124
libraries/Adafruit_LiquidCrystal/Adafruit_LiquidCrystal.h
Executable file
|
@ -0,0 +1,124 @@
|
||||||
|
#ifndef Adafruit_LiquidCrystal_h
|
||||||
|
#define Adafruit_LiquidCrystal_h
|
||||||
|
|
||||||
|
#include "Arduino.h"
|
||||||
|
#include <inttypes.h>
|
||||||
|
#include "Print.h"
|
||||||
|
#include "utility/Adafruit_MCP23008.h"
|
||||||
|
|
||||||
|
// commands
|
||||||
|
#define LCD_CLEARDISPLAY 0x01
|
||||||
|
#define LCD_RETURNHOME 0x02
|
||||||
|
#define LCD_ENTRYMODESET 0x04
|
||||||
|
#define LCD_DISPLAYCONTROL 0x08
|
||||||
|
#define LCD_CURSORSHIFT 0x10
|
||||||
|
#define LCD_FUNCTIONSET 0x20
|
||||||
|
#define LCD_SETCGRAMADDR 0x40
|
||||||
|
#define LCD_SETDDRAMADDR 0x80
|
||||||
|
|
||||||
|
// flags for display entry mode
|
||||||
|
#define LCD_ENTRYRIGHT 0x00
|
||||||
|
#define LCD_ENTRYLEFT 0x02
|
||||||
|
#define LCD_ENTRYSHIFTINCREMENT 0x01
|
||||||
|
#define LCD_ENTRYSHIFTDECREMENT 0x00
|
||||||
|
|
||||||
|
// flags for display on/off control
|
||||||
|
#define LCD_DISPLAYON 0x04
|
||||||
|
#define LCD_DISPLAYOFF 0x00
|
||||||
|
#define LCD_CURSORON 0x02
|
||||||
|
#define LCD_CURSOROFF 0x00
|
||||||
|
#define LCD_BLINKON 0x01
|
||||||
|
#define LCD_BLINKOFF 0x00
|
||||||
|
|
||||||
|
// flags for display/cursor shift
|
||||||
|
#define LCD_DISPLAYMOVE 0x08
|
||||||
|
#define LCD_CURSORMOVE 0x00
|
||||||
|
#define LCD_MOVERIGHT 0x04
|
||||||
|
#define LCD_MOVELEFT 0x00
|
||||||
|
|
||||||
|
// flags for function set
|
||||||
|
#define LCD_8BITMODE 0x10
|
||||||
|
#define LCD_4BITMODE 0x00
|
||||||
|
#define LCD_2LINE 0x08
|
||||||
|
#define LCD_1LINE 0x00
|
||||||
|
#define LCD_5x10DOTS 0x04
|
||||||
|
#define LCD_5x8DOTS 0x00
|
||||||
|
|
||||||
|
class Adafruit_LiquidCrystal : public Print {
|
||||||
|
public:
|
||||||
|
Adafruit_LiquidCrystal(uint8_t rs, uint8_t enable,
|
||||||
|
uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3,
|
||||||
|
uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7);
|
||||||
|
Adafruit_LiquidCrystal(uint8_t rs, uint8_t rw, uint8_t enable,
|
||||||
|
uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3,
|
||||||
|
uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7);
|
||||||
|
Adafruit_LiquidCrystal(uint8_t rs, uint8_t rw, uint8_t enable,
|
||||||
|
uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3);
|
||||||
|
Adafruit_LiquidCrystal(uint8_t rs, uint8_t enable,
|
||||||
|
uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3);
|
||||||
|
|
||||||
|
Adafruit_LiquidCrystal(uint8_t i2cAddr);
|
||||||
|
Adafruit_LiquidCrystal(uint8_t data, uint8_t clock, uint8_t latch);
|
||||||
|
|
||||||
|
void init(uint8_t fourbitmode, uint8_t rs, uint8_t rw, uint8_t enable,
|
||||||
|
uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3,
|
||||||
|
uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7);
|
||||||
|
|
||||||
|
void begin(uint8_t cols, uint8_t rows, uint8_t charsize = LCD_5x8DOTS);
|
||||||
|
|
||||||
|
void clear();
|
||||||
|
void home();
|
||||||
|
|
||||||
|
void noDisplay();
|
||||||
|
void display();
|
||||||
|
void noBlink();
|
||||||
|
void blink();
|
||||||
|
void noCursor();
|
||||||
|
void cursor();
|
||||||
|
void scrollDisplayLeft();
|
||||||
|
void scrollDisplayRight();
|
||||||
|
void leftToRight();
|
||||||
|
void rightToLeft();
|
||||||
|
void autoscroll();
|
||||||
|
void noAutoscroll();
|
||||||
|
|
||||||
|
// only if using backpack
|
||||||
|
void setBacklight(uint8_t status);
|
||||||
|
|
||||||
|
void createChar(uint8_t, uint8_t[]);
|
||||||
|
void setCursor(uint8_t, uint8_t);
|
||||||
|
#if ARDUINO >= 100
|
||||||
|
virtual size_t write(uint8_t);
|
||||||
|
#else
|
||||||
|
virtual void write(uint8_t);
|
||||||
|
#endif
|
||||||
|
void command(uint8_t);
|
||||||
|
private:
|
||||||
|
void send(uint8_t value, boolean mode);
|
||||||
|
void write4bits(uint8_t);
|
||||||
|
void write8bits(uint8_t);
|
||||||
|
void pulseEnable();
|
||||||
|
void _digitalWrite(uint8_t, uint8_t);
|
||||||
|
void _pinMode(uint8_t, uint8_t);
|
||||||
|
|
||||||
|
uint8_t _rs_pin; // LOW: command. HIGH: character.
|
||||||
|
uint8_t _rw_pin; // LOW: write to LCD. HIGH: read from LCD.
|
||||||
|
uint8_t _enable_pin; // activated by a HIGH pulse.
|
||||||
|
uint8_t _data_pins[8];
|
||||||
|
|
||||||
|
uint8_t _displayfunction;
|
||||||
|
uint8_t _displaycontrol;
|
||||||
|
uint8_t _displaymode;
|
||||||
|
|
||||||
|
uint8_t _initialized;
|
||||||
|
|
||||||
|
uint8_t _numlines,_currline;
|
||||||
|
|
||||||
|
uint8_t _SPIclock, _SPIdata, _SPIlatch;
|
||||||
|
uint8_t _SPIbuff;
|
||||||
|
|
||||||
|
uint8_t _i2cAddr;
|
||||||
|
Adafruit_MCP23008 _i2c;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
37
libraries/Adafruit_LiquidCrystal/README.md
Executable file
37
libraries/Adafruit_LiquidCrystal/README.md
Executable file
|
@ -0,0 +1,37 @@
|
||||||
|
# Adafruit_LiquidCrystal
|
||||||
|
|
||||||
|
This library has been renamed Adafruit_LiquidCrystal so as not to conflict with LiquidCrystal. Also, it now works with tiny85's if you have Adafruit AVR board pkg 1.4.3+
|
||||||
|
|
||||||
|
<!-- START COMPATIBILITY TABLE -->
|
||||||
|
|
||||||
|
## Compatibility
|
||||||
|
|
||||||
|
MCU | Tested Works | Doesn't Work | Not Tested | Notes
|
||||||
|
----------------- | :----------: | :----------: | :---------: | -----
|
||||||
|
Atmega328 @ 16MHz | X | | |
|
||||||
|
Atmega328 @ 12MHz | X | | | For SPI, Pro Trinket has no pin 2, can move to pin 5.
|
||||||
|
Atmega32u4 @ 16MHz | X | | |
|
||||||
|
Atmega32u4 @ 8MHz | X | | |
|
||||||
|
ESP8266 | X | | | For SPI, ESP8266 has no pin 3, moved to pin 5.
|
||||||
|
Atmega2560 @ 16MHz | X | | |
|
||||||
|
ATSAM3X8E | X | | |
|
||||||
|
ATSAM21D | | X | | I2C works, use SDA and SCL pins. For SPI, LCD blinks once on start up.
|
||||||
|
ATtiny85 @ 16MHz | | X | | Use TinyLiquidCrystal libray instead: https://github.com/adafruit/TinyLiquidCrystal
|
||||||
|
|
||||||
|
I2C uses SDA & SCL pins 0 & 2
|
||||||
|
ATtiny85 @ 8MHz | | X | | Use TinyLiquidCrystal libray instead: https://github.com/adafruit/TinyLiquidCrystal
|
||||||
|
|
||||||
|
I2C uses SDA & SCL pins 0 & 2
|
||||||
|
|
||||||
|
* ATmega328 @ 16MHz : Arduino UNO, Adafruit Pro Trinket 5V, Adafruit Metro 328, Adafruit Metro Mini
|
||||||
|
* ATmega328 @ 12MHz : Adafruit Pro Trinket 3V
|
||||||
|
* ATmega32u4 @ 16MHz : Arduino Leonardo, Arduino Micro, Arduino Yun, Teensy 2.0
|
||||||
|
* ATmega32u4 @ 8MHz : Adafruit Flora, Bluefruit Micro
|
||||||
|
* ESP8266 : Adafruit Huzzah
|
||||||
|
* ATmega2560 @ 16MHz : Arduino Mega
|
||||||
|
* ATSAM3X8E : Arduino Due
|
||||||
|
* ATSAM21D : Arduino Zero, M0 Pro
|
||||||
|
* ATtiny85 @ 16MHz : Adafruit Trinket 5V
|
||||||
|
* ATtiny85 @ 8MHz : Adafruit Gemma, Arduino Gemma, Adafruit Trinket 3V
|
||||||
|
|
||||||
|
<!-- END COMPATIBILITY TABLE -->
|
38
libraries/Adafruit_LiquidCrystal/keywords.txt
Executable file
38
libraries/Adafruit_LiquidCrystal/keywords.txt
Executable file
|
@ -0,0 +1,38 @@
|
||||||
|
#######################################
|
||||||
|
# Syntax Coloring Map For LiquidCrystal
|
||||||
|
#######################################
|
||||||
|
|
||||||
|
#######################################
|
||||||
|
# Datatypes (KEYWORD1)
|
||||||
|
#######################################
|
||||||
|
|
||||||
|
Adafruit_LiquidCrystal KEYWORD1
|
||||||
|
|
||||||
|
#######################################
|
||||||
|
# Methods and Functions (KEYWORD2)
|
||||||
|
#######################################
|
||||||
|
|
||||||
|
begin KEYWORD2
|
||||||
|
clear KEYWORD2
|
||||||
|
home KEYWORD2
|
||||||
|
print KEYWORD2
|
||||||
|
setCursor KEYWORD2
|
||||||
|
cursor KEYWORD2
|
||||||
|
noCursor KEYWORD2
|
||||||
|
blink KEYWORD2
|
||||||
|
noBlink KEYWORD2
|
||||||
|
display KEYWORD2
|
||||||
|
noDisplay KEYWORD2
|
||||||
|
autoscroll KEYWORD2
|
||||||
|
noAutoscroll KEYWORD2
|
||||||
|
leftToRight KEYWORD2
|
||||||
|
rightToLeft KEYWORD2
|
||||||
|
scrollDisplayLeft KEYWORD2
|
||||||
|
scrollDisplayRight KEYWORD2
|
||||||
|
createChar KEYWORD2
|
||||||
|
setBacklight KEYWORD2
|
||||||
|
|
||||||
|
#######################################
|
||||||
|
# Constants (LITERAL1)
|
||||||
|
#######################################
|
||||||
|
|
9
libraries/Adafruit_LiquidCrystal/library.properties
Executable file
9
libraries/Adafruit_LiquidCrystal/library.properties
Executable file
|
@ -0,0 +1,9 @@
|
||||||
|
name=Adafruit LiquidCrystal
|
||||||
|
version=1.0.0
|
||||||
|
author=Adafruit
|
||||||
|
maintainer=Adafruit <info@adafruit.com>
|
||||||
|
sentence=Fork of LiquidCrystal HD44780-compatible LCD driver library, now with support for ATtiny85.
|
||||||
|
paragraph=Fork of LiquidCrystal HD44780-compatible LCD driver library, now with support for ATtiny85.
|
||||||
|
category=Display
|
||||||
|
url=https://github.com/adafruit/LiquidCrystal/
|
||||||
|
architectures=*
|
175
libraries/Adafruit_LiquidCrystal/utility/Adafruit_MCP23008.cpp
Executable file
175
libraries/Adafruit_LiquidCrystal/utility/Adafruit_MCP23008.cpp
Executable file
|
@ -0,0 +1,175 @@
|
||||||
|
/***************************************************
|
||||||
|
This is a library for the MCP23008 i2c port expander
|
||||||
|
|
||||||
|
These displays use I2C to communicate, 2 pins are required to
|
||||||
|
interface
|
||||||
|
Adafruit invests time and resources providing this open source code,
|
||||||
|
please support Adafruit and open-source hardware by purchasing
|
||||||
|
products from Adafruit!
|
||||||
|
|
||||||
|
Written by Limor Fried/Ladyada for Adafruit Industries.
|
||||||
|
BSD license, all text above must be included in any redistribution
|
||||||
|
****************************************************/
|
||||||
|
|
||||||
|
#if ARDUINO >= 100
|
||||||
|
#include "Arduino.h"
|
||||||
|
#else
|
||||||
|
#include "WProgram.h"
|
||||||
|
#endif
|
||||||
|
#include <Wire.h>
|
||||||
|
#include "Adafruit_MCP23008.h"
|
||||||
|
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// RTC_DS1307 implementation
|
||||||
|
|
||||||
|
void Adafruit_MCP23008::begin(uint8_t addr) {
|
||||||
|
addr &= 7;
|
||||||
|
|
||||||
|
i2caddr = addr;
|
||||||
|
|
||||||
|
Wire.begin();
|
||||||
|
|
||||||
|
// set defaults!
|
||||||
|
Wire.beginTransmission(MCP23008_ADDRESS | i2caddr);
|
||||||
|
#if ARDUINO >= 100
|
||||||
|
Wire.write((byte)MCP23008_IODIR);
|
||||||
|
Wire.write((byte)0xFF); // all inputs
|
||||||
|
Wire.write((byte)0x00);
|
||||||
|
Wire.write((byte)0x00);
|
||||||
|
Wire.write((byte)0x00);
|
||||||
|
Wire.write((byte)0x00);
|
||||||
|
Wire.write((byte)0x00);
|
||||||
|
Wire.write((byte)0x00);
|
||||||
|
Wire.write((byte)0x00);
|
||||||
|
Wire.write((byte)0x00);
|
||||||
|
Wire.write((byte)0x00);
|
||||||
|
#else
|
||||||
|
Wire.send(MCP23008_IODIR);
|
||||||
|
Wire.send(0xFF); // all inputs
|
||||||
|
Wire.send(0x00);
|
||||||
|
Wire.send(0x00);
|
||||||
|
Wire.send(0x00);
|
||||||
|
Wire.send(0x00);
|
||||||
|
Wire.send(0x00);
|
||||||
|
Wire.send(0x00);
|
||||||
|
Wire.send(0x00);
|
||||||
|
Wire.send(0x00);
|
||||||
|
Wire.send(0x00);
|
||||||
|
#endif
|
||||||
|
Wire.endTransmission();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void Adafruit_MCP23008::begin(void) {
|
||||||
|
begin(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Adafruit_MCP23008::pinMode(uint8_t p, uint8_t d) {
|
||||||
|
uint8_t iodir;
|
||||||
|
|
||||||
|
|
||||||
|
// only 8 bits!
|
||||||
|
if (p > 7)
|
||||||
|
return;
|
||||||
|
|
||||||
|
iodir = read8(MCP23008_IODIR);
|
||||||
|
|
||||||
|
// set the pin and direction
|
||||||
|
if (d == INPUT) {
|
||||||
|
iodir |= 1 << p;
|
||||||
|
} else {
|
||||||
|
iodir &= ~(1 << p);
|
||||||
|
}
|
||||||
|
|
||||||
|
// write the new IODIR
|
||||||
|
write8(MCP23008_IODIR, iodir);
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t Adafruit_MCP23008::readGPIO(void) {
|
||||||
|
// read the current GPIO input
|
||||||
|
return read8(MCP23008_GPIO);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Adafruit_MCP23008::writeGPIO(uint8_t gpio) {
|
||||||
|
write8(MCP23008_GPIO, gpio);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void Adafruit_MCP23008::digitalWrite(uint8_t p, uint8_t d) {
|
||||||
|
uint8_t gpio;
|
||||||
|
|
||||||
|
// only 8 bits!
|
||||||
|
if (p > 7)
|
||||||
|
return;
|
||||||
|
|
||||||
|
// read the current GPIO output latches
|
||||||
|
gpio = readGPIO();
|
||||||
|
|
||||||
|
// set the pin and direction
|
||||||
|
if (d == HIGH) {
|
||||||
|
gpio |= 1 << p;
|
||||||
|
} else {
|
||||||
|
gpio &= ~(1 << p);
|
||||||
|
}
|
||||||
|
|
||||||
|
// write the new GPIO
|
||||||
|
writeGPIO(gpio);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Adafruit_MCP23008::pullUp(uint8_t p, uint8_t d) {
|
||||||
|
uint8_t gppu;
|
||||||
|
|
||||||
|
// only 8 bits!
|
||||||
|
if (p > 7)
|
||||||
|
return;
|
||||||
|
|
||||||
|
gppu = read8(MCP23008_GPPU);
|
||||||
|
// set the pin and direction
|
||||||
|
if (d == HIGH) {
|
||||||
|
gppu |= 1 << p;
|
||||||
|
} else {
|
||||||
|
gppu &= ~(1 << p);
|
||||||
|
}
|
||||||
|
// write the new GPIO
|
||||||
|
write8(MCP23008_GPPU, gppu);
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t Adafruit_MCP23008::digitalRead(uint8_t p) {
|
||||||
|
// only 8 bits!
|
||||||
|
if (p > 7)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
// read the current GPIO
|
||||||
|
return (readGPIO() >> p) & 0x1;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t Adafruit_MCP23008::read8(uint8_t addr) {
|
||||||
|
Wire.beginTransmission(MCP23008_ADDRESS | i2caddr);
|
||||||
|
#if ARDUINO >= 100
|
||||||
|
Wire.write((byte)addr);
|
||||||
|
#else
|
||||||
|
Wire.send(addr);
|
||||||
|
#endif
|
||||||
|
Wire.endTransmission();
|
||||||
|
Wire.requestFrom(MCP23008_ADDRESS | i2caddr, 1);
|
||||||
|
|
||||||
|
#if ARDUINO >= 100
|
||||||
|
return Wire.read();
|
||||||
|
#else
|
||||||
|
return Wire.receive();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void Adafruit_MCP23008::write8(uint8_t addr, uint8_t data) {
|
||||||
|
Wire.beginTransmission(MCP23008_ADDRESS | i2caddr);
|
||||||
|
#if ARDUINO >= 100
|
||||||
|
Wire.write((byte)addr);
|
||||||
|
Wire.write((byte)data);
|
||||||
|
#else
|
||||||
|
Wire.send(addr);
|
||||||
|
Wire.send(data);
|
||||||
|
#endif
|
||||||
|
Wire.endTransmission();
|
||||||
|
}
|
50
libraries/Adafruit_LiquidCrystal/utility/Adafruit_MCP23008.h
Executable file
50
libraries/Adafruit_LiquidCrystal/utility/Adafruit_MCP23008.h
Executable file
|
@ -0,0 +1,50 @@
|
||||||
|
/***************************************************
|
||||||
|
This is a library for the MCP23008 i2c port expander
|
||||||
|
|
||||||
|
These displays use I2C to communicate, 2 pins are required to
|
||||||
|
interface
|
||||||
|
Adafruit invests time and resources providing this open source code,
|
||||||
|
please support Adafruit and open-source hardware by purchasing
|
||||||
|
products from Adafruit!
|
||||||
|
|
||||||
|
Written by Limor Fried/Ladyada for Adafruit Industries.
|
||||||
|
BSD license, all text above must be included in any redistribution
|
||||||
|
****************************************************/
|
||||||
|
|
||||||
|
#ifndef _ADAFRUIT_MCP23008_H
|
||||||
|
#define _ADAFRUIT_MCP23008_H
|
||||||
|
// Don't forget the Wire library
|
||||||
|
class Adafruit_MCP23008 {
|
||||||
|
public:
|
||||||
|
void begin(uint8_t addr);
|
||||||
|
void begin(void);
|
||||||
|
|
||||||
|
void pinMode(uint8_t p, uint8_t d);
|
||||||
|
void digitalWrite(uint8_t p, uint8_t d);
|
||||||
|
void pullUp(uint8_t p, uint8_t d);
|
||||||
|
uint8_t digitalRead(uint8_t p);
|
||||||
|
uint8_t readGPIO(void);
|
||||||
|
void writeGPIO(uint8_t);
|
||||||
|
|
||||||
|
private:
|
||||||
|
uint8_t i2caddr;
|
||||||
|
uint8_t read8(uint8_t addr);
|
||||||
|
void write8(uint8_t addr, uint8_t data);
|
||||||
|
};
|
||||||
|
|
||||||
|
#define MCP23008_ADDRESS 0x20
|
||||||
|
|
||||||
|
// registers
|
||||||
|
#define MCP23008_IODIR 0x00
|
||||||
|
#define MCP23008_IPOL 0x01
|
||||||
|
#define MCP23008_GPINTEN 0x02
|
||||||
|
#define MCP23008_DEFVAL 0x03
|
||||||
|
#define MCP23008_INTCON 0x04
|
||||||
|
#define MCP23008_IOCON 0x05
|
||||||
|
#define MCP23008_GPPU 0x06
|
||||||
|
#define MCP23008_INTF 0x07
|
||||||
|
#define MCP23008_INTCAP 0x08
|
||||||
|
#define MCP23008_GPIO 0x09
|
||||||
|
#define MCP23008_OLAT 0x0A
|
||||||
|
|
||||||
|
#endif
|
230
libraries/Adafruit_MCP23017/Adafruit_MCP23017.cpp
Executable file
230
libraries/Adafruit_MCP23017/Adafruit_MCP23017.cpp
Executable file
|
@ -0,0 +1,230 @@
|
||||||
|
/***************************************************
|
||||||
|
This is a library for the MCP23017 i2c port expander
|
||||||
|
|
||||||
|
These displays use I2C to communicate, 2 pins are required to
|
||||||
|
interface
|
||||||
|
Adafruit invests time and resources providing this open source code,
|
||||||
|
please support Adafruit and open-source hardware by purchasing
|
||||||
|
products from Adafruit!
|
||||||
|
|
||||||
|
Written by Limor Fried/Ladyada for Adafruit Industries.
|
||||||
|
BSD license, all text above must be included in any redistribution
|
||||||
|
****************************************************/
|
||||||
|
|
||||||
|
#include <Wire.h>
|
||||||
|
#include <avr/pgmspace.h>
|
||||||
|
#include "Adafruit_MCP23017.h"
|
||||||
|
|
||||||
|
#if ARDUINO >= 100
|
||||||
|
#include "Arduino.h"
|
||||||
|
#else
|
||||||
|
#include "WProgram.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// minihelper
|
||||||
|
static inline void wiresend(uint8_t x) {
|
||||||
|
#if ARDUINO >= 100
|
||||||
|
Wire.write((uint8_t)x);
|
||||||
|
#else
|
||||||
|
Wire.send(x);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline uint8_t wirerecv(void) {
|
||||||
|
#if ARDUINO >= 100
|
||||||
|
return Wire.read();
|
||||||
|
#else
|
||||||
|
return Wire.receive();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
void Adafruit_MCP23017::begin(uint8_t addr) {
|
||||||
|
if (addr > 7) {
|
||||||
|
addr = 7;
|
||||||
|
}
|
||||||
|
i2caddr = addr;
|
||||||
|
|
||||||
|
Wire.begin();
|
||||||
|
|
||||||
|
|
||||||
|
// set defaults!
|
||||||
|
Wire.beginTransmission(MCP23017_ADDRESS | i2caddr);
|
||||||
|
wiresend(MCP23017_IODIRA);
|
||||||
|
wiresend(0xFF); // all inputs on port A
|
||||||
|
Wire.endTransmission();
|
||||||
|
|
||||||
|
Wire.beginTransmission(MCP23017_ADDRESS | i2caddr);
|
||||||
|
wiresend(MCP23017_IODIRB);
|
||||||
|
wiresend(0xFF); // all inputs on port B
|
||||||
|
Wire.endTransmission();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void Adafruit_MCP23017::begin(void) {
|
||||||
|
begin(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Adafruit_MCP23017::pinMode(uint8_t p, uint8_t d) {
|
||||||
|
uint8_t iodir;
|
||||||
|
uint8_t iodiraddr;
|
||||||
|
|
||||||
|
// only 16 bits!
|
||||||
|
if (p > 15)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (p < 8)
|
||||||
|
iodiraddr = MCP23017_IODIRA;
|
||||||
|
else {
|
||||||
|
iodiraddr = MCP23017_IODIRB;
|
||||||
|
p -= 8;
|
||||||
|
}
|
||||||
|
|
||||||
|
// read the current IODIR
|
||||||
|
Wire.beginTransmission(MCP23017_ADDRESS | i2caddr);
|
||||||
|
wiresend(iodiraddr);
|
||||||
|
Wire.endTransmission();
|
||||||
|
|
||||||
|
Wire.requestFrom(MCP23017_ADDRESS | i2caddr, 1);
|
||||||
|
iodir = wirerecv();
|
||||||
|
|
||||||
|
// set the pin and direction
|
||||||
|
if (d == INPUT) {
|
||||||
|
iodir |= 1 << p;
|
||||||
|
} else {
|
||||||
|
iodir &= ~(1 << p);
|
||||||
|
}
|
||||||
|
|
||||||
|
// write the new IODIR
|
||||||
|
Wire.beginTransmission(MCP23017_ADDRESS | i2caddr);
|
||||||
|
wiresend(iodiraddr);
|
||||||
|
wiresend(iodir);
|
||||||
|
Wire.endTransmission();
|
||||||
|
}
|
||||||
|
|
||||||
|
uint16_t Adafruit_MCP23017::readGPIOAB() {
|
||||||
|
uint16_t ba = 0;
|
||||||
|
uint8_t a;
|
||||||
|
|
||||||
|
// read the current GPIO output latches
|
||||||
|
Wire.beginTransmission(MCP23017_ADDRESS | i2caddr);
|
||||||
|
wiresend(MCP23017_GPIOA);
|
||||||
|
Wire.endTransmission();
|
||||||
|
|
||||||
|
Wire.requestFrom(MCP23017_ADDRESS | i2caddr, 2);
|
||||||
|
a = wirerecv();
|
||||||
|
ba = wirerecv();
|
||||||
|
ba <<= 8;
|
||||||
|
ba |= a;
|
||||||
|
|
||||||
|
return ba;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Adafruit_MCP23017::writeGPIOAB(uint16_t ba) {
|
||||||
|
Wire.beginTransmission(MCP23017_ADDRESS | i2caddr);
|
||||||
|
wiresend(MCP23017_GPIOA);
|
||||||
|
wiresend(ba & 0xFF);
|
||||||
|
wiresend(ba >> 8);
|
||||||
|
Wire.endTransmission();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Adafruit_MCP23017::digitalWrite(uint8_t p, uint8_t d) {
|
||||||
|
uint8_t gpio;
|
||||||
|
uint8_t gpioaddr, olataddr;
|
||||||
|
|
||||||
|
// only 16 bits!
|
||||||
|
if (p > 15)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (p < 8) {
|
||||||
|
olataddr = MCP23017_OLATA;
|
||||||
|
gpioaddr = MCP23017_GPIOA;
|
||||||
|
} else {
|
||||||
|
olataddr = MCP23017_OLATB;
|
||||||
|
gpioaddr = MCP23017_GPIOB;
|
||||||
|
p -= 8;
|
||||||
|
}
|
||||||
|
|
||||||
|
// read the current GPIO output latches
|
||||||
|
Wire.beginTransmission(MCP23017_ADDRESS | i2caddr);
|
||||||
|
wiresend(olataddr);
|
||||||
|
Wire.endTransmission();
|
||||||
|
|
||||||
|
Wire.requestFrom(MCP23017_ADDRESS | i2caddr, 1);
|
||||||
|
gpio = wirerecv();
|
||||||
|
|
||||||
|
// set the pin and direction
|
||||||
|
if (d == HIGH) {
|
||||||
|
gpio |= 1 << p;
|
||||||
|
} else {
|
||||||
|
gpio &= ~(1 << p);
|
||||||
|
}
|
||||||
|
|
||||||
|
// write the new GPIO
|
||||||
|
Wire.beginTransmission(MCP23017_ADDRESS | i2caddr);
|
||||||
|
wiresend(gpioaddr);
|
||||||
|
wiresend(gpio);
|
||||||
|
Wire.endTransmission();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Adafruit_MCP23017::pullUp(uint8_t p, uint8_t d) {
|
||||||
|
uint8_t gppu;
|
||||||
|
uint8_t gppuaddr;
|
||||||
|
|
||||||
|
// only 16 bits!
|
||||||
|
if (p > 15)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (p < 8)
|
||||||
|
gppuaddr = MCP23017_GPPUA;
|
||||||
|
else {
|
||||||
|
gppuaddr = MCP23017_GPPUB;
|
||||||
|
p -= 8;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// read the current pullup resistor set
|
||||||
|
Wire.beginTransmission(MCP23017_ADDRESS | i2caddr);
|
||||||
|
wiresend(gppuaddr);
|
||||||
|
Wire.endTransmission();
|
||||||
|
|
||||||
|
Wire.requestFrom(MCP23017_ADDRESS | i2caddr, 1);
|
||||||
|
gppu = wirerecv();
|
||||||
|
|
||||||
|
// set the pin and direction
|
||||||
|
if (d == HIGH) {
|
||||||
|
gppu |= 1 << p;
|
||||||
|
} else {
|
||||||
|
gppu &= ~(1 << p);
|
||||||
|
}
|
||||||
|
|
||||||
|
// write the new GPIO
|
||||||
|
Wire.beginTransmission(MCP23017_ADDRESS | i2caddr);
|
||||||
|
wiresend(gppuaddr);
|
||||||
|
wiresend(gppu);
|
||||||
|
Wire.endTransmission();
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t Adafruit_MCP23017::digitalRead(uint8_t p) {
|
||||||
|
uint8_t gpioaddr;
|
||||||
|
|
||||||
|
// only 16 bits!
|
||||||
|
if (p > 15)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
if (p < 8)
|
||||||
|
gpioaddr = MCP23017_GPIOA;
|
||||||
|
else {
|
||||||
|
gpioaddr = MCP23017_GPIOB;
|
||||||
|
p -= 8;
|
||||||
|
}
|
||||||
|
|
||||||
|
// read the current GPIO
|
||||||
|
Wire.beginTransmission(MCP23017_ADDRESS | i2caddr);
|
||||||
|
wiresend(gpioaddr);
|
||||||
|
Wire.endTransmission();
|
||||||
|
|
||||||
|
Wire.requestFrom(MCP23017_ADDRESS | i2caddr, 1);
|
||||||
|
return (wirerecv() >> p) & 0x1;
|
||||||
|
}
|
63
libraries/Adafruit_MCP23017/Adafruit_MCP23017.h
Executable file
63
libraries/Adafruit_MCP23017/Adafruit_MCP23017.h
Executable file
|
@ -0,0 +1,63 @@
|
||||||
|
/***************************************************
|
||||||
|
This is a library for the MCP23017 i2c port expander
|
||||||
|
|
||||||
|
These displays use I2C to communicate, 2 pins are required to
|
||||||
|
interface
|
||||||
|
Adafruit invests time and resources providing this open source code,
|
||||||
|
please support Adafruit and open-source hardware by purchasing
|
||||||
|
products from Adafruit!
|
||||||
|
|
||||||
|
Written by Limor Fried/Ladyada for Adafruit Industries.
|
||||||
|
BSD license, all text above must be included in any redistribution
|
||||||
|
****************************************************/
|
||||||
|
|
||||||
|
#ifndef _Adafruit_MCP23017_H_
|
||||||
|
#define _Adafruit_MCP23017_H_
|
||||||
|
|
||||||
|
// Don't forget the Wire library
|
||||||
|
class Adafruit_MCP23017 {
|
||||||
|
public:
|
||||||
|
void begin(uint8_t addr);
|
||||||
|
void begin(void);
|
||||||
|
|
||||||
|
void pinMode(uint8_t p, uint8_t d);
|
||||||
|
void digitalWrite(uint8_t p, uint8_t d);
|
||||||
|
void pullUp(uint8_t p, uint8_t d);
|
||||||
|
uint8_t digitalRead(uint8_t p);
|
||||||
|
|
||||||
|
void writeGPIOAB(uint16_t);
|
||||||
|
uint16_t readGPIOAB();
|
||||||
|
|
||||||
|
private:
|
||||||
|
uint8_t i2caddr;
|
||||||
|
};
|
||||||
|
|
||||||
|
#define MCP23017_ADDRESS 0x20
|
||||||
|
|
||||||
|
// registers
|
||||||
|
#define MCP23017_IODIRA 0x00
|
||||||
|
#define MCP23017_IPOLA 0x02
|
||||||
|
#define MCP23017_GPINTENA 0x04
|
||||||
|
#define MCP23017_DEFVALA 0x06
|
||||||
|
#define MCP23017_INTCONA 0x08
|
||||||
|
#define MCP23017_IOCONA 0x0A
|
||||||
|
#define MCP23017_GPPUA 0x0C
|
||||||
|
#define MCP23017_INTFA 0x0E
|
||||||
|
#define MCP23017_INTCAPA 0x10
|
||||||
|
#define MCP23017_GPIOA 0x12
|
||||||
|
#define MCP23017_OLATA 0x14
|
||||||
|
|
||||||
|
|
||||||
|
#define MCP23017_IODIRB 0x01
|
||||||
|
#define MCP23017_IPOLB 0x03
|
||||||
|
#define MCP23017_GPINTENB 0x05
|
||||||
|
#define MCP23017_DEFVALB 0x07
|
||||||
|
#define MCP23017_INTCONB 0x09
|
||||||
|
#define MCP23017_IOCONB 0x0B
|
||||||
|
#define MCP23017_GPPUB 0x0D
|
||||||
|
#define MCP23017_INTFB 0x0F
|
||||||
|
#define MCP23017_INTCAPB 0x11
|
||||||
|
#define MCP23017_GPIOB 0x13
|
||||||
|
#define MCP23017_OLATB 0x15
|
||||||
|
|
||||||
|
#endif
|
431
libraries/Adafruit_RGBLCDShield/Adafruit_RGBLCDShield.cpp
Executable file
431
libraries/Adafruit_RGBLCDShield/Adafruit_RGBLCDShield.cpp
Executable file
|
@ -0,0 +1,431 @@
|
||||||
|
/***************************************************
|
||||||
|
This is a library for the Adafruit RGB 16x2 LCD Shield
|
||||||
|
Pick one up at the Adafruit shop!
|
||||||
|
---------> http://http://www.adafruit.com/products/714
|
||||||
|
|
||||||
|
The shield uses I2C to communicate, 2 pins are required to
|
||||||
|
interface
|
||||||
|
Adafruit invests time and resources providing this open source code,
|
||||||
|
please support Adafruit and open-source hardware by purchasing
|
||||||
|
products from Adafruit!
|
||||||
|
|
||||||
|
Written by Limor Fried/Ladyada for Adafruit Industries.
|
||||||
|
BSD license, all text above must be included in any redistribution
|
||||||
|
****************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
#include "Adafruit_RGBLCDShield.h"
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <inttypes.h>
|
||||||
|
#include <Wire.h>
|
||||||
|
|
||||||
|
#if ARDUINO >= 100
|
||||||
|
#include "Arduino.h"
|
||||||
|
#else
|
||||||
|
#include "WProgram.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// When the display powers up, it is configured as follows:
|
||||||
|
//
|
||||||
|
// 1. Display clear
|
||||||
|
// 2. Function set:
|
||||||
|
// DL = 1; 8-bit interface data
|
||||||
|
// N = 0; 1-line display
|
||||||
|
// F = 0; 5x8 dot character font
|
||||||
|
// 3. Display on/off control:
|
||||||
|
// D = 0; Display off
|
||||||
|
// C = 0; Cursor off
|
||||||
|
// B = 0; Blinking off
|
||||||
|
// 4. Entry mode set:
|
||||||
|
// I/D = 1; Increment by 1
|
||||||
|
// S = 0; No shift
|
||||||
|
//
|
||||||
|
// Note, however, that resetting the Arduino doesn't reset the LCD, so we
|
||||||
|
// can't assume that its in that state when a sketch starts (and the
|
||||||
|
// RGBLCDShield constructor is called).
|
||||||
|
|
||||||
|
Adafruit_RGBLCDShield::Adafruit_RGBLCDShield() {
|
||||||
|
_i2cAddr = 0;
|
||||||
|
|
||||||
|
_displayfunction = LCD_4BITMODE | LCD_1LINE | LCD_5x8DOTS;
|
||||||
|
|
||||||
|
// the I/O expander pinout
|
||||||
|
_rs_pin = 15;
|
||||||
|
_rw_pin = 14;
|
||||||
|
_enable_pin = 13;
|
||||||
|
_data_pins[0] = 12; // really d4
|
||||||
|
_data_pins[1] = 11; // really d5
|
||||||
|
_data_pins[2] = 10; // really d6
|
||||||
|
_data_pins[3] = 9; // really d7
|
||||||
|
|
||||||
|
_button_pins[0] = 0;
|
||||||
|
_button_pins[1] = 1;
|
||||||
|
_button_pins[2] = 2;
|
||||||
|
_button_pins[3] = 3;
|
||||||
|
_button_pins[4] = 4;
|
||||||
|
// we can't begin() yet :(
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void Adafruit_RGBLCDShield::init(uint8_t fourbitmode, uint8_t rs, uint8_t rw, uint8_t enable,
|
||||||
|
uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3,
|
||||||
|
uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7)
|
||||||
|
{
|
||||||
|
_rs_pin = rs;
|
||||||
|
_rw_pin = rw;
|
||||||
|
_enable_pin = enable;
|
||||||
|
|
||||||
|
_data_pins[0] = d0;
|
||||||
|
_data_pins[1] = d1;
|
||||||
|
_data_pins[2] = d2;
|
||||||
|
_data_pins[3] = d3;
|
||||||
|
_data_pins[4] = d4;
|
||||||
|
_data_pins[5] = d5;
|
||||||
|
_data_pins[6] = d6;
|
||||||
|
_data_pins[7] = d7;
|
||||||
|
|
||||||
|
_i2cAddr = 255;
|
||||||
|
|
||||||
|
_pinMode(_rs_pin, OUTPUT);
|
||||||
|
// we can save 1 pin by not using RW. Indicate by passing 255 instead of pin#
|
||||||
|
if (_rw_pin != 255) {
|
||||||
|
_pinMode(_rw_pin, OUTPUT);
|
||||||
|
}
|
||||||
|
_pinMode(_enable_pin, OUTPUT);
|
||||||
|
|
||||||
|
|
||||||
|
if (fourbitmode)
|
||||||
|
_displayfunction = LCD_4BITMODE | LCD_1LINE | LCD_5x8DOTS;
|
||||||
|
else
|
||||||
|
_displayfunction = LCD_8BITMODE | LCD_1LINE | LCD_5x8DOTS;
|
||||||
|
|
||||||
|
begin(16, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Adafruit_RGBLCDShield::begin(uint8_t cols, uint8_t lines, uint8_t dotsize) {
|
||||||
|
// check if i2c
|
||||||
|
if (_i2cAddr != 255) {
|
||||||
|
//_i2c.begin(_i2cAddr);
|
||||||
|
Wire.begin();
|
||||||
|
_i2c.begin();
|
||||||
|
|
||||||
|
_i2c.pinMode(8, OUTPUT);
|
||||||
|
_i2c.pinMode(6, OUTPUT);
|
||||||
|
_i2c.pinMode(7, OUTPUT);
|
||||||
|
setBacklight(0x7);
|
||||||
|
|
||||||
|
if (_rw_pin)
|
||||||
|
_i2c.pinMode(_rw_pin, OUTPUT);
|
||||||
|
|
||||||
|
_i2c.pinMode(_rs_pin, OUTPUT);
|
||||||
|
_i2c.pinMode(_enable_pin, OUTPUT);
|
||||||
|
for (uint8_t i=0; i<4; i++)
|
||||||
|
_i2c.pinMode(_data_pins[i], OUTPUT);
|
||||||
|
|
||||||
|
for (uint8_t i=0; i<5; i++) {
|
||||||
|
_i2c.pinMode(_button_pins[i], INPUT);
|
||||||
|
_i2c.pullUp(_button_pins[i], 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (lines > 1) {
|
||||||
|
_displayfunction |= LCD_2LINE;
|
||||||
|
}
|
||||||
|
_numlines = lines;
|
||||||
|
_currline = 0;
|
||||||
|
|
||||||
|
// for some 1 line displays you can select a 10 pixel high font
|
||||||
|
if ((dotsize != 0) && (lines == 1)) {
|
||||||
|
_displayfunction |= LCD_5x10DOTS;
|
||||||
|
}
|
||||||
|
|
||||||
|
// SEE PAGE 45/46 FOR INITIALIZATION SPECIFICATION!
|
||||||
|
// according to datasheet, we need at least 40ms after power rises above 2.7V
|
||||||
|
// before sending commands. Arduino can turn on way befer 4.5V so we'll wait 50
|
||||||
|
delayMicroseconds(50000);
|
||||||
|
// Now we pull both RS and R/W low to begin commands
|
||||||
|
_digitalWrite(_rs_pin, LOW);
|
||||||
|
_digitalWrite(_enable_pin, LOW);
|
||||||
|
if (_rw_pin != 255) {
|
||||||
|
_digitalWrite(_rw_pin, LOW);
|
||||||
|
}
|
||||||
|
|
||||||
|
//put the LCD into 4 bit or 8 bit mode
|
||||||
|
if (! (_displayfunction & LCD_8BITMODE)) {
|
||||||
|
// this is according to the hitachi HD44780 datasheet
|
||||||
|
// figure 24, pg 46
|
||||||
|
|
||||||
|
// we start in 8bit mode, try to set 4 bit mode
|
||||||
|
write4bits(0x03);
|
||||||
|
delayMicroseconds(4500); // wait min 4.1ms
|
||||||
|
|
||||||
|
// second try
|
||||||
|
write4bits(0x03);
|
||||||
|
delayMicroseconds(4500); // wait min 4.1ms
|
||||||
|
|
||||||
|
// third go!
|
||||||
|
write4bits(0x03);
|
||||||
|
delayMicroseconds(150);
|
||||||
|
|
||||||
|
// finally, set to 8-bit interface
|
||||||
|
write4bits(0x02);
|
||||||
|
} else {
|
||||||
|
// this is according to the hitachi HD44780 datasheet
|
||||||
|
// page 45 figure 23
|
||||||
|
|
||||||
|
// Send function set command sequence
|
||||||
|
command(LCD_FUNCTIONSET | _displayfunction);
|
||||||
|
delayMicroseconds(4500); // wait more than 4.1ms
|
||||||
|
|
||||||
|
// second try
|
||||||
|
command(LCD_FUNCTIONSET | _displayfunction);
|
||||||
|
delayMicroseconds(150);
|
||||||
|
|
||||||
|
// third go
|
||||||
|
command(LCD_FUNCTIONSET | _displayfunction);
|
||||||
|
}
|
||||||
|
|
||||||
|
// finally, set # lines, font size, etc.
|
||||||
|
command(LCD_FUNCTIONSET | _displayfunction);
|
||||||
|
|
||||||
|
// turn the display on with no cursor or blinking default
|
||||||
|
_displaycontrol = LCD_DISPLAYON | LCD_CURSOROFF | LCD_BLINKOFF;
|
||||||
|
display();
|
||||||
|
|
||||||
|
// clear it off
|
||||||
|
clear();
|
||||||
|
|
||||||
|
// Initialize to default text direction (for romance languages)
|
||||||
|
_displaymode = LCD_ENTRYLEFT | LCD_ENTRYSHIFTDECREMENT;
|
||||||
|
// set the entry mode
|
||||||
|
command(LCD_ENTRYMODESET | _displaymode);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/********** high level commands, for the user! */
|
||||||
|
void Adafruit_RGBLCDShield::clear()
|
||||||
|
{
|
||||||
|
command(LCD_CLEARDISPLAY); // clear display, set cursor position to zero
|
||||||
|
delayMicroseconds(2000); // this command takes a long time!
|
||||||
|
}
|
||||||
|
|
||||||
|
void Adafruit_RGBLCDShield::home()
|
||||||
|
{
|
||||||
|
command(LCD_RETURNHOME); // set cursor position to zero
|
||||||
|
delayMicroseconds(2000); // this command takes a long time!
|
||||||
|
}
|
||||||
|
|
||||||
|
void Adafruit_RGBLCDShield::setCursor(uint8_t col, uint8_t row)
|
||||||
|
{
|
||||||
|
int row_offsets[] = { 0x00, 0x40, 0x14, 0x54 };
|
||||||
|
if ( row > _numlines ) {
|
||||||
|
row = _numlines-1; // we count rows starting w/0
|
||||||
|
}
|
||||||
|
|
||||||
|
command(LCD_SETDDRAMADDR | (col + row_offsets[row]));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Turn the display on/off (quickly)
|
||||||
|
void Adafruit_RGBLCDShield::noDisplay() {
|
||||||
|
_displaycontrol &= ~LCD_DISPLAYON;
|
||||||
|
command(LCD_DISPLAYCONTROL | _displaycontrol);
|
||||||
|
}
|
||||||
|
void Adafruit_RGBLCDShield::display() {
|
||||||
|
_displaycontrol |= LCD_DISPLAYON;
|
||||||
|
command(LCD_DISPLAYCONTROL | _displaycontrol);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Turns the underline cursor on/off
|
||||||
|
void Adafruit_RGBLCDShield::noCursor() {
|
||||||
|
_displaycontrol &= ~LCD_CURSORON;
|
||||||
|
command(LCD_DISPLAYCONTROL | _displaycontrol);
|
||||||
|
}
|
||||||
|
void Adafruit_RGBLCDShield::cursor() {
|
||||||
|
_displaycontrol |= LCD_CURSORON;
|
||||||
|
command(LCD_DISPLAYCONTROL | _displaycontrol);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Turn on and off the blinking cursor
|
||||||
|
void Adafruit_RGBLCDShield::noBlink() {
|
||||||
|
_displaycontrol &= ~LCD_BLINKON;
|
||||||
|
command(LCD_DISPLAYCONTROL | _displaycontrol);
|
||||||
|
}
|
||||||
|
void Adafruit_RGBLCDShield::blink() {
|
||||||
|
_displaycontrol |= LCD_BLINKON;
|
||||||
|
command(LCD_DISPLAYCONTROL | _displaycontrol);
|
||||||
|
}
|
||||||
|
|
||||||
|
// These commands scroll the display without changing the RAM
|
||||||
|
void Adafruit_RGBLCDShield::scrollDisplayLeft(void) {
|
||||||
|
command(LCD_CURSORSHIFT | LCD_DISPLAYMOVE | LCD_MOVELEFT);
|
||||||
|
}
|
||||||
|
void Adafruit_RGBLCDShield::scrollDisplayRight(void) {
|
||||||
|
command(LCD_CURSORSHIFT | LCD_DISPLAYMOVE | LCD_MOVERIGHT);
|
||||||
|
}
|
||||||
|
|
||||||
|
// This is for text that flows Left to Right
|
||||||
|
void Adafruit_RGBLCDShield::leftToRight(void) {
|
||||||
|
_displaymode |= LCD_ENTRYLEFT;
|
||||||
|
command(LCD_ENTRYMODESET | _displaymode);
|
||||||
|
}
|
||||||
|
|
||||||
|
// This is for text that flows Right to Left
|
||||||
|
void Adafruit_RGBLCDShield::rightToLeft(void) {
|
||||||
|
_displaymode &= ~LCD_ENTRYLEFT;
|
||||||
|
command(LCD_ENTRYMODESET | _displaymode);
|
||||||
|
}
|
||||||
|
|
||||||
|
// This will 'right justify' text from the cursor
|
||||||
|
void Adafruit_RGBLCDShield::autoscroll(void) {
|
||||||
|
_displaymode |= LCD_ENTRYSHIFTINCREMENT;
|
||||||
|
command(LCD_ENTRYMODESET | _displaymode);
|
||||||
|
}
|
||||||
|
|
||||||
|
// This will 'left justify' text from the cursor
|
||||||
|
void Adafruit_RGBLCDShield::noAutoscroll(void) {
|
||||||
|
_displaymode &= ~LCD_ENTRYSHIFTINCREMENT;
|
||||||
|
command(LCD_ENTRYMODESET | _displaymode);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Allows us to fill the first 8 CGRAM locations
|
||||||
|
// with custom characters
|
||||||
|
void Adafruit_RGBLCDShield::createChar(uint8_t location, uint8_t charmap[]) {
|
||||||
|
location &= 0x7; // we only have 8 locations 0-7
|
||||||
|
command(LCD_SETCGRAMADDR | (location << 3));
|
||||||
|
for (int i=0; i<8; i++) {
|
||||||
|
write(charmap[i]);
|
||||||
|
}
|
||||||
|
command(LCD_SETDDRAMADDR); // unfortunately resets the location to 0,0
|
||||||
|
}
|
||||||
|
|
||||||
|
/*********** mid level commands, for sending data/cmds */
|
||||||
|
|
||||||
|
inline void Adafruit_RGBLCDShield::command(uint8_t value) {
|
||||||
|
send(value, LOW);
|
||||||
|
}
|
||||||
|
|
||||||
|
#if ARDUINO >= 100
|
||||||
|
inline size_t Adafruit_RGBLCDShield::write(uint8_t value) {
|
||||||
|
send(value, HIGH);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
inline void Adafruit_RGBLCDShield::write(uint8_t value) {
|
||||||
|
send(value, HIGH);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/************ low level data pushing commands **********/
|
||||||
|
|
||||||
|
// little wrapper for i/o writes
|
||||||
|
void Adafruit_RGBLCDShield::_digitalWrite(uint8_t p, uint8_t d) {
|
||||||
|
if (_i2cAddr != 255) {
|
||||||
|
// an i2c command
|
||||||
|
_i2c.digitalWrite(p, d);
|
||||||
|
} else {
|
||||||
|
// straightup IO
|
||||||
|
digitalWrite(p, d);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Allows to set the backlight, if the LCD backpack is used
|
||||||
|
void Adafruit_RGBLCDShield::setBacklight(uint8_t status) {
|
||||||
|
// check if i2c or SPI
|
||||||
|
_i2c.digitalWrite(8, ~(status >> 2) & 0x1);
|
||||||
|
_i2c.digitalWrite(7, ~(status >> 1) & 0x1);
|
||||||
|
_i2c.digitalWrite(6, ~status & 0x1);
|
||||||
|
}
|
||||||
|
|
||||||
|
// little wrapper for i/o directions
|
||||||
|
void Adafruit_RGBLCDShield::_pinMode(uint8_t p, uint8_t d) {
|
||||||
|
if (_i2cAddr != 255) {
|
||||||
|
// an i2c command
|
||||||
|
_i2c.pinMode(p, d);
|
||||||
|
} else {
|
||||||
|
// straightup IO
|
||||||
|
pinMode(p, d);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// write either command or data, with automatic 4/8-bit selection
|
||||||
|
void Adafruit_RGBLCDShield::send(uint8_t value, uint8_t mode) {
|
||||||
|
_digitalWrite(_rs_pin, mode);
|
||||||
|
|
||||||
|
// if there is a RW pin indicated, set it low to Write
|
||||||
|
if (_rw_pin != 255) {
|
||||||
|
_digitalWrite(_rw_pin, LOW);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_displayfunction & LCD_8BITMODE) {
|
||||||
|
write8bits(value);
|
||||||
|
} else {
|
||||||
|
write4bits(value>>4);
|
||||||
|
write4bits(value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Adafruit_RGBLCDShield::pulseEnable(void) {
|
||||||
|
_digitalWrite(_enable_pin, LOW);
|
||||||
|
delayMicroseconds(1);
|
||||||
|
_digitalWrite(_enable_pin, HIGH);
|
||||||
|
delayMicroseconds(1); // enable pulse must be >450ns
|
||||||
|
_digitalWrite(_enable_pin, LOW);
|
||||||
|
delayMicroseconds(100); // commands need > 37us to settle
|
||||||
|
}
|
||||||
|
|
||||||
|
void Adafruit_RGBLCDShield::write4bits(uint8_t value) {
|
||||||
|
if (_i2cAddr != 255) {
|
||||||
|
uint16_t out = 0;
|
||||||
|
|
||||||
|
out = _i2c.readGPIOAB();
|
||||||
|
|
||||||
|
// speed up for i2c since its sluggish
|
||||||
|
for (int i = 0; i < 4; i++) {
|
||||||
|
out &= ~_BV(_data_pins[i]);
|
||||||
|
out |= ((value >> i) & 0x1) << _data_pins[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
// make sure enable is low
|
||||||
|
out &= ~ _BV(_enable_pin);
|
||||||
|
|
||||||
|
_i2c.writeGPIOAB(out);
|
||||||
|
|
||||||
|
// pulse enable
|
||||||
|
delayMicroseconds(1);
|
||||||
|
out |= _BV(_enable_pin);
|
||||||
|
_i2c.writeGPIOAB(out);
|
||||||
|
delayMicroseconds(1);
|
||||||
|
out &= ~_BV(_enable_pin);
|
||||||
|
_i2c.writeGPIOAB(out);
|
||||||
|
delayMicroseconds(100);
|
||||||
|
|
||||||
|
} else {
|
||||||
|
for (int i = 0; i < 4; i++) {
|
||||||
|
_pinMode(_data_pins[i], OUTPUT);
|
||||||
|
_digitalWrite(_data_pins[i], (value >> i) & 0x01);
|
||||||
|
}
|
||||||
|
pulseEnable();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Adafruit_RGBLCDShield::write8bits(uint8_t value) {
|
||||||
|
for (int i = 0; i < 8; i++) {
|
||||||
|
_pinMode(_data_pins[i], OUTPUT);
|
||||||
|
_digitalWrite(_data_pins[i], (value >> i) & 0x01);
|
||||||
|
}
|
||||||
|
|
||||||
|
pulseEnable();
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t Adafruit_RGBLCDShield::readButtons(void) {
|
||||||
|
uint8_t reply = 0x1F;
|
||||||
|
|
||||||
|
for (uint8_t i=0; i<5; i++) {
|
||||||
|
reply &= ~((_i2c.digitalRead(_button_pins[i])) << i);
|
||||||
|
}
|
||||||
|
return reply;
|
||||||
|
}
|
132
libraries/Adafruit_RGBLCDShield/Adafruit_RGBLCDShield.h
Executable file
132
libraries/Adafruit_RGBLCDShield/Adafruit_RGBLCDShield.h
Executable file
|
@ -0,0 +1,132 @@
|
||||||
|
/***************************************************
|
||||||
|
This is a library for the Adafruit RGB 16x2 LCD Shield
|
||||||
|
Pick one up at the Adafruit shop!
|
||||||
|
---------> http://http://www.adafruit.com/products/714
|
||||||
|
|
||||||
|
The shield uses I2C to communicate, 2 pins are required to
|
||||||
|
interface
|
||||||
|
Adafruit invests time and resources providing this open source code,
|
||||||
|
please support Adafruit and open-source hardware by purchasing
|
||||||
|
products from Adafruit!
|
||||||
|
|
||||||
|
Written by Limor Fried/Ladyada for Adafruit Industries.
|
||||||
|
BSD license, all text above must be included in any redistribution
|
||||||
|
****************************************************/
|
||||||
|
|
||||||
|
#ifndef Adafruit_RGBLCDShield_h
|
||||||
|
#define Adafruit_RGBLCDShield_h
|
||||||
|
|
||||||
|
#include <inttypes.h>
|
||||||
|
#include "Print.h"
|
||||||
|
#include <Adafruit_MCP23017.h>
|
||||||
|
|
||||||
|
// commands
|
||||||
|
#define LCD_CLEARDISPLAY 0x01
|
||||||
|
#define LCD_RETURNHOME 0x02
|
||||||
|
#define LCD_ENTRYMODESET 0x04
|
||||||
|
#define LCD_DISPLAYCONTROL 0x08
|
||||||
|
#define LCD_CURSORSHIFT 0x10
|
||||||
|
#define LCD_FUNCTIONSET 0x20
|
||||||
|
#define LCD_SETCGRAMADDR 0x40
|
||||||
|
#define LCD_SETDDRAMADDR 0x80
|
||||||
|
|
||||||
|
// flags for display entry mode
|
||||||
|
#define LCD_ENTRYRIGHT 0x00
|
||||||
|
#define LCD_ENTRYLEFT 0x02
|
||||||
|
#define LCD_ENTRYSHIFTINCREMENT 0x01
|
||||||
|
#define LCD_ENTRYSHIFTDECREMENT 0x00
|
||||||
|
|
||||||
|
// flags for display on/off control
|
||||||
|
#define LCD_DISPLAYON 0x04
|
||||||
|
#define LCD_DISPLAYOFF 0x00
|
||||||
|
#define LCD_CURSORON 0x02
|
||||||
|
#define LCD_CURSOROFF 0x00
|
||||||
|
#define LCD_BLINKON 0x01
|
||||||
|
#define LCD_BLINKOFF 0x00
|
||||||
|
|
||||||
|
// flags for display/cursor shift
|
||||||
|
#define LCD_DISPLAYMOVE 0x08
|
||||||
|
#define LCD_CURSORMOVE 0x00
|
||||||
|
#define LCD_MOVERIGHT 0x04
|
||||||
|
#define LCD_MOVELEFT 0x00
|
||||||
|
|
||||||
|
// flags for function set
|
||||||
|
#define LCD_8BITMODE 0x10
|
||||||
|
#define LCD_4BITMODE 0x00
|
||||||
|
#define LCD_2LINE 0x08
|
||||||
|
#define LCD_1LINE 0x00
|
||||||
|
#define LCD_5x10DOTS 0x04
|
||||||
|
#define LCD_5x8DOTS 0x00
|
||||||
|
|
||||||
|
#define BUTTON_UP 0x08
|
||||||
|
#define BUTTON_DOWN 0x04
|
||||||
|
#define BUTTON_LEFT 0x10
|
||||||
|
#define BUTTON_RIGHT 0x02
|
||||||
|
#define BUTTON_SELECT 0x01
|
||||||
|
|
||||||
|
|
||||||
|
class Adafruit_RGBLCDShield : public Print {
|
||||||
|
public:
|
||||||
|
Adafruit_RGBLCDShield();
|
||||||
|
|
||||||
|
void init(uint8_t fourbitmode, uint8_t rs, uint8_t rw, uint8_t enable,
|
||||||
|
uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3,
|
||||||
|
uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7);
|
||||||
|
|
||||||
|
void begin(uint8_t cols, uint8_t rows, uint8_t charsize = LCD_5x8DOTS);
|
||||||
|
|
||||||
|
void clear();
|
||||||
|
void home();
|
||||||
|
|
||||||
|
void noDisplay();
|
||||||
|
void display();
|
||||||
|
void noBlink();
|
||||||
|
void blink();
|
||||||
|
void noCursor();
|
||||||
|
void cursor();
|
||||||
|
void scrollDisplayLeft();
|
||||||
|
void scrollDisplayRight();
|
||||||
|
void leftToRight();
|
||||||
|
void rightToLeft();
|
||||||
|
void autoscroll();
|
||||||
|
void noAutoscroll();
|
||||||
|
|
||||||
|
// only if using backpack
|
||||||
|
void setBacklight(uint8_t status);
|
||||||
|
|
||||||
|
void createChar(uint8_t, uint8_t[]);
|
||||||
|
void setCursor(uint8_t, uint8_t);
|
||||||
|
#if ARDUINO >= 100
|
||||||
|
virtual size_t write(uint8_t);
|
||||||
|
#else
|
||||||
|
virtual void write(uint8_t);
|
||||||
|
#endif
|
||||||
|
void command(uint8_t);
|
||||||
|
uint8_t readButtons();
|
||||||
|
|
||||||
|
private:
|
||||||
|
void send(uint8_t, uint8_t);
|
||||||
|
void write4bits(uint8_t);
|
||||||
|
void write8bits(uint8_t);
|
||||||
|
void pulseEnable();
|
||||||
|
void _digitalWrite(uint8_t, uint8_t);
|
||||||
|
void _pinMode(uint8_t, uint8_t);
|
||||||
|
|
||||||
|
uint8_t _rs_pin; // LOW: command. HIGH: character.
|
||||||
|
uint8_t _rw_pin; // LOW: write to LCD. HIGH: read from LCD.
|
||||||
|
uint8_t _enable_pin; // activated by a HIGH pulse.
|
||||||
|
uint8_t _data_pins[8];
|
||||||
|
uint8_t _button_pins[5];
|
||||||
|
uint8_t _displayfunction;
|
||||||
|
uint8_t _displaycontrol;
|
||||||
|
uint8_t _displaymode;
|
||||||
|
|
||||||
|
uint8_t _initialized;
|
||||||
|
|
||||||
|
uint8_t _numlines,_currline;
|
||||||
|
|
||||||
|
uint8_t _i2cAddr;
|
||||||
|
Adafruit_MCP23017 _i2c;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
137
libraries/BasicTerm/BasicTerm.cpp
Executable file
137
libraries/BasicTerm/BasicTerm.cpp
Executable file
|
@ -0,0 +1,137 @@
|
||||||
|
/*
|
||||||
|
* BasicTerm.cpp
|
||||||
|
* Provides basic ANSI/VT220 terminal control over a serial interface
|
||||||
|
* Copyright 2011 Trannie Carter <borys@nottwo.org>
|
||||||
|
* Licensed for use under the terms of the GNU Lesser General Public License v3
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "BasicTerm.h"
|
||||||
|
|
||||||
|
BasicTerm::BasicTerm(Stream *ser) {
|
||||||
|
serial = ser;
|
||||||
|
}
|
||||||
|
|
||||||
|
int BasicTerm::available(void) {
|
||||||
|
return serial->available();
|
||||||
|
}
|
||||||
|
|
||||||
|
int BasicTerm::peek(void) {
|
||||||
|
return serial->peek();
|
||||||
|
}
|
||||||
|
|
||||||
|
int BasicTerm::read(void) {
|
||||||
|
return serial->read();
|
||||||
|
}
|
||||||
|
|
||||||
|
void BasicTerm::flush(void) {
|
||||||
|
serial->flush();
|
||||||
|
}
|
||||||
|
|
||||||
|
size_t BasicTerm::write(uint8_t c) {
|
||||||
|
return serial->write(c);
|
||||||
|
}
|
||||||
|
|
||||||
|
void BasicTerm::init(void) {
|
||||||
|
serial->print(F("\x1b\x63"));
|
||||||
|
}
|
||||||
|
|
||||||
|
void BasicTerm::cls(void) {
|
||||||
|
serial->print(F("\x1b[2J"));
|
||||||
|
}
|
||||||
|
|
||||||
|
void BasicTerm::position(uint8_t row, uint8_t col) {
|
||||||
|
serial->print(F("\x1b["));
|
||||||
|
serial->print((uint8_t)row + 1);
|
||||||
|
serial->print(F(";"));
|
||||||
|
serial->print((uint8_t)col + 1);
|
||||||
|
serial->print(F("H"));
|
||||||
|
}
|
||||||
|
|
||||||
|
void BasicTerm::show_cursor(boolean show) {
|
||||||
|
if(show) {
|
||||||
|
serial->print(F("\x1b[?25h"));
|
||||||
|
} else {
|
||||||
|
serial->print(F("\x1b[?25l"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int16_t BasicTerm::get_key(void) {
|
||||||
|
int16_t key;
|
||||||
|
uint16_t when;
|
||||||
|
|
||||||
|
key = serial->read();
|
||||||
|
|
||||||
|
if(key == 0x1b) { /* escape sequence */
|
||||||
|
when = millis();
|
||||||
|
while(serial->available() < 2) {
|
||||||
|
if(((uint16_t) millis() - when) > 1000) {
|
||||||
|
return key;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
key = serial->read();
|
||||||
|
|
||||||
|
switch(key) {
|
||||||
|
case '[':
|
||||||
|
key = serial->read();
|
||||||
|
switch(key) {
|
||||||
|
case 'A':
|
||||||
|
return BT_KEY_UP;
|
||||||
|
case 'B':
|
||||||
|
return BT_KEY_DOWN;
|
||||||
|
case 'C':
|
||||||
|
return BT_KEY_RIGHT;
|
||||||
|
case 'D':
|
||||||
|
return BT_KEY_LEFT;
|
||||||
|
default:
|
||||||
|
return key;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 'O':
|
||||||
|
key = serial->read();
|
||||||
|
switch(key) {
|
||||||
|
case 'P':
|
||||||
|
return BT_KEY_F(1);
|
||||||
|
case 'Q':
|
||||||
|
return BT_KEY_F(2);
|
||||||
|
case 'R':
|
||||||
|
return BT_KEY_F(3);
|
||||||
|
case 'S':
|
||||||
|
return BT_KEY_F(4);
|
||||||
|
default:
|
||||||
|
return key;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
return key;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return key;
|
||||||
|
}
|
||||||
|
|
||||||
|
void BasicTerm::set_attribute(uint8_t attr) {
|
||||||
|
if(attr & BT_REVERSE) {
|
||||||
|
serial->print(F("\x1b[7m"));
|
||||||
|
}
|
||||||
|
if(attr & BT_UNDERLINE) {
|
||||||
|
serial->print(F("\x1b[4m"));
|
||||||
|
}
|
||||||
|
if(attr & BT_BOLD) {
|
||||||
|
serial->print(F("\x1b[1m"));
|
||||||
|
}
|
||||||
|
if(attr & BT_BLINK) {
|
||||||
|
serial->print(F("\x1b[5m"));
|
||||||
|
}
|
||||||
|
if(attr == BT_NORMAL) {
|
||||||
|
serial->print(F("\x1b[0m"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void BasicTerm::set_color(uint8_t fg, uint8_t bg) {
|
||||||
|
serial->print(F("\x1b["));
|
||||||
|
serial->print(30 + fg);
|
||||||
|
serial->print(";");
|
||||||
|
serial->print(40 + bg);
|
||||||
|
serial->print("m");
|
||||||
|
}
|
60
libraries/BasicTerm/BasicTerm.h
Executable file
60
libraries/BasicTerm/BasicTerm.h
Executable file
|
@ -0,0 +1,60 @@
|
||||||
|
/*
|
||||||
|
* BasicTerm.h
|
||||||
|
* Provides basic ANSI/VT220 terminal control over a serial interface
|
||||||
|
* Copyright 2011 Trannie Carter <borys@nottwo.org>
|
||||||
|
* Licensed for use under the terms of the GNU Lesser General Public License v3
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef BASICTERM_H
|
||||||
|
#define BASICTERM_H
|
||||||
|
|
||||||
|
#include <Arduino.h>
|
||||||
|
|
||||||
|
class BasicTerm : public Stream {
|
||||||
|
|
||||||
|
#define BT_NORMAL 0
|
||||||
|
#define BT_BOLD 1
|
||||||
|
#define BT_UNDERLINE 2
|
||||||
|
#define BT_BLINK 4
|
||||||
|
#define BT_REVERSE 8
|
||||||
|
|
||||||
|
#define BT_BLACK 0
|
||||||
|
#define BT_RED 1
|
||||||
|
#define BT_GREEN 2
|
||||||
|
#define BT_YELLOW 3
|
||||||
|
#define BT_BLUE 4
|
||||||
|
#define BT_MAGENTA 5
|
||||||
|
#define BT_CYAN 6
|
||||||
|
#define BT_WHITE 7
|
||||||
|
|
||||||
|
#define BT_KEY_UNKNOWN 0401
|
||||||
|
#define BT_KEY_DOWN 0402
|
||||||
|
#define BT_KEY_UP 0403
|
||||||
|
#define BT_KEY_LEFT 0404
|
||||||
|
#define BT_KEY_RIGHT 0405
|
||||||
|
#define BT_KEY_F0 0410
|
||||||
|
#define BT_KEY_F(n) (BT_KEY_F0 + (n))
|
||||||
|
|
||||||
|
private:
|
||||||
|
Stream *serial;
|
||||||
|
|
||||||
|
public:
|
||||||
|
BasicTerm(Stream *);
|
||||||
|
void init(void);
|
||||||
|
void cls(void);
|
||||||
|
void position(uint8_t, uint8_t);
|
||||||
|
void show_cursor(boolean);
|
||||||
|
void set_attribute(uint8_t);
|
||||||
|
void set_color(uint8_t, uint8_t);
|
||||||
|
int16_t get_key(void);
|
||||||
|
|
||||||
|
virtual int available(void);
|
||||||
|
virtual int peek(void);
|
||||||
|
virtual int read(void);
|
||||||
|
virtual void flush(void);
|
||||||
|
virtual size_t write(uint8_t);
|
||||||
|
|
||||||
|
using Print::write;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
84
libraries/E24C1024/E24C1024.cpp
Executable file
84
libraries/E24C1024/E24C1024.cpp
Executable file
|
@ -0,0 +1,84 @@
|
||||||
|
/*
|
||||||
|
E24C1024.cpp
|
||||||
|
AT24C1024 Library for Arduino
|
||||||
|
|
||||||
|
This library is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the GNU Lesser General Public
|
||||||
|
License as published by the Free Software Foundation; either
|
||||||
|
version 2.1 of the License, or (at your option) any later version.
|
||||||
|
|
||||||
|
This library is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
Lesser General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Lesser General Public
|
||||||
|
License along with this library; if not, write to the Free Software
|
||||||
|
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 US
|
||||||
|
|
||||||
|
This library is based on several projects:
|
||||||
|
|
||||||
|
The Arduino EEPROM library found here:
|
||||||
|
http://arduino.cc/en/Reference/EEPROM
|
||||||
|
|
||||||
|
The 24C256 library found here:
|
||||||
|
http://www.arduino.cc/playground/Code/I2CEEPROM
|
||||||
|
|
||||||
|
The 24C512 library found here:
|
||||||
|
http://www.arduino.cc/playground/Code/I2CEEPROM24LC512
|
||||||
|
|
||||||
|
Our project page is here:
|
||||||
|
http://www.arduino.cc/playground/Code/I2CEEPROM24C1024
|
||||||
|
|
||||||
|
From the datasheet:
|
||||||
|
|
||||||
|
The AT24C1024B provides 1,048,576 bits of serial electrically
|
||||||
|
erasable and programmable read only memory (EEPROM) organized
|
||||||
|
as 131,072 words of 8 bits each. The device’s cascadable
|
||||||
|
feature allows up to four devices to share a common two-wire
|
||||||
|
bus.
|
||||||
|
|
||||||
|
http://www.atmel.com/dyn/resources/prod_documents/doc5194.pdf
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Note: This is written for Arduino versions before 1.0. If you are using Arduino 1.0 and above
|
||||||
|
// then you need to change Wire.Send to Wire.write and Wire.receive to Wire.read
|
||||||
|
|
||||||
|
#if defined(ARDUINO) && ARDUINO >= 100
|
||||||
|
#include "Arduino.h"
|
||||||
|
#else
|
||||||
|
#include "WProgram.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <Wire.h>
|
||||||
|
#include "E24C1024.h"
|
||||||
|
|
||||||
|
E24C1024::E24C1024(void)
|
||||||
|
{
|
||||||
|
Wire.begin();
|
||||||
|
}
|
||||||
|
|
||||||
|
void E24C1024::write(unsigned long dataAddress, uint8_t data)
|
||||||
|
{
|
||||||
|
Wire.beginTransmission((uint8_t)((0x500000 | dataAddress) >> 16)); // B1010xxx
|
||||||
|
Wire.write((uint8_t)((dataAddress & WORD_MASK) >> 8)); // MSB
|
||||||
|
Wire.write((uint8_t)(dataAddress & 0xFF)); // LSB
|
||||||
|
Wire.write(data);
|
||||||
|
Wire.endTransmission();
|
||||||
|
delay(5);
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t E24C1024::read(unsigned long dataAddress)
|
||||||
|
{
|
||||||
|
uint8_t data = 0x00;
|
||||||
|
Wire.beginTransmission((uint8_t)((0x500000 | dataAddress) >> 16)); // B1010xxx
|
||||||
|
Wire.write((uint8_t)((dataAddress & WORD_MASK) >> 8)); // MSB
|
||||||
|
Wire.write((uint8_t)(dataAddress & 0xFF)); // LSB
|
||||||
|
Wire.endTransmission();
|
||||||
|
Wire.requestFrom(0x50,1);
|
||||||
|
if (Wire.available()) data = Wire.read();
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
|
||||||
|
E24C1024 EEPROM1024;
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user