Raspberry Pico ile Keypad Kullanımı

önce ı2c pinlerini yazıp daha sonra begin yapmamız gerekiyor. @Gokrtl
Yav varya adamın dibisin. Picoyu bozdum diye ikincisine bacak lehimliyordum bende :D

i2c pico.png
 
Şimdi birşey dikkatimi çekti bu picoyu daha önce 2 bilgisaya bağladım ben.
Bir arkadaşımın bilgisyarı.
Bir kendi bilgisayarım.
Birde şimdi seninkinde görüyorum.

Bu pico bağlandığı her bilgisayarda "com 10" alıyor
 
Şimdi birşey dikkatimi çekti bu picoyu daha önce 2 bilgisaya bağladım ben.
Bir arkadaşımın bilgisyarı.
Bir kendi bilgisayarım.
Birde şimdi seninkinde görüyorum.

Bu pico bağlandığı her bilgisayarda "com 10" alıyor
Evet. Normalde bırak bilgisayarı, USB portunu değişince bile COM'un değişmesi lazım.
Demekki buna özellikle "Sen COM10 kullan" demişler.

Şimdi yeni sorunlara devam edelim.
Keypad de tuş basmasında geç aksiyon alıyorum. Basınca tuş çalışmıyor, basılı tutunca birkan ms de bir çalışıyor.
Bunun nedeni LM35 sensörün kararlı çalışması için 350 kez for döngüsüne sokup delay(1) eklemem.
Bu döngüye 350ms ekliyor. Aynı şekilde voltaj okumada bir 350ms ekliyor. Etti 700ms. Bu da 1 saniye ye yakın olduğundan bu süre zarfınca tuşa basamamış oluyorum. Şimdi "millis" kullanmayı deneyeceğim ama onu tam beceremiyorum. Eski zaman, yeni zaman derken beyin yanıyor benim :)

C:
 /// LM35 Sıcaklık Sensörü
  for (int i = 0; i < 350; i++) // daha kararlı ortalama bir sonuç almak için 50 kez okuma yapma
  {
    lm35 = lm35 + analogRead(lm35Pin);
    //delay(1);
  }
 
Evet. Normalde bırak bilgisayarı, USB portunu değişince bile COM'un değişmesi lazım.
Demekki buna özellikle "Sen COM10 kullan" demişler.

Şimdi yeni sorunlara devam edelim.
Keypad de tuş basmasında geç aksiyon alıyorum. Basınca tuş çalışmıyor, basılı tutunca birkan ms de bir çalışıyor.
Bunun nedeni LM35 sensörün kararlı çalışması için 350 kez for döngüsüne sokup delay(1) eklemem.
Bu döngüye 350ms ekliyor. Aynı şekilde voltaj okumada bir 350ms ekliyor. Etti 700ms. Bu da 1 saniye ye yakın olduğundan bu süre zarfınca tuşa basamamış oluyorum. Şimdi "millis" kullanmayı deneyeceğim ama onu tam beceremiyorum. Eski zaman, yeni zaman derken beyin yanıyor benim :)

C:
 /// LM35 Sıcaklık Sensörü
  for (int i = 0; i < 350; i++) // daha kararlı ortalama bir sonuç almak için 50 kez okuma yapma
  {
    lm35 = lm35 + analogRead(lm35Pin);
    //delay(1);
  }
DUAL CORE ÖRNEĞİNE BAK
 
örneğin adını yanlış yazmışım MultiCore
2 çekrideğimiz var 2aynı işlemi eş zamanlı yapabilriiz
 
core.png

setup ve loop 1. çekirdek
setup1 ve loop1 2. çekirdek yani 2 ayrı program yazabilirsin bunlara ve sorunsuz çalışır birbirini etkilemeden
 
Bence biz senin projede 1 çekirdeğe hesaplama giriş çıkışlar vs. koyalım
1 çekirdek sadece display'i kontrol etsin
 
ama birşeyi denemem lazım 2çekirdek arasında değişkenleri gönderebiliyor muyuz
aklıma bu geldi deniyorum
 
