• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
LCD problem
#8
Pisałeś, że wgrywasz do domyślnego I2C i dziala, sprawdź czy typowe dla Twojej płytki przykłady się kompilują. Wszystko powinno działać OK na tym poziomie (nawet bez wgrywania).
To co pokazujesz na obrazku to nie jest wgrana biblioteka do katalogu projektu. Ikonka sugeruje, że jest plik typu ino, a powinny być dwa, .cpp lub .c i .h lub .hpp, możesz po prostu cały katalog biblioteki skopiować do katalogu projektu i
#include "TenKatalog/LiquidCrystal_I2C.h". Czyli w katalogu projektu mają być trzy pliki, np:
projekt.ino
LiquidCrystal_I2C.h
LiquidCrystal_I2C.cpp
Wyciągnąłem z pudła moją płytkę blupille, ja używam ją jako maple mini i kod wgrywam przez USB STM32duino bootloader , USB poza wgrywaniem robi za dodatkowy port COM.
Obawiam się, że masz inny CORE niż ja, ja mam taki stary/pierwszy wgrywany ręcznie do katalogu hardware w Arduino tam gdzie szkice, musisz przejrzeć przykłady swojego CORE, a nawet głębiej gdzieś w hardware znaleźć bibliotekę wire,  jak jest używana/zdefiniowana druga I2C.
To przykładowy skaner, działa bez problemu u mnie na podstawowych pinach I2C, w komentarzach jest opisane jak należy  przejść na alternatywne piny dla I2C pierwszy lub sprzętowy I2C drugi. Ale u mnie to nie działa, bo biblioteka tego nie ma w sobie. Ale z mojego pliku wire wyczytałem, że trzeba dodać dwie linijki, te które są z komentarzem po polsku. Jak je zakomentujesz to działa na pinach pierwszego I2C, a aktywne przełącza sią na drugie I2C. Sprawdziłem, że wykrywa z tym LCD na I2C drugim.
Kod:
// --------------------------------------
// i2c_scanner
//
// Version 1
//    This program (or code that looks like it)
//    can be found in many places.
//    For example on the Arduino.cc forum.
//    The original author is not know.
// Version 2, Juni 2012, Using Arduino 1.0.1
//     Adapted to be as simple as possible by Arduino.cc user Krodal
// Version 3, Feb 26  2013
//    V3 by louarnold
// Version 4, March 3, 2013, Using Arduino 1.0.3
//    by Arduino.cc user Krodal.
//    Changes by louarnold removed.
//    Scanning addresses changed from 0...127 to 1...119,
//    according to the i2c scanner by Nick Gammon
//    http://www.gammon.com.au/forum/?id=10896
// Version 5, March 28, 2013
//    As version 4, but address scans now to 127.
//    A sensor seems to use address 120.
//
// This sketch tests the standard 7-bit addresses
// Devices with higher bit address might not be seen properly.
//



/* Example pinmap for Bluepill I2Cs (by Testato)

I2C-1 standard pins: PB7(sda) PB6(scl)
Use it by "Wire" without pin declaration
  Wire.begin();

I2C-1 alternative pins: PB9(sda) PB8(scl)
Remap the first I2C before call begin()
  Wire.setSDA(PB9);
  Wire.setSCL(PB8);
  Wire.begin();

I2C-2: PB11(sda) PB10(scl)
Remap the second I2C before call begin()
  Wire.setSDA(PB11);
  Wire.setSCL(PB10);
  Wire.begin();

If you want to use the two I2Cs simultaneously, create a new instance for the second I2C
  TwoWire Wire2(PB11,PB10);
  Wire2.begin();

*/


#include <Wire.h>

TwoWire Wire2 (2,I2C_FAST_MODE); //zakomentuj dla I2C pierwszego
#define Wire Wire2 //zakomentuj dla I2C pierwszego

void setup() {

  Serial.begin(115200);
  Wire.begin();
  Serial.println("\nI2C Scanner");
}


