PİC 16F887 ile tuş takımından girilen değerde servo motoru dönderme

AYRICA TUŞ TAKIMI İLE GİRİLEN DEĞER KADAR TUR DÖNDÜRMESİ İÇİN LÜTFEN AŞAĞIDAKİ ÖRNEĞİ BAZ ALINIZ..

Tam sizin istediğinize göre olmayabilir ama baya yardımcı olacaktır eminim..

Kod:
short int ROW_HIGH()
{
   if(input (ROW0) || input (ROW1) || input (ROW2) || input (ROW3))
      return (1);
   else
      {
      return (0);
   }
}


char kbd_getc()
{
   static byte kbd_call_count;
   static short int kbd_down;
   static char last_key;
   static byte col;


   byte kchar;
   byte row;


   kchar='\0';


if(++kbd_call_count>KBD_DEBOUNCE_FACTOR)
{
   switch (col)
      {
         case 0:
         output_high(col0);
         output_low(col1);
         output_low(col2);
         output_low(col3);
         break;
         case 1:
         output_low(col0);
         output_high(col1);
         output_low(col2);
         output_low(col3);
         break;
         case 2:
         output_low(col0);
         output_low(col1);
         output_high(col2);
         output_low(col3);
         break;
         case 3:
         output_low(col0);
         output_low(col1);
         output_low(col2);
         output_high(col3);
         break;
      }


   if(kbd_down)
   {
      if(!ROW_HIGH())
         {
            kbd_down=false;
            kchar=last_key;
            last_key='\0';
         }
   }
   else
   {
      if(ROW_HIGH())
      {
         if(input (row0))
            row=0;
         else if(input (row1))
            row=1;
         else if(input (row2))
            row=2;
         else if(input (row3))
            row=3;
         last_key = KEYS[row][col];
         kbd_down = true;
      }
       else
         {
            ++col;
            if(col==4)
            col=0;
         }
     }
   kbd_call_count=0;
  }
return(kchar);
}


int8 HEXtoDEC()
{
   int8 result;
   char *ptr;
   result=strtol(str,&ptr,16);
   
   return(result);
}






void main()
{
   while(1)
   {






//******************TUŞ KİLİDİ İLE GİRİŞ*********************
      char k=0;
      k=kbd_getc();
      if(k!=0)
      {         
         if(cnt<6)
         {
            string[cnt] = k;
            printf(lcd_putc,"%c",string[cnt]);
            cnt++;
         }
            
         if(cnt==6)
         {
            lcd_gotoxy(1,1);
            printf(lcd_putc,"Cevir ve Gonder");
            while(!input(CONVERT));
            printf(lcd_putc,"\f");
            lcd_gotoxy(1,1);
            printf(lcd_putc,"Tekrar Basla");
            
            degisken[0] = string[0];
            degisken[1] = string[1];
            str[0] = degisken[0];
            str[1] = degisken[1];
            iservo= HEXtoDEC();


            
            // DEĞERLER KESİNLİKLE "0" OLMAYACAK


            // DEĞERLER LCD EKRANDA GÖSTERİLİYOR
            lcd_gotoxy(1,2);
            printf(lcd_putc,"R%u", iservo);
            delay_ms(500);
            // DEĞERLER LCD EKRANDA GÖSTERİLİYOR
            
            // ve son nokta :))) 
            if(iservo==0){iservo=1;}  // DEĞER 0 ve 1 OLMAYACAK
            servo_duty = iservo;


            while(!input(CONVERT));
            cnt = 0;


         }
      }
 
RİCETYX kardeş tuş takımıyla girilen değer kadar döndürme programı banada çok lazım sizin programınızı aldım fakat bazı hatalar ver nerde olduğunu bulamıyorum. Picc ilede yeni ilgilenmeye başladım. Bana arşivinizde varsa çalışan bir program yollayabilir misiniz? Yasemininide çalışmlarında başarılar.
 
Komplo teorisyenleri elinize su dökemez.
Adc kurup okuyup bir değere atamak 3 satır.
Bir değere göre pwm kurmak 3 satır(picin kabiliyetleri sayısınca).
B4-7 kesme ile encoder okumak 5 satır .
Tuş takımı ile değer kaydetmek 3-10 satır.
Encoder değeri ile tuş değeri karşılaştırma karar verme 3 satır.

Gayet güzel bir ödev verilmiş.
Sanayide uygulamada sık karşılaşılabilecek türden kullanışlı bir ödev.
Öğrenci zorlanmalı ki öğrenebilsin.
Yok bu kapı ekmek beklediğim kapı değil diyorsan ona sözüm yok.

bu konuda bende katılıyorum ben arkadasımıza picbasicte yazar veririm ama bunun ona bi faydası olmaz bu programı daha önce bir cogunu sera otomasyonunda birleştirmiştim ve toplasan toplasan 100-130 satır falan tutar program oda en uzun yolllarıyla duzmantık gittigin zaman ,,, sadece bi odevde sana pic in butun herseyini ogretmiş olacaklar bence uygulama güzel arkadasım projeye biyerden başla yavas yavas takıldıgın yerlerde yardım edelim sana .. baslangıc olarak herkese pici anlatan ete hocamın konularına basla yavas yavas bende buraya her parcanın farklı versyonlarının ufak ufak uygulamalarını koyarım sende onları değiştirir kullanırsın ...
 
Birbirimizi anladığımıza göre , bakalım başlığın sahibinin niyeti ne ?
Birazda olsa çalışmış mı , neler var elinde , hangi dili hangi derleyiciyi bilir ...?

Stajın 1 hafta uzaması ve C öğrenebileceği kendi beyanı , bakalım hele.

@ETE hocamın derslerini hevesle 3-5 saat okuyan "kendi çapında" olsada program yazmaya başlayabilir.
Serdar Çiçek hocamın CCS C ile pic programlama kitabına 3 gününü ayıran " kendi çapında C " yazmaya başlayabilir.
Zaten sorduklarının ayrı ayrı yapılmışları oralarda vardır.

Şimdilik işin temelini öğrenmek derdi olmadığı için asm pdf akış diyagramı ve hele hele logic devreler ve aritmetiği gibi kavramlar aklımdan bile geçmiyor...

ben konuya bakarken burayı kacırmısım :D dönüp okuyunca burdanda alıntı yapmak istedim aslında ben pic ogrenirken ete hocayla basladım basic yazmaya sonra yanlış hatırlamıosam bierden aykut diye bir arkadsaın uygulamalarını buldum onlar sayesinde baslangıcı yaptım sonra hersey gelişti bende şikayetçiyim forumun genelinde ögrenci arkadsların genelde hep bi istegi var takıldıkları yerler degil o yuzden coguna cevap vermiyorum forumda yeni bilgi paylasımı azaalırken 2009-2010 yılından kalma notlarla bu iş yürütülüyor
 

Forum istatistikleri

Konular
128,217
Mesajlar
915,881
Kullanıcılar
449,999
Son üye
Samidmrr

Yeni konular

Geri
Üst