--> Project I - 14. Mesin Antrian 2 Loket dengan Tampilan 7-Segment berbasis Arduino | Tutorial arduino lengkap

Wednesday, August 23, 2017

Project I - 14. Mesin Antrian 2 Loket dengan Tampilan 7-Segment berbasis Arduino

| Wednesday, August 23, 2017
Mesin Antrian 2 Loket dengan Tampilan 7-Segment


Mesin antrian 2 loket dengan tampilan seven segment 2 digit pad masing-masing loket juga dilengkapi dengan output suara antrian. Petugas loket menekan tombol NEXT untuk memanggil nomor antrian, secara bersamaan 7-segment akan menampilkan nomor antrian dan suara nomor antrian akan terdengar sesuai dengan nomer saat itu.

Terdapat 2 tombol pada masing masing loket, tombol NEXT untuk memanggil nomor antrian berikutnya, sedangkan tombol RETURN untuk mengulang panggilan tanpa menambah nomor antrian. Seven segment menampilkan urutan antrian dan nomor loket. Suara dihasilkan dari IC ISD17xx, suara nomor antrian direkam pada IC tersebut kemudian Arduino mengakses alamat nomor suara menggunakan komunikasi SPI.

Kebutuhan Hardware
  • Modul Seven segment 4 digit
  • 4 Tombol push ON
  • Modul ISD 17xx (yang kita gunakan ISD 17180)
  • Speaker 0.5W 8Ohm
  • Amplifier (jika suara kurang keras)
  • Modul Arduino UNO
  • Power supply +5 Volt
7-Segment | Source                               Push Button | Source

ISD 17180 | Source

Speaker | Source

Diagram Blok

Schematic


7-Segment CA Wiring | Source



Koneksi Arduino UNO dengan 7 segment


Koneksi Arduino UNO dengan Tombol



Koneksi Arduino UNO dengan ISD 17180


Source Code/Sketch

