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
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
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
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
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
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
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
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
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
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
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
Isolasi Secukupnya cm
Sterofoam Secukupnya 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 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?
Gambar 2.Pengaturan Sirkuit
Gambar 3.Skematik
Gmabar 4. Rangkaian Project
7. Konsep Alat
13
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 the 7
segment LED display
15
#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
// 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
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
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
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
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
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
//----- 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
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
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