mirror of
https://github.com/JasonYANG170/Flowerpot.git
synced 2024-11-23 12:06:35 +00:00
add FlowerpotOS3.1
This commit is contained in:
parent
c9f0773562
commit
0e85ccceb1
339
FlowerpotOS2.0/LICENSE
Normal file
339
FlowerpotOS2.0/LICENSE
Normal file
|
@ -0,0 +1,339 @@
|
||||||
|
GNU GENERAL PUBLIC LICENSE
|
||||||
|
Version 2, June 1991
|
||||||
|
|
||||||
|
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
|
||||||
|
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
Everyone is permitted to copy and distribute verbatim copies
|
||||||
|
of this license document, but changing it is not allowed.
|
||||||
|
|
||||||
|
Preamble
|
||||||
|
|
||||||
|
The licenses for most software are designed to take away your
|
||||||
|
freedom to share and change it. By contrast, the GNU General Public
|
||||||
|
License is intended to guarantee your freedom to share and change free
|
||||||
|
software--to make sure the software is free for all its users. This
|
||||||
|
General Public License applies to most of the Free Software
|
||||||
|
Foundation's software and to any other program whose authors commit to
|
||||||
|
using it. (Some other Free Software Foundation software is covered by
|
||||||
|
the GNU Lesser General Public License instead.) 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
|
||||||
|
this service 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 make restrictions that forbid
|
||||||
|
anyone to deny you these rights or to ask you to surrender the rights.
|
||||||
|
These restrictions translate to certain responsibilities for you if you
|
||||||
|
distribute copies of the software, or if you modify it.
|
||||||
|
|
||||||
|
For example, if you distribute copies of such a program, whether
|
||||||
|
gratis or for a fee, you must give the recipients all the rights that
|
||||||
|
you have. 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.
|
||||||
|
|
||||||
|
We protect your rights with two steps: (1) copyright the software, and
|
||||||
|
(2) offer you this license which gives you legal permission to copy,
|
||||||
|
distribute and/or modify the software.
|
||||||
|
|
||||||
|
Also, for each author's protection and ours, we want to make certain
|
||||||
|
that everyone understands that there is no warranty for this free
|
||||||
|
software. If the software is modified by someone else and passed on, we
|
||||||
|
want its recipients to know that what they have is not the original, so
|
||||||
|
that any problems introduced by others will not reflect on the original
|
||||||
|
authors' reputations.
|
||||||
|
|
||||||
|
Finally, any free program is threatened constantly by software
|
||||||
|
patents. We wish to avoid the danger that redistributors of a free
|
||||||
|
program will individually obtain patent licenses, in effect making the
|
||||||
|
program proprietary. To prevent this, we have made it clear that any
|
||||||
|
patent must be licensed for everyone's free use or not licensed at all.
|
||||||
|
|
||||||
|
The precise terms and conditions for copying, distribution and
|
||||||
|
modification follow.
|
||||||
|
|
||||||
|
GNU GENERAL PUBLIC LICENSE
|
||||||
|
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||||
|
|
||||||
|
0. This License applies to any program or other work which contains
|
||||||
|
a notice placed by the copyright holder saying it may be distributed
|
||||||
|
under the terms of this General Public License. The "Program", below,
|
||||||
|
refers to any such program or work, and a "work based on the Program"
|
||||||
|
means either the Program or any derivative work under copyright law:
|
||||||
|
that is to say, a work containing the Program or a portion of it,
|
||||||
|
either verbatim or with modifications and/or translated into another
|
||||||
|
language. (Hereinafter, translation is included without limitation in
|
||||||
|
the term "modification".) Each licensee is addressed as "you".
|
||||||
|
|
||||||
|
Activities other than copying, distribution and modification are not
|
||||||
|
covered by this License; they are outside its scope. The act of
|
||||||
|
running the Program is not restricted, and the output from the Program
|
||||||
|
is covered only if its contents constitute a work based on the
|
||||||
|
Program (independent of having been made by running the Program).
|
||||||
|
Whether that is true depends on what the Program does.
|
||||||
|
|
||||||
|
1. You may copy and distribute 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 and disclaimer of warranty; keep intact all the
|
||||||
|
notices that refer to this License and to the absence of any warranty;
|
||||||
|
and give any other recipients of the Program a copy of this License
|
||||||
|
along with the Program.
|
||||||
|
|
||||||
|
You may charge a fee for the physical act of transferring a copy, and
|
||||||
|
you may at your option offer warranty protection in exchange for a fee.
|
||||||
|
|
||||||
|
2. You may modify your copy or copies of the Program or any portion
|
||||||
|
of it, thus forming a work based on the Program, and copy and
|
||||||
|
distribute such modifications or work under the terms of Section 1
|
||||||
|
above, provided that you also meet all of these conditions:
|
||||||
|
|
||||||
|
a) You must cause the modified files to carry prominent notices
|
||||||
|
stating that you changed the files and the date of any change.
|
||||||
|
|
||||||
|
b) You must cause any work that you distribute or publish, that in
|
||||||
|
whole or in part contains or is derived from the Program or any
|
||||||
|
part thereof, to be licensed as a whole at no charge to all third
|
||||||
|
parties under the terms of this License.
|
||||||
|
|
||||||
|
c) If the modified program normally reads commands interactively
|
||||||
|
when run, you must cause it, when started running for such
|
||||||
|
interactive use in the most ordinary way, to print or display an
|
||||||
|
announcement including an appropriate copyright notice and a
|
||||||
|
notice that there is no warranty (or else, saying that you provide
|
||||||
|
a warranty) and that users may redistribute the program under
|
||||||
|
these conditions, and telling the user how to view a copy of this
|
||||||
|
License. (Exception: if the Program itself is interactive but
|
||||||
|
does not normally print such an announcement, your work based on
|
||||||
|
the Program is not required to print an announcement.)
|
||||||
|
|
||||||
|
These requirements apply to the modified work as a whole. If
|
||||||
|
identifiable sections of that work are not derived from the Program,
|
||||||
|
and can be reasonably considered independent and separate works in
|
||||||
|
themselves, then this License, and its terms, do not apply to those
|
||||||
|
sections when you distribute them as separate works. But when you
|
||||||
|
distribute the same sections as part of a whole which is a work based
|
||||||
|
on the Program, the distribution of the whole must be on the terms of
|
||||||
|
this License, whose permissions for other licensees extend to the
|
||||||
|
entire whole, and thus to each and every part regardless of who wrote it.
|
||||||
|
|
||||||
|
Thus, it is not the intent of this section to claim rights or contest
|
||||||
|
your rights to work written entirely by you; rather, the intent is to
|
||||||
|
exercise the right to control the distribution of derivative or
|
||||||
|
collective works based on the Program.
|
||||||
|
|
||||||
|
In addition, mere aggregation of another work not based on the Program
|
||||||
|
with the Program (or with a work based on the Program) on a volume of
|
||||||
|
a storage or distribution medium does not bring the other work under
|
||||||
|
the scope of this License.
|
||||||
|
|
||||||
|
3. You may copy and distribute the Program (or a work based on it,
|
||||||
|
under Section 2) in object code or executable form under the terms of
|
||||||
|
Sections 1 and 2 above provided that you also do one of the following:
|
||||||
|
|
||||||
|
a) Accompany it with the complete corresponding machine-readable
|
||||||
|
source code, which must be distributed under the terms of Sections
|
||||||
|
1 and 2 above on a medium customarily used for software interchange; or,
|
||||||
|
|
||||||
|
b) Accompany it with a written offer, valid for at least three
|
||||||
|
years, to give any third party, for a charge no more than your
|
||||||
|
cost of physically performing source distribution, a complete
|
||||||
|
machine-readable copy of the corresponding source code, to be
|
||||||
|
distributed under the terms of Sections 1 and 2 above on a medium
|
||||||
|
customarily used for software interchange; or,
|
||||||
|
|
||||||
|
c) Accompany it with the information you received as to the offer
|
||||||
|
to distribute corresponding source code. (This alternative is
|
||||||
|
allowed only for noncommercial distribution and only if you
|
||||||
|
received the program in object code or executable form with such
|
||||||
|
an offer, in accord with Subsection b above.)
|
||||||
|
|
||||||
|
The source code for a work means the preferred form of the work for
|
||||||
|
making modifications to it. For an executable work, complete source
|
||||||
|
code means all the source code for all modules it contains, plus any
|
||||||
|
associated interface definition files, plus the scripts used to
|
||||||
|
control compilation and installation of the executable. However, as a
|
||||||
|
special exception, the source code distributed need not include
|
||||||
|
anything that is normally distributed (in either source or binary
|
||||||
|
form) with the major components (compiler, kernel, and so on) of the
|
||||||
|
operating system on which the executable runs, unless that component
|
||||||
|
itself accompanies the executable.
|
||||||
|
|
||||||
|
If distribution of executable or object code is made by offering
|
||||||
|
access to copy from a designated place, then offering equivalent
|
||||||
|
access to copy the source code from the same place counts as
|
||||||
|
distribution of the source code, even though third parties are not
|
||||||
|
compelled to copy the source along with the object code.
|
||||||
|
|
||||||
|
4. You may not copy, modify, sublicense, or distribute the Program
|
||||||
|
except as expressly provided under this License. Any attempt
|
||||||
|
otherwise to copy, modify, sublicense or distribute the Program is
|
||||||
|
void, and will automatically terminate your rights under this License.
|
||||||
|
However, parties who have received copies, or rights, from you under
|
||||||
|
this License will not have their licenses terminated so long as such
|
||||||
|
parties remain in full compliance.
|
||||||
|
|
||||||
|
5. You are not required to accept this License, since you have not
|
||||||
|
signed it. However, nothing else grants you permission to modify or
|
||||||
|
distribute the Program or its derivative works. These actions are
|
||||||
|
prohibited by law if you do not accept this License. Therefore, by
|
||||||
|
modifying or distributing the Program (or any work based on the
|
||||||
|
Program), you indicate your acceptance of this License to do so, and
|
||||||
|
all its terms and conditions for copying, distributing or modifying
|
||||||
|
the Program or works based on it.
|
||||||
|
|
||||||
|
6. Each time you redistribute the Program (or any work based on the
|
||||||
|
Program), the recipient automatically receives a license from the
|
||||||
|
original licensor to copy, distribute or modify the Program subject to
|
||||||
|
these terms and conditions. You may not impose any further
|
||||||
|
restrictions on the recipients' exercise of the rights granted herein.
|
||||||
|
You are not responsible for enforcing compliance by third parties to
|
||||||
|
this License.
|
||||||
|
|
||||||
|
7. If, as a consequence of a court judgment or allegation of patent
|
||||||
|
infringement or for any other reason (not limited to patent issues),
|
||||||
|
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
|
||||||
|
distribute so as to satisfy simultaneously your obligations under this
|
||||||
|
License and any other pertinent obligations, then as a consequence you
|
||||||
|
may not distribute the Program at all. For example, if a patent
|
||||||
|
license would not permit royalty-free redistribution of the Program by
|
||||||
|
all those who receive copies directly or indirectly through you, then
|
||||||
|
the only way you could satisfy both it and this License would be to
|
||||||
|
refrain entirely from distribution of the Program.
|
||||||
|
|
||||||
|
If any portion of this section is held invalid or unenforceable under
|
||||||
|
any particular circumstance, the balance of the section is intended to
|
||||||
|
apply and the section as a whole is intended to apply in other
|
||||||
|
circumstances.
|
||||||
|
|
||||||
|
It is not the purpose of this section to induce you to infringe any
|
||||||
|
patents or other property right claims or to contest validity of any
|
||||||
|
such claims; this section has the sole purpose of protecting the
|
||||||
|
integrity of the free software distribution system, which is
|
||||||
|
implemented by public license practices. Many people have made
|
||||||
|
generous contributions to the wide range of software distributed
|
||||||
|
through that system in reliance on consistent application of that
|
||||||
|
system; it is up to the author/donor to decide if he or she is willing
|
||||||
|
to distribute software through any other system and a licensee cannot
|
||||||
|
impose that choice.
|
||||||
|
|
||||||
|
This section is intended to make thoroughly clear what is believed to
|
||||||
|
be a consequence of the rest of this License.
|
||||||
|
|
||||||
|
8. If the distribution and/or use of the Program is restricted in
|
||||||
|
certain countries either by patents or by copyrighted interfaces, the
|
||||||
|
original copyright holder who places the Program under this License
|
||||||
|
may add an explicit geographical distribution limitation excluding
|
||||||
|
those countries, so that distribution is permitted only in or among
|
||||||
|
countries not thus excluded. In such case, this License incorporates
|
||||||
|
the limitation as if written in the body of this License.
|
||||||
|
|
||||||
|
9. The Free Software Foundation may publish revised and/or new versions
|
||||||
|
of the 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 a version number of this License which applies to it and "any
|
||||||
|
later version", you have the option of following the terms and conditions
|
||||||
|
either of that version or of any later version published by the Free
|
||||||
|
Software Foundation. If the Program does not specify a version number of
|
||||||
|
this License, you may choose any version ever published by the Free Software
|
||||||
|
Foundation.
|
||||||
|
|
||||||
|
10. If you wish to incorporate parts of the Program into other free
|
||||||
|
programs whose distribution conditions are different, write to the author
|
||||||
|
to ask for permission. For software which is copyrighted by the Free
|
||||||
|
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||||
|
make exceptions for this. Our decision will be guided by the two goals
|
||||||
|
of preserving the free status of all derivatives of our free software and
|
||||||
|
of promoting the sharing and reuse of software generally.
|
||||||
|
|
||||||
|
NO WARRANTY
|
||||||
|
|
||||||
|
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, 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.
|
||||||
|
|
||||||
|
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||||
|
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||||
|
REDISTRIBUTE 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.
|
||||||
|
|
||||||
|
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
|
||||||
|
convey 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 2 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, write to the Free Software Foundation, Inc.,
|
||||||
|
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||||
|
|
||||||
|
Also add information on how to contact you by electronic and paper mail.
|
||||||
|
|
||||||
|
If the program is interactive, make it output a short notice like this
|
||||||
|
when it starts in an interactive mode:
|
||||||
|
|
||||||
|
Gnomovision version 69, Copyright (C) year name of author
|
||||||
|
Gnomovision 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, the commands you use may
|
||||||
|
be called something other than `show w' and `show c'; they could even be
|
||||||
|
mouse-clicks or menu items--whatever suits your program.
|
||||||
|
|
||||||
|
You should also get your employer (if you work as a programmer) or your
|
||||||
|
school, if any, to sign a "copyright disclaimer" for the program, if
|
||||||
|
necessary. Here is a sample; alter the names:
|
||||||
|
|
||||||
|
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
||||||
|
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
||||||
|
|
||||||
|
<signature of Ty Coon>, 1 April 1989
|
||||||
|
Ty Coon, President of Vice
|
||||||
|
|
||||||
|
This 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.
|
58
FlowerpotOS2.0/README.md
Normal file
58
FlowerpotOS2.0/README.md
Normal file
|
@ -0,0 +1,58 @@
|
||||||
|
<div align="center">
|
||||||
|
<h1> Flowerpot交互花盆</h1>
|
||||||
|
<img src="https://img.shields.io/github/license/JasonYANG170/Flowerpot?style=for-the-badge">
|
||||||
|
<img src="https://img.shields.io/github/commit-activity/w/JasonYANG170/Flowerpot?style=for-the-badge">
|
||||||
|
<img src="https://img.shields.io/github/languages/count/JasonYANG170/Flowerpot?logo=cplusplus&style=for-the-badge">
|
||||||
|
<br>
|
||||||
|
<a href="https://discord.com/invite/az3ceRmgVe"><img alt="Discord" src="https://img.shields.io/discord/978108215499816980?style=social&logo=discord&label=echosec"></a>
|
||||||
|
<br>
|
||||||
|
<img src="https://github.com/JasonYANG170/Flowerpot/assets/39414350/fb4f4e7e-ed8a-4745-9fe7-4c52a4537b50">
|
||||||
|
<br>
|
||||||
|
这是一项基于C++语言,以ESP8266为核心处理器开发的Arduino物联网项目
|
||||||
|
|
||||||
|
<br>
|
||||||
|
本项目开源版本为Core版本,请遵守GPL2.0开源许可协议
|
||||||
|
</div>
|
||||||
|
|
||||||
|
## 演示视频
|
||||||
|
[哔哩哔哩](https://www.bilibili.com/video/BV1LCTFeuEKt/)
|
||||||
|
## 本项目接入万物互联IOT
|
||||||
|
电脑端:https://github.com/JasonYANG170/IOTConnect-PC
|
||||||
|
|
||||||
|
|
||||||
|
手机端:https://github.com/JasonYANG170/IOTConnect-Android
|
||||||
|
|
||||||
|
|
||||||
|
Web端:https://github.com/JasonYANG170/IOTConnect-Web
|
||||||
|
|
||||||
|
## 功能
|
||||||
|
- [x] 拟人表情
|
||||||
|
- [x] ChatGPT文字交互模型
|
||||||
|
- [x] OpenCV深度视觉识别算法
|
||||||
|
- [x] 客户端远控Android/Windows
|
||||||
|
- [x] 土壤加温
|
||||||
|
- [x] 无线充电
|
||||||
|
- [x] 蓄电池充电
|
||||||
|
- [x] 电量显示
|
||||||
|
- [x] 自动浇水
|
||||||
|
- [x] 支持mqtt服务器收发
|
||||||
|
- [x] 支持OTA技术
|
||||||
|
- [ ] 每日报告
|
||||||
|
- [ ] 模块插件
|
||||||
|
## 迭代说明
|
||||||
|
**2023年3月**,打造了我们第一个产品Flowerpot节水净水花盆,该花盆主要面向于年轻用户群体,搭载了我们首个特点“拟人表情显示技术”,通过采集植物生长数据结合云端AI模型生成拟人表情。同时我们购入3D打印设备制作初代产品的外壳。
|
||||||
|
|
||||||
|
**5月**,我们认为初代产品存在电路结构混乱,外观设计笨重,美观度较差等问题,于是我们重新对其外观进行设计,以及使用PCB设计软件完成了我们产品的PCB集成电路布局。
|
||||||
|
|
||||||
|
**7月**,我们通过个人渠道发布了产品问卷调查,调查反馈市场兴趣较大,于是我们对产品的源码进行重构,并为初代产品源码颁发GPL2.0开源许可协议,同时在GitHub开源平台开放初代产品源码。
|
||||||
|
|
||||||
|
**10月**,我们对该产品迭代升级,新增特点MQTT云端控制技术及OTA功能,为我们的物联网数字生活类产品打造了分别基于C++、Kotlin的Windows、Android客户端软件,用户可在手机或电脑远程控制我们的产品以及通过云端完成软件升级。
|
||||||
|
|
||||||
|
**11月**,我们再次对产品迭代,改名为Flowerpot交互花盆,并添加了AI交互大模型及深度视觉识别学习算法特点,用户可以通过客户端软件连接AI交互大模型实现与植物的拟人交互,研究认为有助于缓解用户压力。同时用户可以通过拍摄植物生长过程的图片并上传给电脑客户端,基于深度视觉识别学习算法可以得出植物未来生长趋势,生长速率等信息。
|
||||||
|
|
||||||
|
**2024年1月**,通过用户使用反馈,认为原有花盆结构存在烂根,排水能力较弱问题,我们对于花盆整体结构重新升级,并引入新的特点“模块化设计”思路,用户可以根据喜好选择搭载模块化部件,可以添加蓄电池模块,太阳能模块,LED红蓝光模块,自动浇水模块,笔筒组件等等。
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
51
FlowerpotOS2.0/智能节水花盆.sln
Normal file
51
FlowerpotOS2.0/智能节水花盆.sln
Normal file
|
@ -0,0 +1,51 @@
|
||||||
|
|
||||||
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
|
# Visual Studio Version 17
|
||||||
|
VisualStudioVersion = 17.4.33403.182
|
||||||
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "智能节水花盆", "智能节水花盆\智能节水花盆.vcxproj", "{9C776B16-FBEB-40D4-A346-114384E760E3}"
|
||||||
|
EndProject
|
||||||
|
Global
|
||||||
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
Debug|ARM = Debug|ARM
|
||||||
|
Debug|ARM64 = Debug|ARM64
|
||||||
|
Debug|x64 = Debug|x64
|
||||||
|
Debug|x86 = Debug|x86
|
||||||
|
Release|ARM = Release|ARM
|
||||||
|
Release|ARM64 = Release|ARM64
|
||||||
|
Release|x64 = Release|x64
|
||||||
|
Release|x86 = Release|x86
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
|
{9C776B16-FBEB-40D4-A346-114384E760E3}.Debug|ARM.ActiveCfg = Debug|ARM
|
||||||
|
{9C776B16-FBEB-40D4-A346-114384E760E3}.Debug|ARM.Build.0 = Debug|ARM
|
||||||
|
{9C776B16-FBEB-40D4-A346-114384E760E3}.Debug|ARM.Deploy.0 = Debug|ARM
|
||||||
|
{9C776B16-FBEB-40D4-A346-114384E760E3}.Debug|ARM64.ActiveCfg = Debug|ARM64
|
||||||
|
{9C776B16-FBEB-40D4-A346-114384E760E3}.Debug|ARM64.Build.0 = Debug|ARM64
|
||||||
|
{9C776B16-FBEB-40D4-A346-114384E760E3}.Debug|ARM64.Deploy.0 = Debug|ARM64
|
||||||
|
{9C776B16-FBEB-40D4-A346-114384E760E3}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
|
{9C776B16-FBEB-40D4-A346-114384E760E3}.Debug|x64.Build.0 = Debug|x64
|
||||||
|
{9C776B16-FBEB-40D4-A346-114384E760E3}.Debug|x64.Deploy.0 = Debug|x64
|
||||||
|
{9C776B16-FBEB-40D4-A346-114384E760E3}.Debug|x86.ActiveCfg = Debug|x86
|
||||||
|
{9C776B16-FBEB-40D4-A346-114384E760E3}.Debug|x86.Build.0 = Debug|x86
|
||||||
|
{9C776B16-FBEB-40D4-A346-114384E760E3}.Debug|x86.Deploy.0 = Debug|x86
|
||||||
|
{9C776B16-FBEB-40D4-A346-114384E760E3}.Release|ARM.ActiveCfg = Release|ARM
|
||||||
|
{9C776B16-FBEB-40D4-A346-114384E760E3}.Release|ARM.Build.0 = Release|ARM
|
||||||
|
{9C776B16-FBEB-40D4-A346-114384E760E3}.Release|ARM.Deploy.0 = Release|ARM
|
||||||
|
{9C776B16-FBEB-40D4-A346-114384E760E3}.Release|ARM64.ActiveCfg = Release|ARM64
|
||||||
|
{9C776B16-FBEB-40D4-A346-114384E760E3}.Release|ARM64.Build.0 = Release|ARM64
|
||||||
|
{9C776B16-FBEB-40D4-A346-114384E760E3}.Release|ARM64.Deploy.0 = Release|ARM64
|
||||||
|
{9C776B16-FBEB-40D4-A346-114384E760E3}.Release|x64.ActiveCfg = Release|x64
|
||||||
|
{9C776B16-FBEB-40D4-A346-114384E760E3}.Release|x64.Build.0 = Release|x64
|
||||||
|
{9C776B16-FBEB-40D4-A346-114384E760E3}.Release|x64.Deploy.0 = Release|x64
|
||||||
|
{9C776B16-FBEB-40D4-A346-114384E760E3}.Release|x86.ActiveCfg = Release|x86
|
||||||
|
{9C776B16-FBEB-40D4-A346-114384E760E3}.Release|x86.Build.0 = Release|x86
|
||||||
|
{9C776B16-FBEB-40D4-A346-114384E760E3}.Release|x86.Deploy.0 = Release|x86
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
|
HideSolutionNode = FALSE
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||||
|
SolutionGuid = {B13AE56C-A90A-44BB-ACE8-3D913CC2041E}
|
||||||
|
EndGlobalSection
|
||||||
|
EndGlobal
|
37
FlowerpotOS2.0/智能节水花盆/__vm/Compile.vmps.xml
Normal file
37
FlowerpotOS2.0/智能节水花盆/__vm/Compile.vmps.xml
Normal file
File diff suppressed because one or more lines are too long
9
FlowerpotOS2.0/智能节水花盆/__vm/Configuration.Debug.vmps.xml
Normal file
9
FlowerpotOS2.0/智能节水花盆/__vm/Configuration.Debug.vmps.xml
Normal file
File diff suppressed because one or more lines are too long
14
FlowerpotOS2.0/智能节水花盆/src/arduino folders read me.txt
Normal file
14
FlowerpotOS2.0/智能节水花盆/src/arduino folders read me.txt
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
#####################################################
|
||||||
|
Arduino How To: Use sub folders for source code
|
||||||
|
http://www.visualmicro.com/
|
||||||
|
#####################################################
|
||||||
|
|
||||||
|
* .INO code can exist in the project folder and '\src' folder.
|
||||||
|
* .Cpp/.c/.S/.h etc. can exist in the project folder, the '\src' folder and in any folder(s) below the '\src' folder.
|
||||||
|
* .Cpp/.c/.S/.h sources in shared code projects should follow the same folder rules (because they are merged with the project sources into a temporary build folder prior to compile).
|
||||||
|
|
||||||
|
* Use the 'Show All Files' icon above the 'Solution Explorer' to switch between 'included project files' and 'physical files/folders'.
|
||||||
|
* Source code in the project folder will always be compiled regardless of inclusion in the project. This functionality can be disabled in Global Options.
|
||||||
|
|
||||||
|
|
||||||
|
|
202
FlowerpotOS2.0/智能节水花盆/智能节水花盆.ino
Normal file
202
FlowerpotOS2.0/智能节水花盆/智能节水花盆.ino
Normal file
|
@ -0,0 +1,202 @@
|
||||||
|
/*
|
||||||
|
Name: 智能节水花盆.ino
|
||||||
|
Created: 2023/3/15 0:22:26
|
||||||
|
Author: JasonYANG17
|
||||||
|
*/
|
||||||
|
//导入配置库
|
||||||
|
#include <GFX4d.h>
|
||||||
|
#include <UnoWiFiDevEd.h>
|
||||||
|
#include <Adafruit_SSD1306.h> //驱动128x64 and 128x32 的屏幕显示的库
|
||||||
|
#include <Adafruit_GFX.h> //Arduino的图形库
|
||||||
|
#include <Wire.h>
|
||||||
|
#include <SPI.h>
|
||||||
|
//配置屏幕像素
|
||||||
|
#define SCREEN_WIDTH 128 // OLED display width, in pixels
|
||||||
|
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
|
||||||
|
// Declaration for an SSD1306 display connected to I2C (SDA, SCL pins)
|
||||||
|
//定义OLED恢复引脚,无则定义为-1
|
||||||
|
#define OLED_RESET -1 // Reset pin # (or -1 if sharing Arduino reset pin)
|
||||||
|
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);//配置数据
|
||||||
|
// Example testing sketch for various DHT humidity/temperature sensors
|
||||||
|
// Written by ladyada, public domain
|
||||||
|
|
||||||
|
int M0 = 1024; //在空气中AO读取的值最大为1024,代表干燥时的读数
|
||||||
|
int M1 = 0; //浸泡在水里的最小值 464(最小值会改变),代表100%湿度
|
||||||
|
int PIN_AO = 14; //与wifi不冲突的pin
|
||||||
|
int in1 = 0;
|
||||||
|
int in2 = 2;
|
||||||
|
int LED = 15;
|
||||||
|
#include <DHT.h>
|
||||||
|
#define DHTPIN 13//刚才插得2号引脚
|
||||||
|
#define DHTTYPE DHT11//定义类型
|
||||||
|
DHT dht(DHTPIN, DHTTYPE);//进行初始化设置
|
||||||
|
|
||||||
|
int buttonPin = 12; // 将开关连接到
|
||||||
|
int buttonState = 0;//开关状态为0
|
||||||
|
void setup() {
|
||||||
|
Serial.begin(9600);
|
||||||
|
dht.begin();//DHT开始工作
|
||||||
|
pinMode(PIN_AO, INPUT);
|
||||||
|
pinMode(in1, OUTPUT);
|
||||||
|
pinMode(in2, OUTPUT);
|
||||||
|
pinMode(LED, OUTPUT);
|
||||||
|
digitalWrite(in1, LOW);
|
||||||
|
digitalWrite(in2, LOW);
|
||||||
|
digitalWrite(LED, LOW);
|
||||||
|
pinMode(buttonPin, INPUT_PULLUP); // 设置开关模式
|
||||||
|
//Serial.println("OLED FeatherWing test"); //串口输出信息
|
||||||
|
|
||||||
|
display.begin(SSD1306_SWITCHCAPVCC, 0x3c); //初始化OLED并设置其IIC地址为 0x3C
|
||||||
|
display.clearDisplay(); //清屏
|
||||||
|
delay(200);
|
||||||
|
|
||||||
|
display.setTextSize(1.3);//设置文本大小
|
||||||
|
display.setTextColor(SSD1306_WHITE);//设置字体颜色
|
||||||
|
display.setCursor(0, 0); //设置光标的位置
|
||||||
|
|
||||||
|
//绘制像素点
|
||||||
|
// display.drawPixel(64, 32, WHITE);//(x坐标,y坐标,颜色)
|
||||||
|
|
||||||
|
//绘制水平线
|
||||||
|
// display.drawFastHLine(64,32,64,SSD1306_WHITE);//(x起点,y起点,长度,颜色)
|
||||||
|
//绘制竖直线
|
||||||
|
// display.drawFastVLine(64,10,50,SSD1306_WHITE);
|
||||||
|
|
||||||
|
//绘制线
|
||||||
|
// display.drawLine(0,0,128,64,SSD1306_WHITE);//(x起,y起,x终,y终)
|
||||||
|
|
||||||
|
//绘制空心矩形
|
||||||
|
// display.drawRect(0,0,128,64,SSD1306_WHITE);//(左上角x坐标,左上角y坐标,矩形长,矩形宽)
|
||||||
|
|
||||||
|
//绘制实心矩形
|
||||||
|
//display.fillRect(20,10,88,44,SSD1306_WHITE);//同上
|
||||||
|
|
||||||
|
//点亮全屏
|
||||||
|
// display.fillScreen(SSD1306_WHITE);
|
||||||
|
|
||||||
|
//绘制空心圆
|
||||||
|
//display.drawCircle(64,32,32,SSD1306_WHITE);//(圆心x坐标,圆心y坐标,半径)
|
||||||
|
|
||||||
|
//绘制实心圆
|
||||||
|
//display.fillCircle(64,32,31,SSD1306_WHITE);
|
||||||
|
|
||||||
|
//绘制空心三角形
|
||||||
|
//display.drawTriangle(63,0, 0,63, 127,63, SSD1306_WHITE);//(第一顶点坐标[x,y],第二,第三)
|
||||||
|
|
||||||
|
//绘制实心三角形
|
||||||
|
// display.fillTriangle(63,0, 0,63, 127,63, SSD1306_WHITE);
|
||||||
|
|
||||||
|
//绘制空心圆角矩形
|
||||||
|
//display.drawRoundRect(10,5,107, 43,8, SSD1306_WHITE);//(左上角x,左上角y,矩形长,矩形宽,矩形圆角半径)
|
||||||
|
|
||||||
|
//实心圆角
|
||||||
|
//display.fillRoundRect(10,5,107,53,3, SSD1306_WHITE);
|
||||||
|
|
||||||
|
//绘制Bitmap图像
|
||||||
|
//Bimap图像数据
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
display.display();
|
||||||
|
display.println("");
|
||||||
|
display.println("");
|
||||||
|
|
||||||
|
display.println(" Wellcome To\n YANG\nIntelligent Flowerpot");
|
||||||
|
display.display();
|
||||||
|
delay(8000);
|
||||||
|
// display.begin(SSD1306_SWITCHCAPVCC, 0x3c); //初始化OLED并设置其IIC地址为 0x3C
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop() {
|
||||||
|
// delay(2000);
|
||||||
|
|
||||||
|
buttonState = digitalRead(buttonPin);//读取开关通断模式,并导入至开关状态
|
||||||
|
|
||||||
|
Serial.println(analogRead(14));//湿度传感器接ESP32上的GPIO号
|
||||||
|
delay(100);
|
||||||
|
if (buttonState == LOW) { // 判断是否按下开关
|
||||||
|
display.clearDisplay(); //清屏
|
||||||
|
delay(200);
|
||||||
|
|
||||||
|
|
||||||
|
display.setTextSize(1.3);
|
||||||
|
display.setTextColor(SSD1306_WHITE);
|
||||||
|
display.setCursor(0, 0); //设置光标的位置
|
||||||
|
|
||||||
|
// display.clearDisplay();
|
||||||
|
//delay(8000);
|
||||||
|
|
||||||
|
digitalWrite(in2, LOW);
|
||||||
|
digitalWrite(in1, LOW);
|
||||||
|
digitalWrite(LED, LOW);
|
||||||
|
|
||||||
|
display.println("Hello, user!");
|
||||||
|
display.println("");
|
||||||
|
display.println("Enter Emergency\nBraking");
|
||||||
|
display.println("");
|
||||||
|
display.println("All programs have\nbeen closed for you");
|
||||||
|
display.display();
|
||||||
|
|
||||||
|
// actually display all of the above
|
||||||
|
|
||||||
|
delay(2000);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
|
||||||
|
float h = dht.readHumidity();//读湿度
|
||||||
|
float t = dht.readTemperature();//读湿度
|
||||||
|
Serial.print("Humidity:");//湿度
|
||||||
|
Serial.print(h);
|
||||||
|
Serial.println("%");
|
||||||
|
Serial.print("Temperatrue:");//温度
|
||||||
|
Serial.print(t);
|
||||||
|
Serial.println("C");
|
||||||
|
display.clearDisplay();
|
||||||
|
delay(200);
|
||||||
|
display.setTextSize(1.3);
|
||||||
|
display.setTextColor(SSD1306_WHITE);
|
||||||
|
display.setCursor(0, 0); //设置光标的位置
|
||||||
|
float HUMI = ((M0 - analogRead(PIN_AO)) / ((M0 - M1) / 100)); //将湿度模拟量转换成数字量
|
||||||
|
if (HUMI > 100.00) {
|
||||||
|
HUMI = 100;
|
||||||
|
}
|
||||||
|
if (HUMI > 80) {
|
||||||
|
digitalWrite(in2, LOW);
|
||||||
|
digitalWrite(in1, LOW);
|
||||||
|
digitalWrite(LED, LOW);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
digitalWrite(in2, LOW);
|
||||||
|
digitalWrite(in1, HIGH);
|
||||||
|
digitalWrite(LED, HIGH);
|
||||||
|
}
|
||||||
|
Serial.print("HUMI= ");
|
||||||
|
Serial.print(HUMI);
|
||||||
|
Serial.println("% ");
|
||||||
|
display.println("---------YANG--------");
|
||||||
|
display.println("");
|
||||||
|
display.print("Temperature: ");
|
||||||
|
display.print(t);
|
||||||
|
display.println("C");
|
||||||
|
display.print("Humidity: ");//湿度
|
||||||
|
display.print(h);
|
||||||
|
display.println("%");
|
||||||
|
display.print("Soil Moisture: ");
|
||||||
|
display.println(HUMI);
|
||||||
|
if (HUMI > 80) {
|
||||||
|
display.println("Watter: OFF");
|
||||||
|
display.println("Photosynthesis: OFF");
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
display.println("Watter: ON");
|
||||||
|
display.println("Photosynthesis: ON");
|
||||||
|
}
|
||||||
|
|
||||||
|
display.println("---Have a nice DAY!--");
|
||||||
|
//delay(1000);
|
||||||
|
display.display();
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
128
FlowerpotOS2.0/智能节水花盆/智能节水花盆.vcxproj
Normal file
128
FlowerpotOS2.0/智能节水花盆/智能节水花盆.vcxproj
Normal file
File diff suppressed because one or more lines are too long
30
FlowerpotOS2.0/智能节水花盆/智能节水花盆.vcxproj.filters
Normal file
30
FlowerpotOS2.0/智能节水花盆/智能节水花盆.vcxproj.filters
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<ItemGroup>
|
||||||
|
<Filter Include="Source Files">
|
||||||
|
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||||
|
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||||
|
</Filter>
|
||||||
|
<Filter Include="Header Files">
|
||||||
|
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||||
|
<Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
|
||||||
|
</Filter>
|
||||||
|
<Filter Include="Misc Files">
|
||||||
|
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
|
||||||
|
<Extensions>xml;json;txt;rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
|
||||||
|
</Filter>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="src\arduino folders read me.txt">
|
||||||
|
<Filter>Misc Files</Filter>
|
||||||
|
</None>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClCompile Include="智能节水花盆.ino" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClInclude Include="__vm\.智能节水花盆.vsarduino.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
</ItemGroup>
|
||||||
|
</Project>
|
1
FlowerpotOS3.1/README.md
Normal file
1
FlowerpotOS3.1/README.md
Normal file
|
@ -0,0 +1 @@
|
||||||
|
## hi
|
33
FlowerpotOS3.1/data/contorl.html
Normal file
33
FlowerpotOS3.1/data/contorl.html
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang='en'>
|
||||||
|
<head>
|
||||||
|
<meta charset='UTF-8'>
|
||||||
|
<meta name='viewport' content='width=device-width, initial-scale=1.0'>
|
||||||
|
<title>控制台</title>
|
||||||
|
<script>
|
||||||
|
function toggleStatus(id) {
|
||||||
|
var currentState = document.getElementById('status' + id).value;
|
||||||
|
var newState = (currentState === '0') ? '1' : '0';
|
||||||
|
document.getElementById('status' + id).value = newState;
|
||||||
|
document.getElementById('toggleButton' + id).innerText = (newState === '0') ? '关' : '开';
|
||||||
|
var xhr = new XMLHttpRequest();
|
||||||
|
xhr.open('POST', '/updatexv?id=' + id, true);
|
||||||
|
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
|
||||||
|
xhr.send('status=' + newState);
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<button id='toggleButton1' onclick='toggleStatus(1)'>{{AUTOst}}</button>
|
||||||
|
<input type='hidden' id='status1' value='{{AUTOst}}'>
|
||||||
|
<br>
|
||||||
|
<button id='toggleButton2' onclick='toggleStatus(2)'>{{LEDst}}</button>
|
||||||
|
<input type='hidden' id='status2' value='{{LEDst}}'>
|
||||||
|
<br>
|
||||||
|
<button id='toggleButton3' onclick='toggleStatus(3)'>{{HOTst}}</button>
|
||||||
|
<input type='hidden' id='status3' value='{{HOTst}}'>
|
||||||
|
<br>
|
||||||
|
<button id='toggleButton4' onclick='toggleStatus(4)'>{{PUMPst}}</button>
|
||||||
|
<input type='hidden' id='status4' value='{{PUMPst}}'>
|
||||||
|
</body>
|
||||||
|
</html>
|
75
FlowerpotOS3.1/data/index.html
Normal file
75
FlowerpotOS3.1/data/index.html
Normal file
|
@ -0,0 +1,75 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>万物互联IOT离线控制中心</title>
|
||||||
|
<style>
|
||||||
|
|
||||||
|
body {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
font-family: Arial, sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
.container {
|
||||||
|
max-width: 800px;
|
||||||
|
margin: 0 auto;
|
||||||
|
padding: 20px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1 {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.button {
|
||||||
|
display: inline-block;
|
||||||
|
height: 30px;
|
||||||
|
width: 300px;
|
||||||
|
margin-top: 20px;
|
||||||
|
|
||||||
|
padding: 10px 20px;
|
||||||
|
background-color: darkgray;
|
||||||
|
color: #fff;
|
||||||
|
border: none;
|
||||||
|
border-radius: 20px; /* 添加圆角 */
|
||||||
|
text-decoration: none;
|
||||||
|
line-height: 2; /* 通过调整line-height的值来调整文字的垂直位置 */
|
||||||
|
text-align: center; /* 文字居中 */
|
||||||
|
box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.2); /* 添加立体感 */
|
||||||
|
transition: all 0.3s ease; /* 添加过渡效果 */
|
||||||
|
}
|
||||||
|
|
||||||
|
.button:hover {
|
||||||
|
background-color: #86b7fe; /* 鼠标悬停时的背景颜色 */
|
||||||
|
transform: translateY(2px); /* 点击效果 */
|
||||||
|
box-shadow: 2px 2px 8px rgba(0, 0, 0, 0.3); /* 添加更多立体感 */
|
||||||
|
}
|
||||||
|
.search-box {
|
||||||
|
margin-top: 20px;
|
||||||
|
display: inline-block;
|
||||||
|
height: 30px;
|
||||||
|
width: 300px;
|
||||||
|
padding: 5px 10px;
|
||||||
|
background-color: #f0f0f0;
|
||||||
|
border: 1px solid #ccc;
|
||||||
|
border-radius: 20px;
|
||||||
|
text-align: center; /* 文字居中 */
|
||||||
|
}
|
||||||
|
.hidden {
|
||||||
|
display: none; /* 初始隐藏 */
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="container">
|
||||||
|
<h1>万物互联IOT离线控制中心</h1>
|
||||||
|
<p>欢迎使用我们的物联网产品,这里是离线控制台,您可以在此配置产品设置</p>
|
||||||
|
<a href="wifi" class="button">配网</a>
|
||||||
|
<a href="contol" class="button">控制台</a>
|
||||||
|
<a href="info" class="button">设备信息</a>
|
||||||
|
<a href="update" class="button">固件升级</a>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
82
FlowerpotOS3.1/data/info.html
Normal file
82
FlowerpotOS3.1/data/info.html
Normal file
|
@ -0,0 +1,82 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>设备信息</title>
|
||||||
|
<link rel="stylesheet" type="text/css" href="/IOT.css">
|
||||||
|
|
||||||
|
<style>
|
||||||
|
body {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
font-family: Arial, sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
.container {
|
||||||
|
max-width: 800px;
|
||||||
|
margin: 0 auto;
|
||||||
|
padding: 20px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1 {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.button {
|
||||||
|
display: inline-block;
|
||||||
|
height: 30px;
|
||||||
|
width: 300px;
|
||||||
|
margin-top: 20px;
|
||||||
|
|
||||||
|
padding: 10px 20px;
|
||||||
|
background-color: darkgray;
|
||||||
|
color: #fff;
|
||||||
|
border: none;
|
||||||
|
border-radius: 20px; /* 添加圆角 */
|
||||||
|
text-decoration: none;
|
||||||
|
line-height: 2; /* 通过调整line-height的值来调整文字的垂直位置 */
|
||||||
|
text-align: center; /* 文字居中 */
|
||||||
|
box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.2); /* 添加立体感 */
|
||||||
|
transition: all 0.3s ease; /* 添加过渡效果 */
|
||||||
|
}
|
||||||
|
|
||||||
|
.button:hover {
|
||||||
|
background-color: #86b7fe; /* 鼠标悬停时的背景颜色 */
|
||||||
|
transform: translateY(2px); /* 点击效果 */
|
||||||
|
box-shadow: 2px 2px 8px rgba(0, 0, 0, 0.3); /* 添加更多立体感 */
|
||||||
|
}
|
||||||
|
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<div class="container">
|
||||||
|
<h1>设备信息</h1>
|
||||||
|
<p>欢迎使用我们的智能植物培育设备</p>
|
||||||
|
<a href="https://yang17.site">
|
||||||
|
<table class="container button" style="height: 200px">
|
||||||
|
<tr>
|
||||||
|
<th>设备名称:</th>
|
||||||
|
<td>智能植物培育设备</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>内存大小:</th>
|
||||||
|
<td>4MB</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>控制台版本:</th>
|
||||||
|
<td>V2.3</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>官网:</th>
|
||||||
|
<td> <a href="https://yang17.site">yang17.site</a></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
</table>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
69
FlowerpotOS3.1/data/update.html
Normal file
69
FlowerpotOS3.1/data/update.html
Normal file
|
@ -0,0 +1,69 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang='en'>
|
||||||
|
<head>
|
||||||
|
<meta charset='UTF-8'>
|
||||||
|
<meta name='viewport' content='width=device-width, initial-scale=1.0'>
|
||||||
|
<title>WIFI配置</title>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
|
||||||
|
body {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
font-family: Arial, sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
.container {
|
||||||
|
max-width: 800px;
|
||||||
|
margin: 0 auto;
|
||||||
|
padding: 20px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1 {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.button {
|
||||||
|
display: inline-block;
|
||||||
|
height: 60px;
|
||||||
|
width: 300px;
|
||||||
|
margin-top: 20px;
|
||||||
|
|
||||||
|
padding: 10px 20px;
|
||||||
|
background-color: darkgray;
|
||||||
|
color: #fff;
|
||||||
|
border: none;
|
||||||
|
border-radius: 20px; /* 添加圆角 */
|
||||||
|
text-decoration: none;
|
||||||
|
line-height: 2; /* 通过调整line-height的值来调整文字的垂直位置 */
|
||||||
|
text-align: center; /* 文字居中 */
|
||||||
|
box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.2); /* 添加立体感 */
|
||||||
|
transition: all 0.3s ease; /* 添加过渡效果 */
|
||||||
|
}
|
||||||
|
|
||||||
|
.button:hover {
|
||||||
|
background-color: #86b7fe; /* 鼠标悬停时的背景颜色 */
|
||||||
|
transform: translateY(2px); /* 点击效果 */
|
||||||
|
box-shadow: 2px 2px 8px rgba(0, 0, 0, 0.3); /* 添加更多立体感 */
|
||||||
|
}
|
||||||
|
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<div class='container'>
|
||||||
|
<h1>固件升级</h1>
|
||||||
|
<h3>非专业用户请勿擅自使用本功能,否则后果自负</h3>
|
||||||
|
<p>请在下方选择用于升级的bin文件</p>
|
||||||
|
<form method='POST' action='/update' enctype='multipart/form-data'>
|
||||||
|
<input class="button" type='file' name='update' >
|
||||||
|
<input class="button" type='submit' value='确认升级'>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
112
FlowerpotOS3.1/data/wifi.html
Normal file
112
FlowerpotOS3.1/data/wifi.html
Normal file
|
@ -0,0 +1,112 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang='en'>
|
||||||
|
<head>
|
||||||
|
<meta charset='UTF-8'>
|
||||||
|
<meta name='viewport' content='width=device-width, initial-scale=1.0'>
|
||||||
|
<title>WIFI配置</title>
|
||||||
|
<style>
|
||||||
|
|
||||||
|
body {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
font-family: Arial, sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
.container {
|
||||||
|
max-width: 800px;
|
||||||
|
margin: 0 auto;
|
||||||
|
padding: 20px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1 {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.button {
|
||||||
|
display: inline-block;
|
||||||
|
height: 30px;
|
||||||
|
width: 300px;
|
||||||
|
margin-top: 20px;
|
||||||
|
|
||||||
|
padding: 10px 20px;
|
||||||
|
background-color: darkgray;
|
||||||
|
color: #fff;
|
||||||
|
border: none;
|
||||||
|
border-radius: 20px; /* 添加圆角 */
|
||||||
|
text-decoration: none;
|
||||||
|
line-height: 2; /* 通过调整line-height的值来调整文字的垂直位置 */
|
||||||
|
text-align: center; /* 文字居中 */
|
||||||
|
box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.2); /* 添加立体感 */
|
||||||
|
transition: all 0.3s ease; /* 添加过渡效果 */
|
||||||
|
}
|
||||||
|
|
||||||
|
.button:hover {
|
||||||
|
background-color: #86b7fe; /* 鼠标悬停时的背景颜色 */
|
||||||
|
transform: translateY(2px); /* 点击效果 */
|
||||||
|
box-shadow: 2px 2px 8px rgba(0, 0, 0, 0.3); /* 添加更多立体感 */
|
||||||
|
}
|
||||||
|
.search-box {
|
||||||
|
margin-top: 20px;
|
||||||
|
display: inline-block;
|
||||||
|
height: 30px;
|
||||||
|
width: 300px;
|
||||||
|
padding: 5px 10px;
|
||||||
|
background-color: #f0f0f0;
|
||||||
|
border: 1px solid #ccc;
|
||||||
|
border-radius: 20px;
|
||||||
|
text-align: center; /* 文字居中 */
|
||||||
|
}
|
||||||
|
.hidden {
|
||||||
|
display: none; /* 初始隐藏 */
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<form onsubmit='encodeSSID()' name='input' action='/wifi' method='POST'>
|
||||||
|
<div class='container'>
|
||||||
|
<h1>万物互联IOT离线控制中心</h1>
|
||||||
|
|
||||||
|
<input type='text' name='ssid' id='ssid' placeholder='输入WIFI名称' class='search-box'>
|
||||||
|
|
||||||
|
<input type='text' name='password' placeholder='输入WIFI密码' class='search-box'>
|
||||||
|
|
||||||
|
<input type='submit' style="height: 50px;width: 320px" class='button' value="保存">
|
||||||
|
|
||||||
|
<div class='button'>
|
||||||
|
<input type='checkbox' id='showAdvanced'>
|
||||||
|
<label for='showAdvanced' >显示高级选项</label>
|
||||||
|
</div>
|
||||||
|
<div id='advancedOptions' class='hidden'>
|
||||||
|
<h3>MQTT</h3>
|
||||||
|
<input type='text' name='host' placeholder='域名IP' class='search-box'>
|
||||||
|
<input type='text' name='port' placeholder='端口' class='search-box'>
|
||||||
|
<input type='text' name='client' placeholder='Client' class='search-box'>
|
||||||
|
<input type='text' name='topic' placeholder='Topic' class='search-box'>
|
||||||
|
<input type='text' name='user' placeholder='用户名' class='search-box'>
|
||||||
|
<input type='text' name='mqttpassword' placeholder='密钥' class='search-box'>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</body>
|
||||||
|
<script>
|
||||||
|
function encodeSSID() {
|
||||||
|
var inputSSID = document.getElementById('ssid').value;
|
||||||
|
var encodedSSID = encodeURIComponent(inputSSID);
|
||||||
|
document.getElementById('ssid').value = encodedSSID;
|
||||||
|
}
|
||||||
|
const checkbox = document.getElementById('showAdvanced');
|
||||||
|
const advancedOptions = document.getElementById('advancedOptions');
|
||||||
|
|
||||||
|
checkbox.addEventListener('change', function() {
|
||||||
|
if (checkbox.checked) {
|
||||||
|
advancedOptions.style.display = 'block';
|
||||||
|
} else {
|
||||||
|
advancedOptions.style.display = 'none';
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
</html>
|
39
FlowerpotOS3.1/include/README
Normal file
39
FlowerpotOS3.1/include/README
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
|
||||||
|
This directory is intended for project header files.
|
||||||
|
|
||||||
|
A header file is a file containing C declarations and macro definitions
|
||||||
|
to be shared between several project source files. You request the use of a
|
||||||
|
header file in your project source file (C, C++, etc) located in `src` folder
|
||||||
|
by including it, with the C preprocessing directive `#include'.
|
||||||
|
|
||||||
|
```src/main.c
|
||||||
|
|
||||||
|
#include "header.h"
|
||||||
|
|
||||||
|
int main (void)
|
||||||
|
{
|
||||||
|
...
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Including a header file produces the same results as copying the header file
|
||||||
|
into each source file that needs it. Such copying would be time-consuming
|
||||||
|
and error-prone. With a header file, the related declarations appear
|
||||||
|
in only one place. If they need to be changed, they can be changed in one
|
||||||
|
place, and programs that include the header file will automatically use the
|
||||||
|
new version when next recompiled. The header file eliminates the labor of
|
||||||
|
finding and changing all the copies as well as the risk that a failure to
|
||||||
|
find one copy will result in inconsistencies within a program.
|
||||||
|
|
||||||
|
In C, the usual convention is to give header files names that end with `.h'.
|
||||||
|
It is most portable to use only letters, digits, dashes, and underscores in
|
||||||
|
header file names, and at most one dot.
|
||||||
|
|
||||||
|
Read more about using header files in official GCC documentation:
|
||||||
|
|
||||||
|
* Include Syntax
|
||||||
|
* Include Operation
|
||||||
|
* Once-Only Headers
|
||||||
|
* Computed Includes
|
||||||
|
|
||||||
|
https://gcc.gnu.org/onlinedocs/cpp/Header-Files.html
|
46
FlowerpotOS3.1/lib/README
Normal file
46
FlowerpotOS3.1/lib/README
Normal file
|
@ -0,0 +1,46 @@
|
||||||
|
|
||||||
|
This directory is intended for project specific (private) libraries.
|
||||||
|
PlatformIO will compile them to static libraries and link into executable file.
|
||||||
|
|
||||||
|
The source code of each library should be placed in a an own separate directory
|
||||||
|
("lib/your_library_name/[here are source files]").
|
||||||
|
|
||||||
|
For example, see a structure of the following two libraries `Foo` and `Bar`:
|
||||||
|
|
||||||
|
|--lib
|
||||||
|
| |
|
||||||
|
| |--Bar
|
||||||
|
| | |--docs
|
||||||
|
| | |--examples
|
||||||
|
| | |--src
|
||||||
|
| | |- Bar.c
|
||||||
|
| | |- Bar.h
|
||||||
|
| | |- library.json (optional, custom build options, etc) https://docs.platformio.org/page/librarymanager/config.html
|
||||||
|
| |
|
||||||
|
| |--Foo
|
||||||
|
| | |- Foo.c
|
||||||
|
| | |- Foo.h
|
||||||
|
| |
|
||||||
|
| |- README --> THIS FILE
|
||||||
|
|
|
||||||
|
|- platformio.ini
|
||||||
|
|--src
|
||||||
|
|- main.c
|
||||||
|
|
||||||
|
and a contents of `src/main.c`:
|
||||||
|
```
|
||||||
|
#include <Foo.h>
|
||||||
|
#include <Bar.h>
|
||||||
|
|
||||||
|
int main (void)
|
||||||
|
{
|
||||||
|
...
|
||||||
|
}
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
PlatformIO Library Dependency Finder will find automatically dependent
|
||||||
|
libraries scanning project source files.
|
||||||
|
|
||||||
|
More information about PlatformIO Library Dependency Finder
|
||||||
|
- https://docs.platformio.org/page/librarymanager/ldf.html
|
35
FlowerpotOS3.1/platformio.ini
Normal file
35
FlowerpotOS3.1/platformio.ini
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
; PlatformIO Project Configuration File
|
||||||
|
;
|
||||||
|
; Build options: build flags, source filter
|
||||||
|
; Upload options: custom upload port, speed and extra flags
|
||||||
|
; Library options: dependencies, extra library storages
|
||||||
|
; Advanced options: extra scripting
|
||||||
|
;
|
||||||
|
; Please visit documentation for the other options and examples
|
||||||
|
; https://docs.platformio.org/page/projectconf.html
|
||||||
|
|
||||||
|
[env:nodemcuv2]
|
||||||
|
platform = espressif8266
|
||||||
|
board = nodemcuv2
|
||||||
|
framework = arduino
|
||||||
|
board_build.filesystem = littlefs
|
||||||
|
lib_deps =
|
||||||
|
tzapu/WiFiManager@^0.16.0
|
||||||
|
adafruit/Adafruit SH110X@^2.1.10
|
||||||
|
arduino-libraries/NTPClient@^3.2.1
|
||||||
|
adafruit/Adafruit AHTX0@^2.0.5
|
||||||
|
knolleary/PubSubClient@^2.8
|
||||||
|
bblanchon/ArduinoJson@^7.0.4
|
||||||
|
adafruit/Adafruit GFX Library@^1.11.9
|
||||||
|
|
||||||
|
[env:my_build_env]
|
||||||
|
platform = espressif8266
|
||||||
|
framework = arduino
|
||||||
|
lib_deps =
|
||||||
|
tzapu/WiFiManager@^0.16.0
|
||||||
|
adafruit/Adafruit SH110X@^2.1.10
|
||||||
|
arduino-libraries/NTPClient@^3.2.1
|
||||||
|
adafruit/Adafruit AHTX0@^2.0.5
|
||||||
|
knolleary/PubSubClient@^2.8
|
||||||
|
bblanchon/ArduinoJson@^7.0.4
|
||||||
|
adafruit/Adafruit GFX Library@^1.11.9
|
1376
FlowerpotOS3.1/src/main.cpp
Normal file
1376
FlowerpotOS3.1/src/main.cpp
Normal file
File diff suppressed because it is too large
Load Diff
294
FlowerpotOS3.1/src/picture.cpp
Normal file
294
FlowerpotOS3.1/src/picture.cpp
Normal file
|
@ -0,0 +1,294 @@
|
||||||
|
//
|
||||||
|
//
|
||||||
|
//
|
||||||
|
|
||||||
|
#include "picture.h"
|
||||||
|
|
||||||
|
static const unsigned char PROGMEM wen[] = {
|
||||||
|
|
||||||
|
0x00,0x00,0x23,0xF8,0x12,0x08,0x12,0x08,0x83,0xF8,0x42,0x08,0x42,0x08,0x13,0xF8,
|
||||||
|
0x10,0x00,0x27,0xFC,0xE4,0xA4,0x24,0xA4,0x24,0xA4,0x24,0xA4,0x2F,0xFE,0x00,0x00 };/*"温",0};*/
|
||||||
|
/* (12 X 12 , 宋体 )*/
|
||||||
|
|
||||||
|
static const unsigned char PROGMEM du[] = {
|
||||||
|
/* (16 X 16 , 宋体 )*/
|
||||||
|
|
||||||
|
0x01,0x00,0x00,0x80,0x3F,0xFE,0x22,0x20,0x22,0x20,0x3F,0xFC,0x22,0x20,0x22,0x20,
|
||||||
|
0x23,0xE0,0x20,0x00,0x2F,0xF0,0x24,0x10,0x42,0x20,0x41,0xC0,0x86,0x30,0x38,0x0E };/*"度",1};*/
|
||||||
|
/* (12 X 12 , 宋体 )*/
|
||||||
|
|
||||||
|
static const unsigned char PROGMEM shi[] = {
|
||||||
|
0x00,0x00,0x27,0xF8,0x14,0x08,0x14,0x08,0x87,0xF8,0x44,0x08,0x44,0x08,0x17,0xF8,
|
||||||
|
0x11,0x20,0x21,0x20,0xE9,0x24,0x25,0x28,0x23,0x30,0x21,0x20,0x2F,0xFE,0x00,0x00 };/*"湿",2};*/
|
||||||
|
/* (12 X 12 , 宋体 )*/
|
||||||
|
|
||||||
|
/* (12 X 12 , 宋体 )*/
|
||||||
|
static const unsigned char PROGMEM tu[] = {
|
||||||
|
0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x3F,0xF8,0x01,0x00,
|
||||||
|
0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0xFF,0xFE,0x00,0x00 };/*"土",4};*/
|
||||||
|
/* (12 X 12 , 宋体 )*/
|
||||||
|
static const unsigned char PROGMEM rang[] = {
|
||||||
|
0x20,0x40,0x27,0xFC,0x20,0x00,0x23,0xB8,0xF2,0xA8,0x23,0xB8,0x21,0x10,0x27,0xFC,
|
||||||
|
0x21,0x10,0x27,0xFC,0x31,0x10,0xEF,0xFE,0x41,0x28,0x03,0x10,0x0D,0x48,0x01,0x86 };/*"壤",5};*/
|
||||||
|
/* (12 X 12 , 宋体 )*/
|
||||||
|
static const unsigned char PROGMEM maohao[] = {
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x30,0x00,0x30,0x00,0x00,0x00,0x30,0x00,0x30,0x00,0x00,0x00,0x00,0x00 };/*":",6};*/
|
||||||
|
/* (12 X 12 , 宋体 )*/
|
||||||
|
static const unsigned char PROGMEM shou[] = {
|
||||||
|
0x00,0x10,0x00,0xF8,0x3F,0x00,0x01,0x00,0x01,0x00,0x3F,0xF8,0x01,0x00,0x01,0x00,
|
||||||
|
0x01,0x00,0xFF,0xFE,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x05,0x00,0x02,0x00 };/*"手",0};*/
|
||||||
|
/* (16 X 16 , 宋体 )*/
|
||||||
|
static const unsigned char PROGMEM dong[] = {
|
||||||
|
0x00,0x40,0x00,0x40,0x7C,0x40,0x00,0x40,0x01,0xFC,0x00,0x44,0xFE,0x44,0x20,0x44,
|
||||||
|
0x20,0x44,0x20,0x84,0x48,0x84,0x44,0x84,0xFD,0x04,0x45,0x04,0x02,0x28,0x04,0x10 };/*"动",1};*/
|
||||||
|
/* (16 X 16 , 宋体 )*/
|
||||||
|
static const unsigned char PROGMEM jiao[] = {
|
||||||
|
0x00,0x80,0x20,0x80,0x10,0xBC,0x13,0xC0,0x80,0x50,0x40,0x24,0x48,0xD4,0x0B,0x0C,
|
||||||
|
0x10,0x00,0x17,0xFE,0xE0,0x90,0x20,0x90,0x21,0x12,0x21,0x12,0x22,0x0E,0x04,0x00 };/*"浇",2};*/
|
||||||
|
/* (16 X 16 , 宋体 )*/
|
||||||
|
static const unsigned char PROGMEM shui[] = {
|
||||||
|
0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x08,0x01,0x08,0x7D,0x90,0x05,0xA0,0x09,0x40,
|
||||||
|
0x09,0x40,0x11,0x20,0x11,0x10,0x21,0x08,0x41,0x06,0x81,0x00,0x05,0x00,0x02,0x00 };/*"水",3};*/
|
||||||
|
/* (16 X 16 , 宋体 )*/
|
||||||
|
|
||||||
|
/* (16 X 16 , 宋体 )*/
|
||||||
|
static const unsigned char PROGMEM mo[] = {
|
||||||
|
0x11,0x10,0x11,0x10,0x17,0xFC,0x11,0x10,0xFC,0x00,0x13,0xF8,0x32,0x08,0x3B,0xF8,
|
||||||
|
0x56,0x08,0x53,0xF8,0x90,0x40,0x17,0xFC,0x10,0xA0,0x11,0x10,0x12,0x08,0x14,0x06 };/*"模",6};*/
|
||||||
|
/* (16 X 16 , 宋体 )*/
|
||||||
|
static const unsigned char PROGMEM shi2[] = {
|
||||||
|
0x00,0x48,0x00,0x44,0x00,0x44,0x00,0x40,0xFF,0xFE,0x00,0x40,0x00,0x40,0x3E,0x40,
|
||||||
|
0x08,0x40,0x08,0x40,0x08,0x20,0x08,0x22,0x0F,0x12,0x78,0x0A,0x20,0x06,0x00,0x02 };/*"式",7};*/
|
||||||
|
/* (16 X 16 , 宋体 )*/
|
||||||
|
static const unsigned char PROGMEM wang[] = {
|
||||||
|
0x00,0x00,0x7F,0xFC,0x40,0x04,0x40,0x04,0x42,0x14,0x52,0x94,0x4A,0x54,0x44,0x24,
|
||||||
|
0x44,0x24,0x4A,0x54,0x4A,0x54,0x52,0x94,0x61,0x04,0x40,0x04,0x40,0x14,0x40,0x08 };/*"网",0};*/
|
||||||
|
/* (16 X 16 , 宋体 )*/
|
||||||
|
static const unsigned char PROGMEM luo[] = {
|
||||||
|
0x10,0x80,0x10,0x80,0x20,0xF8,0x21,0x08,0x4B,0x10,0xFC,0xA0,0x10,0x40,0x20,0xA0,
|
||||||
|
0x41,0x18,0xFA,0x06,0x45,0xF8,0x01,0x08,0x19,0x08,0xE1,0x08,0x41,0xF8,0x01,0x08 };/*"络",1};*/
|
||||||
|
/* (16 X 16 , 宋体 )*/
|
||||||
|
static const unsigned char PROGMEM pei[] = {
|
||||||
|
0x00,0x00,0xFE,0x00,0x28,0xF8,0x28,0x08,0xFE,0x08,0xAA,0x08,0xAA,0x08,0xAA,0xF8,
|
||||||
|
0xAE,0x88,0xC2,0x80,0x82,0x80,0xFE,0x80,0x82,0x82,0x82,0x82,0xFE,0x7E,0x82,0x00 };/*"配",2};*/
|
||||||
|
/* (16 X 16 , 宋体 )*/
|
||||||
|
static const unsigned char PROGMEM dui[] = {
|
||||||
|
0x00,0x10,0x00,0x10,0x00,0x10,0x7E,0x10,0x02,0xFE,0x02,0x10,0x24,0x10,0x14,0x90,
|
||||||
|
0x08,0x50,0x08,0x50,0x14,0x10,0x12,0x10,0x22,0x10,0x40,0x10,0x00,0x50,0x00,0x20 };/*"对",3};*/
|
||||||
|
/* (16 X 16 , 宋体 )*/
|
||||||
|
|
||||||
|
/* (16 X 16 , 宋体 )*/
|
||||||
|
|
||||||
|
/* (12 X 12 , 宋体 )*/
|
||||||
|
|
||||||
|
/* (6 X 12 , 宋体 )*/
|
||||||
|
|
||||||
|
static const unsigned char PROGMEM bmp1[] = {
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x07,0x80,0x00,0x78,0x00,0x00,0x00,0x00,0x1E,0x00,0x01,0xE0,0x00,0x00,
|
||||||
|
0x00,0x00,0x0F,0xC0,0x00,0xFC,0x00,0x00,0x00,0x00,0x3F,0x00,0x03,0xF0,0x00,0x00,
|
||||||
|
0x00,0x00,0x1F,0xE0,0x01,0xFE,0x00,0x00,0x00,0x00,0x7F,0x80,0x07,0xF8,0x00,0x00,
|
||||||
|
0x00,0x00,0x3F,0xF0,0x03,0xFF,0x00,0x00,0x00,0x00,0xFF,0xC0,0x0F,0xFC,0x00,0x00,
|
||||||
|
0x00,0x00,0x3F,0xF8,0x07,0xFF,0x00,0x00,0x00,0x00,0xFF,0xE0,0x1F,0xFC,0x00,0x00,
|
||||||
|
0x00,0x00,0x3F,0xFC,0x0F,0xFF,0x00,0x00,0x00,0x00,0xFF,0xF0,0x3F,0xFC,0x00,0x00,
|
||||||
|
0x00,0x00,0x3F,0xFE,0x1F,0xFF,0x00,0x00,0x00,0x00,0xFF,0xF8,0x7F,0xFC,0x00,0x00,
|
||||||
|
0x00,0x00,0x1F,0xFF,0x3F,0xFE,0x00,0x00,0x00,0x00,0x7F,0xFC,0xFF,0xF8,0x00,0x00,
|
||||||
|
0x00,0x00,0x0F,0xFF,0xFF,0xFC,0x00,0x00,0x00,0x00,0x3F,0xFF,0xFF,0xF0,0x00,0x00,
|
||||||
|
0x00,0x00,0x07,0xFF,0xFF,0xF8,0x00,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xE0,0x00,0x00,
|
||||||
|
0x00,0x00,0x03,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0xC0,0x00,0x00,
|
||||||
|
0x00,0x00,0x01,0xFF,0xFF,0xE0,0x00,0x00,0x00,0x00,0x07,0xFF,0xFF,0x80,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,0x03,0xFF,0xFF,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x7F,0xFF,0x80,0x00,0x00,0x00,0x00,0x01,0xFF,0xFE,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x3F,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFC,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x3F,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFC,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x7F,0xFF,0x80,0x00,0x00,0x00,0x00,0x01,0xFF,0xFE,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,0x03,0xFF,0xFF,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x01,0xFF,0xFF,0xE0,0x00,0x00,0x00,0x00,0x07,0xFF,0xFF,0x80,0x00,0x00,
|
||||||
|
0x00,0x00,0x03,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0xC0,0x00,0x00,
|
||||||
|
0x00,0x00,0x07,0xFF,0xFF,0xF8,0x00,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xE0,0x00,0x00,
|
||||||
|
0x00,0x00,0x0F,0xFF,0xFF,0xFC,0x00,0x00,0x00,0x00,0x3F,0xFF,0xFF,0xF0,0x00,0x00,
|
||||||
|
0x00,0x00,0x1F,0xFF,0x3F,0xFE,0x00,0x00,0x00,0x00,0x7F,0xFC,0xFF,0xF8,0x00,0x00,
|
||||||
|
0x00,0x00,0x3F,0xFE,0x1F,0xFF,0x00,0x00,0x00,0x00,0xFF,0xF8,0x7F,0xFC,0x00,0x00,
|
||||||
|
0x00,0x00,0x3F,0xFC,0x0F,0xFF,0x00,0x00,0x00,0x00,0xFF,0xF0,0x3F,0xFC,0x00,0x00,
|
||||||
|
0x00,0x00,0x3F,0xF8,0x07,0xFF,0x00,0x00,0x00,0x00,0xFF,0xE0,0x1F,0xFC,0x00,0x00,
|
||||||
|
0x00,0x00,0x3F,0xF0,0x03,0xFF,0x00,0x00,0x00,0x00,0xFF,0xC0,0x0F,0xFC,0x00,0x00,
|
||||||
|
0x00,0x00,0x1F,0xE0,0x01,0xFE,0x00,0x00,0x00,0x00,0x7F,0x80,0x07,0xF8,0x00,0x00,
|
||||||
|
0x00,0x00,0x0F,0xC0,0x00,0xFC,0x00,0x00,0x00,0x00,0x3F,0x00,0x03,0xF0,0x00,0x00,
|
||||||
|
0x00,0x00,0x07,0x80,0x00,0x78,0x00,0x00,0x00,0x00,0x1E,0x00,0x01,0xE0,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"C:\Users\qw200\Desktop\微信图片_20230320215131.bmp",0*/
|
||||||
|
/* (128 X 64 )*/
|
||||||
|
/* (128 X 64 )*/
|
||||||
|
|
||||||
|
/*"C:\Users\qw200\Desktop\img\hua_01.bmp",0*/
|
||||||
|
/* (128 X 64 )*/ };
|
||||||
|
|
||||||
|
|
||||||
|
static const unsigned char PROGMEM bmp4[] = {
|
||||||
|
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x01,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0x80,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x03,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xC0,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x07,0xFF,0x80,0x00,0x00,0x00,0x00,0x01,0xFF,0xE0,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x0F,0xFF,0xC0,0x00,0x00,0x00,0x00,0x03,0xFF,0xF0,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x0F,0xFF,0xC0,0x00,0x00,0x00,0x00,0x03,0xFF,0xF0,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x1F,0xFF,0xE0,0x00,0x00,0x00,0x00,0x07,0xFF,0xF8,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x1F,0xFF,0xE0,0x00,0x00,0x00,0x00,0x07,0xFF,0xF8,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x1F,0xFF,0xE0,0x00,0x00,0x00,0x00,0x07,0xFF,0xF8,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x1F,0xFF,0xE0,0x00,0x00,0x00,0x00,0x07,0xFF,0xF8,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x1F,0xFF,0xE0,0x00,0x00,0x00,0x00,0x07,0xFF,0xF8,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x1F,0xFF,0xE0,0x00,0x00,0x00,0x00,0x07,0xFF,0xF8,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x1F,0xFF,0xE0,0x00,0x00,0x00,0x00,0x07,0xFF,0xF8,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x1F,0xFF,0xE0,0x00,0x00,0x00,0x00,0x07,0xFF,0xF8,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x1F,0xFF,0xE0,0x00,0x00,0x00,0x00,0x07,0xFF,0xF8,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x1F,0xFF,0xE0,0x00,0x00,0x00,0x00,0x07,0xFF,0xF8,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x1F,0xFF,0xE0,0x00,0x00,0x00,0x00,0x07,0xFF,0xF8,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x1F,0xFF,0xE0,0x00,0x00,0x00,0x00,0x07,0xFF,0xF8,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x1F,0xFF,0xE0,0x00,0x00,0x00,0x00,0x07,0xFF,0xF8,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x1F,0xFF,0xE0,0x00,0x00,0x00,0x00,0x07,0xFF,0xF8,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x1F,0xFF,0xE0,0x00,0x00,0x00,0x00,0x07,0xFF,0xF8,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x1F,0xFF,0xE0,0x00,0x00,0x00,0x00,0x07,0xFF,0xF8,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x1F,0xFF,0xE0,0x00,0x00,0x00,0x00,0x07,0xFF,0xF8,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x1F,0xFF,0xE0,0x00,0x00,0x00,0x00,0x07,0xFF,0xF8,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x1F,0xFF,0xE0,0x00,0x00,0x00,0x00,0x07,0xFF,0xF8,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x1F,0xFF,0xE0,0x00,0x00,0x00,0x00,0x07,0xFF,0xF8,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x0F,0xFF,0xC0,0x00,0x00,0x00,0x00,0x03,0xFF,0xF0,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x0F,0xFF,0xC0,0x00,0x00,0x00,0x00,0x03,0xFF,0xF0,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x07,0xFF,0x80,0x00,0x00,0x00,0x00,0x01,0xFF,0xE0,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x03,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xC0,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x01,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0x80,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"C:\Users\qw200\Desktop\img\hua_01.bmp",0*/
|
||||||
|
/* (128 X 64 )*/ };/*"C:\Users\qw200\Desktop\img\hua_04.bmp",0*/
|
||||||
|
/* (128 X 64 )*/
|
||||||
|
static const unsigned char PROGMEM hand_128x64[] = {
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x3F,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFC,
|
||||||
|
0x3F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xFC,
|
||||||
|
0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,
|
||||||
|
0x36,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x6C,
|
||||||
|
0x34,0x00,0x00,0x00,0x00,0x01,0xF8,0x00,0x00,0x1F,0x80,0x00,0x00,0x00,0x00,0x2C,
|
||||||
|
0x30,0x00,0x00,0x00,0x00,0x03,0xFE,0x00,0x00,0x7F,0xC0,0x00,0x00,0x00,0x00,0x0C,
|
||||||
|
0x30,0x00,0x00,0x00,0x00,0x07,0xFF,0x00,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,0x0C,
|
||||||
|
0x30,0x00,0x00,0x00,0x00,0x0F,0xFF,0xC0,0x03,0xFF,0xF0,0x00,0x00,0x00,0x00,0x0C,
|
||||||
|
0x20,0x00,0x00,0x00,0x00,0x0E,0x1F,0xE0,0x07,0xF8,0x70,0x00,0x00,0x00,0x00,0x04,
|
||||||
|
0x20,0x00,0x00,0x00,0x00,0x0F,0xE7,0xF0,0x0F,0xE7,0xF0,0x00,0x00,0x00,0x00,0x04,
|
||||||
|
0x20,0x00,0x00,0x00,0x00,0x0F,0xF9,0xF8,0x1F,0x9F,0xF0,0x00,0x00,0x00,0x00,0x04,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x0F,0xFE,0x7C,0x3E,0x7F,0xF0,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xBE,0x7D,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x07,0xFF,0xDF,0x7B,0xFF,0xE0,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x03,0xFF,0xEE,0xF7,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFE,0xEF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xFD,0xDF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7D,0xDE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1D,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0B,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x1D,0x55,0x55,0x55,0x55,0x58,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x1A,0xAA,0xAA,0xAA,0xAA,0xB8,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x03,0xFF,0xFF,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x03,0xFF,0xFF,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x03,0xFF,0xFF,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x03,0xFF,0xFF,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x03,0xFF,0xFF,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x01,0xFF,0xFE,0x7F,0xFF,0x80,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x01,0xFF,0xFE,0x7F,0xFF,0x80,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x01,0xFF,0xFC,0x3F,0xFF,0x80,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x01,0xFF,0xFC,0x3F,0xFF,0x80,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x01,0xFF,0xF8,0x1F,0xFF,0x80,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xF8,0x1F,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xF0,0x0F,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xF0,0x0F,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xE0,0x07,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xE0,0x07,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xE0,0x07,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xE0,0x07,0xFE,0x00,0x00,0x00,0x00,0x00,0x04,
|
||||||
|
0x20,0x00,0x00,0x00,0x00,0x00,0x7F,0xF0,0x0F,0xFE,0x00,0x00,0x00,0x00,0x00,0x04,
|
||||||
|
0x20,0x00,0x00,0x00,0x00,0x00,0x3F,0xF8,0x1F,0xFC,0x00,0x00,0x00,0x00,0x00,0x04,
|
||||||
|
0x20,0x00,0x00,0x00,0x00,0x00,0x3F,0xFE,0x7F,0xFC,0x00,0x00,0x00,0x00,0x00,0x0C,
|
||||||
|
0x30,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,0xFF,0xFC,0x00,0x00,0x00,0x00,0x00,0x0C,
|
||||||
|
0x30,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,0xFF,0xFC,0x00,0x00,0x00,0x00,0x00,0x0C,
|
||||||
|
0x30,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xF8,0x00,0x00,0x00,0x00,0x00,0x2C,
|
||||||
|
0x34,0x00,0x00,0x00,0x00,0x00,0x07,0xFF,0xFF,0xE0,0x00,0x00,0x00,0x00,0x00,0x6C,
|
||||||
|
0x36,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,
|
||||||
|
0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xFC,
|
||||||
|
0x3F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFC,
|
||||||
|
0x3F,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
};
|
||||||
|
|
||||||
|
|
14
FlowerpotOS3.1/src/picture.h
Normal file
14
FlowerpotOS3.1/src/picture.h
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
// picture.h
|
||||||
|
|
||||||
|
#ifndef _picture_h
|
||||||
|
#define _picture_h
|
||||||
|
|
||||||
|
#if defined(ARDUINO) && ARDUINO >= 100
|
||||||
|
#include "arduino.h"
|
||||||
|
#else
|
||||||
|
#include "WProgram.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
11
FlowerpotOS3.1/test/README
Normal file
11
FlowerpotOS3.1/test/README
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
|
||||||
|
This directory is intended for PlatformIO Test Runner and project tests.
|
||||||
|
|
||||||
|
Unit Testing is a software testing method by which individual units of
|
||||||
|
source code, sets of one or more MCU program modules together with associated
|
||||||
|
control data, usage procedures, and operating procedures, are tested to
|
||||||
|
determine whether they are fit for use. Unit testing finds problems early
|
||||||
|
in the development cycle.
|
||||||
|
|
||||||
|
More information about PlatformIO Unit Testing:
|
||||||
|
- https://docs.platformio.org/en/latest/advanced/unit-testing/index.html
|
Loading…
Reference in New Issue
Block a user