Skocz do zawartości

I2C nie zwraca adresu konwertera


damianf125

Pomocna odpowiedź

Dzień Dobry wszystkim, założyłem ten temat ponieważ nigdzie nie moge znaleść odpowiedzi na swoje pytanie a mianowicie, dlaczego nie otrzymuje adresu konwertera i2c ? Po załączonych zdjęciach widac ze magistrala i2c nie kończy transmisji , ktoś byłby to w stanie wytłumaczyc ?

1.PNG 2.PNG

Link do komentarza
Share on other sites

 
#include <Wire.h>
 
 
void setup()
{
  Wire.begin();
 
  Serial.begin(9600);
  while (!Serial);            
  Serial.println("\nI2C Scanner");
}
 
 
void loop()
{
  byte error, address;
  int nDevices;
 
  Serial.println("Scanning...");
 
  nDevices = 0;
  for(address = 0; address < 127; address++ )
  {
  
    Wire.beginTransmission(address);
    
    error = Wire.endTransmission();
    Serial.print (123);
 
    if (error == 0)
    {
      Serial.print("I2C device found at address 0x");
      if (address<16)
        Serial.print("0");
      Serial.print(address,HEX);
      Serial.println("  !");
 
      nDevices++;
    }
    else if (error==4)
    {
      Serial.print("Unknown error at address 0x");
      if (address<16)
        Serial.print("0");
      Serial.println(address,HEX);
    }    
  }
  if (nDevices == 0)
    Serial.println("No I2C devices found\n");
  else
    Serial.println("done\n");
 
  delay(5000);          
}

posiadam arduino nano oraz zwykły wyświetlacz 16 znakowy z konwerterem i2c 

schemayt połączeć standardowy czyli 

5v-vcc

gnd-gnd

a4-sda

a5-scl

kod do wyszukiwania adresu konwertera i2c który zastosowałem

 

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Oporniki są po to, że urządzenia na i2c albo zwierają coś do GND (czyli podają zero) albo nie zwierają (i wtedy trzeba jakoś tę jedynkę podać). Jak ich nie będzie to na linii będzie albo zero albo czort wie nie co, czyli pewnie też coś koło zera (albo co tak drut z powietrza wyłapie).

W Uno biblioteka Wire włącza wewnętrzne rezystory, w nano czy pro mini już nie. Nie pytaj dlaczego 🙂

  • Lubię! 2
Link do komentarza
Share on other sites

Sprawdź jak działa ten program gdy nic nie podłączasz do I2C. A jeśli robisz wszystko OK, to może po prostu konwerter I2C jest uszkodzony. Czasami się zdarza. Dla 100kHz i 5V rezystor powinien być od 1,5-10k, dla 400kHz powinien być max 4k. Jak są nieco większe to tez zadziała, byle magistrala była krótka - mała pojemność. Z drugiej strony nie może być za mały bo im mniejszy tym większe zwarcie, czyli obciążenie prądem urządzeń na magistrali. W Google znajdziesz ładne wykresy dla pullup min i max w funkcji pojemności magistrali, prędkości transmisji i napięcia Vcc. Zazwyczaj są też w kartach katalogowych urządzeń z interfejsem I2C.

  • Lubię! 1
Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.