Необходима помощь в скетче

Тема в разделе "Arduino & Shields", создана пользователем rus+LAN, 24 фев 2017.

  1. rus+LAN

    rus+LAN Нуб

    Код (C++):
    #include <SPI.h>
    #include <nRF24L01.h>
    #include <RF24.h>
    #include <Adafruit_GFX.h> // Libreria de graficos
    #include <Adafruit_TFTLCD.h> // Libreria de LCD TFT 2/4

    RF24 radio(1, 10);
    const uint64_t pipe = 0xE8E8F0F0E1LL;

    // Pines de conexion del LCD
    #define LCD_CS A3 // Chip Select - Pin analogico 3
    #define LCD_CD A2 // Command/Data - Pin Analogico 2
    #define LCD_WR A1 // LCD Write - Pin Analogico 1
    #define LCD_RD A0 // LCD Read - Pin Analogico 0
    #define LCD_RESET A4 // LCD Reset - Pin Analogico 4

    Adafruit_TFTLCD tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET); // Instancia del LCD

    #define BLACK 0x0000 // Определим цвета, чтобы обратиться к ним с вашим именем
    #define RED 0xF800 // вместо того чтобы использовать шестнадцатеричный код.
    #define GREEN 0x07E0
    #define WHITE 0xFFFF
    #define BLUE 0x001F
    #define CYAN 0x07FF
    #define YELLOW 0xFFE0
    #define MAGENTA 0xF81F

    void setup(void)
    { tft.begin(0x9325); // Нициализация адреса контроллера
    // Адреса контролеров: 0x9325, 0x9328,0x7575, 0x9341, 0x8357,
    // 0x0154,0x9488


    tft.fillScreen(BLACK); // Очистка в черный цвет экран

    Serial.begin(9600);
    Serial.println("Temperature Starting.....");

    Serial.println("com");
    radio.begin();
    radio.openReadingPipe(1, pipe);
    radio.startListening();

    }

    void loop(void)
    {
    tft.setRotation(1);
    tft.setCursor(20, 42);
    tft.setTextSize(3);
    tft.setTextColor(GREEN);


    if (radio.available()) {
    float temperature = 0;

    radio.read(&temperature, sizeof(float));

    Serial.print("Temperature : ");
    Serial.println(temperature);
    tft.setRotation(1);
    tft.setCursor(20, 42);
    tft.setTextSize(3);
    tft.setTextColor(GREEN);
    tft.print("Temp = ");
    tft.println(temperature);
    tft.setRotation(1);

    tft.setCursor(230, 42);
    tft.setTextSize(3);
    tft.setTextColor(color, bkColor);
    tft.print("C");
    delay(10000);

    }
    //else
    {
    //tft.setRotation(1);
    //tft.setCursor(230, 42);
    //tft.setTextSize(4);
    //tft.setTextColor(RED);
    //tft.print("XXX");
    }
    }
    скетч для дистанционного приема температуры. Работает, но данные температуры на TFT накладываются друг на друга. По серийному порту нормально. Я так понимаю необходимо прописать обновление данных предварительно удалив старые. Скетч собирал по крупинкам )). Тяжело дается наука. Подскажите, что не так ?
     
    Последнее редактирование: 28 фев 2017
  2. ostrov

    ostrov Гуру

    [​IMG]
     
    rus+LAN и Tomasina нравится это.
  3. По-видимому так - установить различные цвета текста и фона
    Код (C++):
    tft.setTextColor(color, bkColor);
    При несовпадении цветов print закрашивает все точки знакоместа - см.
    Код (C++):
    Adafruit_GFX::drawChar(int16_t x, int16_t y, unsigned char c,
    uint16_t color, uint16_t bg, uint8_t size)
    Если новая выводимая строка короче предыдущей, явно стирать остаток старой (выводить пробелы).
     
  4. rkit

    rkit Гуру

    Вам нужно вызывать функцию очистки экрана.
    А чтобы наука давалась, нужно заниматься наукой, а не копированием обрывков чужих работ без понимания.
     
  5. rus+LAN

    rus+LAN Нуб

    да, как выход так и сделал ранее, Согласен, заниматься надо. Пока это только хобби.
     
  6. rus+LAN

    rus+LAN Нуб

    Спасибо за ответ, но цвета разные : фон черный, символы зеленые.