Anda di halaman 1dari 27

DAFTAR ISI

Halaman
DAFTAR ISI..................................................................................................................
1 Sifat.......................................................................................................................
2 Dasar Teori...........................................................................................................
2.1 Sistem Kontrol.................................................................................................
2.2 Elevator............................................................................................................
2.3 Mikrokontroler ArduinoUno ATmega 328......................................................
2.4 Motor DC.........................................................................................................
2.5 Sensor LDR......................................................................................................
3 Tujuan...................................................................................................................
4 Alat dan Bahan.....................................................................................................
5 Standard Operating Procedure (SOP).............................................................
6 Rangkaian Skematik..........................................................................................
7 Konsep Alat........................................................................................................
7.1 Desain Elevator..............................................................................................
7.2 Prinsip Kerja..................................................................................................
8 Kode Program Arduino.....................................................................................

STEP MOTOR ELEVATOR


1. Sifat

Keterampilan
Pembuktian

Pengenalan

X
X

2. Dasar Teori
2.1 Sistem Kontrol

Percobaan

Sistem kontrol adalah sebuah kumpulan atau susunan komponenkomponen alat yang saling terhubung dan membentuk satu kesatuan untuk
mengendalikan, mengatur, dan memerintah keadaan dari suatu mekanisme
tertentu. Dalam dunia industri, sistem kontrol merupakan sebuah sistem yang
meliputi pengontrolan variabel-variabel

seperti

temperatur

(temperature),

tekanan (pressure), aliran (flow), tingkat (level), dan kecepatan (speed).


Variabel-variabel ini merupakan keluaran yang harus dijaga tetap sesuai dengan
keinginan yang telah ditetapkan terlebih dahulu oleh operator yang disebut
dengan setpoint (respon sistem yang diinginkan)

dan

plant

(obyek

yang

dikontrol). Untuk mengimplementasikan teknik sistem kontrol (System Control


Engineering) dalam industri diperlukan banyak keahlian atau keilmuan seperti
dibidang teknologi mekanik (mechanical engineering), teknik listrik (electrical
engineering), elektronik (electronics) dan sistem

pneumatik

(pneumatic

system).

2.2 Elevator
Suatu ciri perkembangan di abad modern adalah banyaknya teknologi
canggih yang membantu dan memudahkan pekerjaan manusia. Sebagian
besar teknologi buatan manusia diadopsi dari sifat mekanisme alam dan Problem
Solving dari suatu mekanisme tersebut. Salah satu teknologi berbasiskan
kecerdasan buatan (Artificial Intelligence) yaitu elevator atau yang lebih akrab
dikenal oleh masyarakat luas dengan nama Lift.
Lift atau Elevator adalah alat angkut transportasi vertikal yang
mempunyai

ge rakan

peri odi k

dan

digunakan

untuk

mengangkut

(menaikkan/menurunkan) orang atau barang melalui suatu guide rail vertical


(jalur

rel

vertikal),

umumnya

digunakan

digedung-gedung bertingkat

tinggi.

2.3 Mikrokontroler ArduinoUno ATmega 328


Arduino adalah kit elektronik atau papan rangkaian elektronik open
source yang di dalamnya terdapat komponen utama yaitu sebuah chip
mikrokontroler dengan jenis AVR dari perusahaan Atmel.
Mikrokontroler itu sendiri adalah chip atau IC (integrated circuit) yang
bisa diprogram menggunakan komputer. Tujuan menanamkan program pada
mikrokontroler adalah agar rangkaian elektronik dapat membaca input,
memproses input tersebut dan kemudian menghasilkan output sesuai yang
diinginkan. Jadi mikrokontroler bertugas sebagai otak yang mengendalikan
input, proses dan output sebuah rangkaian elektronik.
Berikut ini merupakan kelebihan dari mikrokontroler arduino :

Open Source
Hardware maupun software Arduino adalah open source. Artinya kita bisa

