class Iseng { //The Class
public: // Acces specifier
// Attribute
Iseng(byte pin); // Constructor
// Methode
void berkelakuan(uint32_t hidup,uint32_t jeda);
private: //Access specifier
byte _pin;
uint32_t _prev_millis;
uint32_t _hidup;
uint32_t _jeda;
};
Iseng::Iseng(byte pin)
{
_pin = pin;
pinMode(_pin ,OUTPUT);
}
void Iseng::berkelakuan(uint32_t hidup,uint32_t jeda)
{
_hidup= hidup;
_jeda = jeda;
uint32_t wkt_berlalu = millis() - _prev_millis;
if(wkt_berlalu < _hidup)
{
digitalWrite(_pin,1);
}
else
{
digitalWrite(_pin,0);
if(( wkt_berlalu >= (_hidup + _jeda)))
{
digitalWrite(_pin,1);
_prev_millis = millis();
}
}
}
// ====================================================================//
Iseng led1(13);
Iseng led2(12);
Iseng led3(11);
void setup(){
pinMode(A5, INPUT_PULLUP);
pinMode(A4, INPUT_PULLUP);
pinMode(A3, INPUT_PULLUP);
}
void loop(){ // Pin dan waktu(mili detik) hanya contoh aja ya
if(!digitalRead(A5))led1.berkelakuan(1000,1000);
else digitalWrite(13,0);
if(!digitalRead(A4)) led2.berkelakuan(250,250);
else digitalWrite(12,0);
if(!digitalRead(A3))led3.berkelakuan(125,125);
else digitalWrite(11,0);
}