All Projects → zerokol → Efll

zerokol / Efll

Licence: mit
eFLL (Embedded Fuzzy Logic Library) is a standard library for Embedded Systems

Projects that are alternatives of or similar to Efll

Taskscheduler
Cooperative multitasking for Arduino, ESPx and STM32 microcontrollers
Stars: ✭ 613 (+367.94%)
Mutual labels:  arduino, library
Dmxusb
DMXUSB emulates an ENTTEC-compatible DMXKing USB to DMX serial device with one, two, or n universes.
Stars: ✭ 66 (-49.62%)
Mutual labels:  arduino, library
Adafruit sensor
Common sensor library
Stars: ✭ 757 (+477.86%)
Mutual labels:  arduino, library
Md parola
Library for modular scrolling LED matrix text displays
Stars: ✭ 282 (+115.27%)
Mutual labels:  arduino, library
Arduinoxinput
XInput library for USB capable Arduino boards
Stars: ✭ 126 (-3.82%)
Mutual labels:  arduino, library
Adafruit Pwm Servo Driver Library
Adafruit PWM Servo Driver Library
Stars: ✭ 300 (+129.01%)
Mutual labels:  arduino, library
Ferret
Ferret is a free software lisp implementation for real time embedded control systems.
Stars: ✭ 878 (+570.23%)
Mutual labels:  arduino, embedded-systems
Lpd8806
Arduino library for LED strips and pixels using LPD8806 (and probably LPD8803/LPD8809)
Stars: ✭ 207 (+58.02%)
Mutual labels:  arduino, library
Qpn
QP-nano real-time embedded framework/RTOS for embedded systems based on active objects (actors) and hierarchical state machines
Stars: ✭ 107 (-18.32%)
Mutual labels:  arduino, embedded-systems
Easyddns
Easy to Use ESP8266 DDNS Update Client Library.
Stars: ✭ 96 (-26.72%)
Mutual labels:  arduino, library
Adafruit Fingerprint Sensor Library
Arduino library for interfacing to the fingerprint sensor in the Adafruit shop
Stars: ✭ 273 (+108.4%)
Mutual labels:  arduino, library
Arduinosim800l
Arduino HTTP & FTP client for SIM800L/SIM800 boards to perform GET and POST requests to a JSON API as well as FTP uploads.
Stars: ✭ 127 (-3.05%)
Mutual labels:  arduino, library
Libhydrogen
A lightweight, secure, easy-to-use crypto library suitable for constrained environments.
Stars: ✭ 247 (+88.55%)
Mutual labels:  arduino, embedded-systems
Esp Dash
A blazing fast library to create a functional dashboard for ESP8266 and ESP32
Stars: ✭ 548 (+318.32%)
Mutual labels:  arduino, library
Cwebsocket
cWebsocket is lightweight websocket server library
Stars: ✭ 241 (+83.97%)
Mutual labels:  arduino, library
Lowlevelprogramming University
How to be low-level programmer
Stars: ✭ 7,224 (+5414.5%)
Mutual labels:  arduino, embedded-systems
Arduino Libs
Arduino Libs & Examples: ADS1147, ADS7846, DAC8760, DS1307, RV8523, MCP2515, WS2812, S65-Display, MI0283QT-2/-9/-11, HX8347D, ILI9341, SSD1331
Stars: ✭ 148 (+12.98%)
Mutual labels:  arduino, library
Md max72xx
LED Matrix Library
Stars: ✭ 186 (+41.98%)
Mutual labels:  arduino, library
Shiftregister74hc595
Arduino library that simplifies the usage of shift registers
Stars: ✭ 82 (-37.4%)
Mutual labels:  arduino, library
Pulsesensorplayground
A PulseSensor library (for Arduino) that collects our most popular projects in one place.
Stars: ✭ 126 (-3.82%)
Mutual labels:  arduino, library

GitHub tag (latest SemVer) GitHub Codacy Badge GitHub top language GitHub search hit counter GitHub last commit (branch)

eFLL (Embedded Fuzzy Logic Library)

eFLL (Embedded Fuzzy Logic Library) is a standard library for Embedded Systems to implement easy and efficient Fuzzy Systems.