membuat tiruan atau clone atau board yang kompatibel dengan board Arduino
tanpa harus membeli board asli buatan Italy. Kalaupun kita membuat board yang
persis dengan desain asli, kita tidak akan dianggap membajak (asalkan tidak
menggunakan trade mark Arduino).
Tidak memerlukan chip programmer
Chip pada Arduino sudah dilengkapi dengan bootloader yang akan
menangani proses upload dari komputer. Dengan adanya bootloader ini kita tidak
memerlukan chip programmer lagi, kecuali untuk menanamkan bootloader pada
chip yang masih blank.
Koneksi USB
Sambungan dari komputer ke board Arduino menggunakan USB, bukan
serial atau parallel port. Sehingga akan mudah menghubungkan Arduino ke PC
atau laptop yang tidak memiliki serial/parallel port.

Fasilitas chip yang cukup lengkap


Arduino menggunakan chip AVR ATmega 168/328 yang memiliki fasilitas
PWM, komunikasi serial, ADC, timer, interupt, SPI dan I2C. Sehingga Arduino
bisa digabungkan bersama modul atau alat lain dengan protokol yang berbedabeda.
Ukuran kecil dan mudah dibawa
Ukuran board Arduino cukup kecil, mudah di bawah kemana-mana
bersama laptop atau dimasukan ke dalam saku.
Bahasa pemrograman relatif mudah
Walaupun bahasa pemrograman Arduino adalah bahasa C/C++, tetapi
dengan penambahan library dan fungsi-fungsi standar membuat pemrograman
Arduino lebih mudah dipelajari dan lebih manusiawi. Contoh, untuk mengirimkan
nilai HIGH pada pin 10 pada Arduino, cukup menggunakan fungsi
digitalWrite(10, HIGH); Sedangkan kalau menggunakan bahasa C aslinya adalah
PORTB |=(1<<2);
Tersedia library gratis
Tersedia library yang sangat banyak untuk menghubungkan Arduino
dengan macam-macam sensor, aktuator maupun modul komunikasi.Misalnya
library untuk mouse, keyboard, servo, GPS, dsb.Berhubung Arduino adalah open
source, maka library-library ini juga open source dan dapat di download gratis di
website Arduino.
Pengembangan aplikasi lebih mudah
Dengan bahasa yang lebih mudah dan adanya library dasar yang lengkap,
maka mengembangkan aplikasi elektronik relatif lebih mudah.Contoh, kalau kita
ingin membuat sensor suhu.Cukup membeli sebuah IC sensor suhu (misalnya
LM35) dan menyambungkan ke Arduino. Kalau suhu tersebut ingin ditampilkan
pada LCD, tinggal membeli sebuah LCD dan menambahkan library LCD pada
program yang sama, dan seterusnya.
Komunitas open source yang saling mendukung

Software Linux, PHP, MySQL atau WordPress perkembangannya begitu


pesat karena merupakan software open source dimana ada komunitas yang saling
mendukung

pengembangan

proyek.

Demikian

juga

dengan

Arduino,

pengembangan hardware dan software Arduino didukung oleh pencinta


elektronika dan pemrograman di seluruh dunia.Contoh, interface USB pada
Arduino Uno mengambil dari LUFA project.Library dan contoh-contoh program
adalah sumbangan dari beberapa programmer mikrokontroler, seperti Tom Igoe,
dsb.
Arduino Uno ATmega 328

Gambar 1. Arduino Uno


Arduino Uno adalah papan mikrokontroller berdasarkan ATmega 328
(datasheet). Dalam bahasa Itali Uno berarti satu, maka jangan heran jika
peluncuran Arduino 1.0 diberi nama Uno. Arduino ini berisi semua yang
diperlukan untuk mendukung mikrokontroller, untuk mengaktifkan cukup
menghubungkannya ke computer denga kabel USB dengan adaptor AC-DC atau
baterai. Berikut adalah spesifikasi dari Arduino Uno :
Mikrokontroller
: ATmega 328
Operating Voltage
: 5 Volt
Input Voltage (disarankan)
: 7 - 12 Volt
Input Voltage (batas)
: 6 - 20 Volt
Digital I / O
: Pins 14 (dimana 6 memberikan
output PWM)
Analog
Input
DC Current per I / O

: Pins 6
: Pin 40 mA
4

DC Current for 3.3 Volt


