displaytje

Software die niet past in bovenstaande onderwerpen
Berichten: 203
Geregistreerd: 11 Mei 2014, 11:22

displaytje

Berichtdoor vanschagen » 10 Jul 2016, 11:38

hallo ik heb dit displaytje dat werkt
http://www.elecfreaks.com/wiki/index.php?title=1.8%22_TFT_LCD:_TFT01-1.8
maar er zit een Graphictest sketch bij,dat werkt wel.
Maar blijft steeds op mediabuttons draaien.
ik wil dat hij alles herhaalt.
ik heb geprobeerd op veel plaatsen return; te zetten.
en ook al die mediabuttons eruit gehaald,maar dan herhaalt triangles zich dus blijft alles het zelfde.
wie kan mij vertellen waar de oplossing zit??
Bijlagen
graphicstest.zip
(2.51 KiB) 347 keer gedownload

Advertisement

Berichten: 4064
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: displaytje

Berichtdoor shooter » 11 Jul 2016, 09:40

de hele demo draait in de setup en wordt dus maar een keer uitgevoerd.

zet alles wat je herhaalt wilt hebben in een functie, en roep die aan in de loop

cpp code
/***************************************************
This is a library for the Adafruit 1.8" SPI display.

This library works with the Adafruit 1.8" TFT Breakout w/SD card
----> http://www.adafruit.com/products/358
The 1.8" TFT shield
----> https://www.adafruit.com/product/802
The 1.44" TFT breakout
----> https://www.adafruit.com/product/2088
as well as Adafruit raw 1.8" TFT display
----> http://www.adafruit.com/products/618

Check out the links above for our tutorials and wiring diagrams
These displays use SPI to communicate, 4 or 5 pins are required to
interface (RST is optional)
Adafruit invests time and resources providing this open source code,
please support Adafruit and open-source hardware by purchasing
products from Adafruit!

Written by Limor Fried/Ladyada for Adafruit Industries.
MIT license, all text above must be included in any redistribution
****************************************************/

#include <Adafruit_GFX.h> // Core graphics library
#include <Adafruit_ST7735.h> // Hardware-specific library
#include <SPI.h>


// For the breakout, you can use any 2 or 3 pins
// These pins will also work for the 1.8" TFT shield
#define TFT_CS 9
#define TFT_RST 8 // you can also connect this to the Arduino reset
// in which case, set this #define pin to 0!
#define TFT_DC 10

// Option 1 (recommended): must use the hardware SPI pins
// (for UNO thats sclk = 13 and sid = 11) and pin 10 must be
// an output. This is much faster - also required if you want
// to use the microSD card (see the image drawing example)
Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST);

// Option 2: use any pins but a little slower!
#define TFT_SCLK 13 // set these to be whatever pins you like!
#define TFT_MOSI 11 // set these to be whatever pins you like!
//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("Hello! ST7735 TFT Test");

// Use this initializer if you're using a 1.8" TFT
tft.initR(INITR_BLACKTAB); // initialize a ST7735S chip, black tab

// Use this initializer (uncomment) if you're using a 1.44" TFT
//tft.initR(INITR_144GREENTAB); // initialize a ST7735S chip, black tab

demo();
}
void loop() {
tft.invertDisplay(true);
delay(500);
tft.invertDisplay(false);
delay(500);
demo();
}
void demo()
{Serial.println("Initialized");

uint16_t time = millis();
tft.fillScreen(ST7735_BLACK);
time = millis() - time;

Serial.println(time, DEC);
delay(500);

// large block of text
tft.fillScreen(ST7735_BLACK);
testdrawtext("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur adipiscing ante sed nibh tincidunt feugiat. Maecenas enim massa, fringilla sed malesuada et, malesuada sit amet turpis. Sed porttitor neque ut ante pretium vitae malesuada nunc bibendum. Nullam aliquet ultrices massa eu hendrerit. Ut sed nisi lorem. In vestibulum purus a tortor imperdiet posuere. ", ST7735_WHITE);
delay(1000);

// tft print function!
tftPrintTest();
delay(4000);

// a single pixel
tft.drawPixel(tft.width()/2, tft.height()/2, ST7735_GREEN);
delay(500);

// line draw test
testlines(ST7735_YELLOW);
delay(500);

// optimized lines
testfastlines(ST7735_RED, ST7735_BLUE);
delay(500);

testdrawrects(ST7735_GREEN);
delay(500);

testfillrects(ST7735_YELLOW, ST7735_MAGENTA);
delay(500);

tft.fillScreen(ST7735_BLACK);
testfillcircles(10, ST7735_BLUE);
testdrawcircles(10, ST7735_WHITE);
delay(500);

testroundrects();
delay(500);

testtriangles();
delay(500);

mediabuttons();
delay(500);

Serial.println("done");
delay(1000);
}// end of demo()

