#include #include #include #define BLED GPIO0 #define GLED GPIO1 #define RLED GPIO2 //Dahili osilator,MCLR direnci yok __CONFIG(MCLRDIS&WDTDIS&PWRTEN&INTIO); // Global degiskenler const float lsb=5.0/1023.0; float deger,sonuc; unsigned char sicaklik; unsigned char tR=0,tG=0,tB=0; //-------- A/D donusum alt programi------ void donusum_yap(void){ ADCON0=0x8F; // A/D donusumu baslat while(GODONE!=0); // Donusumun bitmesini bekle deger=256*ADRESH+ADRESL; sonuc=deger*lsb*100.0; sicaklik=(int)sonuc; // sicaklik degeri } //--------------------------------------- //----- Renk tonu degistirme alt programi------ void RGB_ON(unsigned char tR,unsigned char tG, unsigned char tB){ unsigned char a; unsigned int i; for(a=0;a<25;a++){ for(i=1;i<=255;i++){ // 255 adımda 3 ayri PWM isaret uret if(i<=tR)RLED=1; if(i>tR)RLED=0; if(i<=tG)GLED=1; if(i>tG)GLED=0; if(i<=tB)BLED=1; if(i>tB)BLED=0; DelayUs(10); }}} //--------------------------------------- //-- Sicakliga gore renk tonunu belirleyen alt program----- void bak_renk_tablosu(void){ if(sicaklik<20){tR=255; tG=0; tB=255;} if(sicaklik>=20 && sicaklik<21){tR=255; tG=0; tB=255;} // pembe if(sicaklik>=21 && sicaklik<22){tR=204; tG=0; tB=255;} if(sicaklik>=22 && sicaklik<23){tR=153; tG=0; tB=255;} if(sicaklik>=23 && sicaklik<24){tR=102; tG=0; tB=255;} if(sicaklik>=24 && sicaklik<25){tR=51; tG=0; tB=255;} if(sicaklik>=25 && sicaklik<26){tR=0; tG=0; tB=255;} // mavi if(sicaklik>=26 && sicaklik<27){tR=0; tG=51; tB=255;} if(sicaklik>=27 && sicaklik<28){tR=0; tG=102; tB=255;} if(sicaklik>=28 && sicaklik<29){tR=0; tG=153; tB=255;} if(sicaklik>=29 && sicaklik<30){tR=0; tG=204; tB=255;} if(sicaklik>=30 && sicaklik<31){tR=0; tG=255; tB=255;} // turkuaz if(sicaklik>=31 && sicaklik<32){tR=0; tG=255; tB=204;} if(sicaklik>=32 && sicaklik<33){tR=0; tG=255; tB=153;} if(sicaklik>=33 && sicaklik<34){tR=0; tG=255; tB=102;} if(sicaklik>=34 && sicaklik<35){tR=0; tG=255; tB=51;} if(sicaklik>=35 && sicaklik<36){tR=0; tG=255; tB=0;} // yesil if(sicaklik>=36 && sicaklik<37){tR=51; tG=255; tB=0;} if(sicaklik>=37 && sicaklik<38){tR=102; tG=255; tB=0;} if(sicaklik>=38 && sicaklik<39){tR=153; tG=255; tB=0;} if(sicaklik>=39 && sicaklik<40){tR=204; tG=255; tB=0;} if(sicaklik>=40 && sicaklik<41){tR=255; tG=255; tB=0;} // sari if(sicaklik>=41 && sicaklik<42){tR=255; tG=204; tB=0;} if(sicaklik>=42 && sicaklik<43){tR=255; tG=153; tB=0;} if(sicaklik>=43 && sicaklik<44){tR=255; tG=102; tB=0;} if(sicaklik>=44 && sicaklik<45){tR=255; tG=51; tB=0;} if(sicaklik>=45 && sicaklik<46){tR=255; tG=0; tB=0;} // kirmizi if(sicaklik>=46){tR=255; tG=0; tB=0;} } //--------------------------------------- //----------ANA PROGRAM----------------- main(void) { CMCON=0x07; // GPIO portlari sayisal I/O secildi ANSEL=0x18; // AN3 analog giris secildi TRISIO=0x10;// GP0,GP1,GP2 cikis GPIO=0; // Baslangicta cikislar lojik 0 ADCON0=0x8D; // A/D ayarlarini yap for(;;){ donusum_yap(); bak_renk_tablosu(); RGB_ON(tR,tG,tB); } }// Program sonu