step motor elevator arduino project for beginner

34
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)..................11 6. Rangkaian Skematik..................................12 7. Konsep Alat.........................................13 7.1 Desain Elevator.................................13 7.2 Prinsip Kerja...................................13 8. Kode Program Arduino................................14 i

Upload: indira-anggit

Post on 09-Jul-2016

147 views

Category:

Documents


14 download

DESCRIPTION

This paper uses Indonesia Language. Step Motor Elevator here is an easy enough arduino project for beginner. There is the tools that we need, the concept, the step, the pictures of the electtrical, and the codes for arduino program.

TRANSCRIPT

Page 1: Step Motor Elevator Arduino Project For Beginner

DAFTAR ISI

HalamanDAFTAR 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.....................................................................................

i

Page 2: Step Motor Elevator Arduino Project For Beginner

STEP MOTOR ELEVATOR

1. Sifat

Keterampilan Pengenalan

Pembuktian Percobaan

2. Dasar Teori

2.1 Sistem Kontrol

Sistem kontrol adalah sebuah kumpulan atau susunan komponen-

komponen 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.

1

X X X

X

Page 3: Step Motor Elevator Arduino Project For Beginner

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

2

Page 4: Step Motor Elevator Arduino Project For Beginner

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

berbeda-beda.

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.

3

Page 5: Step Motor Elevator Arduino Project For Beginner

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

4

Page 6: Step Motor Elevator Arduino Project For Beginner

Digital I / O : Pins 14 (dimana 6 memberikan

output PWM)

Analog Input : Pins 6

DC Current per I / O : Pin 40 mA

DC Current for 3.3 Volt : Pin 50 mA

Flash Memory 32 KB (ATmega328) : 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.

5

Page 7: Step Motor Elevator Arduino Project For Beginner

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. Komponen ini terutama ditemukan dalam motor

DC. Kegunaannya adalah untuk membalikkan arah arus listrik dalam

dynamo. Commutator juga membantu dalam transmisi arus antara

dinamodan sumber daya.

Keuntungan utama motor DC adalah sebagai pengendali

kecepatan, yang tidak mempengaruhi 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.

6

Page 8: Step Motor Elevator Arduino Project For Beginner

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.

7

Page 9: Step Motor Elevator Arduino Project For Beginner

4. Alat dan Bahan

Alat dan Bahan Volume Satuan Gambar

Board Arduino Uno 1 Buah

5V Stepper Motor + ULN2003 Driver

Board Set1 Buah

Momentary Pushbutton

3 Buah

Sensor LDR 2 Buah

Lampu LED Putih 1 Buah

4 Digit Seven Segment Katoda

1 Buah

8

Page 10: Step Motor Elevator Arduino Project For Beginner

Laker 606 3 Buah

Benang Layangan Secukupnya cm

Kabel Jumper Secukupnya cm

Resistor 220 Ω 9 Buah

Resistor 10K Ω 2 Buah

Solder 1 Buah

Timah Solder 1 Buah

Papan Triplek 1 Buah

Software Arduino Uno

1 Buah

9

Page 11: Step Motor Elevator Arduino Project For Beginner

Gergaji Besi 1 Buah

Cutter 1 Buah

Bor 1 Buah

Lem Alteco 1 Buah

Port USB 1 Buah

Lem Tembak 1 Buah

Benang Kasur Secukupnya cm

Kertas Foto Secukupnya cm

10

Page 12: Step Motor Elevator Arduino Project For Beginner

Isolasi Secukupnya cm

Sterofoam Secukupnya cm

5. Standard Operating Procedure (SOP)

PERANCANGAN STEP MOTOR ELEVATOR

Flowchart Deskripsi

11

Page 13: Step Motor Elevator Arduino Project For Beginner

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 dasar-dasar teori untuk perancangan lift/elevator.

3. Tim menentukan spesifikasi dari elevator tersebut berupa jumlah lantai yang akan dibuat dan ketinggian dari masing-masing 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.

6. Rangkaian Skematik

12

1

2

3

4

5

6

7

8

9Ya

Ya

Tidak

Tidak

Berhasil?

Page 14: Step Motor Elevator Arduino Project For Beginner

Gambar 2.Pengaturan Sirkuit

Gambar 3.Skematik

Gmabar 4. Rangkaian Project

7. Konsep Alat

13

Page 15: Step Motor Elevator Arduino Project For Beginner

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

Page 16: Step Motor Elevator Arduino Project For Beginner

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 the 7

segment LED display

15

Page 17: Step Motor Elevator Arduino Project For Beginner

#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)

int thirdFloorReading = 0;

16

Page 18: Step Motor Elevator Arduino Project For Beginner

// 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);

pinMode(G, OUTPUT);

digitalWrite(G,LOW);

pinMode(DP, OUTPUT); // This pin will not be connected to the board

digitalWrite(DP,LOW);

17

Page 19: Step Motor Elevator Arduino Project For Beginner

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);

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

18

Page 20: Step Motor Elevator Arduino Project For Beginner

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)

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

19

Page 21: Step Motor Elevator Arduino Project For Beginner

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

// 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

20

Page 22: Step Motor Elevator Arduino Project For Beginner

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

// 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

21

Page 23: Step Motor Elevator Arduino Project For Beginner

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);

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

22

Page 24: Step Motor Elevator Arduino Project For Beginner

//----- 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

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);

23

Page 25: Step Motor Elevator Arduino Project For Beginner

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()

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

24

Page 26: Step Motor Elevator Arduino Project For Beginner

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();

delay(delaytime);

Step_B();

delay(delaytime);

Step_A();

delay(delaytime);

25