Popular Posts

Other Menu

PENGGUNAAN FUNGSI MATEMATIKA




PERALATAN :

1.
Komputer
: 1 set
2.
Arduino Uno
: 1 pcs
3.
Kabel USB tipe B  : 1 pcs


PERCOBAAN :

10.1 Penggunaan Fungsi pada Library Math.h

Pada percobaan kali ini akan dijelaskan penggunaan fungsi matematika pada pemrograman mikro kontroler menggunakan Arduino IDE. Fungsi-fungsi yang digunakan telah terse dia pada file library math.h.

Prosedur :

1.  Tuliskan sintaks p rogram berikut ini, lakukan kompilasi dan u pload  program.

void setup() { Serial.begin(9 600);
Serial.println ("========== Fungsi Matematika ========== =");

Serial.print(" cos(90) = ");             Serial.println(cos( 90));

Serial.print(" sin(45) = ");             Serial.println(sin( 45));
Serial.print(" tan(90) = ");             Serial.println(tan( 90));

Serial.print(" atan(90) = ");           Serial.println(atan (90));

Serial.print(" atan2(90,10) = ");     Serial.println(atan 2(90,10));

Serial.print(" sqrt(9) = ");             Serial.println(sqrt (9));
Serial.print(" exp(9) = ");               Serial.println(exp( 9));

Serial.print(" log(100) = ");           Serial.println(log( 100));

Serial.print(" log10(100) = ");        Serial.println(log1 0(100));
Serial.print(" pow(9,2) = ");           Serial.println(pow( 9,2));

Serial.print(" square(9) = ");          Serial.println(sqrt (9));

Serial.print(" fabs(-1.5) = ");        Serial.println(fabs (-1.5));
Serial.print(" fmod(1.2334,2) = ");  Serial.println(fmod (1.2334,2));
}

void loop() {
}


Kesimpulan:

1.    Fungsi trigonometri pada program diatas salah. karna seharusnya Parameter input dalam bentuk Radian.



< >

SLEEP MODE DAN WATCHDOG TIMER




PERALATAN :

1.
Komputer
: 1 s et
2.
Arduino Uno
: 1 pcs
3.
Kabel USB tipe B : 1 pcs
4.
Project board
: 1 pcs
5.
Kabel jumper
: 1 pcs
6.
LED
: 1 pcs
7.
Resistor 330 Ohm : 1 pcs


PERCOBAAN :

9.1 Sleep Mode  Selama 4 Detik dan Wake Up Saat Terjadi Timer Overflow

Pada percobaan kali ini akan dibuat program untuk mengakses mode sleep pada mikrokontroler. Mode sleep akan terjadi selama 4 detik, kemudian mikrokontroler akan aktif kembali (wake up). Pada saat wake up, mikrokontroler akan melakukan perubahan terhadap kondisi LED yang terhubung pada pin 12. Sehingga jika program dijalankan, seakan-akan LED akan berkedip dengan selang waktu 4 detik. Namun, sebenarnya selama 4 detik tersebut mikrokontroler sedang dalam sleep mode (tidak melakukan apa-apa).

Prosedur :

1.  Rangkailah rangkaian pada Gambar 9.1 berikut ini.



















Gambar 9.1 Rangkaian Percobaan 9.1


2.   Tuliskan sintaks p rogram berikut ini pada Arduino IDE, kemudian lakukan kompilasi dan upload program.

#include <avr/sleep.h> #include <avr/power.h> #define LED_PIN (13) volatile int f_timer=0;

ISR(TIMER1_OVF_vect) { if(f_timer == 0) {

f_timer = 1;

}
}

void enterSleep(void) { set_sleep_mode(SLEEP_MODE_IDLE); sleep_enable();
power_adc_disable();
power_spi_disable();
power_timer0_disable();
power_timer2_disable();
power_twi_disable();
sleep_mode();
sleep_disable();

power_all_enable();
}


void setup() {


pinMode(LED_PIN, OUTPUT);

TCCR1A = 0x00;
TCNT1=0x0000;

TCCR1B = 0x05;
TIMSK1=0x01;

}


void loop() {


if(f_timer==1) {



f_timer = 0;

digitalWrite(LED_PIN, !digitalRead(LED_PIN)); enterSleep();

}
}



KESIMPULAN

