Welcome to the forum
Please follow the advice given in the link below when posting code, in particular the section entitled 'Posting code and common code problems'
Use code tags (the < CODE/ > icon above the compose window) to make it easier to read and copy for examination
https://forum.arduino.cc/t/how-to-get-the-best-out-of-this-forum
Please post your full sketch, using code tags when you do
Posting your code using code tags prevents parts of it being interpreted as HTML coding and makes it easier to copy for examination
In my experience the easiest way to tidy up the code and add the code tags is as follows
Start by tidying up your code by using Tools/Auto Format in the IDE to make it easier to read. Then use Edit/Copy for Forum and paste what was copied in a new reply. Code tags will have been added to the code to make it easy to read in the forum thus making it easier to provide help.
It is also helpful to post error messages in code tags as it makes it easier to scroll through them and copy them for examination
+++++++++++++++++++++++++++++++++++++
Selamat datang di forum
Harap ikuti saran yang diberikan dalam tautan di bawah ini saat memposting kode, khususnya bagian berjudul 'Memposting kode dan masalah kode umum'
Gunakan tag kode (ikon di atas jendela penulisan) agar lebih mudah dibaca dan disalin untuk pemeriksaan
https://forum.arduino.cc/t/cara-mendapatkan-yang-terbaik-dari-forum-ini
Harap posting sketsa lengkap Anda, menggunakan tag kode saat Anda melakukannya
Memposting kode Anda menggunakan tag kode mencegah beberapa bagiannya ditafsirkan sebagai kode HTML dan membuatnya lebih mudah untuk disalin untuk pemeriksaan
Menurut pengalaman saya, cara termudah untuk merapikan kode dan menambahkan tag kode adalah sebagai berikut
Mulailah dengan merapikan kode Anda menggunakan Tools/Auto Format di IDE agar lebih mudah dibaca. Kemudian gunakan Edit/Copy for Forum dan tempel apa yang disalin di balasan baru. Tag kode akan ditambahkan ke kode agar mudah dibaca di forum sehingga memudahkan pemberian bantuan.
Mencantumkan pesan kesalahan pada tag kode juga berguna karena akan memudahkan untuk menelusuri dan menyalinnya untuk pemeriksaan.
The doc states
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).
A membership function is a fundamental concept in fuzzy logic. It defines how each point in the input space is mapped to a membership value between 0 and 1 (the degree of truth or belonging to a fuzzy set.
In a membership function, the input is usually a numeric value, and the output is a degree of membership, typically represented by a value between 0 and 1. A membership value of 0 means the element does not belong to the set at all, while a membership value of 1 means the element fully belongs to the set. Any value between 0 and 1 represents partial membership.
As the doc states, there are different types of membership functions, such as triangular, trapezoidal, and singleton, which define different shapes of how membership values change across the input space.
- A triangular membership function increases from 0 to 1 and then decreases back to 0 in the shape of a triangle.
- A trapezoidal membership function has a flat top where the membership stays at 1 for a range of values and then decreases back to 0 at the ends.
- A singleton membership function has a value of 1 at a single point and 0 everywhere else.
So from what I can guess from your image,
It seems you want a triangular membership as you attempt to pass 3 parameters but the FuzzySet constructor requires 4 parameters not 3
In a triangular membership function, the points a, b, and c define the shape of the triangle. The point a is the leftmost point where the membership value starts to increase from zero. The point b is the peak of the triangle, where the membership value reaches its maximum (usually 1). The point c is the rightmost point where the membership value starts to decrease back towards zero.
Although I did not use that library, I would guess that in the constructor FuzzySet(float a, float b, float c, float d), the fourth point d would be typically set equal to c, as it doesn't change the shape of the triangle.
➜ I would try with
FuzzySet *kecil = new FuzzySet (0, 0, 90, 90) ;
pwm->addFuzzySet (kecil);
FuzzySet sedang = new FuzzySet (91, 100, 175, 175) ;
pwm->addFuzzySet (sedang) ;
FuzzySet *besar = new FuzzySet (176, 200, 255, 255) ;
pwm->addFuzzySet (besar) ;
computer generated traduction
Dokumen menyatakan
FuzzySet objek - Ini adalah salah satu objek utama dari Pustaka Fuzzy, dengan setiap set memungkinkan untuk memodelkan sistem yang dimaksud. Saat ini pustaka mendukung fungsi keanggotaan segitiga, trapezoidal, dan singleton, yang dirakit berdasarkan titik A, B, C, dan D, yang diteruskan sebagai parameter dalam konstruktor
FuzzySet(float a, float b, float c, float d).
Fungsi keanggotaan adalah konsep dasar dalam logika fuzzy. Fungsi ini mendefinisikan bagaimana setiap titik dalam ruang input dipetakan ke nilai keanggotaan antara 0 dan 1 (derajat kebenaran atau keterkaitan dengan himpunan fuzzy).
Dalam fungsi keanggotaan, input biasanya berupa nilai numerik, dan outputnya adalah derajat keanggotaan, yang biasanya diwakili oleh nilai antara 0 dan 1. Nilai keanggotaan 0 berarti elemen tidak termasuk dalam himpunan sama sekali, sedangkan nilai keanggotaan 1 berarti elemen sepenuhnya termasuk dalam himpunan. Setiap nilai antara 0 dan 1 mewakili keanggotaan parsial.
Seperti yang disebutkan dalam dokumen, ada berbagai jenis fungsi keanggotaan, seperti segitiga, trapezoidal, dan singleton, yang mendefinisikan bentuk berbeda dari bagaimana nilai keanggotaan berubah di seluruh ruang input.
- Fungsi keanggotaan segitiga meningkat dari 0 ke 1 dan kemudian menurun kembali ke 0 dalam bentuk segitiga.
- Fungsi keanggotaan trapezoidal memiliki bagian atas datar di mana keanggotaan tetap 1 untuk rentang nilai tertentu dan kemudian menurun kembali ke 0 di ujungnya.
- Fungsi keanggotaan singleton memiliki nilai 1 pada satu titik dan 0 di tempat lain.
Jadi, berdasarkan apa yang saya bisa tebak dari gambar Anda,
Sepertinya Anda menginginkan fungsi keanggotaan segitiga karena Anda mencoba memberikan 3 parameter, tetapi konstruktor
FuzzySet memerlukan 4 parameter, bukan 3.
Dalam fungsi keanggotaan segitiga, titik a, b, dan c mendefinisikan bentuk segitiga. Titik a adalah titik paling kiri di mana nilai keanggotaan mulai meningkat dari nol. Titik b adalah puncak segitiga, di mana nilai keanggotaan mencapai maksimum (biasanya 1). Titik c adalah titik paling kanan di mana nilai keanggotaan mulai menurun kembali menuju nol.
Meskipun saya tidak menggunakan pustaka tersebut, saya kira dalam konstruktor FuzzySet(float a, float b, float c, float d), titik keempat d biasanya disetel sama dengan c, karena tidak mengubah bentuk segitiga.
➜ Saya akan mencoba dengan
FuzzySet *kecil = new FuzzySet (0, 0, 90, 90) ;
pwm->addFuzzySet (kecil);
FuzzySet sedang = new FuzzySet (91, 100, 175, 175) ;
pwm->addFuzzySet (sedang) ;
FuzzySet *besar = new FuzzySet (176, 200, 255, 255) ;
pwm->addFuzzySet (besar) ;

