tb6612fg frenleme

Başlatan bbs2006, 02 Şubat 2016, 21:06:50

bbs2006

Merhaba
tb6612fg entegresi ile iki motora frenleme yaptırmak istiyorum.Yazılımda  switch yapısı içine 231 değeri yazdığım zaman frenleme zaman gecikmesi değerine göre işlem gerçekleştiriyor. ancak  input ifadesinden switch yapısına veri geldiği zaman ise motor dur kalk şeklinde çalışıyor. bu konuda bilgisi olan var mı.
yazılım

[/

#include <18f452.h>
#fuses hs,nowdt,noprotect
#use delay(clock=20000000)
#define sol1   pin_d0          //19 nolu pin   pin_b0   yeşil led
#define sol2   pin_d1          //20 nolu pin   pin_b1   yeşil led    
#define sol3   pin_d2          //21 nolu pin   pin_b2   yeşil led
#define orts1  pin_d3          //22 nolu pin   pin_b3   beyaz led
#define orts2  pin_d4          //27 nolu pin   pin_b4   beyaz led
#define sag1   pin_d5          //28 nolu pin   pin_b5   kırmızı led
#define sag2   pin_d6          //29 nolu pin   pin_b6   kırmızı led 
#define sag3   pin_d7          //30 nolu pin   pin_b7   kırmızı led
#define sagm_in1   pin_c5      //24 nolu pin  sürücü devre ain1   sag motor için
#define sagm_in2   pin_c4      //23 nolu pin  sürücü devre ain2   sag motor için
#define solm_in1   pin_c6      //25 nolu pin  sürücü devre bin1   sol motor için 
#define solm_in2   pin_c7      //26 nolu pin  sürücü devre bin2   sol motor için 
#define PWM_A      pin_c2      //17 nolu pin  sag motor pwm girişi  
#define PWM_B      pin_c1      //16 nolu pin  sol motor pwm için
#define stdby      pin_c0 
// değişken tanımlaması yapılıyor.

int oku_sen;                 // okunan sensör bilgisi   

int Sag_motor,Sol_motor;



void motor_surme(){
          
                     Output_high(sagm_in1);             // sürücü 1. giriş H
                     Output_low(sagm_in2);              // sürücü 2. giriş L
                     Output_high(solm_in1);             // sürücü 1. giriş H
                     output_low(solm_in2);              // sürücü 2. giriş L
return;}
void motor_ikili_fren(){
          
                     Output_high(sagm_in1);             // sürücü 1. giriş H
                     Output_high(sagm_in2);              // sürücü 2. giriş L
                     Output_high(solm_in1);             // sürücü 1. giriş H
                     output_high(solm_in2);              // sürücü 2. giriş L
return;}







void sag_fren(){

                     Output_high(sagm_in1);             // sürücü 1. giriş H
                     Output_high(sagm_in2);              // sürücü 2. giriş L
                     Output_high(solm_in1);             // sürücü 1. giriş H
                     output_low(solm_in2);              // sürücü 2. giriş L
return;}

void sol_fren(){ 
                     Output_high(sagm_in1);             // sürücü 1. giriş H
                     output_low(sagm_in2);              // sürücü 2. giriş L
                     Output_high(solm_in1);              // sürücü 1. giriş H
                     Output_high(solm_in2);              // sürücü 2. giriş L
                     
return;}

void motor_sag_ters(){                       //90 derece dönüşte sag motor ters yön
          
                     Output_low(sagm_in1);             // sürücü 1. giriş H
                     Output_high(sagm_in2);              // sürücü 2. giriş L
                     Output_high(solm_in1);             // sürücü 1. giriş H
                     output_low(solm_in2);              // sürücü 2. giriş L
return;}
void motor_sol_ters(){                    //90 derece dönüşte sol motor ters yön
          
                     Output_high(sagm_in1);             // sürücü 1. giriş H
                     Output_low(sagm_in2);              // sürücü 2. giriş L
                     Output_low(solm_in1);             // sürücü 1. giriş H
                     output_high(solm_in2);              // sürücü 2. giriş L
return;}




void main(){               // Ana fonksiyon.
setup_ccp1(ccp_pwm);       //sag motor için kullanılacak
setup_ccp2(ccp_pwm);       //sol motor için kullanılacak
setup_timer_2(T2_DIV_BY_4,124,4);     //Timer2 ayarları yapılıyor.
                                          //zaman=0.0001  Fr=10 Khz.  
                                          
                                          
output_high(stdby);        //motor sürücü entegresi stanby  HIGH olmalı.                                     
                                          
while(True){

oku_sen=input_d();        // d portundan sensör degerleri okunup oku_sen ata.

switch(231)
      
      {
      
      case 231:                                      //0b10000000        SAG
                     {
                     output_b(0b00011000);
                       motor_surme();
                       set_pwm1_duty(50);
                       set_pwm2_duty(50);
                       delay_ms(5000);
                       motor_ikili_fren();
                       set_pwm1_duty(255);
                       set_pwm2_duty(255);
                       delay_ms(1000);
                       sag_fren();
                       set_pwm1_duty(0);
                       set_pwm2_duty(100);
                       delay_ms(5000);
                     break;}
                     //motor_surme();}
                     }}}





code]

