Close

Kontrola kódu

Úvodní stránka Fórum Vaše projekty Arduino Kontrola kódu

Aktuálně jsou na stránce zobrazeny 2 příspěvky - 1. až 2. (celkem z 2)
  • Autor
    Příspěvky
  • #11558
    utapau
    Účastník

    Dobrý den, prosím o zkontrolování kódu v popisku. Nechce mi to fungovat. Na přiloženém obrázku je Arduino Leonardo a Arduino Pro Micro (ne Arduino pro mini). Po stisknutí tlačítka se na sériovém monitoru (MASTERu) nic nezobrazí (nebo jenom jednou, po opakovaném stisknutí se sekne a nic) a ledka na druhém Arduinu se nerozsvítí. Chtěl jsem vyzkoušet komunikace dvou Arduin pomocí SDA, SCL.

    Díky za pomoc 🙂

    Master kód : https://pastebin.com/xDv8XAaK
    Slave kód : https://pastebin.com/vDbksNp8

    #11586
    posjirka
    Účastník

    asi bude problém v kodu pro SLAVE. používáš tam

        tlacitko1 = Wire.read();
        tlacitko2 = Wire.read();  

    při čtení streamu. To ti nepůjde. Přečte 1 Byte a očekává další, ale ten nepřijde.
    Musíš si přečíst pouze 1 a pak rozhodnout co je to zač.

    upravil bych to asi takto:

    #include <Wire.h>
     
    const byte slaveId = 1;
     
    void setup()
    {
      Serial.begin(9600);
      Wire.begin(slaveId);
      Wire.onReceive(receiveEvent);
     
      pinMode(8, OUTPUT);
      pinMode(9, OUTPUT);
      digitalWrite(8, LOW);
      digitalWrite(9, LOW);    
    }
     
    void loop()
    {
    }
     
    void receiveEvent(int howMany)
    {
      char tlacitko1;
      // uprava    char tlacitko2;
     
      while(Wire.available() > 0)
      {
        tlacitko1 = Wire.read();
        // uprava tlacitko2 = Wire.read();
       
        if (tlacitko1 == 'a')
        {
          Serial.println("=> Tlacitko1 = zapnuto");
          digitalWrite(8, HIGH);
          delay(1000);
        }
        else if (tlacitko1 == 'b') // uprava
        {
          Serial.println("=> Tlacitko2 = zapnuto");
          digitalWrite(9, HIGH);
          delay(1000);
        }
        else {
          digitalWrite(8, LOW);
          digitalWrite(9, LOW);
          delay(100);
         
        }
      }
    }
Aktuálně jsou na stránce zobrazeny 2 příspěvky - 1. až 2. (celkem z 2)
  • Pro reakci na toto téma se musíte přihlásit.