void loop() {
  byte error, address;
  int nDevices;

  Serial.println("Scanning...");

  nDevices = 0;
  for(address = 1; address < 127; address++) {
    // The i2c_scanner uses the return value of
    // the Write.endTransmisstion to see if
    // a device did acknowledge to the address.

    Wire.beginTransmission(address);
    error = Wire.endTransmission();
   
    if (error == 0) {
      Serial.print("I2C device found at address 0x");
      if (address < 16)
        Serial.print("0");
      Serial.println(address, HEX);

      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");
  else
    Serial.println("done");

  delay(5000);           // wait 5 seconds for next scan
}
I to samo trzeba dodać do pliku biblioteki. Pewnie bez problemu można to zaszyć głębiej, tak by dodakowym parametrem tworzyć obiekt LCD dla 1 lub drugiego I2C, ale na razie nie umiem. Tak u mnie działa:
Początek pliku .cpp:
Kod:
// Based on the work by DFRobot

#include "LiquidCrystal_I2C.h"
#include <inttypes.h>
#if defined(ARDUINO) && ARDUINO >= 100

#include "Arduino.h"

#define printIIC(args)    Wire.write(args)
inline size_t LiquidCrystal_I2C::write(uint8_t value) {
    send(value, Rs);
    return 1;
}

#else
#include "WProgram.h"

#define printIIC(args)    Wire.send(args)
inline void LiquidCrystal_I2C::write(uint8_t value) {
    send(value, Rs);
}

#endif
#include "Wire.h"
TwoWire Wire2 (2,I2C_FAST_MODE); //zakomentuj dla I2C pierwszego
#define Wire Wire2 //zakomentuj dla I2C pierwszego
Ale te pokazane tu komendy mogą zadziałać z core do STM instalowanym przez managera płytek, nie mam go i nie sprawdzę. Nie byłem zadowolony z bootloadera i go wywaliłem, jak są dwa core to się gryzą.
I szkic z przykładowym Hello world.
Kod:
//YWROBOT
//Compatible with the Arduino IDE 1.0
//Library version:1.1
#include <Wire.h>
#include "LiquidCrystal_I2C.h"


LiquidCrystal_I2C lcd(0x27,20,4);  // set the LCD address to 0x27 for a 16 chars and 2 line display

void setup()
{
  lcd.init();                      // initialize the lcd
  lcd.init();
  // Print a message to the LCD.
  lcd.backlight();
  lcd.setCursor(3,0);
  lcd.print("Hello, world!");
  lcd.setCursor(2,1);
  lcd.print("Wire2 sie klania!");
   lcd.setCursor(0,2);
  lcd.print("Arduino LCM IIC 2004");
   lcd.setCursor(2,3);
  lcd.print("Power By Ec-yuan!");
}


void loop()
{
}
W sumie to ten scaner jest stary i powinno to działać u mnie, bo kojarzę autora, od niego to pobrałem z githuba, ale może coś potem pozmieniali, nie wiem. Dziala i tak, jak będę potrzebował używać dwóch jednoczesnie to się będę dalej zastanawiał dopiero.
Miło być decenianym https://buycoffee.to/kaczakat
 
Odpowiedź
  


Wiadomości w tym wątku
LCD problem - przez zak - 06-04-2022, 15:18
RE: LCD problem - przez kaczakat - 06-04-2022, 23:13
RE: LCD problem - przez zak - 08-04-2022, 11:39
RE: LCD problem - przez kaczakat - 08-04-2022, 12:15
RE: LCD problem - przez zak - 08-04-2022, 14:14
RE: LCD problem - przez kaczakat - 08-04-2022, 18:09
RE: LCD problem - przez zak - 08-04-2022, 18:22
RE: LCD problem - przez kaczakat - 08-04-2022, 23:41
RE: LCD problem - przez zak - 09-04-2022, 02:27
RE: LCD problem - przez kaczakat - 09-04-2022, 06:32
RE: LCD problem - przez zak - 09-04-2022, 15:50
RE: LCD problem - przez kaczakat - 09-04-2022, 16:46
RE: LCD problem - przez zak - 09-04-2022, 21:21
RE: LCD problem - przez kaczakat - 09-04-2022, 23:44
RE: LCD problem - przez zak - 10-04-2022, 01:48

Skocz do:


Przeglądający: 2 gości