pax

frenlemeyi PWM duty oranını sıfır 0 yaparak yapsanız daha İyi olur

bbs2006

teşekkürler. yazılımda mantık hatası var mı.

pax

Programda amacınız nedir tam anlayamadim ama switch case yapısı hatalı
switch (oku_sen)
  {
       case 231 : // Yapmak istediğiniz
                          break ;
}

şeklinde olmalı


amacınızı tam anlatırsanız daha çok yardımcı Olabilirim

bbs2006

ben bunu çizgi izleyen robotta yapmak için kullanacağım. normal switch içerisinde input dan gelen bilgiler var. ancak frenleme yaptıracağım zaman bir fren  yapıp bırakıyor.  ancak switch içerisine direk decimal  değeri girdiğimiz zaman frenleme gerçekleşiyor. zaman artııkca frenleme süresi artıyor.

dursuncemal

sadece bir fonksiyon   icin  switch case kulanman cok mantiksiz. 231  muhtemelen sensorden okuyorsun frenleme yaparken 231 degern degisiyor bir daha caseye giremiyorsun. ama sen 231 kendin girersen senin programin surekli case 231 in icide kaliyor ve dogal olarak frenleme yapiyorsun;birde arkadaslarin dedigi gibi programin net okun uyor ne yaptigin anlasilmiyor . program akisini once flow chart olarak ciz kodunu ona gore yaz.
:=

pax


  1- fonksiyonların sonundaki "return"lere gerek yok. fonksiyon kendiliğinden sonlanıyorsa "return"e gerek yok.

  2- Portlarla ilgili yönlendirme komutları yok. giriş çıkış yönlendirmesi. d portu giriş olarak yönlendirilmeli ,  c portu çıkış olarak yönlendirilmeli

  3- switch(231)  switch(oku_sen) ooarak değişmeli

  4- 0b10000000 bu 231 değil 128   olmalı

  5-
     
    void motor_ikili_fren(){
          
                     Output_high(sagm_in1);             // sürücü 1. giriş H
                     Output_high(sagm_in2);              // sürücü 2. giriş L
                     Output_high(solm_in1);             // sürücü 1. giriş H
                     output_high(solm_in2);              // sürücü 2. giriş L
return;}


yerine

void motor_ikili_fren(){
          
                  set_pwm1_duty(0);
                  set_pwm2_duty(0);  
            }


olmalı


6- 

void sag_fren(){

                     Output_high(sagm_in1);             // sürücü 1. giriş H
                     Output_high(sagm_in2);              // sürücü 2. giriş L
                     Output_high(solm_in1);             // sürücü 1. giriş H
                     output_low(solm_in2);              // sürücü 2. giriş L
return;}

void sol_fren(){ 
                     Output_high(sagm_in1);             // sürücü 1. giriş H
                     output_low(sagm_in2);              // sürücü 2. giriş L
                     Output_high(solm_in1);              // sürücü 1. giriş H
                     Output_high(solm_in2);              // sürücü 2. giriş L
                     
return;}


yerine


void sag_fren(){
                        set_pwm1_duty(0);   
                        }

void sol_fren(){ 

                    set_pwm2_duty(0);
                        }




7- 

