Çözüldü : Harici adaptör bağladım sorun kalmadı, sanırım usb'den aldığı güç yetersiz geldi.

Ardunio ve Max7219 dot matrix ile bir problem yaşıyorum ve çözemedim.
Aşağıdaki kod ile seri porttan gelen stringi kaydırarak ekrana yazdırmam gerekiyor;

Fakat bu şekilde seri porttan bir veri gönderdiğimde outputta doğru şekilde görüyorum, led ekranında gözükür gibi olup kayboluyor. Video olarak ekledim. Sorun neden kaynaklanıyor olabilir bir türlü çözemedim.

https://www.youtube.com/shorts/AtKTWGA4CPc

#include
#include
#include

#define HARDWARE_TYPE MD_MAX72XX::FC16_HW
#define MAX_DEVICES 1
#define CLK_PIN 13
#define DATA_PIN 11
#define CS_PIN 10

MD_Parola display = MD_Parola(HARDWARE_TYPE, CS_PIN, MAX_DEVICES);

String incomingData = "";

void setup() {
Serial.begin(9600);
display.begin();
display.setIntensity(0);
display.displayClear();
}

void loop() {
if (Serial.available() > 0) {
incomingData = Serial.readStringUntil('\n');
Serial.println("Mesaj alındı: " + incomingData);
display.displayClear();

display.displayText(incomingData.c_str(), PA_CENTER, 100, 100, PA_SCROLL_LEFT, PA_SCROLL_LEFT);
while (!display.displayAnimate()) {
delay(100);
}
}
}

BeğenFavori PaylaşYorum yap

Merakımı mazur görün yapay zeka, deepseek vb. haberleri okuyunca aklıma takıldı. Şimdi ardiuno(i2c) veya diğer chip(attiny) veya sistemlerde(html, vs) biz kod yazdığımızda bu kodu okuyan bir sistem var ve buna göre işlemci katında çıkış verebiliyor. Bu nasıl oluyor? okuduğunu nasıl anlıyor?

