AC LED Sürücüsü çalışmıyor.

evet 14 clock girişi
4017 ye 12v verdim. 555'i ayırdım.
14 nolu pine nanodan 500ms aralıkla puls gönderiyorum yürümüyor. sadece kabloyu elimle tutarsam jet gibi sıralı yürüyor.

Kod:
void setup() {
  pinMode(13, OUTPUT);
}

void loop() {
 
digitalWrite(13, HIGH);
delay(500);
digitalWrite(13, LOW);
delay(500);
}
 
karedalgada gariplik veya gürültü olabilir. 14. pinden şaseye 100nf bağlar mısın. daha da olmazsa kondansatörü sökmeden 14. pini 555 den ayırıp
1k üzerinden artıya deydirip çektikçe 4017 ledleri sürmesi lazım. olursa sıkıntı 555 tarafında.
4017 de gibi sorun.
 
evet bu sadece şimşek. ikinci 4017 yi eklersek kara şimşek yapılabilir. önce 1.yi çalıştıralım da.
 
İyi de 4017 ile yapınca kara şimşek olmaz o. Size kara şimşeki hatırlatayım :D

Hadi bakalım @Ahmet yatmıştır. Yardım sırası sende :D
Netten Karaşimşek kodu buldum ama yemedi.


Kod:
int clockPin = 2;
int latchPin = 3;
int dataPin = 4;
byte led = 0;

void setup() {
  pinMode(clockPin, OUTPUT);
  pinMode(latchPin, OUTPUT);
  pinMode(dataPin, OUTPUT);
}

void fnkYaz(){
  digitalWrite(latchPin, LOW);
  shiftOut(dataPin, clockPin, LSBFIRST, led);
  digitalWrite(latchPin, HIGH);
}

void loop() {
for(int i = 0; i <= 8; i++){
led = ceil(pow(2,i));
fnkYaz();
delay(50);
}
delay(250);
for(int i = 8; i >= 0; i--){
  led = ceil(pow(2,i));
  fnkYaz();
  delay(50);
}
delay(250);

}

 
Şu hale kadar getirdim;

Kod:
int clockPin = 2;
int latchPin = 3;
int dataPin = 4;
byte led = 0;

void setup() {
  pinMode(clockPin, OUTPUT);
  pinMode(latchPin, OUTPUT);
  pinMode(dataPin, OUTPUT);
}

void fnkYaz(){
  digitalWrite(latchPin, LOW);
  shiftOut(dataPin, clockPin, LSBFIRST, led);
  digitalWrite(latchPin, HIGH);
}

void loop() {
for(int i = 0; i <= 8; i++){
led = ceil(pow(2,i));
fnkYaz();
delay(100);
}
delay(250);
for(int i = 8; i >= 0; i--){
  led = ceil(pow(2,i));
  fnkYaz();
  delay(100);
}
delay(250);

}

 
595 nasıl bağlandı bilmiyorum, orada hata olabilir belki. Mesela [imath]\overline {MR}[/imath] pini pull up olacak. [imath]\overline {OE}[/imath] pini de pull down olacak. SHCP data clock sinyali. DS data sinyali. STCP ile de datayı çıkışa uygulayacaksın (tek pals ile)
 
595 nasıl bağlandı bilmiyorum, orada hata olabilir belki. Mesela [imath]\overline {MR}[/imath] pini pull up olacak. [imath]\overline {OE}[/imath] pini de pull down olacak. SHCP data clock sinyali. DS data sinyali. STCP ile de datayı çıkışa uygulayacaksın (tek pals ile)
Abi şema şöyle;
MR pinini 1k ile pullup yaptım.
OE pinini de 1k ile pulldown ettim.
Daha mantıklı hareket etmeye başladı ama hala bir karaşimşek değil.
En baştaki ışık sönmüyor, en sondaki ışıkta yanmıyor.
EDIT: En sondaki gevşekmiş yandı.
image_750x_5da869e9df9e5.jpg

 
Son düzenleme:
Simply Put kanalının anlatım tarzını çok beğeniyorum. Aşağıdaki videoda SN74HC595N entegressinin çalışması çok güzel anlatılmış. İngilizce ama altyazıları açıp, Türkçe'ye çevirterek izleyebilirsiniz.

 
LED lerin bağlantı sırası yanlış olmuş. Q0 ilk led olacak Q1 ikinci led ve böyle devam edecek.
 
LED lerin bağlantı sırası yanlış olmuş. Q0 ilk led olacak Q1 ikinci led ve böyle devam edecek.
Şemaya göre diyorsan doğrudur abi. İlk çalıştırmada led sıtasının yanlış olduğunu anlayıp düzelttim. Altındaki videoda düzeltilmiş halini görüyorsun. Kodda biraz sıkıntılar var sanırım. İlk led sönmüyor, tam olarak karaşimşek yapmıyor. Eve yeni girdim. Bakacağım birazdan.
 
for döngülerini kaldır abi for ile artan değişken içeriğini kendin yaz kontrol ederek git.

0 yaz ve Q0 aktif mi?
1 yaz ve Q1 aktif mi?
2 yaz ve Q2 aktif mi?