void main()
        {               // Ana fonksiyon.
setup_ccp1(ccp_pwm);       //sag motor için kullanılacak
setup_ccp2(ccp_pwm);       //sol motor için kullanılacak
setup_timer_2(T2_DIV_BY_4,124,4);     //Timer2 ayarları yapılıyor.
                                          //zaman=0.0001  Fr=10 Khz.  
                                          
                                          
output_high(stdby);        //motor sürücü entegresi stanby  HIGH olmalı.                                     
                     
while(True){

oku_sen=input_d();        // d portundan sensör degerleri okunup oku_sen ata.

switch(231)
      
      {
      
      case 231:                                      //0b10000000        SAG
                     {
                     output_b(0b00011000);
                       motor_surme();
                       set_pwm1_duty(50);
                       set_pwm2_duty(50);
                       delay_ms(5000);
                       motor_ikili_fren();
                       set_pwm1_duty(255);
                       set_pwm2_duty(255);
                       delay_ms(1000);
                       sag_fren();
                       set_pwm1_duty(0);
                       set_pwm2_duty(100);
                       delay_ms(5000);
                     break;}
                     //motor_surme();}
                     }}}


yerine de

void main()               // Ana fonksiyon.
                         {               
setup_ccp1(ccp_pwm);       //sag motor için kullanılacak
setup_ccp2(ccp_pwm);       //sol motor için kullanılacak
setup_timer_2(T2_DIV_BY_4,124,4);     //Timer2 ayarları yapılıyor.
                                                                //zaman=0.0001  Fr=10 Khz.  

 set_tris_b(0x00) ; // b portu çıış
 set_tris_c(0x00);  //  c portu çıkış
 set_tris_d(0xff);  // d portu giriş
                                        
                                          
output_high(stdby);        //motor sürücü entegresi stanby  HIGH olmalı.                                     
                     
while(1)
    {

         oku_sen=input_d();        // d portundan sensör degerleri okunup oku_sen ata.

switch(  oku_sen)
      
      {
      
      case 128:                                      //0b10000000        SAG
                     {
                       output_b(0b00011000);
                       motor_surme();
                       set_pwm1_duty(50);
                       set_pwm2_duty(50);
                       delay_ms(5000);
                       motor_ikili_fren();
                       delay_ms(1000);
                       sag_fren();
                       set_pwm2_duty(100);
                       delay_ms(5000);
                       set_pwm1_duty(100);
                    
                       break;}
                      
                     }
           }
}



bbs2006

Merhaba
Benim tüm yazılım kodları aşağıdaki gibidir. Ayrıca giriş çıkış portununu  yönlendirmeye gerek yoktur. o kendisi yönlendirme yapmaktadır.


#include <18f452.h>
#fuses hs,nowdt,noprotect
#use delay(clock=20000000)
#define sol1   pin_d0          //19 nolu pin   pin_b0   yeşil led
#define sol2   pin_d1          //20 nolu pin   pin_b1   yeşil led    
#define sol3   pin_d2          //21 nolu pin   pin_b2   yeşil led
#define orts1  pin_d3          //22 nolu pin   pin_b3   beyaz led
#define orts2  pin_d4          //27 nolu pin   pin_b4   beyaz led
#define sag1   pin_d5          //28 nolu pin   pin_b5   kırmızı led
#define sag2   pin_d6          //29 nolu pin   pin_b6   kırmızı led 
#define sag3   pin_d7          //30 nolu pin   pin_b7   kırmızı led
#define sagm_in1   pin_c5      //24 nolu pin  sürücü devre ain1   sag motor için
#define sagm_in2   pin_c4      //23 nolu pin  sürücü devre ain2   sag motor için
#define solm_in1   pin_c6      //25 nolu pin  sürücü devre bin1   sol motor için 
#define solm_in2   pin_c7      //26 nolu pin  sürücü devre bin2   sol motor için 
#define PWM_A      pin_c2      //17 nolu pin  sag motor pwm girişi  
#define PWM_B      pin_c1      //16 nolu pin  sol motor pwm için
#define stdby      pin_c0 
// değişken tanımlaması yapılıyor.

int oku_sen;                 // okunan sensör bilgisi   
//
int Sag_motor,Sol_motor;
int fren_bekleme=750;              //ikili fren sisteminde fren zamanı