Flash Memory 32 KB (ATmega328)

: Pin 50 mA
: Yang 0.5 KB digunakan oleh

bootloader
SRAM
: 2 KB (ATmega328)
EEPROM
: 1 KB (ATmega328)
Clock Speed
: 16 MHz
Input Voltage
Arduino Uno ini dapat beroperasi pada tegangan eksternal dari 6 20 Volt.
Jika diberikan tegangan kurang dari 7 Volt, maka Arduino ini mungkin akan
menjadi tidak stabil. Jika menggunakan lebih dari 12 Volt, regulator voltage bisa
panas dan merusak board. Rentang yang dianjurkan adalah 7 12 Volt.
Memori
ATmega328 ini memiliki memori sebesar 32 KB (0.5 KB dari memori
tersebut digunakan untuk bootloader) dan juga memiliki memori sebesar 2 KB
dari SRAM dan 1 KB EEPROM.
Input dan Output
Masing masing dari 14 pin digital pada Uno dapat digunakan sebagai
input atau output, dengan menggunakan fungsi pinMode (), digitalWrite (), dan
digitalRead (). Setiap pin dapat memberikan atau menerima maksimum 40 mA
dan memiliki resistor pull-up internal (terputus secara default) dari 20 50 k.
Selain itu, beberapa pin memiliki fungsi khusus.
2.4 Motor DC
Motor arus searah, sebagaimana namanya, menggunakan arus langsung yang
tidak langsung (direct-unidirectional). Motor DC digunakan pada penggunaan
khusus dimana diperlukan penyalaan torsi (torque) yang tinggi atau percepatan
yang tetap untuk kisaran kecepatan yang luas.
Motor DC yang memiliki tiga komponen utama, yaitu:

Kutub medan. Secara sederhada digambarkan bahwa interaksi dua


kutub magnet akan menyebabkan perputaran pada motor DC.
Motor

DC memiliki kutub medan yang stasioner dan dinamo

yang

menggerakan bearing pada ruang diantara kutub medan.

Motor DC sederhana memiliki dua kutub medan: kutub utara dan

kutub selatan. Garis magnetik energi membesar melintasi bukaan


diantara kutub-kutub dari utara ke selatan. Untuk motor yang lebih
besar atau lebih komplek terdapat satu atau lebih elektromagnet.
Elektromagnet menerima listrik dari sumber daya dari luar sebagai
penyedia struktur medan.

Dinamo. Bila arus masuk menuju dinamo, maka arus ini akan
menjadi

elektromagnet.

Dinamo

yang

berbentuk

silinder,

dihubungkan ke as penggerak untuk menggerakan beban. Untuk


kasus motor DC yang kecil, dinamo berputar dalam medan magnet
yang dibentuk oleh kutub-kutub, sampai kutub utara dan selatan
magnet berganti lokasi. Jika hal ini terjadi, arusnya berbalik untuk
merubah kutub-kutub utara dan selatan dynamo.

Commutator.
motor

Komponen

ini

terutama

ditemukan

dalam

DC. Kegunaannya adalah untuk membalikkan arah arus

listrik dalam dynamo. Commutator juga membantu dalam transmisi


arus antara dinamodan sumber daya.
Keuntungan

utama

motor

DC

kecepatan, yang tidak mempengaruhi

adalah

sebagai

pengendali

kualitas pasokan daya. Motor

ini dapat dikendalikan dengan mengatur:

Tegangan

dinamo

meningkatkan

tegangan

dinamo

akan

meningkatkan kecepatan.

Arus medan menurunkan arus medan akan meningkatkan kecepatan.

Motor DC tersedia dalam banyak ukuran, namun penggunaannya pada


umumnya dibatasi untuk beberapa penggunaan berkecepatan rendah, penggunaan
daya rendah hingga sedang seperti peralatan mesin dan rolling mills,

sebab

sering terjadi masalah dengan perubahan arah arus listrik mekanis pada
ukuran yang lebih besar. Juga, motor tersebut dibatasi hanya untuk penggunaan

di area yang bersih dan tidak berbahaya sebab resiko percikan api pada
sikatnya. Motor DC juga relatif mahal dibanding motor AC.