BeğenFavori PaylaşYorum yap
Önceki yorumları gör 5 / 11
  • goggo @goggo

    veri yolu efendisi ve veriyolu kölesi gibi master, slave gibi açıklamar var ama anlamadım #include
    #include

    LiquidCrystal_I2C lcd(0x27, 16, 2);

    void setup()
    {
    // LCD yi çalıştır
    lcd.begin();
    lcd.backlight();

    bu kodların tümü chip her enerjilendiğinde kütüphanedeki bilgiler ile birlikte okunuyor gibi

  • Player 1 @player-1

    Yazdığın kodun cinsine göre değişiyor. interpreter çalışan diller (Javascript, Python vb.) işlemci senin yazdığın kodu satır satır okuyor, ilgili işlemci diline çeviriyor ve işliyor. Compile alınan diller ise (ardiuno C++, C#) kodu bitirdikten sonra compiler bir seferliğine tamamını işlemci diline çeviriyor. Ardından kod her çalıştığında bu işlemci dili ile çalışıyor.

  • goggo @goggo

    Başka bir deyişle, bir derleyici insan tarafından okunabilen program kodunu sıfırlara ve birlere dönüştürür.

  • lterlemez :) :\ :( @lterlemez

    @player-1 anlatmış, iki tür tercüman var: Derleyici (compiler), yorumlayıcı (interpreter). Bunlardan ilki bütün komut satırını bir seferde çevirmek, diğeri ise her bir komut satırını tek tek çevirmek ile meşgul olur. Avantajları ve dezavantajları söz konusu olmaktadır, derleyici görece daha hızlı çalışır ama hata ayıklama söz konusu olduğunda neredeyse bütün hatalar birlikte verilir -yazım hatalarını ve bir seviyeye kadar mantık hatalarını ortaya çıkartabilir (ancak değerlendirmesi zorlaşabilir). Yorumlayıcı daha yavaş çalışır ama hata ayıklamada her seferinde bir hatayı ele alır, değerlendirme yine zorlaşsa da kontrol altında tutmak daha kolaylaşır. Ama günümüzde her iki tercümanların özellikleri bir araya getirilmiş ve istendiğinde adım adım, istendiğinde ise bir seferde çevrimi sağlanmıştır.

https://www.waveshare.com/wiki/0.96inch_OLED_(B) Buradaki talimatlarla ilerleyip demo'yu çalıştırdım lâkin ekran çok soluk, yazılar zar zor okunuyor. Panel mi bozuk yoksa bir şeyleri mi yanlış yapıyorum sizce?

BeğenFavori PaylaşYorum yap
Önceki yorumları gör 28 / 41

Elektronikçi arkadaşlar, tarifi veriyorum;

1 ahşap kutu, her açıldığında önceden yüklenmiş 3 farklı ses çalacak, ilk açıldığında 1. ses, kapatılıp tekrar açıldığında 2. ses, yine aynı işlemden sonra 3. ses. Bu döngü olarak devam edecek, bunun için gerekli olan bileşenler nelerdir, taktiklere açığım, teşekkür ederim 😀

Edit: Ses dediğimde 2 3 saniyelik şeyler.

BeğenFavori PaylaşYorum yap
  • Özgür'üm, Özgür'sün, Özgür @ozgurg

    4. açılışta 1. ses ve diğerleri de sırasıyla sonraki açılışlarda devam edecek mi?

  • Türker Sezer @dirigeant

    Rahmetli Ferhan Sensoy'un cakmagi vardi boyle. Cakmagin icinde yapiliyorsa kutuda yapmak zor olmamali. https://youtu.be/iN3SlmkD308?si=xNKYEsgrI-dRVRSV&t=2413

  • Furkan Ekmen @furkanekmen

    ### Gereken Malzemeler:
    1. **Ahşap kutu**: Kapağı açılıp kapanabilir bir kutu.
    2. **Mikrokontrolcü**: Arduino, Raspberry Pi Pico gibi basit bir devre kartı.
    3. **Ses modülü**: DFPlayer Mini gibi bir MP3 modülü, bu modül mikro SD karttan ses çalabilir.
    4. **Hoparlör**: Ses çıkışı için küçük bir hoparlör.
    5. **Manyetik kapı sensörü**: Kapağın açıldığını veya kapandığını tespit etmek için.
    6. **Batarya**: Güç kaynağı olarak kullanılacak.
    7. **SD kart**: 3 ses dosyasını depolamak için.
    8. **Devre bağlantıları için kablolar ve lehim ekipmanı**.

    ### Adımlar:

    1. **Ses Dosyalarının Yüklenmesi**: Üç farklı ses dosyasını (MP3 formatında) SD karta yükleyin. Örneğin, dosyaları `track1.mp3`, `track2.mp3`, `track3.mp3` olarak adlandırabilirsiniz.

    2. **Devre Kurulumu**:
    - DFPlayer Mini ses modülünü mikrokontrolcüye bağlayın.
    - Hoparlörü DFPlayer Mini modülüne bağlayın.
    - Manyetik kapı sensörünü kutunun kapağına yerleştirin, böylece kapak her açıldığında sinyal üretebilir.

    3. **Yazılım**:
    - Mikrokontrolcü, manyetik sensörden gelen sinyalleri izleyerek her açılışta sırasıyla 1., 2. ve 3. ses dosyasını çalmalı.
    - Bu döngü sonsuz bir şekilde devam etmeli.

    Örnek olarak basit bir Arduino kodu:

    ```cpp
    #include
    #include

    SoftwareSerial mySerial(10, 11); // RX, TX
    DFRobotDFPlayerMini myDFPlayer;

    int sensorPin = 2; // Manyetik sensör pini
    int sesSayaci = 1;

    void setup() {
    pinMode(sensorPin, INPUT);
    mySerial.begin(9600);
    myDFPlayer.begin(mySerial);
    myDFPlayer.volume(20); // Ses seviyesi
    }

    void loop() {
    if (digitalRead(sensorPin) == HIGH) { // Kutu açıldığında
    switch (sesSayaci) {
    case 1:
    myDFPlayer.play(1); // track1.mp3 çal
    break;
    case 2:
    myDFPlayer.play(2); // track2.mp3 çal
    break;
    case 3:
    myDFPlayer.play(3); // track3.mp3 çal
    break;
    }

    sesSayaci++;
    if (sesSayaci > 3) {
    sesSayaci = 1;
    }

    delay(2000); // Sesin çalması için süre ver
    }
    }
    ```

    ### Çalışma Prensibi:
    - Kutu her açıldığında manyetik sensör tetiklenir ve mikrokontrolcü sıradaki sesi çalar.
    - Kapağı kapatıp tekrar açtığınızda bir sonraki ses çalar.
    - Bu döngü, kutu açılıp kapandıkça devam eder.

    Bu basit proje ile istediğiniz şekilde her açılışta farklı bir ses çalan bir ahşap kutu yapabilirsiniz.

    • Anıl @anil

      https://www.youtube.com/watch?v=BMbo69m9Mto @furkanekmen bunları board üzerinde mi yapıcam yoksa birbirine direkt bağlasam olur mu?

    • Furkan Ekmen @furkanekmen

      @anil Projeyi yaparken devreyi iki şekilde oluşturabilirsiniz:

      ### 1. **Breadboard (Deneme Tahtası) Üzerinde Kurulum**:
      - **Avantajları**:
      - **Hızlı ve kolay**: Parçaları birbirine kolayca bağlayabilirsiniz ve herhangi bir lehim işlemi gerektirmez. Yanlış bir bağlantı yaparsanız kolayca düzeltebilirsiniz.
      - **Değiştirilebilirlik**: Projeyi tamamladıktan sonra devre üzerinde değişiklik yapmak isterseniz, breadboard üzerinden bunu hızlıca yapabilirsiniz.
      - **Dezavantajları**:
      - **Geçici çözüm**: Breadboard geçici devreler için kullanılır ve proje sürekli kullanılacaksa uzun ömürlü olmayabilir.
      - **Daha fazla yer kaplayabilir**: Tüm bileşenleri bir breadboard üzerinde yerleştirmek, devreyi direkt bağlamaktan daha fazla yer kaplayabilir.

      ### 2. **Direkt Bağlama (Lehimleme)**:
      - **Avantajları**:
      - **Kalıcı çözüm**: Bileşenleri lehimleyerek daha sağlam ve uzun ömürlü bir devre yapabilirsiniz. Özellikle kutunun içine yerleştirecekseniz bu daha profesyonel ve dayanıklı bir çözüm olur.
      - **Daha az yer kaplar**: Bileşenleri doğrudan birbirine bağlayarak daha kompakt bir devre elde edebilirsiniz, bu da kutunun içinde yer tasarrufu sağlar.
      - **Dezavantajları**:
      - **Düzeltmesi zor**: Yanlış bir bağlantı yaparsanız lehimi söküp yeniden yapmanız gerekir. Bu işlem breadboard kadar hızlı ve kolay değildir.
      - **Lehim yapma becerisi gerektirir**: Eğer daha önce lehim yapmadıysanız, dikkatli olmanız gerekir. Ayrıca lehim yapmak için bir havya ve lehim teli gibi ek ekipmanlara ihtiyacınız olacak.

      ### Ne zaman breadboard, ne zaman lehim?

      - Eğer proje üzerinde deneme yapmak istiyorsanız **breadboard** üzerinde başlamanızı tavsiye ederim. Hataları görmek ve projeyi test etmek için idealdir.
      - Devreyi test edip tüm bağlantıların doğru çalıştığından emin olduktan sonra daha kalıcı bir çözüm için parçaları birbirine **lehimleyerek** bağlayabilirsiniz. Böylece projeniz daha uzun süre dayanır ve kutu içinde saklamaya uygun hale gelir.

      İlk aşamada breadboard kullanıp ardından lehimleme ile kalıcı hale getirmek en iyi yaklaşım olabilir.

    • Anıl @anil

      @furkanekmen Çok teşekkür ederim.

      Edit: Hocam siparişleri verdim, gelince az biraz daha yardımını alırım 😀

  • mrx @mrx

    Arduino, mp3 yada ses modülü, yada ses kaydedebilen entegreler var onlarda olabilir. Reed röle veya switch, anfi modülü ve hoparlör bir de pil tabi başka bir şeye de gerek yok 😀

Bu arkadaş bir C/C++ uzmanı. Diyor ki;
"NSA'nın C/C++ yerine Rust,Go gibi dillere yönlendirmeye çalışmasının altındaki sebep bunlara hazırda bir arka kapı yerleştirmiş olmasıdır." Bana komplo teorisi gibi geldi. Hadi Swift, Go gibi doğrudan ABD kapitalisti olan firmaların hazırladığı diller bile açık kaynak. Nasıl arka kapı bırakabilirler?

https://twitter.com/tsoding/status/1764595562291024333

BeğenFavori PaylaşYorum yap
  • lterlemez :) :\ :( @lterlemez

    İşin profesyonel uzmanı değilim ama açıklamaya ve sorulan soruya bakarak derleyiciler açık kaynak mı? Derleme esnasında ne gibi değişiklikler yapıyor? İnandığımdan değil tabi ki ama açıklama ve sorduğunuz soruya göre ortada bir durum; kanıt lazım...

    • okanaytimur @okanaytimur

      Evet compilerlar açık hocam. Zaten o yüzden çok inandırıcı gelmedi. Bu adam assemblyden http server yazacak kadar bilgi sahibi. Ama neden böyle bir şey iddia ediyor anlamadım
      https://carolynvanslyck.com/blog/2018/07/building-go-from-source/
      https://www.swift.org/documentation/source-code/

    • oniki @oniki

      Olmaz olmaz dememek lazım. TrueCrypt de açık kaynaklı şifreleme yazılımıydı, gereken kontrolün yapılması çok yorucu, kaynak isteyen bir iş, onu bile tam yapamıyorlardı. Tamam bir yazılım açık kaynaklı olabilir ama kim nasıl kontrol edeek o kadar kaynak kodu? O kontrol edene nasıl güveneceğiz?

    • okanaytimur @okanaytimur

      @oniki Şöyle bir mantık yürütüyorum. Eğer bir derleyicide açık varsa çok fazla insan orada açık arar çünkü derleyicide arka kapı demek o dille yazılan tüm yazılımlarda arka kapı demek. Ben Swift üzerinde kapıyı bulursam Apple cihazlarının alayına erişecek bir kaynağım olur. O yüzden ekstra kontrol ediliyordur. Tabi yanılıyor da olabilirim.

    • ozturka @ozturka

      @okanaytimur tüm derleyiciler full open source mu? Sanmıyorum. Bu arkadaş %99 haklı. Arka kapı olmasa istatistikler gidiyor, çökme bilgileri gidiyor. Memory sana ait değil 1 kere.

    • Mr. Can 2.0 @extreme

      @okanaytimur bu NSA Intel'le Arm'la calisiyor bunlar direkt olarak cpu ustundeki OS'den backdoor bulur boyle kodlama dillerine bile gerek kalmaz.

    • ozturka @ozturka

      @extreme belki işlerini kolaylaştırmak adına ipucu vermişlerdir 😀

    • okanaytimur @okanaytimur

      @extreme Donanım üzerinde verilen açıklara kimse bir şey yapamaz zaten. Intel'in Ring 3 seviyesinde Minix işletim sistemi çalıştırdığı biliniyor.
      https://www.zdnet.com/article/minix-intels-hidden-in-chip-operating-system/
      Bunun haricinde Meltdown ve Spectre açıkları keşfedileli 6 yıl oldu. Bunlar haricinde kim bilir neler vardır.
      Ama yazılım biraz daha farklı. Orada lab kurmadan da inceleme yapılabilir.
      @ozturka Tüm derleyiciler değil ama bahsedilen dillerin kaynakları açık. İstersen indirip kendin derleyip kullanabiliyorsun. Derleyiciyi derleyen derleyiciye güvenmiyorsan bu iş tavuk - yumurta mevsuna dönüyor 😀
      Bana göre hiçbir donanım ya da yazılım %100 güvenli değildir.
      Kriptografi ilerdikçe hacker teknikleri de gelişiyor. En son halka kuantum bilgisayarlar oldu. Onları durduran bir şey yok henüz. Devletler ve dev şirketlerin bunlara sahip olduklarını biliyoruz. Bilmediğimiz ne kadar güçlü oldukları. Ama NSA'nın "Bunları hacklemek kolay o yüzden bunları kullanın" demesinden çok "Ne kullanırsanız kullanın ben hacklerim. Önemli olan benim dışımda birileri hacklemesin" demesi.

      Bu mevzularda @demir-mhmmt bilgisi vardır mutlaka. Gömülü yazılım alanında çalışıyordu bildiğim kadarıyla.

    • ozturka @ozturka

      @okanaytimur tamam işte aynı kapıya çıkıyor. şimdi kum parçalarıyla sistem yapmak var bi de kocaman legolarla. hangisiyle kolay hacklenirsin? C/C++ bu işin kum tanesi.

    • okanaytimur @okanaytimur

      @ozturka Nasıl anlamadım? C/C++ ile daha kolay mı hackleniriz yani?

    • ozturka @ozturka

      @okanaytimur daha zor. Dil üst seviye oldukça arkada dönen şeylerden habersiz kalırsın. Aşağıda yazdığım gibi adamlar derlenen dosyalara tool yazdıysa açık kaynak olmasının ne faydası olacak? Adam derlenen dosyayı otomatik okuyordur?

    • okanaytimur @okanaytimur

      @ozturka Tabi öyle ama önerilerden biri Rust. Baya alt seviye bir dil. C ile aynı düzlemde. Go ve Swift te derlenebilen dillerden. Arkada dönen işlerden habersiz kalmak için üst seviye olmasına da gerek yok ki. Bir sürü hazır kütüphane kullanıyoruz. Hangisinin içinde ne var kaç kişi biliyor?
      #include her C++ programında bunu ekliyorum ekrana metin almak için. Bir kez olsun içini kurcalamadım 😀
      Derlenen dosyalara tool yazıp yazmadığını kaynak kodu okuyarak görebiliriz zaten. Rust derleyicisinde kaynak koda katkıda bulunan 10.000 den fazla insan var. Bunlardan birisi
      İşin tuhaf kısmı Ada ve Delphi gibi çağın gerisinde kalmış dillerin de önerilmesi. Bugün C de çok eski ama günümüz yazılımların çok büyük bir kısmının çekirdeğinde yer alıyor.

    • ozturka @ozturka

      @okanaytimur snowden filmini izlediniz mi? Eski dilleri de sırıtmasın diye eklemiş olabilier 😀

  • caerium @cozalp

    Ben de diyeyim ki bu arkadaş C/C++ gibi bellek yönetiminin programcı tarafından yapıldığı dillerle oluşturulmuş, bundan dolayı oluşan açıkları exploit eden bir örgütün üyesidir ve listedeki dillerin kullanılmasını istemediğinden böyle bir tweet atmıştır.

    Desteksiz oldu değil mi?

    Rust, Go, C# (.net) komple açık kaynak mesela. Madem arka kapıyı biliyor söylesin şurada şu framework ya da complier kodunda şu satırda böyle böyle oluyor diye. Geçiniz.

  • Deniz Etkin @denizetkin

    1990'lı yıllarda okduğum kripto kitabında derleyici yazdıığınız koda açık kapı ekleyebilir diyordu. Yani 30 yıl öncesinin tartışması.

Arkadaşlar Arduino ile bir sorun yaşıyorum,
Elimde DHT11 ve Toprak Nem sensörü var. Bu ikisini MQTT sunucuya topladıkları veriyi göndertiyorum. Sorun şurada başlıyor,
Eğer iki sensörü ayrı ayrı çalıştırıp gönderirsem gönderiyor. Fakat 2 sensörü aynı anda publish edemiyorum. Kodları mı çakışıyor ne oluyor anlam veremedim. Yardımcı olabilecek varsa çok sevinirim.
*2 sensörün harmanlanmış kodu: https://pastebin.ubuntu.com/p/H5BmvV8DNz/
Sadece DHT11 kodu: https://pastebin.ubuntu.com/p/hyvfJHTdHf/
Sadece Nem Sensörü Kodu: https://pastebin.ubuntu.com/p/gDHsKZ9H9D/

NodeMCU ESP8266 kullanıyorum
@yuded @karflake1 @ebkrbln @ademalp @demir-mhmmt @burak-oztan @yhackup @aliytrklkmz

BeğenFavori PaylaşYorum yap
Önceki yorumları gör 13 / 19

Bazen telefonumun yere düştüğünde kırılmamasının tek sebebi yerin parke olması oluyor.

BeğenFavori PaylaşYorum yap

C++ ile arası iyi olan bakabilir mi? Bir tanıdığım sordu ama ben yapamadım.

a) Bu C ++ programı hatasız derlenebilir, ancak B sınıfı çalışma zamanı hatalarına neden olabilir. Buna sebep olan durumları açıklayın. Bu hataları düzeltmek için B sınıfını yeniden yazın. Yalnızca hataya neden olabilecek fonksiyonları değiştirin. Diğer fonksiyonları değiştirmeyin.

#include

class A{
int ai;
public:
A();
A(A&);
~A();
void operator=(A);
int fA() const {return ai;}
};

class B{
A a;
A *p;
public:
B(int);
B(B&);
~B();
A &f5(B);
};

A::A(){
cout<<"Message 1" <<endl;
ai=1;
}

A::A(A& a){
cout<<"Message 2" <<endl;
ai=a.ai;
}

A::~A(){
cout<<"Message 3" <<endl;
}

void A::operator=(A a){
cout<<"Message 4" <<endl;
ai=a.ai;
}

b) Verilen program derlendiğinde ve çalıştırıldığında ekranda ne yazılır? (Not: Olası çalışma zamanı hatalarını dikkate almayınız)