void motor_surme(){
          
                     Output_high(sagm_in1);             // sürücü 1. giriş H
                     Output_low(sagm_in2);              // sürücü 2. giriş L
                     Output_high(solm_in1);             // sürücü 1. giriş H
                     output_low(solm_in2);              // sürücü 2. giriş L
return;}
void motor_ikili_fren(){
          
                     Output_high(sagm_in1);             // sürücü 1. giriş H
                     Output_high(sagm_in2);             // sürücü 2. giriş L
                     Output_high(solm_in1);             // sürücü 1. giriş H
                     output_high(solm_in2);             // sürücü 2. giriş L
return;}

void sag_fren(){

                     Output_high(sagm_in1);             // sürücü 1. giriş H
                     Output_high(sagm_in2);             // sürücü 2. giriş L
                     Output_high(solm_in1);             // sürücü 1. giriş H
                     output_low(solm_in2);              // sürücü 2. giriş L
return;}

void sol_fren(){ 
                     Output_high(sagm_in1);             // sürücü 1. giriş H
                     output_low(sagm_in2);              // sürücü 2. giriş L
                     Output_high(solm_in1);             // sürücü 1. giriş H
                     Output_high(solm_in2);             // sürücü 2. giriş L
                     
return;}

void motor_sag_ters(){                       //90 derece dönüşte sag motor ters yön
          
                     Output_low(sagm_in1);              // sürücü 1. giriş H
                     Output_high(sagm_in2);             // sürücü 2. giriş L
                     Output_high(solm_in1);             // sürücü 1. giriş H
                     output_low(solm_in2);              // sürücü 2. giriş L
return;}
void motor_sol_ters(){                    //90 derece dönüşte sol motor ters yön
          
                     Output_high(sagm_in1);             // sürücü 1. giriş H
                     Output_low(sagm_in2);              // sürücü 2. giriş L
                     Output_low(solm_in1);              // sürücü 1. giriş H
                     output_high(solm_in2);             // sürücü 2. giriş L
return;}

