tft 1.8 st7735
- Войдите на сайт для отправки комментариев
Втр, 26/03/2019 - 20:17
Помогите вывести информацию с датчика bmp280 на дисплей
библиотека https://github.com/adafruit/Adafruit-ST7735-Library
в попытке вывода одного блока информации на дисплей, сократил скетч из примера до:
#include <Adafruit_GFX.h> // Core graphics library #include <Adafruit_ST7735.h> // Hardware-specific library for ST7735 #include <Adafruit_ST7789.h> // Hardware-specific library for ST7789 #include <SPI.h> #ifdef ADAFRUIT_HALLOWING #define TFT_CS 39 // Hallowing display control pins: chip select #define TFT_RST 37 // Display reset #define TFT_DC 38 // Display data/command select #define TFT_BACKLIGHT 7 // Display backlight pin #else // For the breakout board, you can use any 2 or 3 pins. // These pins will also work for the 1.8" TFT shield. #define TFT_CS 10 #define TFT_RST 9 // Or set to -1 and connect to Arduino RESET pin #define TFT_DC 8 #endif // OPTION 1 (recommended) is to use the HARDWARE SPI pins, which are unique // to each board and not reassignable. For Arduino Uno: MOSI = pin 11 and // SCLK = pin 13. This is the fastest mode of operation and is required if // using the breakout board's microSD card. // For 1.44" and 1.8" TFT with ST7735 (including HalloWing) use: Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST); // For 1.54" TFT with ST7789: //Adafruit_ST7789 tft = Adafruit_ST7789(TFT_CS, TFT_DC, TFT_RST); // OPTION 2 lets you interface the display using ANY TWO or THREE PINS, // tradeoff being that performance is not as fast as hardware SPI above. //#define TFT_MOSI 11 // Data out //#define TFT_SCLK 13 // Clock out //Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_MOSI, TFT_SCLK, TFT_RST); float p = 3.1415926; void setup(void) { Serial.begin(9600); Serial.print(F("Hello! ST77xx TFT Test")); #ifdef ADAFRUIT_HALLOWING tft.initR(INITR_HALLOWING); // Initialize HalloWing-oriented screen pinMode(TFT_BACKLIGHT, OUTPUT); digitalWrite(TFT_BACKLIGHT, HIGH); // Backlight on #else tft.initR(INITR_BLACKTAB); // Init ST7735S chip, black tab #endif Serial.println(F("Initialized")); uint16_t time = millis(); tft.fillScreen(ST77XX_BLACK); time = millis() - time; Serial.println(time, DEC); delay(500); Serial.println("done"); delay(1000); } void loop() { tft.invertDisplay(true); delay(500); tft.invertDisplay(false); delay(500); } void tftPrintTest() { tft.setTextWrap(false); tft.fillScreen(ST77XX_BLACK); tft.setCursor(0, 30); tft.setTextColor(ST77XX_RED); tft.setTextSize(1); tft.println("Hello World!"); tft.setTextColor(ST77XX_YELLOW); tft.setTextSize(2); tft.println("Hello World!"); tft.setTextColor(ST77XX_GREEN); tft.setTextSize(3); tft.println("Hello World!"); tft.setTextColor(ST77XX_BLUE); tft.setTextSize(4); tft.print(1234.567); delay(1500); tft.setCursor(0, 0); tft.fillScreen(ST77XX_BLACK); tft.setTextColor(ST77XX_WHITE); tft.setTextSize(0); tft.println("Hello World!"); tft.setTextSize(1); tft.setTextColor(ST77XX_GREEN); tft.print(p, 6); tft.println(" Want pi?"); tft.println(" "); tft.print(8675309, HEX); // print 8,675,309 out in HEX! tft.println(" Print HEX!"); tft.println(" "); tft.setTextColor(ST77XX_WHITE); tft.println("Sketch has been"); tft.println("running for: "); tft.setTextColor(ST77XX_MAGENTA); tft.print(millis() / 1000); tft.setTextColor(ST77XX_WHITE); tft.print(" seconds."); }
но не работает, только белый экран(
Мне бы пример, вывода на экран одного слова, а дальше я бы сам.
Ну или вывод одного параметра из моего проекта:
#include <Adafruit_Sensor.h> #include <Wire.h> #include <CayenneMQTTESP8266.h> #include <Adafruit_BMP280.h> #include <SimpleTimer.h> extern "C" { #include "user_interface.h"; } char ssid[] = "ASUS-CDC0" ; char wifiPassword[] = "00000000" ; SimpleTimer timer; char username[] = "be69a3f0-5d168a516101" ; char password[] = "3f6b82d32ed8fd523c5857b9" ; char clientID[] = "ecff01c0-3ee3d2557533" ; float in_216184383_1; float in_216184383_2; float Temperature_145241870_1; float Pressure_145241870_1; float Altitude_145241870_1; #define SEALEVELPRESSURE_HPA_145241870_1 (1013.25) Adafruit_BMP280 bmp_145241870_1; // I2C float in_216184383_3; int in_216184383_4; int ESP8266_AnalogInputValue; unsigned long ESP8266_AnalogInputValue_StR; void setup() { ESP8266_AnalogInputValue_StR = millis() + 500 ; Cayenne.begin(username, password, clientID, ssid, wifiPassword); timer.setInterval(5000L, sendUptime_216184383_1); timer.setInterval(30000L, sendUptime_216184383_2); if (!bmp_145241870_1.begin()) { bmp_145241870_1.readTemperature(); while (1); } timer.setInterval(300000L, sendUptime_216184383_3); timer.setInterval(1500L, sendUptime_216184383_4); } void loop() {if(_isTimer(ESP8266_AnalogInputValue_StR, 500)) { ESP8266_AnalogInputValue_StR = millis(); ESP8266_AnalogInputValue = analogRead(A0); } //Плата:1 //Наименование:Esp Cayenne.loop(); timer.run(); { Temperature_145241870_1 = bmp_145241870_1.readTemperature(); Pressure_145241870_1 = bmp_145241870_1.readPressure() / 100.0F * 0.7500; Altitude_145241870_1 = bmp_145241870_1.readAltitude(1032.4); } in_216184383_3 = Altitude_145241870_1; in_216184383_2 = Pressure_145241870_1; in_216184383_1 = Temperature_145241870_1; in_216184383_4 = ESP8266_AnalogInputValue; } bool _isTimer(unsigned long startTime, unsigned long period ) { unsigned long currentTime; currentTime = millis(); if (currentTime>= startTime) {return (currentTime>=(startTime + period));} else {return (currentTime >=(4294967295-startTime+period));} } void sendUptime_216184383_1() { Cayenne.virtualWrite( 0 , in_216184383_1 ); } void sendUptime_216184383_2() { Cayenne.virtualWrite( 1 , in_216184383_2 ); } void sendUptime_216184383_3() { Cayenne.virtualWrite( 2 , in_216184383_3 ); } void sendUptime_216184383_4() { Cayenne.virtualWrite( 3 , in_216184383_4 ); }
А "Hello word" на экран выводили? В примерах к библиотеке должно это быть.