[ÇÖZÜLDÜ]Keypad'den girilen karakterleri SPI ile master arduino'dan slave arduino'ya yollamak
  • ### tepe edit : SPI.transfer (değer) fonksiyonu yerine SPI.transfer (array,boyutu) fonksiyonu kullanıldığında sorun çözüldü.

    Merhabalar.İki arduino arası SPI haberleşme protokolünü kullanarak master arduino'ma bağlı keypad'ten girilen değerleri slave'e atmak ve slave'e bağlı 2x16 lcd ekranında görmek istiyorum.

    Keypad'den gelen char tipinde karakterleri bir arrayin içinde topladım.

    ...
    void loop()
    {

    ...

    if (basilantus != NO_KEY && basilantus != '*' && basilantus != '#' && basilantus != '1')
    {

    lcd.setCursor(x,z);
    lcd.print(basilantus);



    ...(buralar önemli değil)


    kelime[x]= basilantus;
    kelime[x+1]='1';
    x=x+1;
    basilantus = klavyemiz.getKey();
    }

    if (basilantus == '1')
    {
    kelimegonderme();

    lcd.clear();
    x=0,z=0;
    }

    void kelimegonderme()
    {
    char c;
    digitalWrite(SS, LOW);

    for (const char * p = "ali1" ; c = *p; p++) // "ali1" yerine kelime adlı dizimi yazınca çalışmıyor fakat bu yazıyı yazdırıyor.
    SPI.transfer (c);

    digitalWrite(SS, HIGH);

    delay (1000);
    }


    SLAVE:
    #include
    #include

    char buf [33];
    volatile byte pos;
    volatile boolean process_it;

    LiquidCrystal_I2C_AvrI2C lcd(0x27,16,2);

    void setup (void)
    {
    lcd.begin();

    Serial.begin (9600);
    SPCR |= bit (SPE);

    pinMode(MISO, OUTPUT);

    pos = 0;
    process_it = false;
    SPI.attachInterrupt();

    }

    ISR (SPI_STC_vect)
    {
    byte c = SPDR;
    if (pos < sizeof buf)
    {
    buf [pos++] = c;

    if (c == '1')
    process_it = true;

    }
    }

    void loop (void)
    {
    if (process_it)
    {
    buf [pos] = 0;
    Serial.println (buf);
    lcd.setCursor(0,0);
    lcd.print(buf);
    pos = 0;
    process_it = false;
    }
    }

    Bu sorunu nasıl çözebilirim? Yada keypad'ten girilen charları stringe çevirmenin başka bir yolu var mıdır?


Howdy, Stranger!

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

Login with Facebook

Tagged

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