void main(){               // Ana fonksiyon.
setup_ccp1(ccp_pwm);       //sag motor için kullanılacak
setup_ccp2(ccp_pwm);       //sol motor için kullanılacak
setup_timer_2(T2_DIV_BY_4,124,4);         //Timer2 ayarları yapılıyor.
                                          //zaman=0.0001  Fr=10 Khz.  
                                                                                    
output_high(stdby);        //motor sürücü entegresi stanby  HIGH olmalı.                                     
                                          
while(True){

oku_sen=input_d();        // d portundan sensör degerleri okunup oku_sen ata.

switch(oku_sen)
      
      {
      
      case 128:                                  //0b10000000        SAG
                     {
                       output_b(0b01111111);
                       motor_ikili_fren();
                       set_pwm1_duty(255);
                       set_pwm2_duty(255);
                       delay_ms(fren_bekleme);
                       sag_fren();
                       set_pwm1_duty(0);
                       set_pwm2_duty(50);
                       
                       //motor_surme();
        //********************************************************            
                                        
       //*********************************************************
                      delay_ms(10);
                     break;}    
         
      case 1:                                      //0b00000001
                     {
                     output_b(0b11111110);
                       motor_ikili_fren();
                       set_pwm1_duty(255);
                       set_pwm2_duty(255);
                       delay_ms(fren_bekleme);
                       sol_fren();
                       set_pwm1_duty(50);
                       set_pwm2_duty(0);
                       
                       //sol_fren();
                       //motor_surme();
        //********************************************************            
                                          
        //*********************************************************              
                     // set_pwm1_duty(65);
                     // set_pwm2_duty(0);
                     
        //**********************************************************
                     delay_ms(10);
                     Break;}      
      
      
      case 192:                      //0b11000000                    SAG
                     {
                     output_b(0b00111111);
                     // motor_sag_ters();
                       motor_ikili_fren();
                       set_pwm1_duty(255);
                       set_pwm2_duty(255);
                       delay_ms(fren_bekleme);
                       sag_fren();
                       set_pwm1_duty(0);
                       set_pwm2_duty(50);
                       
                     //motor_surme();
        //********************************************************            
                                         
                    
                    
                   
                     delay_ms(10);
       //*********************************************************
                     
                     break;}    
      
      case 3:                                      //0b00000011
                     {
                     output_b(0b11111100);
                       motor_ikili_fren();
                       set_pwm1_duty(255);
                       set_pwm2_duty(255);
                       delay_ms(fren_bekleme);
                       sol_fren();
                  
                      // motor_sol_ters();
                      //sol_fren();
                      //motor_surme();
        //********************************************************            
                                          
       //*********************************************************              
                     set_pwm1_duty(50);
                     set_pwm2_duty(0);
                     
       //**********************************************************
                     delay_ms(10);
                     Break;}
      
      
     
      
                     
      case 254:                      //0b11111110                   SAG
                     {
                     output_b(0b00000001);
                    
                     motor_surme();
        //********************************************************            
                                         
       //*********************************************************              
                     set_pwm1_duty(15);
                     set_pwm2_duty(80);
                     
       //*********************************************************
                     
                     break;}           //Yol robotun sağında
                     
                     
      case 127:                                              //0b01111111
                    {
                    output_high(pin_b7);
                   
                    motor_surme();
        //********************************************************            
                     
                     
       //*********************************************************              
                     set_pwm1_duty(80);
                     set_pwm2_duty(15);
                     
       //*********************************************************
      
                    Break;} 
                
      case 252:                        // 0b11111100             SAG
                     {
                     output_b(0b00000011);
                   
                     motor_surme(); 
        //********************************************************            
                     
                     
       //*********************************************************              
                     set_pwm1_duty(15);
                     set_pwm2_duty(80);
                     
       //*********************************************************
                     delay_ms(10);
                      break;}
                     
       case 63:                                        //0b00111111
                    {
                    output_b(0b11000000);
                 
                    motor_surme(); 
        //********************************************************            
                     
                     
       //*********************************************************              
                     set_pwm1_duty(80);
                     set_pwm2_duty(15);
                     
       //*********************************************************
                     delay_ms(10);
                    Break;}
     
       case 248:                            //0b11111000           SAG
                     {
                     output_b(0b00000111);
                
                     motor_surme();
        //********************************************************            
                                          
       //*********************************************************              
                     set_pwm1_duty(20);
                     set_pwm2_duty(65);
                     
       //**********************************************************
                
                     Break;}
     
        case 31:                                      //0b00011111
                     {
                     output_b(0b11100000);
                
                     motor_surme();
        //********************************************************            
                                          
       //*********************************************************              
                     set_pwm1_duty(65);
                     set_pwm2_duty(20);
                     
       //**********************************************************
                     
                     Break;}
      
       case 240:                            //0b11110000           SAG
                     {
                     output_b(0b00001111);
                       motor_ikili_fren();
                       set_pwm1_duty(255);
                       set_pwm2_duty(255);
                       delay_ms(fren_bekleme);
                       sag_fren();
                      set_pwm1_duty(0);
                      set_pwm2_duty(50);
                      
                     // motor_sag_ters();
                     //motor_surme();
        //********************************************************            
                                          
       //*********************************************************              
                     
                     
                     
       //**********************************************************
                    delay_ms(10); 
                     Break;}   
   
     case 15:                            //0b00001111
                     {
                     output_b(0b11110000);
                      motor_ikili_fren();
                       set_pwm1_duty(255);
                       set_pwm2_duty(255);
                       delay_ms(fren_bekleme);
                       sol_fren();
                       set_pwm1_duty(50);
                       set_pwm2_duty(0);
                      
                      
                      
                      
                      //sol_fren();
                     // motor_sol_ters();
                    // motor_surme();
        //********************************************************            
                                          
       //*********************************************************              
                    // set_pwm1_duty(50);
                     // set_pwm2_duty(0);
                     
       //**********************************************************            
                    delay_ms(10);
           Break;} 
         
      case 224:                             //0b11100000            SAG
                     {
                     output_b(0b00011111);
                    // motor_sag_ters();
                       motor_ikili_fren();
                       set_pwm1_duty(255);
                       set_pwm2_duty(255);
                       delay_ms(fren_bekleme);
                      sag_fren();
                      set_pwm1_duty(0);
                      set_pwm2_duty(50);
                      
                    // motor_surme();
        //********************************************************            
                                          
       //*********************************************************              
                     
                    
                     
       //**********************************************************
                     delay_ms(10);
                     Break;}   
       case 7:                              //0b00000111
                     {
                     output_b(0b11111000);
                     //motor_sol_ters(); 
                     //motor_surme();
                      // sol_fren();
                     
                      motor_ikili_fren();
                       set_pwm1_duty(255);
                       set_pwm2_duty(255);
                       delay_ms(fren_bekleme);
                       sol_fren();
                       set_pwm1_duty(50);
                       set_pwm2_duty(0);
                      
        //********************************************************            
                                          
       //*********************************************************              
                    
                     
       //**********************************************************            
                     delay_ms(10);
           Break;}   
    
      case 249:                            //0b11111001           SAG
                     {
                     output_b(0b00000110);
                
                     motor_surme();
                   
      
        //********************************************************
                                          
       //*********************************************************              
                     set_pwm1_duty(70);  //70
                     set_pwm2_duty(75);  //75 
                     
       //**********************************************************
                    delay_ms(5);
                     Break;}
  case 159:                                   //0b10011111
                    {
                    output_b(0b01100000);
                  
                    motor_surme();
        //********************************************************            
                    
                     
       //*********************************************************              
                     set_pwm1_duty(75);   //75
                     set_pwm2_duty(70);   //70
                     
       //*********************************************************
                     delay_ms(5); 
                     Break;}
       
  
      case 243:                              //0b11110011           SAG
                     {
                     output_b(0b00001100);
                     motor_surme();
        //********************************************************            
        //*********************************************************              
                     set_pwm1_duty(65);         //65
                     set_pwm2_duty(70);         //70  
                     
       //*********************************************************
                     
                    delay_ms(5);
                     Break;}
                     
       case 207:                            //0b11001111
                    {
                      output_b(0b00110000);
                      motor_surme();
        
        //********************************************************
        //*********************************************************              
                     set_pwm1_duty(70);             //70
                     set_pwm2_duty(65);             //65 
                     
       //*********************************************************
                    delay_ms(5);
                    Break;
                    
                    
                    }
                  
     case 231:                      //Yol ortada      0b11100111
                    {
                     output_b(0b00011000);
                     motor_surme();
        //********************************************************            
                                      
       //*********************************************************              
                     set_pwm1_duty(70);      //eski degeri 70 
                     set_pwm2_duty(70);
                     
       //*********************************************************                  
                     delay_ms(5);
                     Break;
                    
                     }
/*
     case 255:                    //0b11111111
         {
         output_b(0b00000000);
         motor_surme();
         set_pwm1_duty(10);
         set_pwm2_duty(10);
         }*/
     default:{}
      }     }}