#include <ISD1700.h>
//#define tbLoketNext1 A4
#define tbLoketR1 A5
#define tbLoketNext2 0
//#define tbLoketR2 1
ISD1700 chip(10); // Initialize chipcorder with
// SS at Arduino's digital pin 10
int apc=0;
int vol=0; //volume 0=MAX, 7=min
int startAddr=0x10;
int endAddr =0x2DF;
char angka;
byte rat,pul,sat,Next;
byte f_noUrut,f_rat,f_pul,f_sat;
byte f_tb,f_tbR,loket,f_loket,akhir;
word tunda;
word noAntri=0;
long pengurang, waktu_tunggu;
long lastButton = 0;
long delayAntiBouncing = 50;
byte seven_seg_digits[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
};
void setup(){
apc = apc | vol; //D0, D1, D2
apc = apc | 0x50; // D4& D6 select MIC REC
apc = apc | 0x80; // D7 AUX ON, comment enable AUD
apc = apc | 0x100; // D8 SPK OFF, comment enable SPK
apc = apc | 0x800; // D11 EOM ON, comment disable EOM
for(char i=2; i<9; i++){
pinMode(i,OUTPUT);
}
pinMode(A0,OUTPUT);
pinMode(A1,OUTPUT);
pinMode(A2,OUTPUT);
pinMode(A3,OUTPUT);
pinMode(tbLoketNext1,INPUT);
pinMode(tbLoketNext2,INPUT);
pinMode(tbLoketR1,INPUT);
pinMode(tbLoketR2,INPUT);
digitalWrite(tbLoketNext1,HIGH);
digitalWrite(tbLoketNext2,HIGH);
digitalWrite(tbLoketR1,HIGH);
digitalWrite(tbLoketR2,HIGH);
noAntri=0;
}
void loop(){
/******************
'*'ANTRIAN NOMOR
'1'SATU
'9'SEMBILAN
'A'SEPULUH
'B'SEBELAS
'C'BELAS
'D'PULUH
'E'RATUS
'F'SERATUS
'G'LOKET
*****************/
rat=noAntri/100;
pul=(noAntri%100)/10;
sat=(noAntri%100)%10;
tampil7Segment();
if (digitalRead(tbLoketNext1)==0 && f_tb==0){
noAntri++;
f_tbR=1;
loket=1;
reset_var();
}
else if(digitalRead(tbLoketR1)==0 && f_tb==0 && f_tbR==1){
reset_var();
}
else if (digitalRead(tbLoketNext2)==0 && f_tb==0 ){
noAntri++;
f_tbR=2;
loket=2;
reset_var();
}
else if(digitalRead(tbLoketR2)==0 && f_tb==0 && f_tbR==2){
reset_var();
}
if (Next==1){
if (f_noUrut==0) gotoISD_noUrut();
else if (f_noUrut==1 && f_rat==0) gotoISD_rat();
else if (f_rat==1 && f_pul==0) gotoISD_pul();
else if (f_pul==1 && f_sat==0) gotoISD_sat();
if (akhir==1 && tunda==60) gotoISD_diLoket();
else if(f_loket==1 && tunda==60) gotoISD_loket();
}
waktu_tunggu=millis()-pengurang;
if (f_tb==1 && waktu_tunggu>5000)f_tb=0;
}
//=========================================
void reset_var(){
Next=1;
tunda=0;
f_noUrut=0;
f_rat=0;
f_pul=0;
f_sat=0;
akhir=0;
f_loket=0;
f_tb=1;
pengurang=millis();
}
void gotoISD_noUrut(){
if(tunda==0 && f_noUrut==0){
angka='*';
data_ISD();
f_noUrut=1;
}
}
//=============================ratusan
void gotoISD_rat(){
//--------------200,300,400....dst
if (rat>1 && pul==0 && sat==0 && f_rat==0){
if (tunda==90){
angka=rat;
data_ISD();
}
else if (tunda==135){
angka='E';
data_ISD();
f_rat=1;
tunda=0;
akhir=1;
}
}
//--------------200an,300an,400an....dst
if (rat>1 && f_rat==0){
if (tunda==90){
angka=rat;
data_ISD();
}
else if (tunda==135){
angka='E';
data_ISD();
f_rat=1;
tunda=0;
}
}
//--------------100
else if(rat==1 && pul==0 && sat==0 && f_rat==0 && tunda==90){
angka='F';
data_ISD();
akhir=1;
tunda=0;
}
//--------------100an
else if(rat==1 && f_rat==0 && tunda==90){
angka='F';
data_ISD();
f_rat=1;
tunda=0;
}
//--------------ratusan=0
else if (rat==0 && f_rat==0 && tunda==90){
f_rat=1;
tunda=0;
}
}
//================================puluhan
void gotoISD_pul(){
//----------22 s/d 29, 32 s/d 39.....dst
if(pul>1 && sat>0 && f_pul==0){
if(tunda==50){
angka=pul;
data_ISD();
}
else if(tunda==100){
angka='D';
data_ISD();
f_pul=1;
tunda=0;
}
}
//--------------------12 s/d 19
else if(pul>0 && sat>1 && f_pul==0){
if(tunda==50){
angka=sat;
data_ISD();
}
else if(tunda==100){
angka='C';
data_ISD();
f_pul=1;
tunda=0;
akhir=1;
f_sat=1;
}
}
//--------------sebelas
else if(pul==1 && sat==1 && f_pul==0 && tunda==50){
angka='B';
data_ISD();
f_pul=1;
tunda=0;
akhir=1;
f_sat=1;
}
//--------------sepuluh
else if(pul==1 && f_pul==0 && tunda==50){
angka='A';
data_ISD();
f_pul=1;
tunda=0;
akhir=1;
f_sat=1;
}
//--------------20,30,40,....dst
else if(pul>1 && sat==0 && f_pul==0){
if(tunda==50){
angka=pul;
data_ISD();
}
else if(tunda==100){
angka='D';
data_ISD();
f_pul=1;
f_sat=1;
akhir=1;
tunda=0;
}
}
//----------101 s/d 109, 201 s/d 209...dst
else if(pul==0 && sat>0 && tunda==50){
angka=sat;
data_ISD();
f_pul=1;
f_sat=1;
akhir=1;
tunda=0;
}
}
//=================================satuan
void gotoISD_sat(){
//---------------1 s/d 9
if(sat>0 && pul!=1 && tunda==50){
angka=sat;
data_ISD();
f_pul=1;
f_sat=1;
tunda=0;
akhir=1;
}
}
//=================================loket
void gotoISD_diLoket(){
//---------------diloket
angka='G';
data_ISD();
f_loket=1;
tunda=0;
akhir=0;
}
void gotoISD_loket(){
angka=loket;
data_ISD();
Next=0;
}
//==============================data ISD
void data_ISD(){
switch(angka){
chip.pu();
case '*':
chip.pu();
startAddr=0x15;
endAddr =0x1E;
chip.set_play(startAddr,endAddr);
break;
case 1:
//------------SATU
chip.pu();
startAddr=0x21;
endAddr =0x24;
chip.set_play(startAddr,endAddr);
break;
case 2:
//-------------DUA
chip.pu();
startAddr=0x29;
endAddr =0x2C;
chip.set_play(startAddr,endAddr);
break;
case 3:
//-------------TIGA
chip.pu();
startAddr=0x30;
endAddr =0x33;
chip.set_play(startAddr,endAddr);
break;
case 4:
//------------EMPAT
chip.pu();
startAddr=0x38;
endAddr =0x3A;
chip.set_play(startAddr,endAddr);
break;
case 5:
//------------LIMA
chip.pu();
startAddr=0x3F;
endAddr =0x41;
chip.set_play(startAddr,endAddr);
break;
case 6:
//------------ENAM
chip.pu();
startAddr=0x46;
endAddr =0x49;
chip.set_play(startAddr,endAddr);
break;
case 7:
//------------TUJUH
chip.pu();
startAddr=0x4E;
endAddr =0x50;
chip.set_play(startAddr,endAddr);
break;
case 8:
//------------DELAPAN
chip.pu();
startAddr=0x55;
endAddr =0x58;
chip.set_play(startAddr,endAddr);
break;
case 9:
//------------SEMBILAN
chip.pu();
startAddr=0x5D;
endAddr =0x60;
chip.set_play(startAddr,endAddr);
break;
case 'A':
//------------SEPULUH
chip.pu();
startAddr=0x65;
endAddr =0x68;
chip.set_play(startAddr,endAddr);
break;
case'B':
//------------SEBELAS
chip.pu();
startAddr=0x6D;
endAddr =0x70;
chip.set_play(startAddr,endAddr);
break;
case'C':
//------------BELAS
chip.pu();
startAddr=0x75;
endAddr =0x78;
chip.set_play(startAddr,endAddr);
break;
case'D':
//------------PULUH
chip.pu();
startAddr=0x7C;
endAddr =0x80;
chip.set_play(startAddr,endAddr);
break;
case'E':
//------------RATUS
chip.pu();
startAddr=0x84;
endAddr =0x88;
chip.set_play(startAddr,endAddr);
break;
case'F':
//------------SERATUS
chip.pu();
startAddr=0x8D;
endAddr =0x90;
chip.set_play(startAddr,endAddr);
break;
case'G':
//------------LOKET
chip.pu();
startAddr=0x95;
endAddr =0x9A;
chip.set_play(startAddr,endAddr);
break;
}
}
void tampil7Segment(){
if(rat>0){
digitalWrite(A0,LOW); digitalWrite(A1,HIGH);
digitalWrite(A2,HIGH); digitalWrite(A3,HIGH);
sevenSegWrite(rat);
delay(5);
}
if(pul>0 || rat>0){
digitalWrite(A0,HIGH); digitalWrite(A1,LOW);
digitalWrite(A2,HIGH); digitalWrite(A3,HIGH);
sevenSegWrite(pul);
delay(5);
}
digitalWrite(A0,HIGH); digitalWrite(A1,HIGH);
digitalWrite(A2,LOW); digitalWrite(A3,HIGH);
sevenSegWrite(sat);
delay(5);
digitalWrite(A0,HIGH); digitalWrite(A1,HIGH);
digitalWrite(A2,HIGH); digitalWrite(A3,LOW);
sevenSegWrite(loket);
delay(5);
tunda++;
}
void sevenSegWrite(byte segment){
byte pin = 2;
for (byte segCount = 0; segCount < 7; ++segCount) {
digitalWrite(pin, seven_seg_digits[segment][segCount]);
++pin;
}
}

