25 Ağustos 2014 Pazartesi
Balance Robot Hazırlıkları
Yeni çalışmam da 2 tekerlek üzerinde dengede durmaya çalışan bir robot yapacağım. Fizik derslerinden de hatırlayacağımız üzere sarkaç konularını işlemişizdir fakat bu projede ters sarkaç modelinden (inverted pendulum)yararlanacağız. Çocukken herkes bir çubuk alıp parmağının ucunda dengede tutmaya çalışmıştır muhtemelen herkes de yapmıştır bunu. Biz bunu yaparken çubuğun dengede durması için eğer çubuk ileri doğru düşüyorsa biz çubuğun dengede durması için parmağımızı ileri iteriz fakat burada parmağı ileri iterken parmak itme hızımızı iyi ayarlarız ki dengede durusun. Bu işlemi çubuk geri dönerken de aynı şekilde yaparız.
Ben bu projemde çubuk olarak hazırladığım bu platformu kullancağım.
Parmak olarak da 2 adet birbirinden bağımsız olarak çalışan 12 V redüktörlü encoderli bir dc motor kullanacağım. Hızı ayarlamak için ise PID( oransal-integral-türevsel denetleyici ) sisteminden yararlanacağım.
Burada önemli bir nokta ise platformun nereye kaç derece açıyla düşmeye başladığını anlamam lazım. Bunu ise MPU 6050 3-axis gyroscopes ve 3-axis accelerometer olan sensörü kullancağım. (Gyro ve Accelerometer aynı PCB üzerinde yerleştirilmiştir.) Bu sensör bana PID değer göndererek motor hızlarını kontrol etmek için ve platformu dengede tutmak için kullanılacaktır.
Şimdilik malzemeleri temin aşamasındayım en kısa zamanda bu projeye başlayacağım ve sonra proje hakkında bütün detayları eklemeyi düşünüyorum...
24 Temmuz 2014 Perşembe
SERVO MOTOR KONTROL-2
Bu çalışmamda daha önce yaptığım Analog joystick İle Motor Hız Kontrol Ve RPM Sayıcı Projesi'nde kullandığım analog potu kullanarak 2 adet servo motoru kontrol edeceğim. O projede sadece analog potun x-ekseni kullanıldı fakat bu çalışmamda y-eksenide dahil edilecek. Yani hem x-ekseni hem de y-ekseninden değerler alacağım.
Yukarıdaki resimde analog pot gözükmektedir. Yapısında iki adet pot bulunmaktadır. Bunlar ile hem x-ekseni hem de y-ekseninden bir gerilim alınarak ADC yardımıyla mikrodenetleyicimize iletilir. Alınan bu değerler işlenerek hangi eksende ne kadar derecelik hareket varsa servolarımıza iletilir ve servolar harekete geçirilir.
Iki adet servomuz yukarıdaki gibi konumlandırılmıştır. Analog potumuz x-ekseninde bir değişiklik yaparsa alttaki servo devreye girecek veya y-ekseninde bir değişiklik olursa üstteki servo devreye girecektir. Hem servolar hem de analog pot +90 derece ile -90 derece arasında konumlandırılabilir.
MikroC kodu;
#include "built_in.h" // hi(), lo(), komutlarını kullanmak için
# define servo1 PORTB.RB4 // servo motor çıkışı ayarlanır. PORTD.RD0
# define servo2 PORTB.RB5 // servo motor çıkışı ayarlanır. PORTD.RD1
char secilen_motor = 1, secilen_hiz = 1, secilen_poz = 0;
unsigned poz;
const int rc_poz_limit = 12500; // PWM maksimum limit = 2.5 ms x 8 = 20 ms
const int rc_poz_min = 2400; // PWM minimum limit = 1.5 ms
unsigned servo_pwm[2]={rc_poz_min,rc_poz_min};
unsigned short servo_say = 0;
bit servo1_on;
bit servo2_on;
bit bayrak;
unsigned rc_poz_interrupt = 53035; // TMR1 için ön değer
unsigned int adc_deg[2]; // ADC'den alınan verilerimi tutar.
void interrupt(){
if (pir1.tmr1if){ // tmr1 kesmesi oluştu
if (!bayrak){
if (servo_say == 0 && servo1_on) servo1 = 1;
if (servo_say == 1 && servo2_on) servo2 = 1;
rc_poz_interrupt = 65535 - servo_pwm[servo_say];
tmr1h = hi(rc_poz_interrupt);
tmr1l = lo(rc_poz_interrupt);
}
if (bayrak) {
if (servo_say == 0 && servo1_on) servo1 = 0;
if (servo_say == 1 && servo2_on) servo2 = 0;
rc_poz_interrupt = 65535 - rc_poz_limit + servo_pwm[servo_say];
tmr1h = hi(rc_poz_interrupt);
tmr1l = lo(rc_poz_interrupt);
if (++servo_say > 7) servo_say = 0;
}
bayrak = !bayrak;
pir1.TMR1IF = 0;
}
}
void init(){
TRISB=0X00;
PORTB=0X00;
delay_ms(300);
/*TIMER1 DONANIM BIRIMI KULLANILIYOR CUNKU SERVO MOTORUN NE KADAR SURE 1 KALCAK VE NE KADAR SURE 0 KALACAĞINI HESAPLAMAK ICIN BU DONANIM BIRIMINE IHTIYAC VARDIR*/
TMR1H = hi(rc_poz_interrupt); // TMR1 için ön değer yüklendi
TMR1L = lo(rc_poz_interrupt);
PIE1.TMR1IE = 1; // TMR1 kesmesi aktif edildi
T1CON.TMR1ON = 1; // TMR1 zamanlayıcısı çalıştırıldı
RCON.IPEN = 0; // Çevresel kesme maskelemeleri iptal edildi
INTCON.GIE = 1; // Kesmeler aktif edildi
INTCON.PEIE = 1;
/*ADC AYARLARI ICIN*/
TRISA.RA0=1;
TRISA.RA1=1;
ADCON0=0x09;
ADCON1=0b00001101; // Use Internal Voltage Reference (Vdd and Vss)
CMCON|=7;
bayrak = 0;
servo1_on = 1;
servo2_on = 1;
servo1 = 0; // bütün servoların ctrl pinlerine
servo2 = 0;
servo_pwm[0] = 2400; // bütün servoların başlangıç pozisyonları
servo_pwm[1] = 2400;
}
void servo_poz(unsigned secilen_motor, unsigned poz, unsigned short hiz){
unsigned short i;
while(servo_pwm[secilen_motor] < poz){
servo_pwm[secilen_motor]++;
for(i = 0; i < hiz; i++) delay_us(100);
}
while(servo_pwm[secilen_motor] > poz){
servo_pwm[secilen_motor]--;
for(i = 0; i < hiz; i++) delay_us(100);
}
}
void main() { // ana program
init(); // init() altprogramı çalıştırılıyor
delay_ms(500);
while(1){ // sonsuz döngü
secilen_motor=0;
while(secilen_motor<2){
adc_deg[0]=ADC_READ(0);
adc_deg[1]=ADC_READ(1);
delay_ms(100);
poz=(55,56*((adc_deg[secilen_motor]*45)/255))+2400;
servo_poz(secilen_motor, poz, secilen_hiz);
secilen_motor++;
}
}
}
SONUÇ
Yukarıdaki resimde analog pot gözükmektedir. Yapısında iki adet pot bulunmaktadır. Bunlar ile hem x-ekseni hem de y-ekseninden bir gerilim alınarak ADC yardımıyla mikrodenetleyicimize iletilir. Alınan bu değerler işlenerek hangi eksende ne kadar derecelik hareket varsa servolarımıza iletilir ve servolar harekete geçirilir.
Devre şeması |
MikroC kodu;
#include "built_in.h" // hi(), lo(), komutlarını kullanmak için
# define servo1 PORTB.RB4 // servo motor çıkışı ayarlanır. PORTD.RD0
# define servo2 PORTB.RB5 // servo motor çıkışı ayarlanır. PORTD.RD1
char secilen_motor = 1, secilen_hiz = 1, secilen_poz = 0;
unsigned poz;
const int rc_poz_limit = 12500; // PWM maksimum limit = 2.5 ms x 8 = 20 ms
const int rc_poz_min = 2400; // PWM minimum limit = 1.5 ms
unsigned servo_pwm[2]={rc_poz_min,rc_poz_min};
unsigned short servo_say = 0;
bit servo1_on;
bit servo2_on;
bit bayrak;
unsigned rc_poz_interrupt = 53035; // TMR1 için ön değer
unsigned int adc_deg[2]; // ADC'den alınan verilerimi tutar.
void interrupt(){
if (pir1.tmr1if){ // tmr1 kesmesi oluştu
if (!bayrak){
if (servo_say == 0 && servo1_on) servo1 = 1;
if (servo_say == 1 && servo2_on) servo2 = 1;
rc_poz_interrupt = 65535 - servo_pwm[servo_say];
tmr1h = hi(rc_poz_interrupt);
tmr1l = lo(rc_poz_interrupt);
}
if (bayrak) {
if (servo_say == 0 && servo1_on) servo1 = 0;
if (servo_say == 1 && servo2_on) servo2 = 0;
rc_poz_interrupt = 65535 - rc_poz_limit + servo_pwm[servo_say];
tmr1h = hi(rc_poz_interrupt);
tmr1l = lo(rc_poz_interrupt);
if (++servo_say > 7) servo_say = 0;
}
bayrak = !bayrak;
pir1.TMR1IF = 0;
}
}
void init(){
TRISB=0X00;
PORTB=0X00;
delay_ms(300);
/*TIMER1 DONANIM BIRIMI KULLANILIYOR CUNKU SERVO MOTORUN NE KADAR SURE 1 KALCAK VE NE KADAR SURE 0 KALACAĞINI HESAPLAMAK ICIN BU DONANIM BIRIMINE IHTIYAC VARDIR*/
TMR1H = hi(rc_poz_interrupt); // TMR1 için ön değer yüklendi
TMR1L = lo(rc_poz_interrupt);
PIE1.TMR1IE = 1; // TMR1 kesmesi aktif edildi
T1CON.TMR1ON = 1; // TMR1 zamanlayıcısı çalıştırıldı
RCON.IPEN = 0; // Çevresel kesme maskelemeleri iptal edildi
INTCON.GIE = 1; // Kesmeler aktif edildi
INTCON.PEIE = 1;
/*ADC AYARLARI ICIN*/
TRISA.RA0=1;
TRISA.RA1=1;
ADCON0=0x09;
ADCON1=0b00001101; // Use Internal Voltage Reference (Vdd and Vss)
CMCON|=7;
bayrak = 0;
servo1_on = 1;
servo2_on = 1;
servo1 = 0; // bütün servoların ctrl pinlerine
servo2 = 0;
servo_pwm[0] = 2400; // bütün servoların başlangıç pozisyonları
servo_pwm[1] = 2400;
}
void servo_poz(unsigned secilen_motor, unsigned poz, unsigned short hiz){
unsigned short i;
while(servo_pwm[secilen_motor] < poz){
servo_pwm[secilen_motor]++;
for(i = 0; i < hiz; i++) delay_us(100);
}
while(servo_pwm[secilen_motor] > poz){
servo_pwm[secilen_motor]--;
for(i = 0; i < hiz; i++) delay_us(100);
}
}
void main() { // ana program
init(); // init() altprogramı çalıştırılıyor
delay_ms(500);
while(1){ // sonsuz döngü
secilen_motor=0;
while(secilen_motor<2){
adc_deg[0]=ADC_READ(0);
adc_deg[1]=ADC_READ(1);
delay_ms(100);
poz=(55,56*((adc_deg[secilen_motor]*45)/255))+2400;
servo_poz(secilen_motor, poz, secilen_hiz);
secilen_motor++;
}
}
}
SONUÇ
22 Temmuz 2014 Salı
SERVO MOTOR KONTROL-1
Servo motorlar günümüzde pek çok yerde kullanılmaktadır. Genellikle model uçaklar, araba gibi yerlerde sıkça kullanılır. Boyutları küçük olmasına rağmen torku yüksek olması bu motorların en önemli özelliklerinden biridir. Diğer önemli özelliği ise mikrodenetleyiciler ile arasında herhangi bir ara devre olmadan direk mikrodenetleyiciye bağlanabilir. Piyasa da genellikle 180 derece dönebilen mevcuttur ama 360 derece dönebilenlerde vardır.
Benim bu çalışmada kullanacağım TowerPro markalı servo motordur. Servo motorun 3 adet kablosu bulunur;
* Kırmızı kablo VCC(4.5V-6V)
* Kahve rengi GND
* TURUNCU Data
Servo motorun çalıştırılması için periyodu sabit olmalıdır yani 20ms gibi. Bu 20 ms periydun içinde biz darbenin lojik 1 kalma süresini sınırları içinde ayarlarsak motor istediğimiz yöne sürebiliriz. Örneğin; Data ucuna 0.5 ms bir lojik 1 uygulayalım sonra 19.5ms lojik 0 uygulayalım motor sola doğru hareket edecektir. Bunu devamlı yaparsak motor sola gidecek ver orada kitlenecektir. Bu işlemler ortaya ve sağa doğru hareketler içinde geçerlidir.
Ben bu çalışmamda yapmak istediğim şey şimdilik motor önce -90 derece gidecek ve +10 derece arta arta +90 dereceye kadar gidecek.
Devrede 20Mhz kristal, 2 adet 22pf kondansatör , 1 adet servo motor ve son olarak 18f4550 mikrodenetliyimiz bulunmaktadır.
MikroC kodumuz; Kod yeterince açıktır ve yanlarında açıklamaları yazdım. Biraz göz atarsanız mantığını anlayabilirsiniz.
#include "built_in.h" // hi(), lo(), komutlarını kullanmak için
# define servo PORTD.RD0 // servo motor için çıkışı ayarlanır PORTD.RD0
char say = 1, secilen_hiz = 1, secilen_poz = 0;
unsigned poz;
const int rc_poz_limit = 12500; // PWM maksimum limit 2.5ms
const int rc_poz_min = 2400; // PWM minimum limit 0.5ms
unsigned servo_pwm; // ne kadar lojik 1 kalacağını belirler.
unsigned short servo_idx = 0; // Bunun neden kullandığı sonraki projede daha açık anlayacaksınız
bit servo1_on;
bit bayrak;
unsigned rc_poz_interrupt = 53035; // TMR1 için ön değer
unsigned short adc_deg;
void interrupt()
{
if (pir1.tmr1if){ // tmr1 kesmesi oluştu
if (!bayrak){
if (servo_idx == 0 && servo1_on) servo = 1;
rc_poz_interrupt = 65535 - servo_pwm;
tmr1h = hi(rc_poz_interrupt);
tmr1l = lo(rc_poz_interrupt);
}
if (bayrak){
if (servo_idx == 0 && servo1_on) servo = 0;
rc_poz_interrupt = 65535 - rc_poz_limit + servo_pwm;
tmr1h = hi(rc_poz_interrupt);
tmr1l = lo(rc_poz_interrupt);
if (++servo_idx > 7) servo_idx = 0;
}
bayrak = !bayrak;// 20ms elde etmek için bu işlem yapıldı
pir1.TMR1IF = 0;
}
}
void init()
{
TRISD =0x00; // PORTD çıkış olarak yönlendirildi
PORTD =0x00; // PORTD sıfırlandı
delay_ms(300);
tmr1h = hi(rc_poz_interrupt); // TMR1 için ön değer yüklendi
tmr1l = lo(rc_poz_interrupt);
pie1.TMR1IE = 1; // TMR1 kesmesi aktif edildi
t1con.TMR1ON = 1; // TMR1 zamanlayıcısı çalıştırıldı
RCON.IPEN = 0; // Çevresel kesme maskelemeleri iptal edildi
INTCON.GIE = 1; // Kesmeler aktif edildi
INTCON.PEIE = 1; // Çevresel kesmeler aktif edildi
bayrak = 0;
servo1_on = 1;
servo = 0; // servo ilk anda çalışmıyor.
servo_pwm = 2400; // bütün servoların başlangıç pozisyonları
}
void pozisyon(unsigned poz, unsigned short hiz) // servonun pozisyonunu ayarlama
{
unsigned short i;
while(servo_pwm < poz){
servo_pwm++;
for(i = 0; i < hiz; i++) delay_us(100);
}
while(servo_pwm > poz){
servo_pwm--;
for(i = 0; i < hiz; i++) delay_us(100);
}
}
void main() { // ana program
init(); // init() altprogramı çalıştırılıyor
delay_ms(500);
while(1){ // sonsuz döngü
say=1;
while(say < 9)
{
delay_ms(100);
poz = (55,56 * secilen_poz) + 2400;
pozisyon(poz, secilen_hiz);
say++;
}
secilen_poz = secilen_poz + 10; // servo pozisyonları 10 derece artırıldı
if (secilen_poz > 180) secilen_poz = 0; // pozisyon 180 ( ya da +90 )
} // dereceyi aştı ise 0 derece
}
SONUC
Kaynak
*MikroC ve PIC18F4550 kitabı
*http://320volt.com/picbasic-dersleri-pic-basic-pro-ile-pic-programlama-12/
*http://embedded-lab.com/blog/?p=4653
*http://www.fatiherdem.net/hobi-servo-surelim/
Benim bu çalışmada kullanacağım TowerPro markalı servo motordur. Servo motorun 3 adet kablosu bulunur;
* Kırmızı kablo VCC(4.5V-6V)
* Kahve rengi GND
* TURUNCU Data
Servo motorun çalıştırılması için periyodu sabit olmalıdır yani 20ms gibi. Bu 20 ms periydun içinde biz darbenin lojik 1 kalma süresini sınırları içinde ayarlarsak motor istediğimiz yöne sürebiliriz. Örneğin; Data ucuna 0.5 ms bir lojik 1 uygulayalım sonra 19.5ms lojik 0 uygulayalım motor sola doğru hareket edecektir. Bunu devamlı yaparsak motor sola gidecek ver orada kitlenecektir. Bu işlemler ortaya ve sağa doğru hareketler içinde geçerlidir.
Ben bu çalışmamda yapmak istediğim şey şimdilik motor önce -90 derece gidecek ve +10 derece arta arta +90 dereceye kadar gidecek.
Devre şeması
MikroC kodumuz; Kod yeterince açıktır ve yanlarında açıklamaları yazdım. Biraz göz atarsanız mantığını anlayabilirsiniz.
#include "built_in.h" // hi(), lo(), komutlarını kullanmak için
# define servo PORTD.RD0 // servo motor için çıkışı ayarlanır PORTD.RD0
char say = 1, secilen_hiz = 1, secilen_poz = 0;
unsigned poz;
const int rc_poz_limit = 12500; // PWM maksimum limit 2.5ms
const int rc_poz_min = 2400; // PWM minimum limit 0.5ms
unsigned servo_pwm; // ne kadar lojik 1 kalacağını belirler.
unsigned short servo_idx = 0; // Bunun neden kullandığı sonraki projede daha açık anlayacaksınız
bit servo1_on;
bit bayrak;
unsigned rc_poz_interrupt = 53035; // TMR1 için ön değer
unsigned short adc_deg;
void interrupt()
{
if (pir1.tmr1if){ // tmr1 kesmesi oluştu
if (!bayrak){
if (servo_idx == 0 && servo1_on) servo = 1;
rc_poz_interrupt = 65535 - servo_pwm;
tmr1h = hi(rc_poz_interrupt);
tmr1l = lo(rc_poz_interrupt);
}
if (bayrak){
if (servo_idx == 0 && servo1_on) servo = 0;
rc_poz_interrupt = 65535 - rc_poz_limit + servo_pwm;
tmr1h = hi(rc_poz_interrupt);
tmr1l = lo(rc_poz_interrupt);
if (++servo_idx > 7) servo_idx = 0;
}
bayrak = !bayrak;// 20ms elde etmek için bu işlem yapıldı
pir1.TMR1IF = 0;
}
}
void init()
{
TRISD =0x00; // PORTD çıkış olarak yönlendirildi
PORTD =0x00; // PORTD sıfırlandı
delay_ms(300);
tmr1h = hi(rc_poz_interrupt); // TMR1 için ön değer yüklendi
tmr1l = lo(rc_poz_interrupt);
pie1.TMR1IE = 1; // TMR1 kesmesi aktif edildi
t1con.TMR1ON = 1; // TMR1 zamanlayıcısı çalıştırıldı
RCON.IPEN = 0; // Çevresel kesme maskelemeleri iptal edildi
INTCON.GIE = 1; // Kesmeler aktif edildi
INTCON.PEIE = 1; // Çevresel kesmeler aktif edildi
bayrak = 0;
servo1_on = 1;
servo = 0; // servo ilk anda çalışmıyor.
servo_pwm = 2400; // bütün servoların başlangıç pozisyonları
}
void pozisyon(unsigned poz, unsigned short hiz) // servonun pozisyonunu ayarlama
{
unsigned short i;
while(servo_pwm < poz){
servo_pwm++;
for(i = 0; i < hiz; i++) delay_us(100);
}
while(servo_pwm > poz){
servo_pwm--;
for(i = 0; i < hiz; i++) delay_us(100);
}
}
void main() { // ana program
init(); // init() altprogramı çalıştırılıyor
delay_ms(500);
while(1){ // sonsuz döngü
say=1;
while(say < 9)
{
delay_ms(100);
poz = (55,56 * secilen_poz) + 2400;
pozisyon(poz, secilen_hiz);
say++;
}
secilen_poz = secilen_poz + 10; // servo pozisyonları 10 derece artırıldı
if (secilen_poz > 180) secilen_poz = 0; // pozisyon 180 ( ya da +90 )
} // dereceyi aştı ise 0 derece
}
SONUC
Kaynak
*MikroC ve PIC18F4550 kitabı
*http://320volt.com/picbasic-dersleri-pic-basic-pro-ile-pic-programlama-12/
*http://embedded-lab.com/blog/?p=4653
*http://www.fatiherdem.net/hobi-servo-surelim/
17 Temmuz 2014 Perşembe
EUSART DONANIM BIRIMI ILE RF MOTOR KONTROL
Bu çalışmamdaki amacım iki ayrı devre oluşturarak bir kablosuz alıcı verici devresi yapmak. Bunun için daha önceki çalışmalarımda yaptığım motor kontrol devresini yapacağım. Yani alıcı kısımın da benim motorum olacak ve onu sürecek olan devre verici kısmında ise benim analog potuma bağlı olan ayrı bir devre. Yani analog pot hızı kontrol edecek.
Kullanacağım alıcı verici çifti;
http://www.direnc.net/433MHZ-RF-ALICI-VERICI-KRISTALLI-TAKIM,PR-1580.html |
Aslında alıcı ve verici sanki iki devre arasında bir kablo varmış gibi davranır alıcı ve verici modüllerinin yerine bir kablo ile bağlasanız da aynı işi yapar. Ama amacımız kablosuz iletişim olduğunda buna gerek yok.
Ve devre şemam;
ve donanım birimi olarak da ADC ve EUSART donanım birimleri kullanıldı.
MikroC programında yazılım yazılırken EUSART donanım biriminin hazır kod kullanılmadı onun yerine kendim yeninden inşa ettim herşeyi.
Eusart modulu ASCII karaketer alır ve gönderir ve bu yüznden stringlerle iş yaparsınız bu önemli bir nokta. Örneğin; Siz vericinizden 255 sayısını göndereceksiniz diyelim bunu stringe çevirmelisiz yani "255" bunun gibi yoksa 255 gönderilmez alıcı doğru veri almaz. Alıcı da ise alına bu string üzerinde bir işlem yapmak isterseniz eğer bu "255" stringini decimal sayıya çevirmelisiz. Yani vericiniz "255"
datasını gönderdi ama bu string siz alıcı kısmında alınan bu data üzerine +10 sayısını ilave etmek istiyorsunuz direk "255"+10 diyemezsiniz yanlış bu. Bun yerine "255" alınan bu stringi decimal sayıya çevirip öyle eklersiniz 255+10 gibi.
Bende bu çalışmamda bunun gibi yaptım verici kısmında potdan aldığı değeri yani decimal sayıyı stringe çevirip öyle alıcıya gönderdim orada onu decimal sayıya çevirip öyle işlem yaptım.
/* UART MODULU YAPILANDIRILMASI */
TXSTA=0; //ILK ANDA SIFIR
RCSTA=0;
SPBRG=103; //16 MHZ İÇİN 9600 BİT/SN hızında baundrate
TXSTA=0X26;
RCSTA=0X90;
INTCON=0XC0;
PIE1.RCIE=1; //RSR DEN RCREG VERI AKTARILDIĞINDA KESME OLUŞSUN
Yukarıdaki kodda, Euart donanım birimin yapılandırılması gösterilmiştir. Alıcı kısmında 16mhz kristal kullanılıp SPBRG register içine 103 yazılarak 9600 baud da ayarlanmıştır. Verici kısmında 20Mhz kristal kullanılıp SPBRG=129 yazılmıştır önemli olan nokta her ikisinde de 9600 baud olmalıdır. Yani saniye 9600 bit gönderilir ve alınır.
void interrupt(){
if(PIR1.RCIF){
if(RCSTA.FERR || RCSTA.OERR){// Eğer karakter almada FIFO register ile sorun oluşursa
RCSTA.CREN=0; // normal duruma getirmek için bunları yap
delay_us(1);
RCSTA.CREN=0;
PIR1.RCIF=0;
}
RxBuffer=RCREG; // Vericinden alınan karakteri kopyala
control=1;
PIR1.RCIF=0;
}
}
Yukarıda olan kesme kodunda eğer veri yani string geldiyse kesme olur veri ilk stringi RxBuffer içine yazılır.
Alıcı kısmın MikroC kodu;
#define SIFRE_1 0x41
#define SIFRE_2 0x42
sbit LCD_RS at RB1_bit;
sbit LCD_EN at RB2_bit;
sbit LCD_D7 at RD3_bit;
sbit LCD_D6 at RD2_bit;
sbit LCD_D5 at RD1_bit;
sbit LCD_D4 at RD0_bit;
sbit LCD_RS_Direction at TRISB1_bit;
sbit LCD_EN_Direction at TRISB2_bit;
sbit LCD_D7_Direction at TRISD3_bit;
sbit LCD_D6_Direction at TRISD2_bit;
sbit LCD_D5_Direction at TRISD1_bit;
sbit LCD_D4_Direction at TRISD0_bit;
unsigned char RxBuffer,control=0;
void interrupt(){
if(PIR1.RCIF){
if(RCSTA.FERR || RCSTA.OERR){// Eğer karakter almada FIFO register ile sorun oluşursa
RCSTA.CREN=0; // normal duruma getirmek için bunları yap
delay_us(1);
RCSTA.CREN=0;
PIR1.RCIF=0;
}
RxBuffer=RCREG; // Vericinden alınan karakteri kopyala
control=1;
PIR1.RCIF=0;
}
}
void init(){
/* UART MODULU YAPILANDIRILMASI */
TXSTA=0; //ILK ANDA SIFIR
RCSTA=0;
SPBRG=103; //16 MHZ İÇİN 9600 BİT/SN hızında baundrate
TXSTA=0X26;
RCSTA=0X90;
INTCON=0XC0;
PIE1.RCIE=1; //RSR DEN RCREG VERI AKTARILDIĞINDA KESME OLUŞSUN
// LCD AYARLARI//
Lcd_Init(); // Initialize LCD
Lcd_Cmd(_LCD_CLEAR); // Clear display
Lcd_Cmd(_LCD_CURSOR_OFF); // Cursor off
//ADC AYARLARI//
ADCON1 |=0X0F;
CMCON |=7;
/* pwm için 4.975Hzlik sinyal üretilip sinyalin 1 kalma oranıyla ADC ile ayarlanıp
motoru hızlandırıp veya yaşlatabiliriz */
TRISC.RC2=0; // FULL-BRIDGE CIKISLARI ICIN AYARLAMALAR
PORTC.RC2=0;
TRISD.RD5=0;
TRISD.RD6=0;
TRISD.RD7=0;
PORTD.RD5=0;
TRISD.RD6=0;
TRISD.RD7=0;
CCP1CON=0b01001100; // Full Bridge Forward; P1A, P1C active-high; P1B, P1D active-high
CCPR1L=0X00; // Start with zero Duty Cycle
// PWM Period = 4 x Tosc x (PR2 + 1) x TMR2 Prescale Value
// Tosc = 1/16 Mhz = 0.0000000625
// PWM Period = 4 x 0.0000000625 x 201 x 4 = 0.000201
// PWM Frequency = 1/PWM Period = 1/0.000201 = 4.975 kHz
T2CON=0b00000101; // Postscale: 1:1, Timer2=On, Prescale = 1:4
PR2=200; // Frequency: 4.975 kHz
TMR2=0; // Start with zero Counter
}
char KarakterAl();
void GonderKarakter(char harf);
void StringYaz(char *str);
unsigned short RF_Read();
char strtobyte(char *str);
char verim[]=" ";
char ham_verim[2];
char datam[2];
unsigned short say=0,i=0;
unsigned int duty_cycle;
char kelime1[4];
char toplam;
void main() {
init();
while(1){
say=0;
do{
verim[say]=RF_Read();
say++;
}while(say<3);
ham_verim[i]=strtobyte(&verim[0]);
i++;
if(i>=3){
Lcd_Cmd(_LCD_CLEAR); // Clear display
if(ham_verim[0]==3){
CCPR1L = 0;
duty_cycle=0;
lcd_out(1,1," MOTOR DURDU ! ");
}else{
if(ham_verim[0]==2){
while(!(P1M1_BIT==0&&P1M0_BIT==1)){
Lcd_Cmd(_LCD_CLEAR);
P1M1_BIT=0; // MOTOR'A SAGA CEVİRDI
P1M0_BIT=1;
}
lcd_out(2,1," SAGA % ");
CCPR1L=ham_verim[2];
duty_cycle=(ham_verim[2]/250.0) * 100.0;
bytetostr(duty_cycle,kelime1);
lcd_out(2,9,kelime1);
}
if(ham_verim[0]==1){
while(!(P1M1_BIT==1&&P1M0_BIT==1)){
Lcd_Cmd(_LCD_CLEAR);
P1M1_BIT=1; // MOTOR'A SAGA CEVİRDI
P1M0_BIT=1;
}
lcd_out(2,1," SOLA % ");
CCPR1L=ham_verim[1];
duty_cycle=(ham_verim[1]/250.0) * 100.0;
bytetostr(duty_cycle,kelime1);
lcd_out(2,9,kelime1);
}
}
i=0;
}
}
}
unsigned short RF_Read(){ // Karşı tarafatan karakter almaya başla.
char tmp,i,say=0;i=0;
do{
tmp=KarakterAl();
switch(i){
case 0: if(tmp==SIFRE_1){ datam[0]=tmp;i++;} break;
case 1: if(tmp==SIFRE_2){ datam[1]=tmp;i++;}else i=0; break;
case 2: datam[2]=tmp;i++;break; // asıl karakterim
default:break;
}
}while(i<3);
return tmp;
}
void StringYaz(char *str){
char i=0;
while(*(str+i)!=0){ // 0\ işareti geldiğindeçıkar bu kelimeden
GonderKarakter(*(str+i)); // string içindeki karakterleri tek tek gönder
i++;
}
}
void GonderKarakter(char harf){
if(!(TXSTA.TXEN)) TXSTA.TXEN=1; //gönderme yetkisi verildimi ?
while(!(PIR1.TXIF)); PIR1.TXIF=1; // eğer TXREG deki veri TSR'ye gönderildimi.
TXREG=harf; // gönderildiyse yeni karakter yükle.
}
char KarakterAl(){
while(!control);
control=0;
return RxBuffer;
}
char strtobyte(char *str){ // Vericiden alınan string tipinde karakterleri byte çevirme. Eğer çevirme
//yapılmaz ise üzerinden işlemler yapamayız.
char S,onlar,birler,sayi,yuzler;
for(S=0;S<3;S++){
if(*(str+S)==0x20) *(str+S)=0x30; //bOŞLUĞU SIFIRA ÇEVİRME
}
yuzler=( *(str+0)-48)*100;
onlar=( *(str+1)-48)*10;
birler=( *(str+2)-48);
sayi=yuzler+onlar+birler;
if(sayi>255) sayi=255; // bir byte 255 değerini tutbilir bunu aşmasın diye sınırladık.
return sayi;
}
Verici kısmın MikroC kodu;
#define SIFRE_1 0x41
#define SIFRE_2 0x42
void init(){
/* ADC AYARLARI */
ADCON0=0b00000011;
ADCON1=0b00001110;
TXSTA=0; //ILK ANDA SIFIR
RCSTA=0;
SPBRG=129; //16 MHZ İÇİN 9600 BİT/SN hızında baundrate
TXSTA=0X26;
RCSTA=0X90;
TRISB.RB6=0;
TRISB.RB7=0;
TRISB.RB5=0;
PORTB.RB6=0;
PORTB.RB7=0;
PORTB.RB5=1;
}
void data_gonder(char *veri);
void GonderKarakter(char harf);
void StringYaz(char *str);
unsigned int x_axis_ham; // analogdan alınan sinyal
unsigned char x_axis;
char ham_veri[3]; // 3 bytelık verileri tutsun diye biz dizi oluşturuldu.
void main() {
init();
while(1){
x_axis_ham=ADC_read(0);
if ((x_axis_ham>=501) & (x_axis_ham<=529)){ //EĞER ANALOG POT TAM ORTADAYSA
PORTB.RB6=0;
PORTB.RB7=0;
ham_veri[0]=3; /* MOTOR DURDUR BILGISI*/
ham_veri[1]=0;
ham_veri[2]=0;
data_gonder(&ham_veri[0]);
}else{
if (x_axis_ham<500){
PORTB.RB6=1; /* SOLA DONECEK SINYALİ*/
PORTB.RB7=0;
while(x_axis_ham<=500){
x_axis_ham=ADC_read(0);
x_axis =(500-x_axis_ham)/2 ;
ham_veri[0]=1; /*P1M1_BIT=1, P1M0_BIT=1; sola karşı taraf için*/
ham_veri[1]=x_axis;
ham_veri[2]=0;
data_gonder(&ham_veri[0]);
}
}
if (x_axis_ham>530){
PORTB.RB6=0; /* SAGA DONECEK SINYALİ*/
PORTB.RB7=1;
while(x_axis_ham>530){
x_axis_ham=ADC_read(0);
x_axis=(x_axis_ham-530)/2;
ham_veri[0]=2; /*P1M1_BIT=0, P1M0_BIT=1; saga*/
ham_veri[1]=0;
ham_veri[2]=x_axis;
data_gonder(&ham_veri[0]);
}
}
}
}
}
void data_gonder(char *veri){ //ham_veri deki değeleri gönderir
char say,kelime[4];
say=0;
delay_ms(300);
do{ //0 1 2
bytetostr(*(veri+say),kelime);// kelime ( _ _ _)
StringYaz(&kelime[0]);
say++;
}while(say<3);
}
void StringYaz(char *str){
char i=0;
while(*(str+i)!=0){ // 0\ işareti geldiğindeçıkar bu kelimeden
GonderKarakter(SIFRE_1);// starT1 byte
GonderKarakter(SIFRE_2);// starT2 byte //0 1 2
GonderKarakter(*(str+i)); // string içindeki karakterleri tek tek gönder
i++;
}
}
void GonderKarakter(char harf){
if(!(TXSTA.TXEN)) TXSTA.TXEN=1; //gönderme yetkisi verildimi ?
while(!(PIR1.TXIF)); PIR1.TXIF=1; // eğer TXREG deki veri TSR'ye gönderildimi.
TXREG=harf; // gönderildiyse yeni karakter yükle.
}
Kaynaklar
1) Altaş yayıncılık Pıc Programlama Teknikleri ve PIC16F877A
2) Altaş yayıncılık MıkroC ile PIC 18f4550 Programlama
7 Temmuz 2014 Pazartesi
PC to PIC Serial Communication With JAVA
Bu çalışmam da daha önceki yaptığım çalışmanın ( Java Netbeans Ile Basit Bir Hesap Makinasi) hemen hemen aynısı fakat işlevi farklı olan bir uygulama yapacağım. Bu uygulamam da bilgisayar üzerinden benim kitimin(TEKOPIC 2) üzerinde 18f4550 mikrodenetleyici bulan yardımı ile 8 adet kırmızı led'i ve LCD ekranımı java netbeans programı yardımıyla bilgisayar üzerinden kontrol edeceğim.
Devre şeması aşağıdaki gibidir. 4mhz kristal kullanılmış olup ona bağlı olan 22pf kondansatördür.
Ve MıkroC kodu;
char uart_rd; // EUSART biriminden alınacak olan veri için
// tanımlanan değişken
// LCD display bağlantıları
sbit LCD_RS at RC0_bit;
sbit LCD_EN at RC1_bit;
sbit LCD_D7 at RD3_bit;
sbit LCD_D6 at RD2_bit;
sbit LCD_D5 at RD1_bit;
sbit LCD_D4 at RD0_bit;
sbit LCD_RS_Direction at TRISC0_bit;
sbit LCD_EN_Direction at TRISC1_bit;
sbit LCD_D7_Direction at TRISD3_bit;
sbit LCD_D6_Direction at TRISD2_bit;
sbit LCD_D5_Direction at TRISD1_bit;
sbit LCD_D4_Direction at TRISD0_bit;
// LCD display bağlantı sonu
void main(){
TRISB=0X00;
PORTB=0X00;
ADCON1 |= 0x0F; // AN pinleri dijital I/O yapılandırıldı
CMCON |= 7; // Comparators (karşılaştırıcılar) pasif edildi
Lcd_Init(); // LCD display yapılandırıldı
Lcd_Cmd(_LCD_CURSOR_OFF); // LCD ekranından imleç kaldırıldı
Lcd_Cmd(_LCD_CLEAR); // LCD ekranı silindi
Lcd_Out(1, 3, " muhhakanaydin"); // 1. satır, 3. sütun'a text yazdırıldı
Lcd_Out(2, 1, ".blogspot.com.tr"); // 2. satır, 1. sütun'a text yazdırıldı
UART1_Init(9600); // EUSART donanımı yapılandırıldı
Delay_ms(100); // Baud hızı 57600 belirlendi
for( ; ; )
{
if (UART1_Data_Ready()) { // Şayet EUSART'dan veri geldi ise,
uart_rd = UART1_Read(); // Alınan veriyi oku, uart_rd'ye al,
UART1_Write(uart_rd); // ve EUSART'a veriyi yaz
Lcd_Chr_Cp(uart_rd); // Alınan veriyi LCD ekranına gönder
if (uart_rd == '9') LCD_CMD(_LCD_CLEAR); // ESC display ekranını sil
if (uart_rd == '0') PORTB=1;
if (uart_rd == '1') PORTB=2;
if (uart_rd == '2') PORTB=4;
if (uart_rd == '3') PORTB=8;
if (uart_rd == '4') PORTB=16;
if (uart_rd == '5') PORTB=32;
if (uart_rd == '6') PORTB=64;
if (uart_rd == '7') PORTB=128;
}
}
}
Java ile ilgili olan GUI ve kodu;
import jssc.SerialPort;
import jssc.SerialPort;
import jssc.SerialPortException;
public class NewJFrame extends javax.swing.JFrame {
public NewJFrame() {
initComponents();
}
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jPanel2 = new javax.swing.JPanel();
jButton1 = new javax.swing.JButton();
jLabel1 = new javax.swing.JLabel();
jButton2 = new javax.swing.JButton();
jTextField1 = new javax.swing.JTextField();
jLabel2 = new javax.swing.JLabel();
jPanel1 = new javax.swing.JPanel();
jButton3 = new javax.swing.JButton();
jButton4 = new javax.swing.JButton();
jButton5 = new javax.swing.JButton();
jButton6 = new javax.swing.JButton();
jButton7 = new javax.swing.JButton();
jButton8 = new javax.swing.JButton();
jButton9 = new javax.swing.JButton();
jButton10 = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jPanel2.setBackground(new java.awt.Color(0, 255, 255));
jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "LCD EKRAN", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 3, 18), new java.awt.Color(255, 0, 0))); // NOI18N
jButton1.setText("EKRAN SIL");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
jLabel1.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
jLabel1.setText("LCD EKRANA YAZDIR");
jButton2.setText("YAZDIR");
jButton2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton2ActionPerformed(evt);
}
});
javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
jPanel2.setLayout(jPanel2Layout);
jPanel2Layout.setHorizontalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel1)
.addComponent(jButton1))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jTextField1)
.addGroup(jPanel2Layout.createSequentialGroup()
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel2)
.addComponent(jButton2))
.addGap(0, 0, Short.MAX_VALUE)))
.addContainerGap())
);
jPanel2Layout.setVerticalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jButton1)
.addComponent(jLabel2))
.addGap(18, 18, 18)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel1)
.addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jButton2))
);
jPanel1.setBackground(new java.awt.Color(0, 0, 204));
jPanel1.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(51, 255, 0)));
jButton3.setText("LED 1");
jButton3.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton3ActionPerformed(evt);
}
});
jButton4.setText("LED 2");
jButton4.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton4ActionPerformed(evt);
}
});
jButton5.setText("LED 3");
jButton5.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton5ActionPerformed(evt);
}
});
jButton6.setText("LED 4");
jButton6.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton6ActionPerformed(evt);
}
});
jButton7.setText("LED 5");
jButton7.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton7ActionPerformed(evt);
}
});
jButton8.setText("LED 6");
jButton8.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton8ActionPerformed(evt);
}
});
jButton9.setText("LED 7");
jButton9.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton9ActionPerformed(evt);
}
});
jButton10.setText("LED 8");
jButton10.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton10ActionPerformed(evt);
}
});
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jButton3)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jButton4)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jButton5)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jButton6)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jButton7)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jButton8)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jButton9)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jButton10)
.addContainerGap(30, Short.MAX_VALUE))
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jButton3)
.addComponent(jButton4)
.addComponent(jButton5)
.addComponent(jButton6)
.addComponent(jButton7)
.addComponent(jButton8)
.addComponent(jButton9)
.addComponent(jButton10))
.addContainerGap(19, Short.MAX_VALUE))
);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
);
pack();
}// </editor-fold>
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
SerialPort serialPort = new SerialPort("COM6");
try {
serialPort.openPort();
serialPort.setParams(9600, 8, 1, 0);
serialPort.writeBytes("9".getBytes());
serialPort.closePort();
}
catch (SerialPortException ex){
System.out.println(ex);
}
}
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
SerialPort serialPort = new SerialPort("COM6");
try {
serialPort.openPort();
serialPort.setParams(9600, 8, 1, 0);
serialPort.writeBytes(String.valueOf(jTextField1.getText()).getBytes());
serialPort.closePort();
}
catch (SerialPortException ex){
System.out.println(ex);
}
}
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
SerialPort serialPort = new SerialPort("COM6");
try {
serialPort.openPort();
serialPort.setParams(9600, 8, 1, 0);
serialPort.writeBytes(String.valueOf("0").getBytes());
serialPort.closePort();
}
catch (SerialPortException ex){
System.out.println(ex);
}
}
private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {
SerialPort serialPort = new SerialPort("COM6");
try {
serialPort.openPort();
serialPort.setParams(9600, 8, 1, 0);
serialPort.writeBytes(String.valueOf("1").getBytes());
serialPort.closePort();
}
catch (SerialPortException ex){
System.out.println(ex);
}
}
private void jButton5ActionPerformed(java.awt.event.ActionEvent evt) {
SerialPort serialPort = new SerialPort("COM6");
try {
serialPort.openPort();
serialPort.setParams(9600, 8, 1, 0);
serialPort.writeBytes(String.valueOf("2").getBytes());
serialPort.closePort();
}
catch (SerialPortException ex){
System.out.println(ex);
}
}
private void jButton6ActionPerformed(java.awt.event.ActionEvent evt) {
SerialPort serialPort = new SerialPort("COM6");
try {
serialPort.openPort();
serialPort.setParams(9600, 8, 1, 0);
serialPort.writeBytes(String.valueOf("3").getBytes());
serialPort.closePort();
}
catch (SerialPortException ex){
System.out.println(ex);
}
}
private void jButton7ActionPerformed(java.awt.event.ActionEvent evt) {
SerialPort serialPort = new SerialPort("COM6");
try {
serialPort.openPort();
serialPort.setParams(9600, 8, 1, 0);
serialPort.writeBytes(String.valueOf("4").getBytes());
serialPort.closePort();
}
catch (SerialPortException ex){
System.out.println(ex);
}
}
private void jButton8ActionPerformed(java.awt.event.ActionEvent evt) {
SerialPort serialPort = new SerialPort("COM6");
try {
serialPort.openPort();
serialPort.setParams(9600, 8, 1, 0);
serialPort.writeBytes(String.valueOf("5").getBytes());
serialPort.closePort();
}
catch (SerialPortException ex){
System.out.println(ex);
}
}
private void jButton9ActionPerformed(java.awt.event.ActionEvent evt) {
SerialPort serialPort = new SerialPort("COM6");
try {
serialPort.openPort();
serialPort.setParams(9600, 8, 1, 0);
serialPort.writeBytes(String.valueOf("6").getBytes());
serialPort.closePort();
}
catch (SerialPortException ex){
System.out.println(ex);
}
}
private void jButton10ActionPerformed(java.awt.event.ActionEvent evt) {
SerialPort serialPort = new SerialPort("COM6");
try {
serialPort.openPort();
serialPort.setParams(9600, 8, 1, 0);
serialPort.writeBytes(String.valueOf("7").getBytes());
serialPort.closePort();
}
catch (SerialPortException ex){
System.out.println(ex);
}
}
public static void main(String args[]) {
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
* For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
//</editor-fold>
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new NewJFrame().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton10;
private javax.swing.JButton jButton2;
private javax.swing.JButton jButton3;
private javax.swing.JButton jButton4;
private javax.swing.JButton jButton5;
private javax.swing.JButton jButton6;
private javax.swing.JButton jButton7;
private javax.swing.JButton jButton8;
private javax.swing.JButton jButton9;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
private javax.swing.JTextField jTextField1;
// End of variables declaration
}
Devre şeması aşağıdaki gibidir. 4mhz kristal kullanılmış olup ona bağlı olan 22pf kondansatördür.
char uart_rd; // EUSART biriminden alınacak olan veri için
// tanımlanan değişken
// LCD display bağlantıları
sbit LCD_RS at RC0_bit;
sbit LCD_EN at RC1_bit;
sbit LCD_D7 at RD3_bit;
sbit LCD_D6 at RD2_bit;
sbit LCD_D5 at RD1_bit;
sbit LCD_D4 at RD0_bit;
sbit LCD_RS_Direction at TRISC0_bit;
sbit LCD_EN_Direction at TRISC1_bit;
sbit LCD_D7_Direction at TRISD3_bit;
sbit LCD_D6_Direction at TRISD2_bit;
sbit LCD_D5_Direction at TRISD1_bit;
sbit LCD_D4_Direction at TRISD0_bit;
// LCD display bağlantı sonu
void main(){
TRISB=0X00;
PORTB=0X00;
ADCON1 |= 0x0F; // AN pinleri dijital I/O yapılandırıldı
CMCON |= 7; // Comparators (karşılaştırıcılar) pasif edildi
Lcd_Init(); // LCD display yapılandırıldı
Lcd_Cmd(_LCD_CURSOR_OFF); // LCD ekranından imleç kaldırıldı
Lcd_Cmd(_LCD_CLEAR); // LCD ekranı silindi
Lcd_Out(1, 3, " muhhakanaydin"); // 1. satır, 3. sütun'a text yazdırıldı
Lcd_Out(2, 1, ".blogspot.com.tr"); // 2. satır, 1. sütun'a text yazdırıldı
UART1_Init(9600); // EUSART donanımı yapılandırıldı
Delay_ms(100); // Baud hızı 57600 belirlendi
for( ; ; )
{
if (UART1_Data_Ready()) { // Şayet EUSART'dan veri geldi ise,
uart_rd = UART1_Read(); // Alınan veriyi oku, uart_rd'ye al,
UART1_Write(uart_rd); // ve EUSART'a veriyi yaz
Lcd_Chr_Cp(uart_rd); // Alınan veriyi LCD ekranına gönder
if (uart_rd == '9') LCD_CMD(_LCD_CLEAR); // ESC display ekranını sil
if (uart_rd == '0') PORTB=1;
if (uart_rd == '1') PORTB=2;
if (uart_rd == '2') PORTB=4;
if (uart_rd == '3') PORTB=8;
if (uart_rd == '4') PORTB=16;
if (uart_rd == '5') PORTB=32;
if (uart_rd == '6') PORTB=64;
if (uart_rd == '7') PORTB=128;
}
}
}
Java ile ilgili olan GUI ve kodu;
import jssc.SerialPort;
import jssc.SerialPort;
import jssc.SerialPortException;
public class NewJFrame extends javax.swing.JFrame {
public NewJFrame() {
initComponents();
}
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jPanel2 = new javax.swing.JPanel();
jButton1 = new javax.swing.JButton();
jLabel1 = new javax.swing.JLabel();
jButton2 = new javax.swing.JButton();
jTextField1 = new javax.swing.JTextField();
jLabel2 = new javax.swing.JLabel();
jPanel1 = new javax.swing.JPanel();
jButton3 = new javax.swing.JButton();
jButton4 = new javax.swing.JButton();
jButton5 = new javax.swing.JButton();
jButton6 = new javax.swing.JButton();
jButton7 = new javax.swing.JButton();
jButton8 = new javax.swing.JButton();
jButton9 = new javax.swing.JButton();
jButton10 = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jPanel2.setBackground(new java.awt.Color(0, 255, 255));
jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "LCD EKRAN", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 3, 18), new java.awt.Color(255, 0, 0))); // NOI18N
jButton1.setText("EKRAN SIL");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
jLabel1.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
jLabel1.setText("LCD EKRANA YAZDIR");
jButton2.setText("YAZDIR");
jButton2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton2ActionPerformed(evt);
}
});
javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
jPanel2.setLayout(jPanel2Layout);
jPanel2Layout.setHorizontalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel1)
.addComponent(jButton1))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jTextField1)
.addGroup(jPanel2Layout.createSequentialGroup()
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel2)
.addComponent(jButton2))
.addGap(0, 0, Short.MAX_VALUE)))
.addContainerGap())
);
jPanel2Layout.setVerticalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jButton1)
.addComponent(jLabel2))
.addGap(18, 18, 18)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel1)
.addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jButton2))
);
jPanel1.setBackground(new java.awt.Color(0, 0, 204));
jPanel1.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(51, 255, 0)));
jButton3.setText("LED 1");
jButton3.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton3ActionPerformed(evt);
}
});
jButton4.setText("LED 2");
jButton4.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton4ActionPerformed(evt);
}
});
jButton5.setText("LED 3");
jButton5.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton5ActionPerformed(evt);
}
});
jButton6.setText("LED 4");
jButton6.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton6ActionPerformed(evt);
}
});
jButton7.setText("LED 5");
jButton7.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton7ActionPerformed(evt);
}
});
jButton8.setText("LED 6");
jButton8.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton8ActionPerformed(evt);
}
});
jButton9.setText("LED 7");
jButton9.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton9ActionPerformed(evt);
}
});
jButton10.setText("LED 8");
jButton10.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton10ActionPerformed(evt);
}
});
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jButton3)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jButton4)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jButton5)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jButton6)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jButton7)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jButton8)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jButton9)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jButton10)
.addContainerGap(30, Short.MAX_VALUE))
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jButton3)
.addComponent(jButton4)
.addComponent(jButton5)
.addComponent(jButton6)
.addComponent(jButton7)
.addComponent(jButton8)
.addComponent(jButton9)
.addComponent(jButton10))
.addContainerGap(19, Short.MAX_VALUE))
);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
);
pack();
}// </editor-fold>
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
SerialPort serialPort = new SerialPort("COM6");
try {
serialPort.openPort();
serialPort.setParams(9600, 8, 1, 0);
serialPort.writeBytes("9".getBytes());
serialPort.closePort();
}
catch (SerialPortException ex){
System.out.println(ex);
}
}
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
SerialPort serialPort = new SerialPort("COM6");
try {
serialPort.openPort();
serialPort.setParams(9600, 8, 1, 0);
serialPort.writeBytes(String.valueOf(jTextField1.getText()).getBytes());
serialPort.closePort();
}
catch (SerialPortException ex){
System.out.println(ex);
}
}
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
SerialPort serialPort = new SerialPort("COM6");
try {
serialPort.openPort();
serialPort.setParams(9600, 8, 1, 0);
serialPort.writeBytes(String.valueOf("0").getBytes());
serialPort.closePort();
}
catch (SerialPortException ex){
System.out.println(ex);
}
}
private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {
SerialPort serialPort = new SerialPort("COM6");
try {
serialPort.openPort();
serialPort.setParams(9600, 8, 1, 0);
serialPort.writeBytes(String.valueOf("1").getBytes());
serialPort.closePort();
}
catch (SerialPortException ex){
System.out.println(ex);
}
}
private void jButton5ActionPerformed(java.awt.event.ActionEvent evt) {
SerialPort serialPort = new SerialPort("COM6");
try {
serialPort.openPort();
serialPort.setParams(9600, 8, 1, 0);
serialPort.writeBytes(String.valueOf("2").getBytes());
serialPort.closePort();
}
catch (SerialPortException ex){
System.out.println(ex);
}
}
private void jButton6ActionPerformed(java.awt.event.ActionEvent evt) {
SerialPort serialPort = new SerialPort("COM6");
try {
serialPort.openPort();
serialPort.setParams(9600, 8, 1, 0);
serialPort.writeBytes(String.valueOf("3").getBytes());
serialPort.closePort();
}
catch (SerialPortException ex){
System.out.println(ex);
}
}
private void jButton7ActionPerformed(java.awt.event.ActionEvent evt) {
SerialPort serialPort = new SerialPort("COM6");
try {
serialPort.openPort();
serialPort.setParams(9600, 8, 1, 0);
serialPort.writeBytes(String.valueOf("4").getBytes());
serialPort.closePort();
}
catch (SerialPortException ex){
System.out.println(ex);
}
}
private void jButton8ActionPerformed(java.awt.event.ActionEvent evt) {
SerialPort serialPort = new SerialPort("COM6");
try {
serialPort.openPort();
serialPort.setParams(9600, 8, 1, 0);
serialPort.writeBytes(String.valueOf("5").getBytes());
serialPort.closePort();
}
catch (SerialPortException ex){
System.out.println(ex);
}
}
private void jButton9ActionPerformed(java.awt.event.ActionEvent evt) {
SerialPort serialPort = new SerialPort("COM6");
try {
serialPort.openPort();
serialPort.setParams(9600, 8, 1, 0);
serialPort.writeBytes(String.valueOf("6").getBytes());
serialPort.closePort();
}
catch (SerialPortException ex){
System.out.println(ex);
}
}
private void jButton10ActionPerformed(java.awt.event.ActionEvent evt) {
SerialPort serialPort = new SerialPort("COM6");
try {
serialPort.openPort();
serialPort.setParams(9600, 8, 1, 0);
serialPort.writeBytes(String.valueOf("7").getBytes());
serialPort.closePort();
}
catch (SerialPortException ex){
System.out.println(ex);
}
}
public static void main(String args[]) {
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
* For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
//</editor-fold>
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new NewJFrame().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton10;
private javax.swing.JButton jButton2;
private javax.swing.JButton jButton3;
private javax.swing.JButton jButton4;
private javax.swing.JButton jButton5;
private javax.swing.JButton jButton6;
private javax.swing.JButton jButton7;
private javax.swing.JButton jButton8;
private javax.swing.JButton jButton9;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
private javax.swing.JTextField jTextField1;
// End of variables declaration
}
6 Temmuz 2014 Pazar
Java Netbeans Ile Basit Bir Hesap Makinasi
Uzun zamandır PicBasicPro, Dev-c++, MıkroC ve Matlab programlama dillerinden sonra Java ile uğraşmak istemiştim ve başlamak iki gün önce nasip oldu. İnternette araştırarak öğrendiğim kadarıyla basit bir hesap makinesi yapacağım. C dilinde az çok iyi olduğumdan java programını anlamak çok da zor olmadı. Eğer sizde herhangi bir programlama dilinin de iyi olduğunuzu düşünüyorsanız sizde zorlanmazsınız. Benim kullandığım Java programın adı NetBeans
8.0.
İlk önce işe GUİ tasarmalakla başlayalım ve GUI'miz aşağıdaki gibi olacaktır.
GUI'mizi çalıştırırsak ekranda böyle görüntü olacaktır.
Ve Java kodu;
import java.awt.Color;
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
/**
*
* @author HB
*/
public class Hesap extends javax.swing.JFrame {
/**
* Creates new form Hesap
*/
public Hesap() {
initComponents();
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
float sayi1,sayi2,sonuc;
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jLabel1 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
jTextField1 = new javax.swing.JTextField();
jTextField2 = new javax.swing.JTextField();
jPanel1 = new javax.swing.JPanel();
jButton1 = new javax.swing.JButton();
jButton2 = new javax.swing.JButton();
jButton3 = new javax.swing.JButton();
jButton4 = new javax.swing.JButton();
jButton5 = new javax.swing.JButton();
jLabel3 = new javax.swing.JLabel();
jLabel4 = new javax.swing.JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jLabel1.setFont(new java.awt.Font("Tahoma", 3, 14)); // NOI18N
jLabel1.setForeground(new java.awt.Color(51, 0, 255));
jLabel1.setText("SAYI 1");
jLabel2.setFont(new java.awt.Font("Tahoma", 3, 14)); // NOI18N
jLabel2.setForeground(new java.awt.Color(51, 0, 255));
jLabel2.setText("SAYI 2");
jTextField2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jTextField2ActionPerformed(evt);
}
});
jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder("Seçimler"));
jButton1.setText("TOPLA");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
jButton2.setText("ÇIKAR");
jButton2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton2ActionPerformed(evt);
}
});
jButton3.setText("ÇARP");
jButton3.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton3ActionPerformed(evt);
}
});
jButton4.setText("BÖL");
jButton4.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton4ActionPerformed(evt);
}
});
jButton5.setText("MOD AL");
jButton5.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton5ActionPerformed(evt);
}
});
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addGap(55, 55, 55)
.addComponent(jButton4)
.addGap(40, 40, 40)
.addComponent(jButton5)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jButton1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGap(32, 32, 32)
.addComponent(jButton2)
.addGap(18, 18, 18)
.addComponent(jButton3)
.addGap(30, 30, 30))
);
jPanel1Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jButton2, jButton3, jButton4, jButton5});
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jButton1)
.addComponent(jButton2)
.addComponent(jButton3))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 30, Short.MAX_VALUE)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jButton4)
.addComponent(jButton5))
.addGap(24, 24, 24))
);
jPanel1Layout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {jButton2, jButton3, jButton4, jButton5});
jLabel3.setFont(new java.awt.Font("Tahoma", 3, 14)); // NOI18N
jLabel3.setForeground(new java.awt.Color(51, 0, 255));
jLabel3.setText("SONUC");
jLabel4.setFont(new java.awt.Font("Tahoma", 3, 18)); // NOI18N
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(0, 0, Short.MAX_VALUE)
.addComponent(jLabel3, javax.swing.GroupLayout.PREFERRED_SIZE, 61, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabel4, javax.swing.GroupLayout.PREFERRED_SIZE, 185, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap())
.addGroup(layout.createSequentialGroup()
.addGap(36, 36, 36)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel1)
.addComponent(jLabel2))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, 88, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(0, 0, Short.MAX_VALUE))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addContainerGap(72, Short.MAX_VALUE)
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(68, 68, 68))
);
layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jTextField1, jTextField2});
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(8, 8, 8)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel1)
.addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, 52, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(2, 2, 2)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel3, javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jLabel4, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 17, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(12, 12, 12)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel2)
.addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
layout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {jTextField1, jTextField2});
pack();
}// </editor-fold>
private void jTextField2ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
try{
sayi1=Float.parseFloat(jTextField1.getText());
sayi2=Float.parseFloat(jTextField2.getText());
sonuc=sayi1-sayi2;
jLabel4.setText(""+sonuc);
}catch(NumberFormatException e){
jLabel4.setText("SAYI GIRINIZ !!");
jLabel4.setForeground(Color.red);
} }
private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {
try{
sayi1=Float.parseFloat(jTextField1.getText());
sayi2=Float.parseFloat(jTextField2.getText());
if(sayi2==0){
jLabel4.setText("TANIMSIZ !!");
jLabel4.setForeground(Color.red);
}else{
sonuc=sayi1/sayi2;
jLabel4.setText(""+sonuc);
}
}catch(NumberFormatException e){
jLabel4.setText("SAYI GIRINIZ !!");
jLabel4.setForeground(Color.red);
} }
private void jButton5ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
try{
sayi1=Float.parseFloat(jTextField1.getText());
sayi2=Float.parseFloat(jTextField2.getText());
sonuc=sayi1-sayi2;
jLabel4.setText(""+sonuc);
}catch(NumberFormatException e){
jLabel4.setText("SAYI GIRINIZ !!");
jLabel4.setForeground(Color.red);
}
}
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
try{
sayi1=Float.parseFloat(jTextField1.getText());
sayi2=Float.parseFloat(jTextField2.getText());
sonuc=sayi1+sayi2;
jLabel4.setText(""+sonuc);
}catch(NumberFormatException e){
jLabel4.setText("SAYI GIRINIZ !!");
jLabel4.setForeground(Color.red);
}
}
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
try{
sayi1=Float.parseFloat(jTextField1.getText());
sayi2=Float.parseFloat(jTextField2.getText());
sonuc=sayi1*sayi2;
jLabel4.setText(""+sonuc);
}catch(NumberFormatException e){
jLabel4.setText("SAYI GIRINIZ !!");
jLabel4.setForeground(Color.red);
} }
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
/* Set the Nimbus look and feel */
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
* For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(Hesap.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(Hesap.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(Hesap.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(Hesap.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
//</editor-fold>
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Hesap().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton2;
private javax.swing.JButton jButton3;
private javax.swing.JButton jButton4;
private javax.swing.JButton jButton5;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JPanel jPanel1;
private javax.swing.JTextField jTextField1;
private javax.swing.JTextField jTextField2;
// End of variables declaration
}
8.0.
İlk önce işe GUİ tasarmalakla başlayalım ve GUI'miz aşağıdaki gibi olacaktır.
import java.awt.Color;
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
/**
*
* @author HB
*/
public class Hesap extends javax.swing.JFrame {
/**
* Creates new form Hesap
*/
public Hesap() {
initComponents();
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
float sayi1,sayi2,sonuc;
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jLabel1 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
jTextField1 = new javax.swing.JTextField();
jTextField2 = new javax.swing.JTextField();
jPanel1 = new javax.swing.JPanel();
jButton1 = new javax.swing.JButton();
jButton2 = new javax.swing.JButton();
jButton3 = new javax.swing.JButton();
jButton4 = new javax.swing.JButton();
jButton5 = new javax.swing.JButton();
jLabel3 = new javax.swing.JLabel();
jLabel4 = new javax.swing.JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jLabel1.setFont(new java.awt.Font("Tahoma", 3, 14)); // NOI18N
jLabel1.setForeground(new java.awt.Color(51, 0, 255));
jLabel1.setText("SAYI 1");
jLabel2.setFont(new java.awt.Font("Tahoma", 3, 14)); // NOI18N
jLabel2.setForeground(new java.awt.Color(51, 0, 255));
jLabel2.setText("SAYI 2");
jTextField2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jTextField2ActionPerformed(evt);
}
});
jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder("Seçimler"));
jButton1.setText("TOPLA");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
jButton2.setText("ÇIKAR");
jButton2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton2ActionPerformed(evt);
}
});
jButton3.setText("ÇARP");
jButton3.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton3ActionPerformed(evt);
}
});
jButton4.setText("BÖL");
jButton4.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton4ActionPerformed(evt);
}
});
jButton5.setText("MOD AL");
jButton5.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton5ActionPerformed(evt);
}
});
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addGap(55, 55, 55)
.addComponent(jButton4)
.addGap(40, 40, 40)
.addComponent(jButton5)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jButton1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGap(32, 32, 32)
.addComponent(jButton2)
.addGap(18, 18, 18)
.addComponent(jButton3)
.addGap(30, 30, 30))
);
jPanel1Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jButton2, jButton3, jButton4, jButton5});
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jButton1)
.addComponent(jButton2)
.addComponent(jButton3))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 30, Short.MAX_VALUE)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jButton4)
.addComponent(jButton5))
.addGap(24, 24, 24))
);
jPanel1Layout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {jButton2, jButton3, jButton4, jButton5});
jLabel3.setFont(new java.awt.Font("Tahoma", 3, 14)); // NOI18N
jLabel3.setForeground(new java.awt.Color(51, 0, 255));
jLabel3.setText("SONUC");
jLabel4.setFont(new java.awt.Font("Tahoma", 3, 18)); // NOI18N
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(0, 0, Short.MAX_VALUE)
.addComponent(jLabel3, javax.swing.GroupLayout.PREFERRED_SIZE, 61, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabel4, javax.swing.GroupLayout.PREFERRED_SIZE, 185, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap())
.addGroup(layout.createSequentialGroup()
.addGap(36, 36, 36)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel1)
.addComponent(jLabel2))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, 88, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(0, 0, Short.MAX_VALUE))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addContainerGap(72, Short.MAX_VALUE)
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(68, 68, 68))
);
layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jTextField1, jTextField2});
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(8, 8, 8)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel1)
.addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, 52, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(2, 2, 2)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel3, javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jLabel4, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 17, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(12, 12, 12)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel2)
.addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
layout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {jTextField1, jTextField2});
pack();
}// </editor-fold>
private void jTextField2ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
try{
sayi1=Float.parseFloat(jTextField1.getText());
sayi2=Float.parseFloat(jTextField2.getText());
sonuc=sayi1-sayi2;
jLabel4.setText(""+sonuc);
}catch(NumberFormatException e){
jLabel4.setText("SAYI GIRINIZ !!");
jLabel4.setForeground(Color.red);
} }
private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {
try{
sayi1=Float.parseFloat(jTextField1.getText());
sayi2=Float.parseFloat(jTextField2.getText());
if(sayi2==0){
jLabel4.setText("TANIMSIZ !!");
jLabel4.setForeground(Color.red);
}else{
sonuc=sayi1/sayi2;
jLabel4.setText(""+sonuc);
}
}catch(NumberFormatException e){
jLabel4.setText("SAYI GIRINIZ !!");
jLabel4.setForeground(Color.red);
} }
private void jButton5ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
try{
sayi1=Float.parseFloat(jTextField1.getText());
sayi2=Float.parseFloat(jTextField2.getText());
sonuc=sayi1-sayi2;
jLabel4.setText(""+sonuc);
}catch(NumberFormatException e){
jLabel4.setText("SAYI GIRINIZ !!");
jLabel4.setForeground(Color.red);
}
}
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
try{
sayi1=Float.parseFloat(jTextField1.getText());
sayi2=Float.parseFloat(jTextField2.getText());
sonuc=sayi1+sayi2;
jLabel4.setText(""+sonuc);
}catch(NumberFormatException e){
jLabel4.setText("SAYI GIRINIZ !!");
jLabel4.setForeground(Color.red);
}
}
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
try{
sayi1=Float.parseFloat(jTextField1.getText());
sayi2=Float.parseFloat(jTextField2.getText());
sonuc=sayi1*sayi2;
jLabel4.setText(""+sonuc);
}catch(NumberFormatException e){
jLabel4.setText("SAYI GIRINIZ !!");
jLabel4.setForeground(Color.red);
} }
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
/* Set the Nimbus look and feel */
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
* For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(Hesap.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(Hesap.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(Hesap.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(Hesap.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
//</editor-fold>
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Hesap().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton2;
private javax.swing.JButton jButton3;
private javax.swing.JButton jButton4;
private javax.swing.JButton jButton5;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JPanel jPanel1;
private javax.swing.JTextField jTextField1;
private javax.swing.JTextField jTextField2;
// End of variables declaration
}
Kaydol:
Kayıtlar (Atom)