Mode sleep akan terjadi selama 4 detik, kemudian mikrokontroler akan aktif kembali (wake up). Pada saat wake up, mikrokontroler akan melakukan perubahan terhadap kondisi LED yang terhubung pada pin 12. Sehingga jika program dijalankan, seakan-akan LED akan berkedip dengan selang waktu 4 detik. Namun, sebenarnya selama 4 detik tersebut mikrokontroler sedang dalam sleep mode (tidak melakukan apa-apa).
Manfaat sleep mode adalah menghemat daya. Saat sleep mode beberapa fungsi pada mikrokontroller yang tidak digunakan dinonaktifkan. Sehingga daya yang terpakai berkurang.


9.2  Sleep Mode  Selama 8 Detik dan Wake Up Saat Watchdog Timer Aktif

Pada percobaan kali ini akan dibuat program untuk mengakses watchdog timer pada mikrokontroler. Watchdog timer akan digunakan untuk mengaktifkan kembali mikrokontroler dari mode sleep. Watchdog timer akan terjadi tiap 8 detik.

Prosedur :

1.   Gantilah sintaks program pada Percoban 9.1 menjadi seperti b erikut ini, lakukan kompilasi dan uplo ad program ke mikrokontroler.

#include <avr/sleep.h> #include <avr/power.h> #include <avr/wdt.h> #define LED_PIN (13) volatile int f_wdt=1; ISR(WDT_vect) {

if(f_wdt == 0) { f_wdt=1; }

else { Serial.println("WDT Overrun!!!"); }

}

void enterSleep(void) { set_sleep_mode(SLEEP_MODE_PWR_SAVE);

sleep_enable();      sleep_mode();
sleep_disable();   power_all_enable();

}

void setup() {

Serial.begin(9600); Serial.println("Initialising..."); delay(100); pinMode(LED_PIN,OUTPUT);
MCUSR &= ~(1<<WDRF);

WDTCSR |= (1<<WDCE) | (1<<WDE); WDTCSR = 1<<WDP0 | 1<<WDP3; WDTCSR |= _BV(WDIE);

Serial.println("Initialisation complete."); delay(100);
}

void loop() { if(f_wdt == 1) {
digitalWrite(LED_PIN, !digitalRead(LED_PIN));

f_wdt = 0;       enterSleep();

}

}




KESIMPULAN :

Watchdog timer akan digunakan untuk mengaktifkan kembali mikrokontroler dari mode sleep. Saat Watchdog timer aktif, fungsi pada mikrokontroller yang dinonaktifka saat sleep akan aktif kembali. Watchdog timer digunakan untuk mengatasi sebuah situasi dimana program yang sedang kita jalankan mengalami kemacetan sehingga menyebabkan sistem berhenti bekerja. Analoginya adalah seperti kejadian hang-up pada komputer PC. Kemacetan program ini bisa disebabkan oleh beberapa hal baik secara software maupun secara hardware. Sebenarnya konsep watchdog timer itu sangatlah sederhana, Seperti halnya timer pada umumnya, watchdog timer terdiri dari sebuah register yang akan selalu mencacah naik (count up) setiap satu siklus mesin (1 detak clock). Yang membedakan watchdog timer dengan timer biasa adalah bahwa pada watchdog timer proses mencacah naik ini akan selalu terus berjalan dan tidak akan bisa dihentikan oleh kondisi apapun sekalipun dalam kondisi program macet. Dan setelah register watchdog timer mencapai maksimum (terjadi overflow) maka secara otomatis mikrokontroler akan mereset dirinya sendiri sehingga program akan melompat menuju ke awal program lagi.
 




< >

EEPROM MEMORY




PERALATAN

  1. Komputer                  : 1 set

  2. Arduino Uno             : 1 pcs

  3. Kabel USB tipe B      : 1 pcs

PERCOBAAN :

8.1 Baca dan Tulis Memori EEPROM

Pada percobaan kali ini akan dibuat program yang berfungsi sebagai antarmuka penanganan memori eeprom. Antarmuka program menggunakan komunikasi serial. Melalui Serial Termina l atau aplikasi lainnya, user dapat melakuka n perintah baca dan tulis dari atau ke memori eeprom.

Prosedur :

1.   Tuliskan sintaks p rogram berikut ini pada Arduino IDE, kemudian lakukan kompilasi dan uplo ad program ke mikrokontroler,

#include <EEPROM.h>boolean exitProgram = 0;

