PERCOBAAN 6
Kontrol Putaran Motor Stepper
1. Prosedur [Kembali]
1. Susun semua perangkat sesuai dengan kondisi yang dipilih.
2. Tulis kode di Arduino IDE.
3. Setelah selesai, input program ke papan Arduino dalam aplikasi Proteus.
4. Mulai jalankan program dalam simulasi dan uji sesuai dengan modul dan kondisinya.
5. Selesaikan proses tersebut.
2. Hardware dan diagram blok [Kembali]
A. Hardware
B. Digram Blok
Prinsip Kerja
Pada percobaan dua kondisi satu digunakan dua Arduino digunakan di mana satu berperan sebagai master dan yang lainnya sebagai slave. Arduino master terhubung dengan input menggunakan dip switch, sementara Arduino slave terhubung dengan output menggunakan layar 7-segmen 2 digit. Arduino master mengirimkan perintah dari inputnya ke Arduino slave. Komunikasi antara keduanya menggunakan sistem SPI, di mana pin 10-13 pada Arduino master terhubung dengan pin yang sesuai pada Arduino slave. Saat dua dip switch diaktifkan, maka akan aktif digit pertama. Namun, jika ada 3 dip switch yang diaktifkan, sevensegmen tersebut akan menampilkan angka yang berbeda pada digit kedua.
4. FlowChart [Kembali]
A. Listing Program
1. Master
#include<SPI.h> //Library for SPI
int dip[] = {2,3,4,5,6,7,8,9};
int dipvalue[] = {};
void setup (){
Serial.begin(9600);
for(int i = 0; i < 8; i++){
pinMode(dip[i], INPUT_PULLUP);
}
SPI.begin();
SPI.setClockDivider(SPI_CLOCK_DIV8);
digitalWrite(SS,HIGH);
}
void loop(void){
byte Mastersend;
int x = 1;
for(int i = 0; i < 8; i++){
dipvalue[i] = digitalRead(dip[i]);
if(dipvalue[i] == LOW){
x = dip[i];
}
}
digitalWrite(SS, LOW);
Mastersend = x;
Serial.println(Mastersend);
SPI.transfer(Mastersend);
delay(1000);
}
2. Slave
#include <SPI.h>
#define a 9
#define b 8
#define c 7
#define d 6
#define e 5
#define f 4
#define g 3
#define dp 2
#define D1 A1
#define D2 A3
const int segmentPins[] = {a, b, c, d, e, f, g};
volatile boolean received = false;
volatile byte Slavereceived;
void setup() {
pinMode(D1, OUTPUT);
pinMode(D2, OUTPUT);
Serial.begin(9600);
for (int i = 0; i < 7; i++) {
pinMode(segmentPins[i], OUTPUT);
}
SPCR |= _BV(SPE);
SPI.attachInterrupt();
}
ISR(SPI_STC_vect) {
Slavereceived = SPDR;
received = true;
}
void displayCharacter(int digit, int digitPosition) {
byte patterns[10][7] = {
{0, 0, 0, 0, 0, 0, 1}, // 0
{1, 0, 0, 1, 1, 1, 1}, // 1
{0, 0, 1, 0, 0, 1, 0}, // 2
{0, 0, 0, 0, 1, 1, 0}, // 3
{1, 0, 0, 1, 1, 0, 0}, // 4
{0, 1, 0, 0, 1, 0, 0}, // 5
{0, 1, 0, 0, 0, 0, 0}, // 6
{0, 0, 0, 1, 1, 1, 1}, // 7
{0, 0, 0, 0, 0, 0, 0}, // 8
{0, 0, 0, 0, 1, 0, 0} // 9
};
for (int i = 0; i < 7; i++) {
digitalWrite(segmentPins[i], patterns[digit][i]);
}
if (digitPosition == D1) {
digitalWrite(D1, HIGH);
digitalWrite(D2, LOW);
} else if (digitPosition == D2) {
digitalWrite(D1, LOW);
digitalWrite(D2, HIGH);
}
delay(50);
}
void loop() {
if (received) {
if (Slavereceived == 1) {
displayCharacter(0, D1);
displayCharacter(0, D2);
} else if (Slavereceived == 2) {
displayCharacter(1, D1);
} else if (Slavereceived == 3) {
displayCharacter(2, D1);
displayCharacter(1, D2);
} else{
displayCharacter(0, D1);
displayCharacter(0, D2);
}
delay(100);
received = false;
}
}
B. Flowchart
5. Kondisi [Kembali]
Kondisi Percobaan 2 Kondisi 1 : Setiap 2 Switch aktif muncul angka berbeda pada digit ke 1, Setiap 3 Switch aktif muncul angka berbeda pada digit ke 2
6. Video Simulasi [Kembali]
7. Download File [Kembali]
HTML klik disini
File Rangkaian klik disini
Video Percobaan klik disini
Video Percobaan klik disini
Listing Program klik disini
Datasheet Arduino klik disini
Datasheet Dipswitch klik disini
Datasheet 7 Segment klik disini
Tidak ada komentar:
Posting Komentar