• 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
RPI Pico W i epaper
#1
Cześć mam do Was ogromną prośbe, powiedzcie mi jak to połączyć bo juz niemam sił.

Wyświetlacz ma wyjścia:
-busy
-rst
-dc
-cs
-clk
-din
-gnd
-vcc
No i właśnie jak to podłączyć do pico?
 
Odpowiedź
#2
Jak to jest SPI to Din MOSI, clk SCK, a resztę to pewnie definiujesz w programie lub bibliotece.
Jak wpiszesz w Google "pico arduino LCD SPI schematic" to znajdziesz wiele przykładowych podłączeń, schematów.
http://helloraspberrypi.blogspot.com/202...8x160.html
Kod:
// For the Pico use these #define lines
#define TFT_MISO  0
#define TFT_MOSI  3
#define TFT_SCLK  2
#define TFT_CS   20  // Chip select control pin
#define TFT_DC   18  // Data Command control pin
#define TFT_RST  19  // Reset pin (could connect to Arduino RESET pin)
//#define TFT_BL     // LED back-light
MOSI MISO i CLK powinny być zgodne ze sprzętowym w uC, a reszta to już byle były wolne piny IO.
Miło być decenianym https://buycoffee.to/kaczakat
 
Odpowiedź
#3
Ok dzięki,ale jeszcze jedno pytanie ...wiem ze MISO to DIN, a MOSI?
 
Odpowiedź
#4
(27-10-2023, 05:55)loki1707 napisał(a): Ok dzięki,ale jeszcze jedno pytanie ...wiem ze MISO to DIN, a MOSI?

Z wyświetlacza często nie ma możliwości odczytu - więc jest niepotrzebny.
 
Odpowiedź
#5
To ja już nie wiem co zle robie....
Kod:
#include"Arduino.h"
#include <GxEPD2_BW.h>
#include <Fonts/FreeMonoBold9pt7b.h>
#include "bitmaps/Bitmaps400x300.h"

#define ENABLE_GxEPD2_GFX 0
#define MAX_DISPLAY_BUFFER_SIZE 131072ul  // e.g. half of available ram
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))


// Raspberry Pico W, pins:
static const uint8_t EPD_MISO = 19;
static const uint8_t EPD_DC   = 16;
static const uint8_t EPD_CS   = 17;
static const uint8_t EPD_SCK  = 18;
static const uint8_t EPD_MOSI = 4; //gnd
static const uint8_t EPD_RST  = 20;
static const uint8_t EPD_BUSY = 21;

#if defined(ARDUINO_ARCH_RP2040) && defined(ARDUINO_RASPBERRY_PI_PICO)
// SPI pins used by GoodDisplay DESPI-PICO. note: steals standard I2C pins PIN_WIRE_SDA (6), PIN_WIRE_SCL (7)
// uncomment next line for use with GoodDisplay DESPI-PICO. // MbedSPI(int miso, int mosi, int sck);
arduino::MbedSPI SPI0(EPD_MISO, EPD_MOSI, EPD_SCK);  // need be valid pins for same SPI channel, else fails blinking 4 long 4 short
#endif

GxEPD2_BW<GxEPD2_420, MAX_HEIGHT(GxEPD2_420)> display(GxEPD2_420(EPD_CS, EPD_DC, EPD_RST, EPD_BUSY));
//#define GxEPD2_DRIVER_CLASS GxEPD2_420     // GDEW042T2   400x300, UC8176 (IL0398), (WFT042CZ15)
//#define GxEPD2_DRIVER_CLASS GxEPD2_420_M01 // GDEW042M01  400x300, UC8176 (IL0398), (WFT042CZ15)
void setup() {
  Serial.begin(115200);
  Serial.println();
  Serial.println("setup");
  delay(100);

#if defined(ARDUINO_ARCH_RP2040) && defined(ARDUINO_RASPBERRY_PI_PICO)
  // uncomment next line for use with GoodDisplay DESPI-PICO, or use the extended init method
  display.epd2.selectSPI(SPI0, SPISettings(4000000, MSBFIRST, SPI_MODE0));
  // uncomment next 2 lines to allow recovery from configuration failures
  pinMode(15, INPUT_PULLUP);            // safety pin
  while (!digitalRead(15)) delay(100);  // check safety pin for fail recovery
#endif

  //display.init(115200); // default 10ms reset pulse, e.g. for bare panels with DESPI-C02
  display.init(115200, true, 2, false);  // USE THIS for Waveshare boards with "clever" reset circuit, 2ms reset pulse
  //display.init(115200, true, 10, false, SPI0, SPISettings(4000000, MSBFIRST, SPI_MODE0)); // extended init method with SPI channel and/or settings selection
  // first update should be full refresh
  display.fillScreen(GxEPD_BLACK);
//    display.setFullWindow();
//    display.drawCircle(EPD_SCK, 14, 2, GxEPD_BLACK);
//    display.display(false);


}
void loop(){


}
 
Odpowiedź
#6
Chyba już wiem w czym problem:
Kod:
GxEPD2_Example.ino:27:10: error: 'MbedSPI' in namespace 'arduino' does not name a type
Tylko i tak nie wiem jak to rozwiązać Sad
 
Odpowiedź
#7
Ale z tego komunikatu wynika, że nie podłączenie jest problemem, tylko samo przygotowanie programu, jeszcze daleka droga przed tobą - napisanie programu, kompilacja, wgranie, testy i poprawki.
Może masz core nie halo, przykłady powinny się kompilować bez problemu nawet jeśli jeszcze PICO nie masz w planach kupić.
Ściągnąłem core i zainstalowałem wg instrukcji stąd: https://github.com/earlephilhower/arduino-pico, wersja jakoś 3.2, wybrałem na początek PICO W, skompilował się przykład dla HTTP client, potem wybrałem coś z SPI, datalogger z SD, konfiguracja SPI wygląda tu tak:
// See: https://datasheets.raspberrypi.com/picow...Pinout.pdf
const int _MISO = 4;
const int _MOSI = 7;
const int _CS = 5;
const int _SCK = 6;
Przy okazji jest link do dokumentacji, kompilacja OK, czyli na tych pinach skompilowało się OK, to nie znaczy, że inne są złe, po otwarciu PDF widać, że SPI może być na pinach alternatywnych 6-10, 21-25, jest też SPI1. Nie wiem czy w ogóle nie ma błędów w PDF, przykład używa 4 od MISO, ten pin jest też SDA do I2C, a dokumentacja podaje SCK SPI, zwykle coś co jest do przesyłania danych nie jest zegarem, ale to kwestia testów, może jest tak elastyczne, że można tym motać.
A potem trzeba powalczyć z bibliotekami, nie wiem w czym piszesz, ale jak w Arduino IDE to nie ma potrzeby includować Arduino.
Skąd masz ten przykład do ekranu? Może wrzucę do siebie i spróbuję skompilować.
To ta biblioteka https://github.com/ZinggJM/GxEPD2/tree/master ? Uruchomiłeś ten ekran ze zwykłym Arduino UNO/NANO?
Miło być decenianym https://buycoffee.to/kaczakat
 
Odpowiedź
#8
Jednak ja głupi jestem,takie proste, a tyle czasu zmarnowałem.Dzięki wielkie juz wszystko działa.
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości