Senin, 18 Maret 2024

PENYESUAIAN PINOUT ARDUINO NANO DENGAN OUTSEAL

Outseal?? ya outseal, dalam postingan kali ini akan membahas menganai penyesuaian pin Arduino Nano dengan Outseal PLC (software) dalam kata lain menggunakan software Outseal untuk memprogram Arduino Nano. Khususnya untuk saya sebagai catatan bagi saya dan buat teman-teman yang membutuhkan informasi penyesuaian pin Input Arduino Nano dengan Input/Output yang ada pada software Outseal, yang mana pada outseal terdapat 8 input (digital), 8 output (digital) dan 2 input analog. 

Pada percobaaan ini saya menggunakan software Outseal V2.6 Rev 3 dan papan Arduino Nano sebagai Hardware, didalam software outseal terdapat Relay sebagai Output dan Switch sebagai input yaitu R1 s/d R8 dan S1 s/d S8 yang tentunya urutan I/O tersebut tidak sama dengan urutan pin yang ada pada papan Arduino Nano. Pada software Outseal setingan Hardware menggunakan "PLC Shield V.1 NANO"

PLC Shield V.1 NANO


Bagaimana cara menentukannya? yaa pada prakteknya saya mencoba satu persatu pin I/O yang ada pada Arduino Nano dan didapatkanlah rangkaian berikut sebagai rangkaian uji pin Arduino Nano dengan Software Outseal


Gambar : Pin Arduino Nano dengan Software Outseal
Klik untuk memperbesar gambar

Pada rangkaian uji Input (Switch) digunakan push button dirangkai seri dengan resistor (R330), pada rangkaian output (Relay) digunakan resistor (R330) dirangkai seri dengan LED. Pada kesempatan ini saya belum melakukan percobaan dengan input Analog dikarenakan keterbatasan komponen karena pada saat melakukan uji coba dan saat tulisan ini dibuat saya sedang berada diluar kota, mungkin selanjutnya dapat dilanjutkan dengan percobaan input Analog. Sekian pembahasan kali ini, mohon maaf atas segala kekurangan dan kesalahan, tentunya saya sangat menerima masukan dari teman-teman.

Thank you!!


Minggu, 27 Juni 2021

Arduino - Jam Digital dengan OLED Display

Jam Digital Arduino
Bismillah... Dari beberapa postingan sebelumnya, dapat kita kembangkan pemrograman arduino yaitu membuat jam digital dengan OLED display. Tentunya dalam membuat jam digital arduino ini kita menggunakan module RTC sebagai refensi waktu, dalam hal ini adalah RTC DS3231 yang mempunyai tingkat presisi yang tinggi. 

Bagaimana cara setting RTC DS3231? silahkan lihat (DISINI). 

Selain menampilkan waktu & tanggal, kita juga dapat menampilkan nilai temperatur dari modul RTC tersebut. 
Secara sederhana, cara kerja dari jam digital Arduino ini dapat kita pahami bahwa "Arduino membaca data (Waktu & Temperatur) dari modul RTC dan menampilkannya pada OLED display".

Apa saja modul yang digunakan? berikut modul-modul yang kita gunakan : 
  • Arduino Board (UNO/NANO) 
  • RTC DS3231 
  • OLED 0.96" 
  • Breadboard 
  • Kabel Jumper 
Jam digital Arduino yang kita buat ini sangatlah sederhana, tanpa menggunakan push button untuk setting waktu hanya mengandalkan keakuratan modul RTC saja. Jadi, selama modul RTC bekerja normal (Baterai RTC tidak Low / disconnect) maka tampilan waktu akan tetap akurat. 

Jika ditemukan waktu yang tidak sesuai, salah satu kemungkinan yang terjadi adalah baterai RTC sudah low, tentunya kita harus melakukan penggantian baterai RTC dan melakukan seting kembali RTC serta upload kembali program Jam Digital Arduino. 

Berikut skema rangkaian untuk Jam Digital Arduino. 

Jam Digital Arduino

Dalam pemrograman Jam Digital Arduino ini ada beberapa library yang digunakan, yaitu: 

                Wire.h                
                adafruit_gfx.h        (DOWNLOAD)
                adafruit_ssd1306.h    (DOWNLOAD)


Jika telah melakukan proses instalasi library tersebut kita dapat menggunakan sketch program dibawah ini:


#include <Wire.h> 
#include <Adafruit_GFX.h> 
#include <Adafruit_SSD1306.h> 

#define OLED_RESET -1
Adafruit_SSD1306 display(OLED_RESET);


void setup(void) {

display.begin(SSD1306_SWITCHCAPVCC, 0x3C); 

display.clearDisplay();
display.display();

display.setTextColor(WHITE, BLACK);
display.drawRect(117, 25, 3, 3, WHITE); 
draw_text(0, 25, "TEMPERATURE =", 1);
draw_text(122, 25, "C", 1);
}

char Time[] = " : : ";
char Calendar[] = " / /20 ";
char temperature[] = " 00.00";
char temperature_msb;
byte i, second, minute, hour, day, date, month, year, temperature_lsb;

void display_day(){
switch(day){
case 1: draw_text(13, 0, " SUN ", 1); break;
case 2: draw_text(13, 0, " MON ", 1); break;
case 3: draw_text(13, 0, " TUE ", 1); break;
case 4: draw_text(13, 0, " WED ", 1); break;
case 5: draw_text(13, 0, " THU ", 1); break;
case 6: draw_text(13, 0, " FRI ", 1); break;
default: draw_text(13, 0, " SAT ", 1);
}
}

void DS3231_display(){
// Convert BCD to decimal
second = (second >> 4) * 10 + (second & 0x0F);
minute = (minute >> 4) * 10 + (minute & 0x0F);
hour = (hour >> 4) * 10 + (hour & 0x0F);
date = (date >> 4) * 10 + (date & 0x0F);
month = (month >> 4) * 10 + (month & 0x0F);
year = (year >> 4) * 10 + (year & 0x0F);
// End conversion

Time[7] = second % 10 + 48;
Time[6] = second / 10 + 48;
Time[4] = minute % 10 + 48;
Time[3] = minute / 10 + 48;
Time[1] = hour % 10 + 48;
Time[0] = hour / 10 + 48;
Calendar[9] = year % 10 + 48;
Calendar[8] = year / 10 + 48;
Calendar[4] = month % 10 + 48;
Calendar[3] = month / 10 + 48;
Calendar[1] = date % 10 + 48;
Calendar[0] = date / 10 + 48;
if(temperature_msb < 0){
temperature_msb = abs(temperature_msb);
temperature[0] = '-';
}
else
temperature[0] = ' ';
temperature_lsb >>= 6;
temperature[2] = temperature_msb % 10 + 48;
temperature[1] = temperature_msb / 10 + 48;
if(temperature_lsb == 0 || temperature_lsb == 2){
temperature[5] = '0';
if(temperature_lsb == 0) temperature[4] = '0';
else temperature[4] = '5';
}
if(temperature_lsb == 1 || temperature_lsb == 3){
temperature[5] = '5';
if(temperature_lsb == 1) temperature[4] = '2';
else temperature[4] = '7';
}

draw_text(50, 0, Calendar, 1); // MENAMPILKAN KALENDER (format: dd/mm/yyyy)
draw_text(18, 8, Time, 2); // MENAMPILKAN WAKTU
draw_text(80, 25, temperature, 1); // MENAMPILKAN TEMPERATUR
}

void draw_text(byte x_pos, byte y_pos, char *text, byte text_size) {
display.setCursor(x_pos, y_pos);
display.setTextSize(text_size);
display.print(text);
display.display();
}


void loop() {

Wire.beginTransmission(0x68); // Start I2C protocol with DS3231 address
Wire.write(0);                // Send register address
Wire.endTransmission(false);  // I2C restart
Wire.requestFrom(0x68, 7);    // Request 7 bytes from DS3231 and release I2C bus at end of reading
second = Wire.read();         // Read seconds from register 0
minute = Wire.read();         // Read minuts from register 1
hour = Wire.read(); // Read hour from register 2
day = Wire.read(); // Read day from register 3
date = Wire.read(); // Read date from register 4
month = Wire.read(); // Read month from register 5
year = Wire.read(); // Read year from register 6
Wire.beginTransmission(0x68); // Start I2C protocol with DS3231 address
Wire.write(0x11); // Send register address
Wire.endTransmission(false); // I2C restart
Wire.requestFrom(0x68, 2); // Request 2 bytes from DS3231 and release I2C bus at end of reading
temperature_msb = Wire.read(); // Read temperature MSB
temperature_lsb = Wire.read(); // Read temperature LSB

display_day();
DS3231_display(); // Diaplay time & calendar

delay(50); // Tunggu 50ms
}


Sekian....Semoga bermanfaat... 

Keep sharing...!!!

Senin, 21 Juni 2021

Arduino - Menampilkan Nilai Temperatur Pada OLED Display (Arduino thermometer)

Bismillah...Posting kali ini merupakan pengembangan dari posting Menampilkan Nilai Sensor DS18B20, yaitu dengan penambahan OLED display. 

Dengan menampilkan nilai pembacaan sensor temperatur (DS18B20) pada OLED display ini dapat kita katakan kita telah membuat sebuah alat yaitu Thermometer Digital berbasis Arduino, yang mana dapat kita terapkan untuk pengukuran suhu tubuh dll. 

Apa saja part yang digunakan untuk membuat Thermometer digital Arduino?
                               - Arduino Board (Uno/Nano) 
                               - OLED 0,96" 
                               - DS18B20 (Sensor Temperatur) 
                               - Resistor 4.7K 
                               - Bread board 
                               - Kabel jumper 

Bagaimana cara merangkainya? silahkan perhatikan gambar berikut : 

Arduino Thermometer - OLED Display


Setelah selesai membuat rangkaian Thermometer digital Arduino, dapat kita lanjutkan dengan proses pemrograman dengan sketch program berikut:


#include <wire.h>
#include <adafruit_gfx.h>
#include <adafruit_ssd1306.h>
#include <onewire.h>
#include <dallastemperature.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)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
#define ONE_WIRE_BUS 2 //Pin data temperatur pada arduino (UNO/NANO)

OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
DeviceAddress tempSensor1 = { 0x28, 0xEF, 0x18, 0x4D, 0x6, 0x0, 0x0, 0xFD }; //Alamat sensor


float temperature1; // Variabel untuk data temperatur



void setup()
{
Serial.begin(9600);

if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // Address 0x3D for 128x64
Serial.println(F("SSD1306 allocation failed"));
for(;;);
}

display.clearDisplay();
display.display();
display.setTextColor(WHITE, BLACK);

sensors.begin();
sensors.setResolution(tempSensor1, 12);

}


void loop()
{
sensors.requestTemperatures(); //Mengambil data sensor
temperature1 = sensors.getTempC(tempSensor1);
Serial.print("Temperatur1 = ");
Serial.print(temperature1); //Mengirim data temperatur pada serial monitor
Serial.println(" Celcius");
delay(1000);


display.setCursor(5, 10);
display.setTextSize(2);
display.print("TEMPERATUR"); //Menampilkan tulisan "TEMPERATUR" pada display OLED

display.setCursor(30, 27);
display.setTextSize(2);
display.print(temperature1); //Menampilkan nilai temperatur
display.drawRect(91, 27, 3, 3, WHITE); //Menampilkan simbol temperature
display.setCursor(96, 27);
display.print("C");
display.display();
}



Setch program diatas menggunakan beberapa library, yaitu:

Kita dapat menggunakan sensor DS18B20 type waterproof untuk membuat sebuah alat ukur temperatur portable
DS18B20 waterproof


Sekian...Semoga bermanfaat.

Keep sharing...



Minggu, 13 Juni 2021

ARDUINO - MEMBUAT JAM ALARM (RTC DS3231)


Dalam postingan kali ini akan dibahas bagaimana membuat jam alarm berbasis Arduino. Menyambung postingan sebelumnya bagaimana kita mekangses RTC dam menampilkan jam pada serial monitor.

Sebagai referensi waktu untuk jam alarm ini tentunya kita menggunakan RTC (RTC DS3231), dan sebagai penanda alarm kita menggunakan buzzer. 


Apa saja komponen / modul yang digunakan?
    
    - Arduino Board (UNO / NANO) 
    - RTC DS3231 
    - BUZZER 
    - Transistor BC547
    - Dioda 1N4007
    - Resistor 1K
    - Bread Board 
    - Kabel Jumper 


Sebelum melakukan proses pemrograman, silahkan membuat rangkaian seperti gambar berikut : 



Untuk membulai pemrograman, tentunya kita siapkan library Arduino yang berhubungan dengan program yang kita buat, berikut library yang digunakan : 
RTClib.h      (Download)
Easybuzzer.h  (Download)

Pastikan library tersebut sudah ter-Install pada software Arduino IDE, dan upload sketch program berikut:



#include "RTClib.h"
#include


RTC_DS3231 rtc;
char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};

int Buzzer = 6;
int Tombol = 7;
int Alarm = 0;