void testlines(uint16_t color) {
tft.fillScreen(ST7735_BLACK);
for (int16_t x=0; x < tft.width(); x+=6) {
tft.drawLine(0, 0, x, tft.height()-1, color);
}
for (int16_t y=0; y < tft.height(); y+=6) {
tft.drawLine(0, 0, tft.width()-1, y, color);
}

tft.fillScreen(ST7735_BLACK);
for (int16_t x=0; x < tft.width(); x+=6) {
tft.drawLine(tft.width()-1, 0, x, tft.height()-1, color);
}
for (int16_t y=0; y < tft.height(); y+=6) {
tft.drawLine(tft.width()-1, 0, 0, y, color);
}

tft.fillScreen(ST7735_BLACK);
for (int16_t x=0; x < tft.width(); x+=6) {
tft.drawLine(0, tft.height()-1, x, 0, color);
}
for (int16_t y=0; y < tft.height(); y+=6) {
tft.drawLine(0, tft.height()-1, tft.width()-1, y, color);
}

tft.fillScreen(ST7735_BLACK);
for (int16_t x=0; x < tft.width(); x+=6) {
tft.drawLine(tft.width()-1, tft.height()-1, x, 0, color);
}
for (int16_t y=0; y < tft.height(); y+=6) {
tft.drawLine(tft.width()-1, tft.height()-1, 0, y, color);
}
}

void testdrawtext(char *text, uint16_t color) {
tft.setCursor(0, 0);
tft.setTextColor(color);
tft.setTextWrap(true);
tft.print(text);
}

void testfastlines(uint16_t color1, uint16_t color2) {
tft.fillScreen(ST7735_BLACK);
for (int16_t y=0; y < tft.height(); y+=5) {
tft.drawFastHLine(0, y, tft.width(), color1);
}
for (int16_t x=0; x < tft.width(); x+=5) {
tft.drawFastVLine(x, 0, tft.height(), color2);
}
}

void testdrawrects(uint16_t color) {
tft.fillScreen(ST7735_BLACK);
for (int16_t x=0; x < tft.width(); x+=6) {
tft.drawRect(tft.width()/2 -x/2, tft.height()/2 -x/2 , x, x, color);
}
}

void testfillrects(uint16_t color1, uint16_t color2) {
tft.fillScreen(ST7735_BLACK);
for (int16_t x=tft.width()-1; x > 6; x-=6) {
tft.fillRect(tft.width()/2 -x/2, tft.height()/2 -x/2 , x, x, color1);
tft.drawRect(tft.width()/2 -x/2, tft.height()/2 -x/2 , x, x, color2);
}
}

void testfillcircles(uint8_t radius, uint16_t color) {
for (int16_t x=radius; x < tft.width(); x+=radius*2) {
for (int16_t y=radius; y < tft.height(); y+=radius*2) {
tft.fillCircle(x, y, radius, color);
}
}
}

void testdrawcircles(uint8_t radius, uint16_t color) {
for (int16_t x=0; x < tft.width()+radius; x+=radius*2) {
for (int16_t y=0; y < tft.height()+radius; y+=radius*2) {
tft.drawCircle(x, y, radius, color);
}
}
}

void testtriangles() {
tft.fillScreen(ST7735_BLACK);
int color = 0xF800;
int t;
int w = tft.width()/2;
int x = tft.height()-1;
int y = 0;
int z = tft.width();
for(t = 0 ; t <= 15; t+=1) {
tft.drawTriangle(w, y, y, x, z, x, color);
x-=4;
y+=4;
z-=4;
color+=100;
}
}

void testroundrects() {
tft.fillScreen(ST7735_BLACK);
int color = 100;
int i;
int t;
for(t = 0 ; t <= 4; t+=1) {
int x = 0;
int y = 0;
int w = tft.width()-2;
int h = tft.height()-2;
for(i = 0 ; i <= 16; i+=1) {
tft.drawRoundRect(x, y, w, h, 5, color);
x+=2;
y+=3;
w-=4;
h-=6;
color+=1100;
}
color+=100;
}
}

