Professional Documents
Culture Documents
MALAYSIA.
DI SEDIAKAN OLEH:
NAMA PENSYARAH :
JUMLAH MARKAH
1.0 PENGENALAN
Amali 5 bagi kursus SHPE 2302 Aplikasi Teknologi Elektrik Dan Elektronik merupakan
sambungan dari amali 4 iaitu kami telah didedahkan tentang arduino seven segment. 7 Segment
display ni adalah salah satu komponen elektronik yang boleh menghasilkan data dalam bentuk
nombor bermula daripada nilai 0 sehingga 9. Dalam 7 segment display ni mempunyai diode
pemancar cahaya yang dipanggil segment, ia bercahaya dengan menggunakan current elektrik.
Daripada current tu ia boleh membuatkan sesetengah segment akan menyala “ON” dan
sesetengahnya tidak menyala “OFF”. Dengan fungsi yang ada pada 7 segment display ni kita
boleh paparkan nilai atau huruf yang kita mahukan dengan menulis code yang betul untuk
setiap segment.
2.0 OBJEKTIF
Rajah 1
2. Kemudian, sambungkan vcc 7 segment ke pin 9 arduino dan satu lagi pin ke GND dengan
menggunakan Jumper Wire .
Rajah 2
3. Pautkan program asas dengan perkakasan ke dalam software Adruino IDE dengan
menggunakan Arduino Uno.
#include "SevSeg.h"
SevSeg sevseg;
void setup(){
byte numDigits = 1;
byte digitPins[] = {};
byte segmentPins[] = {6, 5, 2, 3, 4, 7, 8, 9};
bool resistorsOnSegments = true;
byte hardwareConfig = COMMON_ANODE;
sevseg.begin(hardwareConfig, numDigits, digitPins, segmentPins, resistorsOnSegments);
sevseg.setBrightness(90);
}
void loop(){
sevseg.setNumber(1);
sevseg.refreshDisplay();
}
Sevseg sevseg ;
Void setup (){
byte numDigits = 1;
byte digitPins[] = {};
byte segmentPins[] = {6, 5, 2, 3, 4, 7, 8, 9};
bool resistorsOnSegments = true;
byte hardwareConfig = COMMON_ANODE ;
sevseg.begin ( hardwareconfig,numDigits.digitPins.segmentPins,resistorOnSegment);
sevseg.setBrightness(90)
}
Void loop ();
For (int i=0;i<10; i++){
sevseg.setNumber(i);
delay (1000);
sevseg.refreshDisplay();
sevseg.setBrightness(90);
}
For (int i=10;i>10; i--){
sevseg.setNumber(i);
delay (1000);
sevseg.refreshDisplay();
sevseg.setBrightness(90);
}
}
Rajah 2
3. Sambungkan pin 10 Arduino ke kaki switch 1 dan satu lagi pin 11 arduino ke switch 2 .
Sambungkan wayar GND arduino ke kaki switch 1 dan switch 2.
4. Pautkan program asas dengan perkakasan ke dalam software Adruino IDE dengan
menggunakan Arduino Uno.
int a = 6;
int b = 5;
int c = 2;
int d = 3;
int e = 4;
int f = 7;
int g = 8;
int count, pbup, pbdown;
bool pbupstatus, pbdownstatus;
void setup()
{
// put your setup code here, to run once:
pinMode (a, OUTPUT);
pinMode (b, OUTPUT);
pinMode (c, OUTPUT);
pinMode(d, OUTPUT);
pinMode(e, OUTPUT);
pinMode(f, OUTPUT);
pinMode(g, OUTPUT);
pinMode(10, INPUT_PULLUP);
pinMode(11, INPUT_PULLUP);
Serial.begin(9600);
}
void loop() {
pbup = digitalRead(10);
pbdown = digitalRead(11);
if(pbup == HIGH)
{
if(pbupstatus == true)
{
if(count < 9)
{
count ++; }
pbupstatus = false;
}}
else if(pbup == LOW)
{
pbupstatus = true;
}
if(pbdown == HIGH)
{
If(pbdownstatus == true)
{
if(count > 0)
{
count --;
}
pbdownstatus = false
;
}}
else if(pbdown == LOW)
{
pbdownstatus = true;
}
Serial
.println
(count);
if(count == 0)// nombor 0
{
digitalWrite(a, LOW);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, HIGH);
}
if(count == 1)
{
digitalWrite(a, HIGH);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
}
if(count == 2)
{
digitalWrite(a, LOW);
digitalWrite(b, LOW);
digitalWrite(c, HIGH);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, HIGH);
digitalWrite(g, LOW);
}
if(count == 3)
{
digitalWrite(a, LOW);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, LOW);
digitalWrite(e, HIGH);
digitalWrite(f, HIGH);
digitalWrite(g, LOW);
}
if(count == 4)
{
digitalWrite(a, HIGH);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
}
if(count == 5)
{
digitalWrite(a, LOW);
digitalWrite(b, HIGH);
digitalWrite(c, LOW);
digitalWrite(d, LOW);
digitalWrite(e, HIGH);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
}
if(count == 6)
{
digitalWrite(a, LOW);
digitalWrite(b, HIGH);
digitalWrite(c, LOW);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
}
if(count == 7) /
{
digitalWrite(a, LOW);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
}
if(count == 8)
{
digitalWrite (a, LOW);// 8
digitalWrite (b, LOW);
digitalWrite (c, LOW);
digitalWrite (d, LOW);
digitalWrite (e, LOW);
digitalWrite (f, LOW);
digitalWrite (g, LOW);
}
if (count == 9) // nombor 9
{
digitalWrite (a, LOW);// 9
digitalWrite (b, LOW);
digitalWrite (c, LOW);
digitalWrite (d, HIGH);
digitalWrite (e, HIGH);
digitalWrite (f, LOW);
digitalWrite (g, LOW);}}
Compile dan upload coding.
Perhatikan 7 segment display dan nyatakan keputusan yang telah dihasilkan.
AKTIVITI
1. Ulang Kod program untuk memaparkan digit 1 hingga 9
SevSeg sevseg;
void setup(){
byte numDigits = 1;
byte digitPins[] = {};
byte segmentPins[] = {6, 5, 2, 3, 4, 7, 8, 9};
bool resistorsOnSegments = true;
byte hardwareConfig = COMMON_ANODE;
sevseg.begin(hardwareConfig, numDigits, digitPins, segmentPins, resistorsOnSegments);
sevseg.setBrightness(90);
}
void loop(){
sevseg.setNumber(1);
sevseg.refreshDisplay();
delay (500);
sevseg.setNumber(2);
sevseg.refreshDisplay();
delay (500);
sevseg.setNumber(3);
sevseg.refreshDisplay();
delay (500);
sevseg.setNumber(4);
sevseg.refreshDisplay();
delay (500);
sevseg.setNumber(5);
sevseg.refreshDisplay();
delay (500);
sevseg.setNumber(6);
sevseg.refreshDisplay();
delay (500);
sevseg.setNumber(7);
sevseg.refreshDisplay();
delay (500);
sevseg.setNumber(8);
sevseg.refreshDisplay();
delay (500);
sevseg.setNumber(9);
sevseg.refreshDisplay();
}
HASIL KERJA
AKTIVITI 1
Coding
#include <SevSeg.h>
SevSeg sevseg;
void setup(){
byte numDigits = 1;
byte digitPins[] = {};
byte segmentPins[] = {6, 5, 2, 3, 4, 7, 8, 9};
bool resistorsOnSegments = true;
byte hardwareConfig = COMMON_ANODE;
sevseg.begin(hardwareConfig, numDigits, digitPins, segmentPins, resistorsOnSegments);
sevseg.setBrightness(100);
}
void loop(){
sevseg.setNumber(1);
sevseg.refreshDisplay();
delay (1000);
sevseg.setNumber(2);
sevseg.refreshDisplay();
delay (1000);
sevseg.setNumber(3);
sevseg.refreshDisplay();
delay (1000);
sevseg.setNumber(4);
sevseg.refreshDisplay();
delay (1000);
sevseg.setNumber(5);
sevseg.refreshDisplay();
delay (1000);
sevseg.setNumber(6);
sevseg.refreshDisplay();
delay (1000);
sevseg.setNumber(7);
sevseg.refreshDisplay();
delay (1000);
sevseg.setNumber(8);
sevseg.refreshDisplay();
delay (1000);
sevseg.setNumber(9);
sevseg.refreshDisplay();
delay (1000);
}
AKTIVITI 2
Coding
#include <SevSeg.h>
SevSeg sevseg;
void setup(){
byte numDigits = 1;
byte digitPins[] = {};
byte segmentPins[] = {6, 5, 2, 3, 4, 7, 8, 9};
bool resistorsOnSegments = true;
byte hardwareConfig = COMMON_ANODE;
sevseg.begin(hardwareConfig, numDigits, digitPins, segmentPins, resistorsOnSegments);
sevseg.setBrightness(100);
}
void loop ()
{
for (int i = 0; i < 10; i++)
{
sevseg . setNumber (i);
delay (1000);
sevseg.refreshDisplay();
}
AKTIVITI 3
Coding
int a = 6 ;
int b = 5 ;
int c = 2 ;
int d = 3 ;
int e = 4 ;
int f = 7 ;
int g = 8 ;
int count, pbup, pbdown;
bool pbupstatus, pbdownstatus;
void setup() { // put your setup code here, to run once:
pinMode (a, OUTPUT ) ;
pinMode (b, OUTPUT ) ;
pinMode (c, OUTPUT ) ;
pinMode (d, OUTPUT ) ;
pinMode (e, OUTPUT ) ;
pinMode (f, OUTPUT );
pinMode (g, OUTPUT ) ;
pinMode (10, INPUT_PULLUP ) ;
pinMode (11, INPUT_PULLUP ) ;
Serial .begin (9600 );
}
void loop()
{
pbup = digitalRead (10 ) ;
pbdown = digitalRead (11 ) ;
if (pbup == HIGH )
{
if (pbupstatus == true )
{
if (count < 9 )
{
count ++;
}
pbupstatus = false ;
}
}
else if (pbup == LOW )
{
pbupstatus = true ;
}
if (pbdown == HIGH )
{
if (pbdownstatus == true )
{
if (count > 0 )
{
count -- ;
}
pbdownstatus = false ;
}
}
else if (pbdown == LOW )
{
pbdownstatus = true ;
}
(ROHAIZAD)
Bagi amali 5 bagi kursus SHPE 2302 ini, kami didedahkan kepada Arduino 7 segment .
Setiap komponen pada Arduino Development Board perlulah dititikberatkan fungsinya. Bukan
itu saja, Input Area, Void Setup dan Void Loop sangatlah penting semasa membuat coding
Arduino yang melibatkan 7 segment. Berdasarkan aktiviti 1, kita dapat lihat dimana pin mode
( 6, 5, 2, 3, 4, 7, 8, 9) disambung pada 7 segment ( A,B,C,D,E,F,G,DP) sebagai output dibawah
void setup dan digital write (High) dibawah void loop. Setelah compile dan upload coding
tersebut, Digit 1 terpapar pada 7 segment display. Selain itu, bagi aktiviti 2 pula terdapat sedikit
perbezaan pada coding dimana dibawah void loop. Kod yang diprogramkan ialah (int i=0;
i<10;i++). Arduino akan membaca integer I =0 dimana nilai I akan terus bertambah 1 sebelum
mencapai nilai I =10. Upload Coding dan digit 1 hingga 9 terhasil pada 7 segment display
mengikut turutan. . Akhir sekali pada aktiviti 3, 2 suis tekan ditambah, apabila suis 1 tekan
ditekan nilai digit pada 7 segment display akan bertambah . Sekiranya suis 2 ditekan nilai digit
pada 7 segment display akan berkurang.
Ketika melakukan amali tersebut, saya mendapati dan mengalami beberapa masalah
Ketika ingin memasukkan coding yang saya lakukan ke dalam Arduino yang disediakan.
Terdapat kesalahan (error) dan port yang disambungkan menunjukkan sambungan tidak dapat
didedeteksi. Namun, ia dapat diselesaikan dengan bantuan pensyarah dengan pembantu
makmal. Dari melakukan amali tersebut juga saya mendapati, setiap perinci di dalam arahan
atau coding tersebut amatlah penting diperhatikan Ketika mencipta sesebuah program yang
kita inginkan.
(KHAIRUL AMIN)
Tugasan amali 5 bagi kursus SHPE 2302 Aplikasi Teknologi Elektrik Dan Elektronik,
saya mempelajari cara melakukan program arduino menggunakan 7 segment. Secara
ringkasnya, paparan 7 segment adalah satu komponen elektronik yang boleh menghasilkan data
dalam bentuk nombor bermula daripada 0 sehingga 9. Dalam paparan 7 segment ini
mempunyai diode pemancar cahaya yang dipanggil sebagai segment dimana ia akan bercahaya
apabila ada arus elektrik. Kebiasaannya, paparan 7 segment ini sering kali digunapakai pada
jam digital ataupun pada paparan calculator. Untuk tugasan amali 5 ini, saya perlu
menghasilkan pengaturcaraan 7 segment dengan mengabungkan perisian dan perkakasan
arduino untuk paparkan nombor pada 7 segment mengikut arahan yang diberikan. Sebelum
menghasilknan pengaturcaraan 7 segment, kenali dahulu bahagian- bahagian pada perkakasan
7 segment ini. 7 segment mempunyai 8 pin dimana 7 pin untuk menghidupkan diode pemancar
cahaya dan 1 pin untuk disambungkan pada 5V ataupun GND. 7 segment ini terbahagi kepada
2 jenis iaitu anod dan katod. Untuk menentukan samada 7 segment tersebut jenis anod atau
katod adalah dengan menyambungkan pin paling tengah pada 5V ataupun GND. Sekiranya 7
segment menyala apabila disambungkan pada 5V maka 7 segment tersebut adalah jenis anod
dan sebaliknya untuk 7 segment jenis katod. Seterusnya, pada perisian arduino perlu ditetapkan
mengikut program 7 segment supaya tiada kesalahan yang dikesan semasa menulis
pengaturcaraan seperti gambarajah di bawah:
Terdapat beberapa arahan yang digunakan dalam tugasan amali 5 ini antaranya ialah
“byte numDigits = 1;”. Arahan ini digunakan untuk menetapkan bilangan digit pada paparan 7
segment. Selain itu, “. byte digitPins[] = {}” digunakan untuk menghasilkan tatasusunan yang
menentukan pin GND apabila menggunakan 4 digit atau paparan berbilang digit. Arahan ini
dibiarkan kosong kerana menggunakan paparan 1 digit sahaja. Disamping itu, untuk tetapkan
8 pin yang disambungkan pada perkakasan arduino perlu menggunakan arahan “byte
segmentPins[] = {6, 5, 2, 3, 4, 7, 8, 9}”. Angka yang digunakan tidak boleh berubah dan ditukar
kepada angka lain kerana akan menjadi kesalahan ketika menulis coding.
Seterusnya, arahan “resistorsOnSegments = true” perlu ditetapkan “true” sekiranya perintang
had semasa berada secara siri dengan pin segment. Jika perintang dalam keadaan siri dengan
digit pin, maka tetapkan sebagai “false”. Selanjutnya adalah “sevseg.setBrightness(90)”
merupakan arahan untuk mengawal kecerahan pada paparan 7 segment. Kecerahan pada
paparan 7 segment tersebut boleh diubah daripada 0 sehingga 100. Arahan
“sevseg.setNumber()” merupakan arahan untuk mencetak nombor pada paparan. Sebagai
contoh, “sevseg.setNumber(4)” maka nombor yang akan terpapar pada 7 segment adalah 4.
Berikutnya adalah arahan “sevseg.refreshDisplay()” diperlukan pada akhir penulisan coding
untuk meneruskan paparan nombor. Akhir sekali adalah, arahan “hardwareConfig =
COMMON_ANODE” dan “hardwareConfig = COMMON_CATHODE”. Arahan ini
digunakan untuk tetapkan samada menggunakan 7 segment jenis anod ataupun katod
Dalam menyiapkan tugasan amali 5 ini, 3 aktiviti yang perlu diselesaikan. Aktiviti
pertama perlu memaparkan 1 digit nombor bermula dengan angka 0 sehingga 9. Manakala
untuk aktiviti kedua pula perlu cetak nombor pada paparan 7 segment dengan kiraan menaik
dan menurun. Arahan yang digunakan adalah sama seperti aktivit 1 dan hanya perlu menambah
arahan “for (int i = 0; i < 10; i++)” dan “for (int i = 9; i > 0; i--)” pada bahagian Void loop
untuk pastikan nombor tersebut dikira dalam kedaan menaik dan menurun. Pada aktiviti kedua
ini, saya menghadapi masalah kerana nombor tersebut tidak dapat dipaparkan dalam kiraan
menurun kerana salah dalam penulisan pengaturcaraan. Akhir sekali, untuk aktiviti ketiga pula
perlu menggunakan 2 push button untuk paparan nombor secara menaik dan menurun. Apabila
push button 1 ditekan, maka paparan nombor pada 7 segment dalam keadaan menaik. Manakala
apabila menekan push button 2, paparan nombor pada 7 segment adalah dalam keadaan
menurun. Kesalahan yang dilakukan dalam aktiviti ketiga ini adalah dari penyambungan litar
arduino dengan push button. Hal ini kerana pin VCC dan GND disambungkan secara sesiri
menyebabkan push button tidak dapat berfugsi.
8.0 KESIMPULAN
Berdasarkan tugasan amali 5 bagi kursus SHPE 2302 Aplikasi Teknologi Elektrik Dan
Elektronik dapat disimpulkan bahawa kesemua perkara telah diperlajari mencapai objektif
yang ditetapkan sebagai contoh dapat menghasilkan program arduino menggunakan paparan 7
segment. Terdapat 3 tugasan yang perlu diselesaikan menggunakan paparan 7 segment ini,
antaranya ialah paparkan nombor 0 sehingga 9 pada paparan 7 segment secara menaik
menggunakan pengaturcaraan yang telah diberikan. Seterusnya, paparkan nombor 0 sehingga
9 secara menaik dan kemudian secara menurun bermula dengan angka 9 sehingga 0 pada
paparan 7 segment. Akhir sekali, paparkan nombor 0 hingga 9 secara menaik dan menurun
menggunakan 2 butang tekan. Di samping itu, dalam amali 5 ini juga dapat memberi
pendedahan kepada saya untuk menyelesaikan masalah kesalahan pengaturcaraan yang berlaku
dalam program arduino menggunakan 7 segment. Hal ini secara tidak langsung dapat
meningkatkan kefahaman saya dalam menghasilkan pengaturcaraan arduino pada alatan yang
lain. Akhir sekali, saya dapat menghubungkaitkan penggunaan perisian dan perkakasan
menggunakan Arduino UNO pada paparan 7 segment dan butang tekan. Oleh hal yang
demikian, pengetahuan ini dapat saya aplikasikan dalam menghasilkan projek inovasi apabila
menggunakan perisian dan perkakan arduino.
SHPE 2302-APLIKASI ELEKTRIK DAN ELEKTRONIK TEKNOLOGI
MARKAH LAPORAN SHPE2302
KANDUNGAN LAPORAN
1. Pengenalan (KW)
• Pengenalan kepada amali serta ujikaji yang dilaksanakan 1 2 3 4 5
2. Objektif (KW)
• Menyenaraikan objektif yang ingin dicapai selepas amali dilaksanakan 1 2 3 4 5
9. Lampiran/Rujukan
• Menyenaraikan serta menyertakan rujukan yang berkaitan dan 1 2 3 4 5
bersesuaian dengan amali yang dilaksanakan
JUMLAH MARKAH
100
Pengetahuan 40
Praktikal Skill 60
KOMEN/CATATAN :
NOTA PENSYARAH