//SET ALARAM(24 HOUR FORMAT):
const int Jam = 5;
const int Menit = 0;
const int Detik = 0;

unsigned long WaktuMillis = 0;

void setup() {
Serial.begin(9600);
rtc.begin();
EasyBuzzer.setPin(Buzzer);

pinMode (Tombol, INPUT);
digitalWrite (Tombol, LOW);

}

void loop() {

EasyBuzzer.update();
DateTime now = rtc.now();

if (millis() - WaktuMillis >= 1000){
WaktuMillis = millis();
Serial.print(now.year(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.day(), DEC);
Serial.print(" (");
Serial.print(daysOfTheWeek[now.dayOfTheWeek()]);
Serial.print(") ");
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.println();
}

switch (Alarm){
case 0:
//
break;

case 1:
tone1();
delay(50);
tone2();
delay(50);
break;
 }

if (now.hour() == Jam && now.minute() == Menit && now.second()== Detik){
Alarm = 1;
Serial.println("ALARM ON!!");
 }

if(digitalRead(Tombol) == HIGH){
Alarm = 0;
 }

}



void tone1(){
EasyBuzzer.singleBeep(3000, 50);
delay(50);
EasyBuzzer.stopBeep();
}

void tone2(){
EasyBuzzer.singleBeep(5000, 50);
delay(50);
EasyBuzzer.stopBeep();
}



Untuk melakukan seting waktu alaram yang kita inginkan, silahkan ubah nilai pada baris program berikut:

                //SET TIME (24 HOUR FORMAT):
    const int Jam = 5;      << Ganti 5 dengan jam yang diinginkan
    const int Menit = 0;    << begitu juga dengan menit, dan
    const int Detik = 0;    << detik


Setelah mekakukan seting waktu alarm dan upload sketch program, silahkan buka serial monitor untuk menampilkan waktu dan informasi alarm jika alarm on.


Sekian....Semoga bermabfaat.





Sabtu, 05 Juni 2021

ARDUINO - MENGAKSES RTC DS3231

RTC merupakan singkatan dari Real Time Clock, yang dapat menyimpan waktu & tanggal. Pada kesempatan kali ini kita akan membahas sebuah modul RTC DS3231 yang populer digunakan dan mempunya tingkat akurasi yang tinggi. Modul DS3231 juga terdapat sensor suhu dengan tingkat akurasi ±3ºC. 


 Fitur Modul RTC DS3231 
  • RTC counts seconds, minutes, hours and year 
  • Accuracy: +2ppm to -2ppm for 0ºC to +40ºC , +3.5ppm to -3.5ppm for -40ºC to +85ºC 
  • Digital temperature sensor with ±3ºC accuracy 
  • Two Time-of-day alarms 
  • Programmable square wave output 
  • Register for Aging trim 
  • 400Khz I2C interface 
  • Low power consumption 
  • Automatic power failure battery switch circuitry 
  • CR2032 battery backup with two to three year life 
  • Portable size 
Berikut komponen yang kita perlukan dalam pembahasan ini: 
    1. Arduino Board 
    2. RTC DS3231
    3. Kabel Jumper 

Modul RTC ini menggunakan 2 buah pin I/O pada arduino yaitu pin SDA & SCL (A4 & A5), berikut gambar rangkaiannya:

Tentunya membutuhkan library "RTClib.h" untuk menjalankan modul RTC DS3231 ini pada Arduino, dapat di download disini (https://github.com/adafruit/RTClib/archive/refs/heads/master.zip) dan melakukan instalasi library tersebut pada software Arduino IDE.

Dua step pemrograman untuk mengakses modul RTC DS3231 ini, yaitu:
    1. Upload program Seting Waktu & Tanggal RTC
    2. Upload program akses RTC

Berikut perogram SETING WAKTU & TANGGAL RTC DS3231:

#include "RTClib.h"

RTC_DS3231 rtc;

void setup()
{
Serial.begin(9600);
rtc.begin();

//*************AKTIFKAN BARIS INI UNTUK ADJUST RTC*********************************************
//rtc.adjust(DateTime(2021, 3, 26, 18, 6, 0)); //Tahun, Bulan, Tanggal, Jam, Menit, Detik * //********<<<
rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); //*********<<< //********************************************************************************************

}

void loop()
{
DateTime now = rtc.now();
delay(1000);
}


Ada 2 opsi untuk seting waktu & tanggal pada modul ini, yaitu Manual Adjust & Auto Adjust, untuk melakukan manual Adjust kita dapat memasukkan Waktu dan tanggal secara manual pada mengaktifkan  baris program berikut :

rtc.adjust(DateTime(2021, 3, 26, 18, 6, 0));


Untuk mudahnya kita dapat memilih Auto Adjust, yang mana dapat menyesuaikan langsung Waktu & Tanggal dengan PC/Laptop secara otomatis, dengan mengaktifkan baris program berikut:

rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));