dursuncemal

#8
programdaki senaryo yu anlayamadim.sensorden bekledigin veri geldiginde durmasi mi gerekiyor? eger dogru tahmin etmisem veriyi esitlige gore degilde buyuk veya kucukture gore karsilastir.
:=

bbs2006

merhaba
ben 90 derecelik dönüşlere geldiği zaman iki motoru 5 veya 10 msn durdurup sonra saga veya sola fren yaptırıp daha düzgün bir dönüş sağlamak için yaptım. motorların ikisinide durdurma işlemini yapmasam dahi dönme işlemi gerçekleşiyor. ben düz yolda yüksek hızda giderken keskin dönüşlerde sıkıntı yaşanmasın diye önce durdurup sonra dönüş yaptırmak istiyorum.

dursuncemal

switc degerin tuslardan mi geliyor?
:=

bbs2006

hayır .qtr-8a sensöründen d portuna giriyor.  sensör beyaz gördüyse lojik 0 siyah gördüyse  lojik 1 üretiyor.

pax

Alıntı yapılan: bbs2006 - 03 Şubat 2016, 22:07:32
hayır .qtr-8a sensöründen d portuna giriyor.  sensör beyaz gördüyse lojik 0 siyah gördüyse  lojik 1 üretiyor.

bildiğim ve kullandığım kadarıyla   qtr8a analog sensordür. dijital okunabiliyor mu? analog okumanız gerekmiyor mu?

bbs2006

evet. zaten qtr-8a analog sensördür. ancak pic 18f4550 entegresinini d portu st özellikli bundan dolayı beyaz çizgiyi  lojik 0 siyah girişleri 1 alıyor. benim çizgi izleyen robotta sıkıntı yok. sadece entegre frenleme işleminde sıkıntı oluyor.

pax

Alıntı yapılan: bbs2006 - 04 Şubat 2016, 00:04:59
pic 18f4550 entegresinini d portu st özellikli bundan dolayı beyaz çizgiyi  lojik 0 siyah girişleri 1 alıyor.

bu konu ile ilgili biraz bilgi verebilir misiniz?