Şimdi Ara

nRF24L01 birden fazla komut gönderme

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
1 Misafir - 1 Masaüstü
5 sn
7
Cevap
0
Favori
2.438
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • nRF24L01 üzerinden bir komut gönderip almayı(buton/led) başarabildim. Fakat benim istediğim şey 2 ayrı butonla 2 ledi ayrı ayrı yakabilmek. Mesela 1. butona basılınca 1. led 2. Butona basılınca 2. led yansın tarzında. Aslında 2 den fazla kullanmayı düşünüyorum. Şimdi 2 sorum olacak.

    Nasıl 2 ayrı komut kullanabilirim ?
    Bunun bir sınırı var mı ? Varsa kaç farklı komut gönderme sınırı var ?



    < Bu mesaj bu kişi tarafından değiştirildi Aeret -- 18 Ağustos 2015; 23:10:11 >
    < Bu ileti mobil sürüm kullanılarak atıldı >



  • Bu bahsettiğin led buton olayını nasıl yaptın? Birden fazla komut tabiki gönderebilirsin bunun için Pic veya Arduino kullanman gerekir.Basit olsun istiyorsan Arduino kullan.
  • Arduinodan bahsediyorum zaten. Kusura bakmayın belirtmeyi unutmuşum. Kullandığım kodları da yazayım buraya.



    Alıcı:

    #include <SPI.h>
    #include "nRF24L01.h"
    #include "RF24.h"
    int msg[1];
    RF24 radio(9,10);
    const uint64_t pipe = 0xE8E8F0F0E1LL;
    int LED1 = 3;

    void setup(void){
    Serial.begin(9600);
    radio.begin();
    radio.openReadingPipe(1,pipe);
    radio.startListening();
    pinMode(LED1, OUTPUT);}

    void loop(void){
    if (radio.available()){
    bool done = false;
    while (!done){
    done = radio.read(msg, 1);
    Serial.println(msg[0]);
    if (msg[0] == 111){delay(10);digitalWrite(LED1, HIGH);}
    else {digitalWrite(LED1, LOW);}
    delay(10);}}
    else{Serial.println("No radio available");}}


    Verici:

    #include <SPI.h>
    #include "nRF24L01.h"
    #include "RF24.h"
    int msg[1];
    RF24 radio(9,10);
    const uint64_t pipe = 0xE8E8F0F0E1LL;
    int SW1 = 7;

    void setup(void){
    radio.begin();
    radio.openWritingPipe(pipe);}

    void loop(void){
    if (digitalRead(SW1) == HIGH){
    msg[0] = 111;
    radio.write(msg, 1);}}

    < Bu ileti mobil sürüm kullanılarak atıldı >




  • Her türden sayısız komut gönderilebilir. Önce bir format belirle ve o formata uygun şekilde sayıları gönder. 1 byte ile 8 ayrı ledi kontrol etmen mümkün. Ben olsam önce komut sonra veri şeklinde en az 2 byte gönderirdim, daha genel amaçlı olur.
  • quote:

    Orijinalden alıntı: elektro_gadget

    Her türden sayısız komut gönderilebilir. Önce bir format belirle ve o formata uygun şekilde sayıları gönder. 1 byte ile 8 ayrı ledi kontrol etmen mümkün. Ben olsam önce komut sonra veri şeklinde en az 2 byte gönderirdim, daha genel amaçlı olur.

    Örnek küçük bir kod yazabilir misiniz rica etsem ?

    < Bu ileti mobil sürüm kullanılarak atıldı >
  • Ben arduino kullanıcısı değilim ama kabaca yazayım bişeyler. Bunlar ileri seviye ancak öğrendikten sonra çok daha basit olduğunu göreceksin.

    #define LED0 _BV(0)
    #define LED1 _BV(1)
    #define LED2 _BV(2)
    #define LED3 _BV(3)
    #define LED4 _BV(4)
    #define LED5 _BV(5)
    #define LED6 _BV(6)
    #define LED7 _BV(7)

    Bunlar led tanımlamaları. byte türünde bir değişkene şu şekilde yazarsın. Mesela 2. ve 5. ledleri yakmak istiyoruz.
    byte yaz = LED2 | LED5;

    Bu kod yaz değişkeninin 2. ve 5. bitlerini 1 yapar, diğer bitler 0 olur. Sonra bu değişkeni verici ile gönderirsin.
    radio.write(&yaz, 1);

    Veriyi alınca en verimli yol bunu direkt porta yazmaktır.
    radio.read(&PORTD, 1);
    ...

    PORTD nedir dersen, şu adrestekihttps://www.arduino.cc/en/Hacking/PinMapping168
    PD ile başlayan 8 tane pin portd oluyor. Yukarıdaki kod PD2 VE PD5 pinlerini "aynı anda" HIGH (1) yapar.



    < Bu mesaj bu kişi tarafından değiştirildi Guest-BF8E9B238 -- 20 Ağustos 2015; 22:36:49 >




  • quote:

    Orijinalden alıntı: elektro_gadget

    Ben arduino kullanıcısı değilim ama kabaca yazayım bişeyler. Bunlar ileri seviye ancak öğrendikten sonra çok daha basit olduğunu göreceksin.

    #define LED0 _BV(0)
    #define LED1 _BV(1)
    #define LED2 _BV(2)
    #define LED3 _BV(3)
    #define LED4 _BV(4)
    #define LED5 _BV(5)
    #define LED6 _BV(6)
    #define LED7 _BV(7)

    Bunlar led tanımlamaları. byte türünde bir değişkene şu şekilde yazarsın. Mesela 2. ve 5. ledleri yakmak istiyoruz.
    byte yaz = LED2 | LED5;

    Bu kod yaz değişkeninin 2. ve 5. bitlerini 1 yapar, diğer bitler 0 olur. Sonra bu değişkeni verici ile gönderirsin.
    radio.write(&yaz, 1);

    Veriyi alınca en verimli yol bunu direkt porta yazmaktır.
    radio.read(&PORTD, 1);
    ...

    PORTD nedir dersen, şu adrestekihttps://www.arduino.cc/en/Hacking/PinMapping168
    PD ile başlayan 8 tane pin portd oluyor. Yukarıdaki kod PD2 VE PD5 pinlerini "aynı anda" HIGH (1) yapar.


    Sanırım yavaş yavaş oturuyor :)

    < Bu ileti mobil sürüm kullanılarak atıldı >




  • Yapay Zeka’dan İlgili Konular
    VB.Net bekleme komutu
    15 yıl önce açıldı
    Daha Fazla Göster
    
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.