void setup() {

Serial.begin(9600);



Serial.println("=========  EEPROM
Access Via
Serial
==== ====");
Serial.println("Type this command
to execute
EEPROM opera tion");
Serial.println("write : For write
data to EEPROM");


Serial.println("read
: For read
data
from
EEPROM");
Serial.println("clear
: For
clear all
data
in EEPROM");
Serial.println("exit
: For
exit
from
program");
}






void loop() { int command;

while(!exitProgram) { do {

Serial.print("Type Command >> "); while(Serial.available()==0);command = readCommandFromSerial();



switch(command) {
case 1 : Serial.println("Write EEPROM Selected");writeEEPROM();

break;

case 2 : Serial.println("Read EEPROM Selected");readEEPROM();

break;

case 3 : Serial.println("Clear EEPROM Selected");clearEEPROM();

Serial.println("Clear EEPROM Finished"); break;

case 4 : Serial.println("Exit From Program");exitProgram = 1;

break;

default : Serial.println("Wrong Command, Please Ty pe Again !"); break;

}

}
while(command == 0);

}}

int readCommandFromSerial() { char stringFromSerial[10]; char data;
int command;

int countData = 0; for(int i=0;i<10;i++) {
stringFromSerial[i]=0;

}

while(true) { if(Serial.available()) {

data = Serial.read(); Serial.write(data); if(data=='\n') {
break;

}

else { if(data!='\r') {

stringFromSerial[countData] = data; countData++;
}

}

}

}

if(strcmp(stringFromSerial,"write")==0){command = 1;

}

else if(strcmp(stringFromSerial,"read")==0){command = 2;

}

else if(strcmp(stringFromSerial,"clear")==0){command = 3;

}

else if(strcmp(stringFromSerial,"exit")==0){command = 4;

}

else{
command = 0;}


return command;

}

int readValFromSerial() { char stringFromSerial[10]; char data;

int val;

int countData = 0; for(int i=0;i<10;i++) {

stringFromSerial[i]=0;

}

while(true) { if(Serial.available()) {

data = Serial.read(); Serial.write(data); if(data=='\n') {

break;

}

else { if(data!='\r') {

stringFromSerial[countData] = data; countData++;
}

}

}
}

sscanf(stringFromSerial,"%d",&val); return val;
}

void clearEEPROM() { for(int i=0;i<512;i++) {

EEPROM.write(i,0);

}

}

void writeEEPROM() { int address;
do {

Serial.print("Address : "); address = readValFromSerial(); if(address>512) {

Serial.println("Addres maximal is 512 !, Please type again !");

}

}

while(address>512); int data;

do {

Serial.print("Data : "); data = readValFromSerial(); if(data>512) {
Serial.println("Data maximal is 512 !, Please type again !");

}

}

while(data>512);EEPROM.write(address,data); Serial.println("EEPROM Write Success !");

}

void readEEPROM() {



int address; do {

Serial.print("Address : "); address = readValFromSerial(); if(address>512) {
Serial.println("Addres maximal is 512 !, Please type again !");

}

}
while(address>512);

int data = EEPROM.read(address);Serial.print("Data in Address "); Serial.print(address,DEC); Serial.print(" : "); Serial.println(data,DEC);

}


Tugas dan Pertanyaan :

1.      Jalankan aplikasi Serial Monitor pada Arduino, pastikan konfigu rasi Serial Monitor menggunakan baudrate 9600 dan pada akhir pengiriman data disertakan karakter CR + LF. Lakukan penulisan data pada memori alamat 100, dengan data bernilai 10. Kemudian keluar dari program dan matikan power Arduino dan nyalakan kembali. Lakukan pembacaan data pada alamat 100, berapakah nilai data pada alamat 100 ? Apakah data yang dituliskan sebelumnya hilang ?
tidak hilang , pada saat kita menulis alamat nya 100 dan data nya 10 nanti pada serial monitor akan tertulis sukses berarti data dan adres berhasil di simpan
sebelum di sipan kita harus memilih write , jika sudah di cabut baru kita ketik read jika dia minta alamat nya kita ketik saja 100 dan nanti akan keluar data alamat 100 adalah 10


2.      Kenapa pada program penulisan data hanya dibatasi sampai 512 ? Jelaskan !

Ø  Karena.EEPROM memiliki kapasitas memory 512 Byte saja




3.      Kenapa pada program alamat memori yang dapat ditulisi data hanya sampai 512 ? Jelaskan !
Ø  Karena,  batas data dari EEPROMhanya memiliki kapsitas  512.jadi disaat data yang dimasukan lebih dari 512,makaprogram tidak akan membaca data tersebut.




4.      Buatlah kesimpulan dari praktikum ini !


Ø  EEPROM (Electrically Erasable Programmable Read-Only Memory).
Suatu program untuk menyimpan suatu alamat atau data
Memori EEPROM bersifat NON-VOLATILE yaitu tidak akan hlang datanya meskipun catu daya di matikan dan kecepatan akses lebih rendah dari ram.


























< >