böyle test ederek git.

Kod:
shiftOut(dataPin, clockPin, LSBFIRST, 0);
 
Aşağıdaki kodu dene. ceil(pow) kullanınca hem byte sınırlarını aşıyorsun, hem de gereksiz yere kayan noktalı sayı fonksiyonları kullanmış oluyorsun.

Kod:
//-*- mode: c++; c-basic-offset: 2; -*-

int clockPin = 2;
int latchPin = 3;
int dataPin = 4;
byte led = 1;

void setup()
{
  Serial.begin(115200);
  pinMode(clockPin, OUTPUT);
  pinMode(latchPin, OUTPUT);
  pinMode(dataPin, OUTPUT);
}

void fnkYaz()
{
  char buffer[100];
  snprintf(buffer, sizeof(buffer), "led = 0x%02X\n", led);
  Serial.write(buffer);

  digitalWrite(latchPin, LOW);
  shiftOut(dataPin, clockPin, LSBFIRST, led);
  digitalWrite(latchPin, HIGH);
}

void loop()
{
  for (unsigned int i = 0; i < 7; i++)
  {
    fnkYaz();
    delay(100);
    led <<= 1;
  }

  delay(250);

  for (unsigned int i = 0; i < 7; i++)
  {
    fnkYaz();
    delay(100);
    led >>= 1;
  }

  delay(250);
}
 
Veya başka bir alternatif. Burada en baştaki ve en sondaki LED iki kat daha uzun süre yanıyor

Kod:
void loop()
{
  for (unsigned int i = 0; i < 8; i++)
  {
    led = 1 << i;
    fnkYaz();
    delay(100);
  }

  delay(250);

  for (unsigned int i = 0; i < 8; i++)
  {
    led = 0x80 >> i;
    fnkYaz();
    delay(100);
  }

  delay(250);
}
 
Veya başka bir alternatif. Burada en baştaki ve en sondaki LED iki kat daha uzun süre yanıyor

Kod:
void loop()
{
  for (unsigned int i = 0; i < 8; i++)
  {
    led = 1 << i;
    fnkYaz();
    delay(100);
  }

  delay(250);

  for (unsigned int i = 0; i < 8; i++)
  {
    led = 0x80 >> i;
    fnkYaz();
    delay(100);
  }

  delay(250);
}
Benim kafamı karıştıran bir operatör var ''>>'' veya ''<<''

Bu bir kaydırma operatörü, biz bu operatörün sınırlarını kendimiz yazıyoruz unsigned int ile 0'ın altına kaydıramıyor for şartı ile de 8in üstüne çıkamıyor 8 bitlik bir yapı oluşturduk.

Ama diyelim ben var olan bir 8 bit sayıda 3. bite yazılı olan veriyi 2. bite kaydırmak istiyorum bunu nasıl yapacağım bu kısmı aklım almıyor.
Yine bir kaydırma operatörü ile yapabilir miyim bunu?
 
Veya başka bir alternatif. Burada en baştaki ve en sondaki LED iki kat daha uzun süre yanıyor

Kod:
void loop()
{
  for (unsigned int i = 0; i < 8; i++)
  {
    led = 1 << i;
    fnkYaz();
    delay(100);
  }

  delay(250);

  for (unsigned int i = 0; i < 8; i++)
  {
    led = 0x80 >> i;
    fnkYaz();
    delay(100);
  }

  delay(250);
}
Karaşimşeğe en yakın çalışan bu. Ama bu da yeterli değil.
İlk led koşmaya başlayıp ortaya geldiğinde arkanın da sönerek peşinden gelmesi lazım. Bu gün iş yerimde fırsatını bulursam kurcalayacağım.

 
Ben 595 ile kara şimşeği tek tek sürmek yerine 2 led led sürerek yapıyordum yani koşan daima 2 led var.
 
Ben 595 ile kara şimşeği tek tek sürmek yerine 2 led led sürerek yapıyordum yani koşan daima 2 led var.
Benim 9 ledim var. Buna da bir çare bulmam lazım. Ve bu ledler aralıklı. 1w beyaz kullanmayı düşünüyorum.
Bak şu yuvarlakların altındaki kısımlar. Sis farı gibi.

20230212_101823.jpg


20230212_101801.jpg
 

Forum istatistikleri

Konular
7,285
Mesajlar
123,139
Üyeler
2,939
Son üye
Cano

Son kaynaklar

Son profil mesajları

Freemont2.0 herbokolog Freemont2.0 wrote on herbokolog's profile.
nick iniz yakıyor
:D
Freemont2.0 posta Freemont2.0 wrote on posta's profile.
Merhabalar :)
az bilgili çok meraklı
Prooffy semih_s Prooffy wrote on semih_s's profile.
Merhaba, sizden DSO2C10 hakkında bilgi rica ettim. Yanıtlarsanız sevinirim...
Unal taydin Unal wrote on taydin's profile.
Timur Bey, Arduino kontrollü bir akü şarj cihazı yapmaya çalışıyorum. Aklımdaki fikri basit bir çizim olarak konu açmıştım. Özellikle sizin fikirlerinizi çok önemsiyorum.
Back
Top