2.5 Sensor LDR


Light Dependent Resistor atau disingkat dengan LDR adalah jenis Resistor
yang nilai hambatan atau nilai resistansinya tergantung pada intensitas cahaya
yang diterimanya. Nilai Hambatan LDR akan menurun pada saat cahaya terang
dan nilai Hambatannya akan menjadi tinggi jika dalam kondisi gelap. Dengan kata
lain, fungsi LDR (Light Dependent Resistor) adalah untuk menghantarkan arus
listrik jika menerima sejumlah intensitas cahaya (Kondisi Terang) dan
menghambat arus listrik dalam kondisi gelap.
Naik turunnya nilai Hambatan akan sebanding dengan jumlah cahaya yang
diterimanya. Pada umumnya, Nilai Hambatan LDR akan mencapai 200 Kilo Ohm
(k) pada kondisi gelap dan menurun menjadi 500 Ohm () pada Kondisi
Cahaya Terang.

3. Tujuan
Setelah membuat praktikum Step Motor Elevator, penulis dan pembaca
mampu:
1. Mengetahui komponen-komponen yang digunakan pada Step Motor
Elevator
2. Mengetahui prinsip kerja Step Motor Elevator dengan Mikrokontroller
ArduinoUno.
3. Melakukan instalasi pemasangan Step Motor Elevator.
4. Alat dan Bahan
Alat
dan
Bahan

Sat

Volu
m
e

u
a
n

Gambar

Board Arduino
Uno

Bua
h

Stepper
Motor
+
ULN2003
Driver
Board Set

Bua
h

Momentary
Pushbutton

Bua
h

Sensor LDR

Bua
h

Lampu LED
Putih

Bua
h

4 Digit Seven
Segment
Katoda

Bua
h

5V

Laker 606

Bua
h

Benang
Layangan

Kabel Jumper

Secu
k
u
p
n
y
a
Secu
k
u
p
n
y
a

cm

cm

Resistor 220

Bua
h

Resistor

Bua
h

Solder

Bua
h

Timah Solder

Bua
h

10K

Papan Triplek

Bua
h

Software
Arduino
Uno

Bua
h

Gergaji Besi

Bua
h

Cutter

Bua
h

Bor

Bua
h

Lem Alteco

Bua
h

Port USB

Bua
h

Lem Tembak

Bua
h

10

Benang Kasur

Kertas Foto

Isolasi

Sterofoam

Secu
k
u
p
n
y
a
Secu
k
u
p
n
y
a
Secu
k
u
p
n
y
a
Secu
k
u
p
n
y
a

cm

cm

cm

cm

5. Standard Operating Procedure (SOP)


PERANCANGAN
STEP MOTOR ELEVATOR
Flowchart

Deskripsi

11

1. Tim berkonsultasi pada


pembimbing
tentang
project yang akan dibuat.
Setelah mendapat saran
untuk membuat lift dari
pembimbing, maka lanjut
ke langkah kedua.
2. Tim menyiapkan dasardasar
teori
untuk
perancangan lift/elevator.
3. Tim
menentukan
spesifikasi dari elevator
tersebut berupa jumlah
lantai yang akan dibuat dan
ketinggian dari masingmasing lantai elevator.
4. Tim menyiapkan alat dan
bahan.
5. Tim mendesain detail dari
elevator seperti panjang,
lebar, dan ketinggian tiang,
kotak mesin, dan atap
elevator.
6. Apabila sudah memenuhi
syarat, maka dilanjukah ke
langkah
6
yaitu
perancangan mekanik dan
software.
7. Setelah selesai dirancang,
tim
membuat
model
mekanik dari elevator.
8. Tim
membuat
model
software dari elevator.
9. Apabila
telah
dibuat
mekanik dan softwarenya,
maka
selanjutnya
dilakukan uji coba.
10. Apabila uji coba berhasil
sempurna, maka project
step motor elevator ini
telah selesai.

1
2
3
4
5

Tidak
Ya

Tidak

8
Berhasil
?

Ya
9

12

6. Rangkaian Skematik

