74hc165 ile sensor arttırma ve 74hc595 ile led arttırma, led kontrol
  • 74hc595 ile 60 adet ledi arttırma ve 75hc165 paralel in shift out entegresi ile sensor arttırma . Program amacı; arttırmış olduğumuz sensörler birbirinden bağımsız bir şekilde ve her sensör başına bir led konumlandırılmış üzere. serial monitorden gönderilen veri örneğin '1' 1.ledi yakması ve 1.lede ait olan sensöre cisim algılattıgımızda 1.ledin sönmesi. şuan kod olarak geldiğim nokta ek teki gibidir. Ayrıca yeni bir veri gönderdiğimde diğeri yanmaya devam etmeyecek sadece istenilen veriyle istenilen ledi yakıcam.. burada benim şikayetim shift registerı çalıştırabılıyorum tek shift register ile her şey tamam sıkntı yok ama 2. shift registera gectigimde bağlantılarımda doğru. 1 veriyi giriyorum 1.shift registerin 1ledi yanıyor 2.shift registerin 2. ledi yanıyor aynı anda.yane shift registerlar paralel aynı şeyleri yapıyor. işlem sırasına göre devam etmiyor. Teşekkürler


    int latchPin = A1;
    int clockPin = A2;
    int dataPin = A0;

    byte leds1;
    byte leds2;
    byte leds3;




    int led;
    char gelenbyte;
    int sensordurum1=0,sensordurum2=0,sensordurum3=0;
    int Asensor1=A8;
    int Asensor2=A9;


    void setup()

    {

    pinMode(latchPin, OUTPUT);
    pinMode(dataPin, OUTPUT);
    pinMode(clockPin, OUTPUT);

    pinMode(Asensor1,INPUT);
    pinMode(Asensor2,INPUT);


    Serial.begin(9600);
    Serial.println("Data Girin");

    }

    void loop()

    {
    sensordurum1 = digitalRead(Asensor1);
    sensordurum2 = digitalRead(Asensor2);

    if ( sensordurum1 == 0)
    {
    updateShiftRegister();
    leds1 = 0;

    }

    if( sensordurum2 == 0)
    {
    updateShiftRegister();
    leds1 = 0;

    }

    while (Serial.available())
    {
    gelenbyte = Serial.read();

    if(gelenbyte == '1')
    {
    leds1 = 0;
    led = gelenbyte - '1';
    bitSet(leds1, led);
    updateShiftRegister1();
    Serial.print("Yanan LED");
    Serial.println(led);
    }

    if(gelenbyte == '2')
    {

    leds1 = 0;
    led = gelenbyte - '1';
    bitSet(leds1, led);
    updateShiftRegister2();
    Serial.print("Yanan LED");
    Serial.println(led);
    }
    if(gelenbyte == '3')
    {

    leds1 = 0;
    leds2 = 0;
    led = gelenbyte - '3';
    bitSet(leds1, led);
    updateShiftRegister3();
    Serial.print("Yanan LED");
    Serial.println(led);
    }
    /*if (gelenbyte == '3'){
    leds=0;
    int led = gelenbyte - '1';
    bitSet(leds,led);
    updateShiftRegister();
    Serial.print("Yanan LED");
    Serial.println(led);
    }

    if(gelenbyte == '4')
    {
    leds=0;
    int led = gelenbyte - '1';
    bitSet(leds, led);
    updateShiftRegister();
    Serial.print("Yanan LED");
    Serial.println(led);
    }

    if(gelenbyte == '5')
    {
    leds=0;
    int led = gelenbyte - '1';
    bitSet(leds, led);
    updateShiftRegister();
    Serial.print("Yanan LED");
    Serial.println(led);
    }

    if(gelenbyte == '6')
    {
    leds=0;
    int led = gelenbyte - '1';
    bitSet(leds, led);
    updateShiftRegister();
    Serial.print("Yanan LED");
    Serial.println(led);
    }

    if (gelenbyte == '7'){
    leds=0;
    int led = gelenbyte - '1';
    bitSet(leds,led);
    updateShiftRegister();
    Serial.print("Yanan LED");
    Serial.println(led);
    }

    if(gelenbyte == '8')
    {
    leds1=0;
    int led = gelenbyte - '1';
    bitSet(leds1, led);
    updateShiftRegister();
    Serial.print("Yanan LED");
    Serial.println(led);
    }
    if (gelenbyte == '9'){


    leds1 = 0;
    updateShiftRegister();
    leds1=0;
    int led = gelenbyte - '9';
    bitSet(leds1,led);
    updateShiftRegisters();
    Serial.print("Yanan LED");
    Serial.println(led);
    }

    if(gelenbyte == 'a')
    {

    leds1=0;
    int led = 'b' - gelenbyte;
    bitSet(leds1, led);
    updateShiftRegisters();
    Serial.print("Yanan LED");
    Serial.println(led);
    }

    if(gelenbyte == 'b')
    {

    leds1=0;
    int led = 'd' - gelenbyte;
    bitSet(leds1, led);
    updateShiftRegisters();
    Serial.print("Yanan LED");
    Serial.println(led);
    }

    if(gelenbyte == 'c')
    {

    leds1=0;
    int led = 'g' - gelenbyte;
    bitSet(leds1, led);
    updateShiftRegisters();
    Serial.print("Yanan LED");
    Serial.println(led);
    }

    if(gelenbyte == 'd')
    {

    leds1=0;
    int led = 'i' - gelenbyte;
    bitSet(leds1, led);
    updateShiftRegisters();
    Serial.print("Yanan LED");
    Serial.println(led);
    }

    if(gelenbyte == 'e')
    {

    leds1=0;
    int led = 'k' - gelenbyte;
    bitSet(leds1, led);
    updateShiftRegisters();
    Serial.print("Yanan LED");
    Serial.println(led);
    }

    if(gelenbyte == 'f')
    {

    leds1=0;
    int led = 'm' - gelenbyte;
    bitSet(leds1, led);
    updateShiftRegisters();
    Serial.print("Yanan LED");
    Serial.println(led);
    }
    */
    if (gelenbyte == 'x')

    {

    leds1 = 0;

    updateShiftRegister();

    Serial.println("Hepsi Kapatildi");

    }

    }

    }

    void updateShiftRegister()
    {

    digitalWrite(latchPin, LOW);
    shiftOut(dataPin, clockPin, MSBFIRST, leds1);
    digitalWrite(latchPin, HIGH);


    }
  • x595 ve x165 gibi entegrele iki veya daha fazla bağlandığında ardıl (cascade ) bağlanmalıdır..
    Bağlantı şeklini paylaş, yardımcı olalım

  • https://www.google.com.tr/search?q=2x74hc595+with+16+led+serial+control&dcr=0&source=lnms&tbm=isch&sa=X&ved=0ahUKEwi8wcaE-9bWAhWSaVAKHagcBIMQ_AUICigB&biw=1366&bih=637#imgrc=2AglCmJpSSfXTM:

    NOT : BU BAĞLANTI ŞEKLİ 74HC595 ENTEGRESİ İÇİN GEÇERLİ. 2 ADET VAR AMA 8 ADET BAĞLANACAK AYNI MANTIK İLE.

    http://www.r-site.net/site/img.php?img=media/img/pic_5620.png

    NOT: bu resimde hem 74hc595 bağlantısı ve 74hc165 baplantısı bulunmaktadır. toplamda 8 adet 74hc595 kullanılacak 8 adette 74hc165 entegresi ...
    SİZİN için yeterli midir reesim
  • ilginiz için teşekkür ederim çok sağolun
  • önce ledleri biyakalım

    https://www.arduino.cc/en/Tutorial/ShiftOut

    linkindeki
    exaple2 devamındaki
    circuit diyagram altındaki şemayı uygula (2 adet x595)

    ve şunu bir dene bakalım ne olacak


    yanma şekli linkteki gibi olacak



    burdaki sekizli

    sendeki onaltılı olacak ve diğer 8 li gurup ilk gurubun tersine hareket edecek.







    byte byteA=0,byteB=0;
    void loop()
    {
    byteA++;
    byteB--;
    shiftOut(dataPin, clockPin, MSBFIRST, byteA);
    shiftOut(dataPin, clockPin, MSBFIRST, byteB);
    digitalWrite(latchPin,HIGH);
    delayMicroseconds(1);
    digitalWrite(latchPin,LOW);
    delayMicroseconds(1);

    delay(500);
    }






  • hocam ikinci örneği denedim 1shift reg solda başlayıp teker teker yanıyor 2 shiftte tam tersi .... sönüyor ? bağlantılarda sıkıntı yok ?
  • burada nasıl video paylaşılıyor ben göremedim ? veya fotoğraf ?
  • Dediginiz gibi oldu hocam suan sistem 2. Orrnege gore akti olarak calisiyor
  • ok şimdi herbir sekiz çıkış için 1 entegre ekleyeceksin bağlantılar aynı sekilde

    paralel olanlar parelel devam edecek tek farklılık a entegresinin Q7' çıkışını b entegresinin DS ucuna gireceksin, b entegresinin Q7' çıkışını c entegresinin DS ucuna gireceksin.... şeklinde devam edecek

    60 çıkışmı istiyorsun 8 adet entegre kullanacaksın ve 64 çıkış elde edeceksin

    her entegre için shiftout kullanacaksın
    yani sekiz adet
    byteA birinci entegrenin ve son olarakda byteH son entegrenin ledlerini yakacaktır.

    bu sekiz entegreyi bi bağla ve hangi ledlerin yanacağını serial üzerinden yönetmeye çalış.

    gerisi gelecektir.

    shiftOut(dataPin, clockPin, MSBFIRST, byteA);
    shiftOut(dataPin, clockPin, MSBFIRST, byteB);
    shiftOut(dataPin, clockPin, MSBFIRST, byteC);
    shiftOut(dataPin, clockPin, MSBFIRST, byteD);
    shiftOut(dataPin, clockPin, MSBFIRST, byteE);
    shiftOut(dataPin, clockPin, MSBFIRST, byteF);
    shiftOut(dataPin, clockPin, MSBFIRST, byteG);
    shiftOut(dataPin, clockPin, MSBFIRST, byteH);

    kolay gelsin..







Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Login with Facebook
Açık kaynak kültürü gereği, çözdüğünüz problemlerin çözümlerini paylaşmayı lütfen unutmayın.