Jalannya Alat

1. Rekam suara antrian pada ISD. Cara merekam suara Anda bisa lihat dari datasheet ISD17xx.
2. Selanjutnya pastikan library ISD1700 sudah terinstal.
3. Upload program diatas.
4. Kondisi awal seven segment menampilkan angka 0


 5. Tekan tombol Next pada loket 1, nomor antrian bertambah 1 dan loket menampilkan angka 1,
     ISD mengeluarkan suara antrian sesuai dengan yang ada di display beserta nomor loket


6. Tekan tombol Next pada loket 2, nomor antrian bertambah 1 dan loket menampilkan angka 2

7. Tekan tombol Return untuk memanggil ulang nomor antrian tanpa menambah nomor urut antrian.


Video untuk Project I - 14. Mesin Antrian 2 Loket dengan Tampilan 7-Segment berbasis Arduino


KAMI MELAYANI JASA PEMBUATAN HARDWARE ATAU SOFTWARE BERBASIS ARDUINO

KONTAK KAMI 085743320570 (adi sanjaya)

Related Posts

3 comments:

  1. Gan boleh tanya terkait projeknya?
    Itu suaranya harus direkam lagi ya gan? Dan berapa suara harua direkam?

    ReplyDelete
  2. Gan saya kan pakai software Proteus, bagaimana cara menambahkan modul ISD di proteus? bisa bantu gan?

    ReplyDelete