Hallo, selamat datang kembali. Pada artikel ini, kita akan membahas tentang fungsi pada pemrograman arduino yang secara khusus digunakan melakukan operasi matematika, fungsi-fungsi ini sering digunakan untuk memproses nilai pembacaan sensor menjadi nilai yang sesuai standard internasional dan bisa dimengerti manusia. mari kita bahas satu per satu :
Operasi bilangan dasar
kita bisa melakukan operasi bilangan dasar seperti penjumlahan, pengurangan, perkalian, pembagian, dan menghitung sisa pembagian. simbol yang digunakan untuk melakukan proses operasi bilangan disebut Operator (simbol + , – , / , x) sedangan bilangan yang menjadi objek operasi bilangan disebut Operand
c = a + b; //operasi penjumlahan
c = a - b; //operasi pengurangan
c = a * b; //operasi perkalian
c = a / b; //operasi pembagian
c = a % b; //operasi sisa pembagian (a dibagi b sisanya adalah c)
NOTES :
- Tipe data yang bisa digunakan untuk semua operasi diatas adalah int, float, double, short, long
- Nilai b pada operasi pembagian tidak bisa angka nol
- Nilai b pada operasi sisa pembagian tidak bisa angka nol
Operasi Trigonometri
Selain operasi bilangan dasar, kita juga bisa melakukan operasi trigonometri seperti sin cos tan, fungsi trigonometri sering digunakan untuk memproses input sensor yang berhubungan dengan posisi kemiringan seperti tilt sensor (sensor kemiringan) dan sensor akselerometer, juga sering digunakan untuk kontrol posisi motor servo atau motor dc menggunakan rotary encoder. berikut syntax nya :
sin(rad);
cos(rad);
tan(rad);
NOTES :
- Tipe data yang bisa digunakan pada parameter adalah tipe data float.
- Nilai balik dari fungsi ini adalah nilai sinus, cosinus, dan tangen, dengan tipe data double (hasilnya antara -1 sampai 1)
- Ingat bahwa fungsi ini parameternya adalah radian. kita biasanya menggunakan satuan derajat, jadi kita perlu mengubah satuan derajat menjadi radian dulu sebelum memasukannya ke parameter fungsi. satu derajat sama dengan phi/180 rad, jadi untuk mengubah derajat ke radian tinggal kalikan saja sudut yang kita punya dengan phi/180.
Sekarang bagaimana jika kita punya nilai sinus, cosinus dan tangen dan ingin mengubahnya ke derajat ?, kita bisa menggunakan fungsi invers trigonometri, dengan menggunakan syntax ini :
asin(x); //invers sinus
acos(x); //invers cosinus
atan(x); //invers tangen
nilai balik dari fungsi invers trigonometri adalah nilai sudut dalam satuan radian dengan tipe data float, sedangkan tipe data untuk parameternya adalah double. jika ingin satuan nya derajat, maka harus kita konversi dalu radian menjadi derajat dengan cara mengalikan sudut radian dengan 180/phi.
Operasi Pangkat Bilangan
Selain operasi trigonomotri kita juga bisa menghitung pangkat, kuadrat dan akar dari suatu bilangan menggunakan fungsi-fungsi ini :
pow(base, exponent); //operasi pangkat bilangan (tipe data parameter : float)
sq(x); //operasi kuadrat (bisa semua tipe data)
sqrt(x); //operasi akar kuadrat (bisa semua tipe data)
NOTES :
- Nilai balik dari semua fungsi diatas akan memiliki tipe data double
- Untuk menghitung nilai akar pangkat x yang lebih dari 2 (contoh, akar pangkat 3 atau akar pangkat 4) kita bisa menggunakan fungsi pow(). misal kita ingin menghitung akar pangkat 3 dari 27 maka syntax nya akan seperti ini :
pow(27,1/3);
Experiment
ayo kita coba melakukan operasi bilangan dengan arduino, coba ketik sketch dibawah ini :
// operasi matematika dengan arduino - purwarupa3d
int a = 50;
int b = 5;
int jumlah;
int kurang;
float bagi;
int kali;
int sisa;
float sinus;
float cosinus;
float tangen;
double arcsin;
double arccos;
double arctan;
float pangkat;
float kuadrat;
float akarKuadrat;
float akarPangkat;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
// operasi bilangan matematika
jumlah = a + b;
kurang = a - b;
bagi = a / b;
kali = a * b;
sisa = 9 % 5; //sisa dari 9 dibagi 5
//operasi trigonometri
float sudutRadian = 3.14/180*45; //45*(phi/180) ---> konversi 45 derajat ke radian
sinus = sin(sudutRadian);
cosinus = cos(sudutRadian);
tangen = tan(sudutRadian);
//operasi invers trigonometri
arcsin = asin(0.5); //ini harusnya 30 derajat
arccos = acos(0.5); //ini harusnya 60 derajat
arctan = atan(1); //ini harusnya 45 derajat
float sudut_arcsin = 180/3.14 * arcsin; //180/phi*sudut radian ---> konversi radian ke derajat
float sudut_arccos = 180/3.14 * arccos; //180/phi*sudut radian ---> konversi radian ke derajat
float sudut_arctan = 180/3.14 * arctan; //180/phi*sudut radian ---> konversi radian ke derajat
//operasi pangkat dan akar
pangkat = pow(2,5); // dibaca 2 pangkat 5
kuadrat = sq(5); //5 kuadrat
akarKuadrat = sqrt(16); //dibaca akar 16
akarPangkat = pow(16,0.25); //dibaca akar pangkat 4 dari 16
Serial.print("hasil jumlah = ");
Serial.println(jumlah);
Serial.print("hasil kurang = ");
Serial.println(kurang);
Serial.print("hasil bagi = ");
Serial.println(bagi);
Serial.print("hasil kali = ");
Serial.println(kali);
Serial.print("hasil sisa = ");
Serial.println(sisa);
Serial.print("hasil sinus = ");
Serial.println(sinus);
Serial.print("hasil cosinus = ");
Serial.println(cosinus);
Serial.print("hasil tangen = ");
Serial.println(tangen);
Serial.print("hasil sudut sinus = ");
Serial.println(sudut_arcsin);
Serial.print("hasil sudut cosinus = ");
Serial.println(sudut_arccos);
Serial.print("hasil sudut tangen = ");
Serial.println(sudut_arctan);
Serial.print("hasil pangkat = ");
Serial.println(pangkat);
Serial.print("hasil kuadrat = ");
Serial.println(kuadrat);
Serial.print("hasil akar kuadrat = ");
Serial.println(akarKuadrat);
Serial.print("hasil akar pangkat = ");
Serial.println(akarPangkat);
}
void loop() {
//no code
}
Saya menggunakan simulator wokwi untuk membuat experimen ini, bagi yang mau mencoba silahkan klik disini. coba upload sketch dan buka serial monitor, hasil nya seperti ini.
Perhatikan tabel diatas untuk mengecek hasil operasi trigonometri, pada sketch saya menghitung sinus cosinus dan tangen 45 derajat, hasil perhitungan sama dengan tabel (setengah akar 2 sama dengan 0,71). perhatikan juga perhitungan sudut dari nilai sinus, cosinus dan tangen, pada sketch saya menghitung sudut (dalam derajat) dari sin(0.5), cos(0.5) dan tan(1), hasilnya sesuai dengan tabel yaitu 30, 60 dan 45.
Silahkan coba ubah-ubah parameternya dan lihat apa pengaruhnya terhadap nilai balik nya. semoga bermanfaat