2CORE:
int a = 0;
void setup() {
  Serial.begin(9600);
  Serial.println("CEKIRDEK 1");

}

void loop() {
  Serial.println(a);

}

void setup1() {

}

void loop1() {
  a++;
  delay(150);

}
 
bu çalıştı 2 core arasında değişkenlerin bir bloklama uğramıyor gidiyor
 
denemek için bir program yazdım işlemci kilitlendi.
lock:
int a = 0;
void setup() {
  Serial.begin(9600);
  Serial.println("CEKIRDEK 1");

}

void loop() {
  if (BOOTSEL) {
    delay(100);
    Serial.println(a);
  }

}

void setup1() {
  pinMode(25, OUTPUT);

}

void loop1() {
  if (BOOTSEL) {
    a++;
    digitalWrite(25, HIGH);
    delay(350);
    digitalWrite(25, LOW);
  }

}
 
rec:
int a = 0;
bool fl = 0;
void setup() {
  Serial.begin(9600);
  Serial.println("CEKIRDEK 1");

}

void loop() {
  if(fl == 1){
    Serial.println(a);
    fl = 0;   
  }


}

void setup1() {
  pinMode(25, OUTPUT);

}

void loop1() {
  if (BOOTSEL) {
    a++;
    digitalWrite(25, HIGH);
    delay(350);
    digitalWrite(25, LOW);
    fl = 1;
    while(BOOTSEL);
  }

}
mecbur bu şekilde çalıştırdım bi girişi 2 çekirdekten okumaya çalışınca sapıtıyor sanırım
 
rec:
int a = 0;
bool fl = 0;
void setup() {
  Serial.begin(9600);
  Serial.println("CEKIRDEK 1");

}

void loop() {
  if(fl == 1){
    Serial.println(a);
    fl = 0;  
  }


}

void setup1() {
  pinMode(25, OUTPUT);

}

void loop1() {
  if (BOOTSEL) {
    a++;
    digitalWrite(25, HIGH);
    delay(350);
    digitalWrite(25, LOW);
    fl = 1;
    while(BOOTSEL);
  }

}
mecbur bu şekilde çalıştırdım bi girişi 2 çekirdekten okumaya çalışınca sapıtıyor sanırım
Bende de şöyle bir şeye sebep oldu

 
bi yerde senin bu değişken sıfırlanıyor mu?
1.çekirdeğin en sonunda sıfırlanıyor
C:
//// Değerleri sıfırlama ////////////////
  Cdata = 0;
  I = 0;
  V = 0;
  Vdata = 0;
  vIN = 0;
  value;
 
1.çekirdeğin en sonunda sıfırlanıyor
C:
//// Değerleri sıfırlama ////////////////
  Cdata = 0;
  I = 0;
  V = 0;
  Vdata = 0;
  vIN = 0;
  value;
sıfırlayınca böyle gözükmesi normal bence.
ama nası çözeriz onu düşünüyorum.
sıfırlamasak ne olur?
 

Çevrimiçi üyeler

Çevrimiçi üye yok.

Forum istatistikleri

Konular
6,951
Mesajlar
118,748
Üyeler
2,824
Son üye
selocan32

Son kaynaklar

Son profil mesajları

hakan8470 wrote on Dede's profile.
1717172721760.png
Dedecim bu gul mu karanfil mi? Gerci ne farkeder onu da anlamam. Gerci bunun anlamini da bilmem :gulus2:
Lyewor_ wrote on hakan8470's profile.
Takip edilmeye başlanmışım :D ❤️
Merhaba elektronik tutsakları...
Lyewor_ wrote on taydin's profile.
Merhabalar. Elektrik laboratuvarınız varsa bunun hakkında bir konunuz var mı acaba? Sizin laboratuvarınızı merak ettim de :)
Lyewor_ wrote on taydin's profile.
Merhabalar forumda yeniyim! Bir sorum olacaktı lcr meterler hakkında. Hem bobini ölçen hemde bobin direnci ölçen bir lcr meter var mı acaba?
Back
Top