Skocz do zawartości

Problem z MB102 - moduły nie współpracują z Arduino


lukasz125

Pomocna odpowiedź

Witam wszystkich ma pewien problem z płytą do zasilania płytki prototypowej. Model MB102 zasilanie na wyjściach prawidłowe 5.04 V ale po podłączeniu LCD1602 oraz RTC DS3231 podświetlenie na wyświetlaczu działa a w zegarze zapala się dioda ale Arduino nie może się połączyć z modułami, problem znika po podłączeniu  zasilania bezpośrednio z Arduino. Ma ktoś jakiś pomysł dlaczego tak się dzieje ?  

IMG_20191229_084229.jpg

Link do komentarza
Share on other sites

@lukasz125 witam na forum 🙂

Chętnie pomożemy, ale właściwie nic nie wiemy o Twoim układzie. Pokaż chociaż zdjęcie połączonych modułów to będzie można coś podpowiedzieć.

3 godziny temu, lukasz125 napisał:

Arduino nie może się połączyć z modułami, problem znika po podłączeniu  zasilania bezpośrednio z Arduino.

Połączyłeś masę Arduino z masą tego "zasilacza"? To jedyne co przychodzi mi do głowy "w ciemno" 🙂

Link do komentarza
Share on other sites

A wiec tak podłączyłem wszystko do nowa i o dziwo działa jedyna różnica podłączyłem zgodnie z sugestia masę Arduino z masą zasilacza. Poszczególne elementy to zegar DS3231, wyświetlacz 1602 z I2C oraz czujnik BME 280.

 IMG_20191229_140353.thumb.jpg.359699c482d4bd87e3fc722f5349218f.jpgIMG_20191229_140332.jpgIMG_20191229_140336_1.jpgIMG_20191229_140343.jpg

Aktualizacja:

Jeśli mógłby ktoś spojrzeć na kod i powiedzieć mi dlaczego nie wyświetlają mi się temperatura, wilgotność i ciśnienie

#include <Wire.h>
#include <DS3231.h>
#include <LiquidCrystal_I2C.h> // dolaczenie pobranej biblioteki I2C dla LCD
#include <SPI.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>

#define BME_SCK 13
#define BME_MISO 12
#define BME_MOSI 11
#define BME_CS 10

#define SEALEVELPRESSURE_HPA (1013.25)

Adafruit_BME280 bme; // I2C
unsigned long delayTime;
 
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);  // Ustawienie adresu ukladu na 0x27 
DS3231 clock;
RTCDateTime dt;
 
void setup()
{
  Serial.begin(9600);
 Serial.println(F("BME280 test"));
  // Inicjalizacja DS3231
  Serial.println("Initialize DS3231");;
  clock.begin();
 
  // Ustawiany date i godzine kompilacji szkicu
  clock.setDateTime(__DATE__, __TIME__);
  lcd.begin(16,2);   // Inicjalizacja LCD 2x16
  
  lcd.backlight(); // zalaczenie podwietlenia 

}
 
void loop()
{
  // Odczytujemy i wyswietlamy czas
  dt = clock.getDateTime();
	
  bme.takeForcedMeasurement(); 

  lcd.setCursor(0,0); // Ustawienie kursora w pozycji 0,0 (pierwszy wiersz, pierwsza kolumna)
  lcd.print(dt.year); lcd.print("-"); lcd.print(dt.month); lcd.print("-"); lcd.print(dt.day); lcd.print(" ");
  delay(500);
  lcd.setCursor(0,1); //Ustawienie kursora w pozycji 0,0 (drugi wiersz, pierwsza kolumna)
  lcd.print(dt.hour); lcd.print(":");printDigits(dt.minute); lcd.print(":");printDigits(dt.second); lcd.print("");
  delay(2000);
  lcd.setCursor(0,0); // Ustawienie kursora w pozycji 0,0 (pierwszy wiersz, pierwsza kolumna)
  lcd.print("T = "); lcd.print(bme.readTemperature()); lcd.print(" *C"); 
  delay(500);
  lcd.setCursor(0,1); //Ustawienie kursora w pozycji 0,0 (drugi wiersz, pierwsza kolumna)
  lcd.print("P = "); lcd.print(bme.readPressure() / 100.0F); lcd.print(" hPa");
  delay(2000);
  lcd.clear();
  lcd.setCursor(0,0); // Ustawienie kursora w pozycji 0,0 (pierwszy wiersz, pierwsza kolumna)
  lcd.print("H = "); lcd.print(bme.readHumidity()); lcd.print(" %"); 
  delay(2000);
  lcd.clear();
  delay(500);
  
}

void printDigits(int digits) {
    // procedura dodania zera 
    lcd.print(':');
    if (digits < 10) {
        lcd.print('0');
    }
    lcd.print(digits);

}

 

Link do komentarza
Share on other sites

1 godzinę temu, lukasz125 napisał:

o dziwo działa jedyna różnica podłączyłem zgodnie z sugestia masę Arduino z masą zasilacza.

To nic dziwnego 😉 Bez połączenia masy nie miało prawa zadziałać. Miałeś w układzie dwa źródła zasilania - USB podłączone do Arduino i zasilacz podłączony do płytki stykowej. Bez wspólnej masy układy nie mogły się poprawnie komunikować.

1 godzinę temu, lukasz125 napisał:

Jeśli mógłby ktoś spojrzeć na kod i powiedzieć mi dlaczego nie wyświetlają mi się temperatura, wilgotność i ciśnienie

A sam wyświetlacz działa poprawnie?

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

Jak wgram go w tej formie to działa tylko godzina i data a jak odznacze

lcd.print(bme.readTemperature())

to wyświetla również T=*C więc błąd leży gdzieś w odczytywaniu wartości z czujnika, sprawdziłem w porcie szerogowym i czujnik działa poprawnie.  

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.