void tftPrintTest() {
tft.setTextWrap(false);
tft.fillScreen(ST7735_BLACK);
tft.setCursor(0, 30);
tft.setTextColor(ST7735_RED);
tft.setTextSize(1);
tft.println("Hello World!");
tft.setTextColor(ST7735_YELLOW);
tft.setTextSize(2);
tft.println("Hello World!");
tft.setTextColor(ST7735_GREEN);
tft.setTextSize(3);
tft.println("Hello World!");
tft.setTextColor(ST7735_BLUE);
tft.setTextSize(4);
tft.print(1234.567);
delay(1500);
tft.setCursor(0, 0);
tft.fillScreen(ST7735_BLACK);
tft.setTextColor(ST7735_WHITE);
tft.setTextSize(0);
tft.println("Hello World!");
tft.setTextSize(1);
tft.setTextColor(ST7735_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(ST7735_WHITE);
tft.println("Sketch has been");
tft.println("running for: ");
tft.setTextColor(ST7735_MAGENTA);
tft.print(millis() / 1000);
tft.setTextColor(ST7735_WHITE);
tft.print(" seconds.");
}

void mediabuttons() {
// play
tft.fillScreen(ST7735_BLACK);
tft.fillRoundRect(25, 10, 78, 60, 8, ST7735_WHITE);
tft.fillTriangle(42, 20, 42, 60, 90, 40, ST7735_RED);
delay(500);
// pause
tft.fillRoundRect(25, 90, 78, 60, 8, ST7735_WHITE);
tft.fillRoundRect(39, 98, 20, 45, 5, ST7735_GREEN);
tft.fillRoundRect(69, 98, 20, 45, 5, ST7735_GREEN);
delay(500);
// play color
tft.fillTriangle(42, 20, 42, 60, 90, 40, ST7735_BLUE);
delay(50);
// pause color
tft.fillRoundRect(39, 98, 20, 45, 5, ST7735_RED);
tft.fillRoundRect(69, 98, 20, 45, 5, ST7735_RED);
// play color
tft.fillTriangle(42, 20, 42, 60, 90, 40, ST7735_GREEN);
}
paul deelen
shooter@home.nl

Berichten: 203
Geregistreerd: 11 Mei 2014, 11:22

Re: displaytje

Berichtdoor vanschagen » 11 Jul 2016, 09:55

perfect ,hartelijk dank
jij hebt het goed veranderd werkt zoals ik het wilde.
ik ga het eens goed bekijken.
ik was zelf ook al bezig om alles naar de loop te zetten.
maar dit is mooier
THANKS :D


zoals ik het bekijk,is het die 3 regels met demo???

Berichten: 4064
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: displaytje

Berichtdoor shooter » 11 Jul 2016, 17:51

ik heb van een deel van de setup een functie gemaakt, en die dan zowel in de setup als in de loop aangeroepen.

dus in de loop ga ik naar demo toe en de demo roept ook weer functies aan.
Je moet proberen om elk deel maximaal 1 pagina groot te maken.
je kunt ook delen van de demo oproepen, maar het ook gebruiken om zelf functies aan te roepen die in de library staan.

opdracht: maak een driehoek en laat die langzaam draaien, dus telkens 6 graden verder elke seconde.
is niet makkelijk, maar dan heb je ook wat zelf gemaakt.
paul deelen
shooter@home.nl

Berichten: 203
Geregistreerd: 11 Mei 2014, 11:22

Re: displaytje

Berichtdoor vanschagen » 12 Jul 2016, 09:38

ik kan er niks anders dan dit van maken.
Code: Alles selecteren
#include <Adafruit_GFX.h>   
#include <Adafruit_ST7735.h>
#include <SPI.h>

#define TFT_CS     9
#define TFT_RST    8
#define TFT_DC     10

Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS,  TFT_DC, TFT_RST);

#define TFT_SCLK 13 
#define TFT_MOSI 11 

void setup(void) {
 
 
  tft.initR(INITR_BLACKTAB);
 
}

void loop(void) {
 
 rotateTriangle();
 
}

void rotateTriangle(void) {
  for (uint8_t i=0; i<4; i++) {
    tft.fillScreen(ST7735_BLACK);
   
    tft.drawTriangle(20, 10, 10, 30, 30, 30, ST7735_RED);
   tft.fillTriangle(20,10,10,30,30,30,ST7735_RED);
    tft.setRotation(tft.getRotation()+1);
  }
}


Berichten: 4064
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: displaytje

Berichtdoor shooter » 12 Jul 2016, 23:43

en doet hij wat er gevraagd is, want ik heb natuurlijk niet zo een dsplaytje gebouwd staan.
vermoedelijk moet die +1 wat kleiner zijn (of juist groter dus 6 zijn.
en ik denk dat het allemaal wat te snel is om iets te zien dus gebruik even een delay.
paul deelen
shooter@home.nl

Berichten: 203
Geregistreerd: 11 Mei 2014, 11:22

Re: displaytje

Berichtdoor vanschagen » 13 Jul 2016, 07:38

werkt prima zo
en is prima te volgen hoor
ja die +1 zou kleiner kunnen.

Berichten: 4064
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: displaytje

Berichtdoor shooter » 13 Jul 2016, 10:15

die 1 dat zijn radialen, en dus is het een graad of 60 ipv 6 probeer maar eens 0.1 (maar dan wel in een variable zetten, dat is wel zo netjes.
paul deelen
shooter@home.nl

Berichten: 203
Geregistreerd: 11 Mei 2014, 11:22

Re: displaytje

Berichtdoor vanschagen » 13 Jul 2016, 11:37

ik heb nu dit,
Code: Alles selecteren
#include <Adafruit_GFX.h>   
#include <Adafruit_ST7735.h>
#include <SPI.h>

#define TFT_CS     9
#define TFT_RST    8
#define TFT_DC     10

Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS,  TFT_DC, TFT_RST);

#define TFT_SCLK 13 
#define TFT_MOSI 11 

void setup(void) {
 
 
  tft.initR(INITR_BLACKTAB);
 
}

void loop(void) {
 
 rotateTriangle();
 
}

void rotateTriangle(void) {
 
    tft.fillScreen(ST7735_BLACK);
   
   
   tft.fillTriangle(20,10,10,30,30,30,ST7735_RED);
    tft.setRotation(tft.getRotation()+1);
    delay(500);
  }



dat rotate van linker boven hoek ,zo door alle 4 hoeken van display

Terug naar Overige Software

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 2 gasten