Jika selesai proses seting waktu RTC DS3231, silahkan upload sketch program MENGAKSES MODUL RTC DS3231 berikut:

#include "RTClib.h"

RTC_DS3231 rtc;
char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};

void setup()
{
Serial.begin(9600);
rtc.begin();
}

void loop()
{
DateTime now = rtc.now();

Serial.print(now.year(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.day(), DEC);
Serial.print(" (");
Serial.print(daysOfTheWeek[now.dayOfTheWeek()]);
Serial.print(") ");
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.println();

Serial.println();
delay(1000);
}


Semoga bermanfaat.
Keep Sharing...


Senin, 31 Mei 2021

Arduino - Implementasi millis sebagai penghitung waktu

Ada berbagai macam implementasi millis diantaranya millis sebagai pengganti delay, millis sebagai timer, multitasking arduino dengan millis dll. 

Sebagai pembahasan yang cukup menarik dan sangat jarang dibahas, pada postingan kali ini akan dibahas bagaimana aplikasi millis sebagai timer, pada contoh kasus membuat sebuah system perhitungan biaya berdasarkan waktu. 

Pada contoh kasus ini implementasi millis sebagai penghitung 3 waktu(timer) yang berbeda yang dapat berjalan secara independen. 

Apa saja kegunaannya? 
tentu saja sangat banyak kegunaannya yang dapat kita terapkan, contohnya : 
  1. Sebagai timer penghitung biaya parkir 
  2. Sebagai timer penghitung biaya penyimpanan barang 
  3. Sebagai timer penghitung biaya sewa, dll
kita ambil contoh penerapan pada sistem penyimpanan barang pada 3 buah locker yang berbeda, yang mana biaya penyimpanan ini dihitung berdasarkan lama waktu penyimpanan dengan 4 tingkatan harga, yaitu : 
  • Rp 2.000,- biaya penyimpanan 1 jam pertama 
  • Rp 4.500,- biaya penyimpanan bila mencapai 3 jam 
  • Rp 7.500,- biaya penyimpanan bila mencapai 4 jam 
  • Rp 10.000,- biaya maksimum bila mencapai 6 jam 
Berikut contoh dasar program dengan simulasi pada serial monitor:


#define SecondPrice 3 //nilai dalam satuan menit
#define ThirdPrice 4 //nilai dalam satuan menit
#define MaxPrice 6 //nilai dalam satuan menit

unsigned long Timer1;
unsigned long CountTimer1;
unsigned long Timer1Millis = 0;
const long IntervalTimer1 = 1000;

unsigned long Timer2;
unsigned long CountTimer2;
unsigned long Timer2Millis = 0;
const long IntervalTimer2 = 1000;

unsigned long Timer3;
unsigned long CountTimer3;
unsigned long Timer3Millis = 0;
const long IntervalTimer3 = 1000;

unsigned long PrintMillis = 0;
const long IntervalPrint = 5000;

int Price1;
int Price2;
int Price3;

char data;

void setup() {
Serial.begin(9600);
}

void loop()
{

unsigned long Timer1CurrentMillis = millis();
if (Timer1CurrentMillis - Timer1Millis >= IntervalTimer1)
{
Timer1Millis = Timer1CurrentMillis;
Timer1 - millis();
Timer1++;
}

unsigned long Timer2CurrentMillis = millis();
if (Timer2CurrentMillis - Timer2Millis >= IntervalTimer2)
{
Timer2Millis = Timer2CurrentMillis;
Timer2 - millis();
Timer2++;
}

unsigned long Timer3CurrentMillis = millis();
if (Timer3CurrentMillis - Timer3Millis >= IntervalTimer3)
{
Timer3Millis = Timer3CurrentMillis;
Timer3 - millis();
Timer3++;
}

unsigned long PrintCurrentMillis = millis();
if (PrintCurrentMillis - PrintMillis >= IntervalPrint)
{
PrintMillis = PrintCurrentMillis;
Serial.print (" Biaya Locker 1 = Rp.");
Serial.print (Price1);
Serial.print (" / ");
Serial.print (" Biaya Locker 2 = Rp.");
Serial.print (Price2);
Serial.print (" / ");
Serial.print (" Biaya Locker 3 = Rp.");
Serial.println (Price3);
Serial.println ();
}

if(Serial.available()>0){
data = Serial.read();
Serial.print(data);
Serial.print("\n");
}
if(data == '1'){ //Reset Timer 1
Timer1 = 0;
CountTimer1 = 0;
Serial.println ("RESET TIMER 1");
}
if(data == '2') { //Reset Timer 2
Timer2 = 0;
CountTimer2 = 0;
Serial.println ("RESET TIMER 2");
}
if(data == '3') { //Reset Timer 3
Timer3 = 0;
CountTimer3 = 0;
Serial.println ("RESET TIMER 3");
}


if (Timer1==60){ //Auto Reset Timer1 setiap 60s & penjumlahan
Timer1 = 0;
CountTimer1 ++;
}
if (Timer2==60){ //Auto Reset Timer2 setiap 60s & penjumlahan
Timer2 = 0;
CountTimer2 ++;
}
if (Timer3==60){ //Auto Reset Timer3 setiap 60s & penjumlahan
Timer3 = 0;
CountTimer3 ++;
}


if (CountTimer1 <= SecondPrice) {
Price1 = 2000; //Harga terendah(Awal)
}
if (CountTimer1 == SecondPrice && CountTimer1 << ThirdPrice) {
Price1 = 4500;
}
if (CountTimer1 == ThirdPrice && CountTimer1 << MaxPrice) {
Price1 = 7500;
}
if (CountTimer1 >= MaxPrice) {
Price1 = 10000; //Harga maksimum
}


if (CountTimer2 <= SecondPrice) {
Price2 = 2000;
}
if (CountTimer2 == SecondPrice && CountTimer2 << ThirdPrice) {
Price2 = 4500;
}
if (CountTimer2 == ThirdPrice && CountTimer2 << MaxPrice) {
Price2 = 7500;
}
if (CountTimer2 >= MaxPrice) {
Price2 = 10000;
}


if (CountTimer3 <= SecondPrice) {
Price3 = 2000;
}
if (CountTimer3 == SecondPrice && CountTimer3 << ThirdPrice) {
Price3 = 4500;
}
if (CountTimer3 == ThirdPrice && CountTimer3 << MaxPrice) {
Price3 = 7500;
}
if (CountTimer3 >= MaxPrice) {
Price3 = 10000;
}

}



Pada simulasi ini menggunakan hitungan menit (1menit, 3menit, 4menit, 6menit) untuk perubahan tingkatan harga, dapat dilihat pada baris program 
 
            #define SecondPrice
            #define ThirdPrice 4  
            #define MaxPrice 6

jika ingin mengimplementasikan dalam satuan jam cukup mengganti angka pada baris program tersebut dari hasil perkalian 60, contoh angka 3 diganti dengan 180 untuk menghitung waktu 3 jam (3x 60 = 180).


Untuk me-reset timer 1 ketik 1 (pada serial monitor) kemudian enter
Untuk me-reset timer 2 ketik 2 (pada serial monitor) kemudian enter
Untuk me-reset timer 3 ketik 3 (pada serial monitor) kemudian enter



*Note: Sketch program diatas hanya sebagai contoh dasar saja tentunya dapat dikembangkan sehingga menjadi sebuah project yang luar biasa.

Semoga bermantaat...
keep sharing...


Arduino - Simulasi millis() (miliseconds)

millis

Apa itu millis?

Millis dapat juga dikatakan sebuah fungsi internal pada arduino yang dapat menjalankan waktu setiap milisecond secara independent. Pada postingan kali ini akan dibahas contoh simulasi millis() dalam menghitung waktu.

Berikut adalah contoh program menampilkan penghitungan waktu dengan millis yang ditampilkan pada serial monitor :

unsigned long Waktu;

void setup() {
  Serial.begin(9600);
}

void loop() {
  Serial.print("Millis: ");
  Waktu - millis();
  Waktu++;
  Serial.println(Waktu);
}


Setelah upload program diatas pada Arduino UNO/NANO, dapat kita tampilkan perhitungan millis() pada serial monitor

Arduino Serial Monitor


*Note : Dapat ditambahkan delay (1000) untuk menampilkan nilai millis setiap 1 detik.

Selanjutnya akan kita bahas bagaimana implementasi millis .


Semoga bermanfaat....Keep sharing!!