Gambar 2.Pengaturan Sirkuit

Gambar 3.Skematik

Gmabar 4. Rangkaian Project

13

7. Konsep Alat
7.1 Desain Elevator
Step Motor Elevator ini terdiri dari 3 lantai. Masing-masing lantai
memiliki ketinggian 7 cm. Kolom terakhir diakhiri setinggi 27 cm, tiga lantai
hanya setinggi 21 cm. Ini dikarenakan penyiapan spasi untuk masing-masing
lantai untuk berdiri dan untuk katrol yang berada di atap elevator.

Gambar 5. Step Motor Elevator


7.2 Prinsip Kerja
Step motor elevator ini akan bergerak dari lantai satu ke lantai lainnya saat
Motor Stepper mulai berputar. Motor ini akan berputar baik searah maupun
berlawanan arah jarum jam berdasarkan bagaimana elevator ini bergerak sesuai
yang diinginkan. Terdapat sebuah katrol yang berdempetan dengan motor, dan
sebagaimana motor berputar, katrol akan menggulung lagi atau melepaskan
benang yang berhubungan dengan elevator.
Untuk mengetahui elevator di lantai berapa, digunakan sensor LDR (Light
Dependent Resistor). Sensor LDR dipasang di Lantai 2 dan Lantai 3. Kedua
sensor ini akan melakukan perbandingan untuk menentukan posisi elevator. Pada
saat elevator di Lantai 2, sensor LDR pada lantai tersebut akan menerima cahaya
lebih sedikit. Cara ini membuat Arduino tau dimana elevator berada dan
menggunakannya untuk menunjukkan lantai berapa saat itu.

14

8. Bahasa Pemrograman Arduino


#define switchFloor1 0 // Switches are connected to these pins
#define switchFloor2 2
#define switchFloor3 3
#define photocellFloor2 0 // Photocells and 10K pulldown resistor are
connected to A0 and A1 for an analog reading
#define photocellFloor3 1
//----- Stepper motor -----//
#define steps 520 // Number of steps needed to reach the next floor
(displace the elevator 7cm)
#define stepperPin1 10 // These are the Arduino pins that we use to
activate coils 1-4 of the stepper motor
#define stepperPin2 11
#define stepperPin3 12
#define stepperPin4 13
#define delaytime 10 // Delay time in ms to control the stepper motor
delaytime
// 8 is about the fastest that can yield reliable operation w/o
missing steps
//----- 7 segment LED display -----//
#define A 4 // (A = 11) Corresponding arduino pins for the segments on

15

the 7 segment LED display


#define B 5 // (B = 7)
#define C 6 // (C = 4)
#define D 7 // (D = 2)
#define E 8 // (E = 1)
#define f 10 // Not used in the circuit
#define G 9 //(G = 5)
#define DP 11 // Not used in the circuit
#define CC4 1 // (CC4 = 13) Pin driving common cathodes
//definition of segments; digital point is off
// ------// | A |
// F|

|B

// |---G---|
// E|

|C

// | D |
// ------//------------------------------------ Done with #define statements
// Variables
boolean firstRun = true;
int currentFloor = 1; // Used to save the current floor. This value is
changed with the switches and with the readings done by the
photocells
long debounceTime = 200; // The switch's debounce time
int secondFloorReading = 0; // The analog reading from the sensor
divider (for floor 2 and 3)

16

int thirdFloorReading = 0;
// Number array
// An array is defined and filled with the 'numbersegments' array in the
#define section
// Rows and columns are assigned as follows: numbers[number]
[segments]
// Each group of 8 in {....} defines the state of the a,b,c,d,e,f,g,dp
segments for the numbers from 1 to 3
byte

numbers[3][8]

