Perancangan Tempat Sampah Otomatis Berbasis Mikrokontroler Arduino

A-1

LAMPIRAN

LISTING PROGRAM

#include
#define trigPinS 3
#define echoPinS 4
#define trigPinl 5
#define echoPinl 6
#define play 12 //pin isd1820
long
long
long
long

SensorIN;
SensorOUT;
tempoa;
tempob;


Servo myservo;
int8_t button = 10;
int ledmerah = 7;
int ledkuning = 8;
int ledhijau = 9;
void setup() {
myservo.attach(2);
myservo.write(0);
digitalWrite(play, LOW);
Serial.begin(9600);
//HCSR
pinMode(trigPinS, OUTPUT);
pinMode(echoPinS, INPUT);
pinMode(trigPinl, OUTPUT);
pinMode(echoPinl, INPUT);
//LED
pinMode(ledmerah, OUTPUT);
pinMode(ledkuning, OUTPUT);
pinMode(ledhijau, OUTPUT);

//Button
pinMode(button, INPUT);
}
int8_t hcsr()

Universitas Sumatera Utara

A-2

digitalWrite(trigPinS, LOW);
delayMicroseconds(10);
digitalWrite(trigPinS, HIGH);
delayMicroseconds(10);
tempoa = pulseIn(echoPinS, HIGH);
SensorIN = int(0.017 * tiempoa);
digitalWrite(trigPinl, LOW);
delayMicroseconds(10);
digitalWrite(trigPinl, HIGH);
delayMicroseconds(10);
tempob = pulseIn(echoPinl, HIGH);

SensorOUT = int(0.017 * tiempob);
if (SensorIN < 5) {
digitalWrite(ledmerah, HIGH);
Serial.println("Led MERAH");
//delay(25);
}
else if (SensorIN < 20 && SensorIN > 5) {
digitalWrite(ledkuning, HIGH);
Serial.println("Led KUNING");
//delay(25);
}
else {
digitalWrite(ledhijau, HIGH);
Serial.println("Led HIJAU");
//delay(25);
}
Serial.print(SensorOUT);
Serial.print(" || ");
Serial.println(SensorIN);
if (SensorOUT < 70 && SensorOUT > 0 && SensorIN > 8) {


Universitas Sumatera Utara

A-3

myservo.write(95);
Serial.println("Servo Terbuka");
delay(3000);
// sound
digitalWrite(play, HIGH);
}
else {
myservo.write(15);
digitalWrite(play, LOW);
delay(10);
}
}
int8_t btn() {
myservo.write(95);
Serial.println("Button Ditekan");

delay(8000);
}
void loop(){
digitalWrite(play, LOW);
digitalWrite(ledmerah, LOW);
digitalWrite(ledkuning, LOW);
digitalWrite(ledhijau, LOW);
if (digitalRead(button) == LOW) {
btn();
}
else {
hcsr();
}
delay(250);

Universitas Sumatera Utara

B-1

LIBRARY MOTOR SERVO


A servo is activated by creating an instance of the Servo class passing
the desired pin to the attach() method.
The servos are pulsed in the background using the value most recently
written using the write() method.

Note that analogWrite of PWM on pins associated with the timer are
disabled when the first servo is attached.
Timers are seized as needed in groups of 12 servos - 24 servos use two
timers, 48 servos will use four.
The sequence used to sieze timers is defined in timers.h

The methods are:

Servo - Class for manipulating servo motors connected to Arduino pins.

attach(pin )

- Attaches a servo motor to an i/o pin.


attach(pin, min, max
microseconds

) - Attaches to a pin setting min and max values in

default min is 544, max is 2400

write()
- Sets the servo angle in degrees. (invalid angle that is
valid as pulse in microseconds is treated as microseconds)
writeMicroseconds() - Sets the servo pulse width in microseconds
read()
0 and 180.

- Gets the last written servo pulse width as an angle between

readMicroseconds()
- Gets the last written servo pulse width in
microseconds. (was read_us() in first release)
attached()


- Returns true if there is a servo attached.

detach()

- Stops an attached servos from pulsing its i/o pin.

*/

Universitas Sumatera Utara

B-2

#ifndef Servo_h
#define Servo_h

#include

/*
* Defines for 16 bit timers used with


Servo library

*
* If _useTimerX is defined then TimerX is a 16 bit timer on the current
board
* timer16_Sequence_t enumerates the sequence that the timers should be
allocated
* _Nbr_16timers indicates how many 16 bit timers are available.
*/

// Architecture specific include
#if defined(ARDUINO_ARCH_AVR)
#include "avr/ServoTimers.h"
#elif defined(ARDUINO_ARCH_SAM)
#include "sam/ServoTimers.h"
#elif defined(ARDUINO_ARCH_SAMD)
#include "samd/ServoTimers.h"
#else
#error "This library only supports boards with an AVR, SAM or SAMD

processor."
#endif

#define Servo_VERSION

2

#define MIN_PULSE_WIDTH

544

#define MAX_PULSE_WIDTH

2400

// software version of this library

// the shortest pulse sent to a servo
// the longest pulse sent to a serv


Universitas Sumatera Utara

B-3

#define DEFAULT_PULSE_WIDTH
attached

1500

// default pulse width when servo is

#define REFRESH_INTERVAL
microseconds

20000

// minumim time to refresh servos in

#define SERVOS_PER_TIMER
controlled by one timer

12

#define MAX_SERVOS

(_Nbr_16timers

#define INVALID_SERVO
index

typedef struct

* SERVOS_PER_TIMER)

// flag indicating an invalid servo

{

uint8_t nbr
uint8_t isActive
not pulsed if false
} ServoPin_t

255

// the maximum number of servos

:6 ;

// a pin number from 0 to 63

:1 ;

// true if this channel is enabled, pin

;

typedef struct {
ServoPin_t Pin;
volatile unsigned int ticks;
} servo_t;
class Servo
{
public:
Servo();
uint8_t attach(int pin);
// attach the given pin to the next free
channel, sets pinMode, returns channel number or 0 if failure
uint8_t attach(int pin, int min, int max); // as above but also sets min
and max values for writes.
void detach();
void write(int value);
// if value is < 200 its treated as an
angle, otherwise as pulse width in microseconds
void writeMicroseconds(int value); // Write pulse width in microseconds
int read();
angle between 0 and 180 degrees

// returns current pulse width as an

Universitas Sumatera Utara

B-4

int readMicroseconds();
// returns current pulse width in
microseconds for this servo (was read_us() in first release)
bool attached();
attached, otherwise false

// return true if this servo is

private:
uint8_t servoIndex;
servo

// index into the channel data for this

int8_t min;
to MIN_PULSE_WIDTH

// minimum is this value times 4 added

int8_t max;
to MAX_PULSE_WIDTH

// maximum is this value times 4 added

};
#endif

Universitas Sumatera Utara

C-1

Curriculum Vitae

Aidil Syahputra
Medan, 1 Juni 1993

Tahun

Pendidikan

Kota

2014-Sekarang

Ekstensi S1 Ilmu Komputer Universitas Sumatera Utara

Medan

2011-2014

D3 Teknik Informatika Universitas Sumatera Utara

Medan

2008-2011

MAN 1 Medan

Medan

2005-2008

SMPN 3

Medan

1999-2005

SDN 090608

Medan

Universitas Sumatera Utara