Para informações avançadas, documentação e exemplos de uso em PORTUGUÊS: eFLL - Uma Biblioteca Fuzzy para Arduino e Sistemas Embarcados

For advanced information, documentation, and usage examples in ENGLISH: eFLL - A Fuzzy Library for Arduino and Embedded Systems

Characteristics

Written in C++/C, uses only standard C language library "stdlib.h", so eFLL is a library designed not only to Arduino, but any Embedded System or not how have your commands written in C.

It has no explicit limitations on quantity of Fuzzy, Fuzzy Rules, Inputs or Outputs, these limited processing power and storage of each microcontroller

It uses the process:

(MAX-MIN) and (Mamdani Minimum) for inference and composition, (CENTER OF AREA) to defuzzification in a continuous universe.

Tested with GTest for C, Google Inc.

How to install (general use)

Step 1: Go to the official project page on GitHub (Here)

Step 2: Make a clone of the project using Git or download at Download on the button "Download as zip."

Step 3: Clone or unzip (For safety, rename the folder to "eFLL") the files into some folder

Step 4: Compile and link it to your code (See Makefile)

How to install (and import to use with Arduino)

Easy Way

Step 1: Open the Arduino IDE

Step 2: In main menu, go to SKETCH >> INCLUDE LIBRARY >> MANAGE LIBRARIES

Step 3: Search for "eFLL" or "Fuzzy"

Step 4: eFLL will appear in the list, to finish, just click in INSTALL, now you can include eFLL to your sketchs

Old Way

Step 1: Go to the official project page on GitHub (Here)

Step 2: Make a clone of the project using Git or download at Download on the button "Download as zip."

Step 3: Clone or unzip (For safety, rename the folder to "eFLL") the files into Arduino libraries' folder:

Ubuntu (/usr/share/arduino/libraries/) if installed via apt-get, if not, on Windows, Mac or Linux (where you downloaded the Arduino IDE, the Library folder is inside)

Ok! The library is ready to be used!

If the installation of the library has been successfully held, to import the library is easy:

Step 4: Open your Arduino IDE, check out the tab on the top menu SKETCH → LIBRARY → Import eFLL

Brief Documentation

Class Diagram

Fuzzy object - This object includes all the Fuzzy System, through it, you can manipulate the Fuzzy Sets, Linguistic Rules, inputs and outputs.

FuzzyInput object - This object groups all entries Fuzzy Sets that belongs to the same domain.

FuzzyOutput object - This object is similar to FuzzyInput, is used to group all output Fuzzy Sets thar belongs to the same domain.

FuzzySet object - This is one of the main objects of Fuzzy Library, with each set is possible to model the system in question. Currently the library supports triangular membership functions, trapezoidal and singleton, which are assembled based on points A, B, C and D, they are passed by parameter in its constructor FuzzySet(float a, float b, float c, float d).

FuzzyRule object - This object is used to mount the base rule of Fuzzy object, which contains one or more of this object. Instantiated with FuzzyRule fr = new FuzzyRule (ID, antecedent, consequent).

FuzzyRuleAntecedent object - This object is used to compound the object FuzzyRule, responsible for assembling the antecedent of the conditional expression of a FuzzyRule.

FuzzyRuleConsequent object - This object is used to render the object FuzzyRule, responsible for assembling the output expression of a FuzzyRule.

Tips

These are all eFLL library objects that are used in the process. The next step, generally interactive is handled by three methods of the Fuzzy Class first:

bool setInput(int id, float value);

It is used to pass the Crispe input value to the system note that the first parameter is the FuzzyInput object' ID which parameter value is intended.

bool fuzzify();

It is used to start the fuzzification process, composition and inference.

And finally:

float defuzzify(int id);

REFERENCES

Authors: AJ Alves [email protected]; Co authors: Dr. Ricardo Lira [email protected], Msc. Marvin Lemos [email protected], Douglas S. Kridi [email protected], Kannya Leal [email protected]

Special Thanks to Contributors

@mikebutrimov, @tzikis, @na7an

LICENSE

MIT License

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].