{{0,1,1,0,0,0,0,0},{1,1,0,1,1,0,1,0},

{1,1,1,1,0,0,1,0}};
const int segments[8] = { A, B, C, D, E, f, G, DP }; // This defines an
array that contains the arduino pins for each segment
void setup(){
Serial.begin(9600); // Initialize serial port
pinMode(A, OUTPUT); // Set anodes low to make sure all segments
are off
digitalWrite(A,LOW);
pinMode(B, OUTPUT);
digitalWrite(B,LOW);
pinMode(C, OUTPUT);
digitalWrite(C,LOW);
pinMode(D, OUTPUT);
digitalWrite(D,LOW);
pinMode(E, OUTPUT);
digitalWrite(E,LOW);
pinMode(f, OUTPUT); // This pin will not be connected to the board
digitalWrite(f,LOW);

17

pinMode(G, OUTPUT);
digitalWrite(G,LOW);
pinMode(DP, OUTPUT); // This pin will not be connected to the board
digitalWrite(DP,LOW);
pinMode(CC4, OUTPUT); // Set catodes high to turn off digit
digitalWrite(CC4,HIGH);
pinMode(switchFloor1, INPUT); // Define the arduino pins for the swi
tches as inputs
pinMode(switchFloor2, INPUT);
pinMode(switchFloor3, INPUT);
pinMode(stepperPin1, OUTPUT); // Define the the arduino pins for the
stepper's coils as outputs
pinMode(stepperPin2, OUTPUT);
pinMode(stepperPin3, OUTPUT);
pinMode(stepperPin4, OUTPUT);
}
void loop(){
secondFloorReading = analogRead(photocellFloor2); // Get a reading
from the photocells to verify the current floor
thirdFloorReading = analogRead(photocellFloor3);
Serial.print("Analog reading (Second floor) = ");
Serial.println(secondFloorReading); // the raw analog reading
Serial.print("Analog reading (Third floor) = ");
Serial.println(thirdFloorReading); // the raw analog reading
delay(1000);

18

if(secondFloorReading > 790 && thirdFloorReading > 790) // Check if


the elevator is in the first floor
{
setSegments(0, CC4); // Turn on the segments that display the number
1
currentFloor = 1; // Set the current floor to 1
// The elevator is meant to start at the first floor
}
else if(secondFloorReading < 750) // Check if the elevator is in the
second floor
{
setSegments(1, CC4); // Turn on the segments that display the number
2
currentFloor = 2;
}
else if(thirdFloorReading < 750) // Check if the elevator is in the third
floor
{
setSegments(2, CC4); // Turn on the segments that display the number
3
currentFloor = 3;
}
// The following if statement will only allow the switch's input if the
current floor is not already 1
// The coils in the stepper motor will go backwards if the elevator
// is on either floor 2 or floor 3
// If it is on floor 3, it will go backwards twice the number of steps
if(readSwitch(switchFloor1, debounceTime) == true && currentFloor !
= 1){

19

if(currentFloor == 2){
Serial.println("going down");
int numberOfSteps = steps+90;
step_OFF(); // Turning all coils off
while(numberOfSteps>0){
backward(); // Going backward
numberOfSteps -- ; // Counting down the number of steps
}
}
else if(currentFloor == 3){
Serial.println("going down");
int numberOfSteps = (steps*2)+80;
step_OFF(); // Turning all coils off
while(numberOfSteps>0){
backward(); // Going backward
numberOfSteps -- ; // Counting down the number of steps
}
}
currentFloor = 1; // Sets the currentFloor to 1 since the elevator is
now at the first floor
delay(1000);
}
// The following if statement will only allow the switch's input if the
current floor is not already 2
// The coils in the stepper motor will go forward or backwards if the
elevator

20

// is on either floor 1 or floor 3, respectively


if(readSwitch(switchFloor2, debounceTime) == true && currentFloor !
= 2){
if(currentFloor == 1){
Serial.println("going up");
int numberOfSteps = steps+90;
step_OFF(); // Turning all coils off
while(numberOfSteps>0){
forward(); // Going forward
numberOfSteps -- ; // Counting down the number of steps
}
}
else if(currentFloor == 3){
Serial.println("going down");
int numberOfSteps = steps+5;
step_OFF(); // Turning all coils off
while(numberOfSteps>0){
backward(); // Going forward
numberOfSteps -- ; // Counting down the number of steps
}
}
currentFloor = 2; // Sets the currentFloor to 2 since the elevator is
now at the second floor
delay(2000);
}
// The following if statement will only allow the switch's input if the
current floor is not already 3

21

// The coils in the stepper motor will go backwards if the elevator


// is on either floor 1 or floor 2
// If it is on floor 1, it will go forward twice the number of steps
if(readSwitch(switchFloor3, debounceTime) == true && currentFloor !
= 3){ //
if(currentFloor == 1){
Serial.println("going up");
int numberOfSteps = (steps*2)+80; // Twice the number of steps to
reach floor 3
step_OFF(); // Turning all coils off
while(numberOfSteps>0){
forward(); // Going forward
numberOfSteps -- ; // Counting down the number of steps
}
}
else if(currentFloor == 2){
Serial.println("going up");
int numberOfSteps = steps+5;
step_OFF(); // Turning all coils off
while(numberOfSteps>0){
forward(); // Going forward
numberOfSteps -- ; // Counting down the number of steps
}
}
currentFloor = 3; // Sets the currentFloor to 2 since the elevator is
now at the second floor
delay(2000);
}
Serial.println(currentFloor);

22

}
void setSegments(int number, int digit){
for (int seg = 0; seg < 8; seg++){
if

(numbers[number][seg]==1)

{digitalWrite(segments[seg],HIGH);} // Put 5V to the anode of the


segment if the numbers array shows a 1
else {digitalWrite(segments[seg],LOW);} // Put 0V to the anode if the
numbers array shows a 0
}
digitalWrite(digit ,LOW); // This sets the common cathode for the digit
LOW (0V)
// i.e. the LEDs that have a 5V anode turn on, the
number is visible
}
//----- readSwitch -----//
//This function reads the current state of the switches
byte readSwitch(int switchPin, long debounceTime)
{
long debounce = debounceTime;
static long lastTime;
static byte previousState;
byte currentState = digitalRead(switchPin);
if (currentState == LOW && previousState == HIGH && millis()lastTime > debounce) { // Check if the Switch went from HIGH to
LOW
lastTime = millis(); // Measure the time for which it was pressed
previousState = LOW;
return(true); // Switch was pressed
}
else

23

{
previousState = HIGH;
return(false); // Switch has not been pressed
}
}
//----- Pin settings for Stepper Motor, forward() and backward( -----/
// These functions set the pin settings for each of the four steps per
rotation of the motor (keepp in mind that the motor in the kit is
geared down,
// i.e. there are many steps necessary per rotation
void Step_A(){
digitalWrite(stepperPin1, HIGH); // Turn on coil 1
digitalWrite(stepperPin2, LOW);
digitalWrite(stepperPin3, LOW);
digitalWrite(stepperPin4, LOW);
}
void Step_B(){
digitalWrite(stepperPin1, LOW);
digitalWrite(stepperPin2, HIGH); // Turn on coil 2
digitalWrite(stepperPin3, LOW);
digitalWrite(stepperPin4, LOW);
}
void Step_C(){
digitalWrite(stepperPin1, LOW);
digitalWrite(stepperPin2, LOW);
digitalWrite(stepperPin3, HIGH); // Turn on coil 3
digitalWrite(stepperPin4, LOW);
}
void Step_D(){

24

digitalWrite(stepperPin1, LOW);
digitalWrite(stepperPin2, LOW);
digitalWrite(stepperPin3, LOW);
digitalWrite(stepperPin4, HIGH); // Turn on coil 4
}
void step_OFF(){
digitalWrite(stepperPin1, LOW); // Power all coils down
digitalWrite(stepperPin2, LOW);
digitalWrite(stepperPin3, LOW);
digitalWrite(stepperPin4, LOW);
}
// These functions run the above configurations in forward and reverse
order
// The direction of a stepper motor depends on the order in which the
coils are turned on.
void forward(){ // One tooth forward
Step_A();
delay(delaytime);
Step_B();
delay(delaytime);
Step_C();
delay(delaytime);
Step_D();
delay(delaytime);
}
void backward(){ // One tooth backward
Step_D();
delay(delaytime);
Step_C();

25

delay(delaytime);
Step_B();
delay(delaytime);
Step_A();
delay(delaytime);
}

26

Anda mungkin juga menyukai