c) A ve B sınıflarındaki bazı fonksiyonlar düzgün yazılmamıştır. Herhangi bir hataya neden olmazlar ancak verimli değiller. Bu fonksiyonları düzgün bir şekilde yeniden yazınız.

d) A sınfını, bu sınıftaki nesneleri sayacak şekilde değiştiriniz. A sınıfına ait bir nesne oluşturulduğunda, mevcut nesnelerin sayısı ekrana yazdırılmalıdır.( Not: static sayaç olusturmalısınız)

BeğenFavori PaylaşYorum yap

c++ ile ilgili bir soru soracağım.
kodda fillerin olduğu yere dikkat edelim. ilk fonksiyonda & yok ve sayıları doğrusuyla ekrana veriyor. İkinci filli fonksiyonda & var ve sayları 1 arttırıp ekrana yazdırıyor.
Bu kodun çıktısı aşağıdaki gibi:
100
36
9
5

100
36
10
6

Şimdi, bu & işareti neden 1 arttıyor verilen sayıları? Fonksiyon içindeki +1 yazılanı mı katıyor, neden?

#include

class Test
{
private:
int sayi;
public:
Test(int n) { sayi = n; } //const
int Deger() { return sayi; }
};

int Kare(Test 🐘t1)
{
t1 = Test(t1.Deger() + 1);
return t1.Deger() * t1.Deger();
}

int Kare2(Test 🐘&t1)
{
t1 = Test(t1.Deger() + 1);
return t1.Deger() * t1.Deger();
}

int main(int argc, char const *argv[])
{
Test t1(9), t2(5);

std::cout << Kare(t1) << "\n";
std::cout << Kare(t2) << "\n";
std::cout << t1.Deger() << "\n";
std::cout << t2.Deger() << "\n";

std::cout << Kare2(t1) << "\n";
std::cout << Kare2(t2) << "\n";
std::cout << t1.Deger() << "\n";
std::cout << t2.Deger() << "\n";

return 0;
}

BeğenFavori PaylaşYorum yap

Belki biri işe yarar diye bulduğum bütün kütüphaneleri doldurdum. Yaramadı.

BeğenFavori PaylaşYorum yap