15-04-2018, 18:25
Ja mam kilka takich TFT. Profesjonalne mierniki korzystają z czujników, których czas pomiaru może wynosić >1s, po co wtedy odświeżanie poniżej 1s. A statyczne obrazki wyglądają elegancko. Nie ma też powodu by wysyłać co 25ms cały ekran, można odświeżać wybrane fragmenty ekranu. Arduino to nie tylko Atmega328, są również army za 2$ jak blue pill, ESP, do tego 5$ za ekran i można się dobrze bawić. Na youtubie są wrzutki i z filmami odtwarzanymi z SD, nie tylko fotografie. Nikt nie każe też trzymać całego ekranu w buforze, nie można by wtedy uruchamiać tych fajnych oledów na Attiny, a widziałem parę gierek i stacji pogodowych tak zrobionych.
Jak zwykle Pana opinia jest niezwykle cenna. Nie pierwszy raz słyszę, że arduino to zabawki
. Ależ taki PRO musi się tu męczyć z nami amatorami, podziwiam, musi mieć Pan twardą psychikę.
W załączniku widać jak można tak napisać program by atmega328 nie miała co robić z czasem, a animacji może być kilka na ekranie.
Zmodyfikowałem kod biblioteki o plik z dzidami, także go tu dorzucam (oryginalna tutaj: https://github.com/greiman/SSD1306Ascii ), można też je wkleić na końcu wybranej czcionki. Analogicznie można w ten sam sposób rysować radar pokazany przez Robsona. Podzielić sobie ekran na różne segmenty, czyścić/wrzucać im zawartość wg potrzeb.
Jak zwykle Pana opinia jest niezwykle cenna. Nie pierwszy raz słyszę, że arduino to zabawki

W załączniku widać jak można tak napisać program by atmega328 nie miała co robić z czasem, a animacji może być kilka na ekranie.
Kod:
#include <Wire.h>
#include "SSD1306Ascii.h"
#include "SSD1306AsciiAvrI2c.h"
// 0X3C+SA0 - 0x3C or 0x3D
#define I2C_ADDRESS 0x3C
// Define proper RST_PIN if required.
#define RST_PIN -1
SSD1306AsciiAvrI2c oled;
//------------------------------------------------------------------------------
void setup() {
Wire.begin();
Wire.setClock(400000L);
#if RST_PIN >= 0
oled.begin(&Adafruit128x64, I2C_ADDRESS, RST_PIN);
#else // RST_PIN >= 0
oled.begin(&Adafruit128x64, I2C_ADDRESS);
#endif // RST_PIN >= 0
oled.setFont(font8x8dzida);// w tych fontach są strzalki zamiast cyfr 0-7
oled.clear();
oled.println("01234567");
oled.println();
oled.set2X();
oled.println("01234567");
oled.setFont(Adafruit5x7);
oled.print("To zostanie" );
//oled.set1X();
delay(1000);
oled.setFont(font8x8dzida);
}
//------------------------------------------------------------------------------
void loop() {
oled.set1X();// to szybszy sposób, zmieniamy jeden wiersz oleda (8px)
oled.clear(0, 8, 0, 0); //pamięć ekranu w oled podzielona jest na 8 wierszy, mozna tez czyscic wybrany zakres od piksela do pixela
static uint8_t licznik=0;
oled.print(licznik++);
if (licznik>6) licznik=0;
oled.set2X();
//oled.setCursor(48, 4);
static uint8_t licznik2=7; //dzida kreci w drugą strone
oled.clear(112, 128, 2, 3); // tu czyscimy w wierszu 2 i 3 od pixela 112 do 128
oled.print(licznik2--);
if (licznik2<1) licznik2=7;
delay(50); // to tylko dlatego, bo atmega sie nudzi
}
Miło być decenianym https://buycoffee.to/kaczakat