From 766d03282b6306dff09d0927a323f7e8ee0eacbb Mon Sep 17 00:00:00 2001 From: sam Date: Tue, 27 Feb 2024 16:12:33 +0100 Subject: [PATCH 1/3] Added library --- .../Screen code/Adafruit_ST7796S_kbv-master.zip | Bin 0 -> 72163 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 arduino/Screen code/Adafruit_ST7796S_kbv-master.zip diff --git a/arduino/Screen code/Adafruit_ST7796S_kbv-master.zip b/arduino/Screen code/Adafruit_ST7796S_kbv-master.zip new file mode 100644 index 0000000000000000000000000000000000000000..a9573d761db9a747ad9d2f4849d9a111dcf19e83 GIT binary patch literal 72163 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 L6v3+U+ literal 0 HcmV?d00001 From 53af1d5858840eafa0bce4a51f281b5349b7ad70 Mon Sep 17 00:00:00 2001 From: sam Date: Tue, 27 Feb 2024 16:12:43 +0100 Subject: [PATCH 2/3] Added screen scripts --- .../Screen code/Screen-example-simplified.ino | 40 +++ arduino/Screen code/Screen-example.ino | 327 ++++++++++++++++++ 2 files changed, 367 insertions(+) create mode 100644 arduino/Screen code/Screen-example-simplified.ino create mode 100644 arduino/Screen code/Screen-example.ino diff --git a/arduino/Screen code/Screen-example-simplified.ino b/arduino/Screen code/Screen-example-simplified.ino new file mode 100644 index 0000000..511fcc8 --- /dev/null +++ b/arduino/Screen code/Screen-example-simplified.ino @@ -0,0 +1,40 @@ +#include +#include "Adafruit_GFX.h" +#include "Adafruit_ST7796S_kbv.h" + +#define TFT_CS 14 +#define TFT_DC 13 +#define TFT_RST 12 // RST can be set to -1 if you tie it to Arduino's reset +#define MOSI 11 +#define SCK 10 +#define MISO 9 + +//simplify the name of the library + +Adafruit_ST7796S_kbv tft = Adafruit_ST7796S_kbv(TFT_CS, TFT_DC, MOSI, SCK, TFT_RST, MISO); + + + +void setup() { + tft.begin(); // Initialize the display + tft.setRotation(3); // Set the rotation + tft.fillScreen(ST7796S_BLACK); // Fill the screen with black color + tft.setTextColor(ST7796S_WHITE); // Set the text color to white + tft.setTextSize(2); // Set the text size to 2 +} + +void loop() { + tft.setTextSize(5); // Set textsize + tft.setCursor(0, 0); // Set the cursor to the top left corner + //the cursor is where it types the text or shape on the screen, 0,0 is the topleft + tft.println("Hello, world!"); // Print the text + delay(2000); // Wait for 2 seconds + + tft.fillScreen(ST7796S_BLACK); // Clear the screen + + tft.setCursor(0, 0); // Set the cursor to the top left corner + tft.println("New text!"); // Print the new text + delay(2000); // Wait for 2 seconds + tft.fillScreen(ST7796S_BLACK); // Clear the screen + +} \ No newline at end of file diff --git a/arduino/Screen code/Screen-example.ino b/arduino/Screen code/Screen-example.ino new file mode 100644 index 0000000..fecb77f --- /dev/null +++ b/arduino/Screen code/Screen-example.ino @@ -0,0 +1,327 @@ +/*************************************************** + This is our library for the Adafruit HX8357D Breakout + ----> http://www.adafruit.com/products/2050 + + 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 +#include "Adafruit_GFX.h" +#include "Adafruit_ST7796S_kbv.h" + +// These are 'flexible' lines that can be changed +#define TFT_CS 14 +#define TFT_DC 13 +#define TFT_RST 12 // RST can be set to -1 if you tie it to Arduino's reset +#define MOSI 11 +#define SCK 10 +#define MISO 9 + +// Use hardware SPI (on Uno, #13, #12, #11) and the above for CS/DC +//Adafruit_ST7796S_kbv tft = Adafruit_ST7796S_kbv(TFT_CS, TFT_DC, TFT_RST); + +// SoftSPI - note that on some processors this might be *faster* than hardware SPI! +Adafruit_ST7796S_kbv tft = Adafruit_ST7796S_kbv(TFT_CS, TFT_DC, MOSI, SCK, TFT_RST, MISO); + + + +void setup() { + Serial.begin(9600); + Serial.println("ST7796S_kbv Test!"); + + tft.begin(); + + // read diagnostics (optional but can help debug problems) + uint8_t x = tft.readcommand8(ST7796S_RDMODE); + Serial.print("Display Power Mode: 0x"); Serial.println(x, HEX); + x = tft.readcommand8(ST7796S_RDMADCTL); + Serial.print("MADCTL Mode: 0x"); Serial.println(x, HEX); + x = tft.readcommand8(ST7796S_RDPIXFMT); + Serial.print("Pixel Format: 0x"); Serial.println(x, HEX); + x = tft.readcommand8(ST7796S_RDIMGFMT); + Serial.print("Image Format: 0x"); Serial.println(x, HEX); + x = tft.readcommand8(ST7796S_RDSELFDIAG); + Serial.print("Self Diagnostic: 0x"); Serial.println(x, HEX); + + Serial.println(F("Benchmark Time (microseconds)")); + + tft.setRotation(1); + + Serial.print(F("Text ")); + Serial.println(testText()); + delay(500); + + Serial.print(F("Lines ")); + Serial.println(testLines(ST7796S_CYAN)); + delay(500); + + Serial.print(F("Rectangles (outline) ")); + Serial.println(testRects(ST7796S_GREEN)); + delay(500); + + tft.fillScreen(ST7796S_BLACK); + Serial.print(F("Circles (outline) ")); + Serial.println(testCircles(10, ST7796S_RED)); + delay(500); + + + Serial.print(F("Triangles (outline) ")); + Serial.println(testTriangles()); + delay(500); + + Serial.print(F("Triangles (filled) ")); + Serial.println(testFilledTriangles()); + delay(500); + + + Serial.print(F("Rounded rects (outline) ")); + Serial.println(testRoundRects()); + delay(500); + + Serial.print(F("Rounded rects (filled) ")); + Serial.println(testFilledRoundRects()); + delay(500); + + Serial.println(F("Done!")); +} + + +void loop(void) { + for(uint8_t rotation=0; rotation<4; rotation++) { + tft.setRotation(rotation); + testText(); + delay(1000); + } +} + +unsigned long testFillScreen() { + unsigned long start = micros(); + tft.fillScreen(ST7796S_RED); + tft.fillScreen(ST7796S_GREEN); + tft.fillScreen(ST7796S_BLUE); + tft.fillScreen(ST7796S_WHITE); + return micros() - start; +} + + +unsigned long testText() { + tft.fillScreen(ST7796S_BLACK); + unsigned long start = micros(); + tft.setCursor(0, 0); + tft.setTextColor(ST7796S_WHITE); tft.setTextSize(1); + tft.println("Hello World!"); + tft.setTextColor(ST7796S_YELLOW); tft.setTextSize(2); + tft.println(1234.56); + tft.setTextColor(ST7796S_RED); tft.setTextSize(3); + tft.println(0xDEADBEEF, HEX); + tft.println(); + tft.setTextColor(ST7796S_GREEN); + tft.setTextSize(5); + tft.println("Groop"); + tft.setTextSize(2); + tft.println("I implore thee,"); + tft.setTextSize(1); + tft.println("my foonting turlingdromes."); + tft.println("And hooptiously drangle me"); + tft.println("with crinkly bindlewurdles,"); + tft.println("Or I will rend thee"); + tft.println("in the gobberwarts"); + tft.println("with my blurglecruncheon,"); + tft.println("see if I don't!"); + + tft.setTextColor(ST7796S_WHITE); + tft.println(F("Alice was beginning to get very tired of sitting by her sister on the bank, and of having nothing to do: once or twice she had peeped into the book her sister was reading, but it had no pictures or conversations in it, 'and what is the use of a book,' thought Alice 'without pictures or conversations?'")); + +tft.println(F("So she was considering in her own mind (as well as she could, for the hot day made her feel very sleepy and stupid), whether the pleasure of making a daisy-chain would be worth the trouble of getting up and picking the daisies, when suddenly a White Rabbit with pink eyes ran close by her.")); + +tft.println(F("There was nothing so very remarkable in that; nor did Alice think it so very much out of the way to hear the Rabbit say to itself, 'Oh dear! Oh dear! I shall be late!' (when she thought it over afterwards, it occurred to her that she ought to have wondered at this, but at the time it all seemed quite natural); but when the Rabbit actually took a watch out of its waistcoat-pocket, and looked at it, and then hurried on, Alice started to her feet, for it flashed across her mind that she had never before seen a rabbit with either a waistcoat-pocket, or a watch to take out of it, and burning with curiosity, she ran across the field after it, and fortunately was just in time to see it pop down a large rabbit-hole under the hedge.")); + +tft.println(F("In another moment down went Alice after it, never once considering how in the world she was to get out again.")); + +tft.println(F("The rabbit-hole went straight on like a tunnel for some way, and then dipped suddenly down, so suddenly that Alice had not a moment to think about stopping herself before she found herself falling down a very deep well.")); + +tft.println(F("Either the well was very deep, or she fell very slowly, for she had plenty of time as she went down to look about her and to wonder what was going to happen next. First, she tried to look down and make out what she was coming to, but it was too dark to see anything; then she looked at the sides of the well, and noticed that they were filled with cupboards and book-shelves; here and there she saw maps and pictures hung upon pegs. She took down a jar from one of the shelves as she passed; it was labelled 'ORANGE MARMALADE', but to her great disappointment it was empty: she did not like to drop the jar for fear of killing somebody, so managed to put it into one of the cupboards as she fell past it.")); + + return micros() - start; +} + +unsigned long testLines(uint16_t color) { + unsigned long start, t; + int x1, y1, x2, y2, + w = tft.width(), + h = tft.height(); + + tft.fillScreen(ST7796S_BLACK); + + x1 = y1 = 0; + y2 = h - 1; + start = micros(); + for(x2=0; x20; i-=6) { + i2 = i / 2; + start = micros(); + tft.fillRect(cx-i2, cy-i2, i, i, color1); + t += micros() - start; + // Outlines are not included in timing results + tft.drawRect(cx-i2, cy-i2, i, i, color2); + } + + return t; +} + +unsigned long testFilledCircles(uint8_t radius, uint16_t color) { + unsigned long start; + int x, y, w = tft.width(), h = tft.height(), r2 = radius * 2; + + tft.fillScreen(ST7796S_BLACK); + start = micros(); + for(x=radius; x10; i-=5) { + start = micros(); + tft.fillTriangle(cx, cy - i, cx - i, cy + i, cx + i, cy + i, + tft.color565(0, i, i)); + t += micros() - start; + tft.drawTriangle(cx, cy - i, cx - i, cy + i, cx + i, cy + i, + tft.color565(i, i, 0)); + } + + return t; +} + +unsigned long testRoundRects() { + unsigned long start; + int w, i, i2, + cx = tft.width() / 2 , + cy = tft.height() / 2 ; + + tft.fillScreen(ST7796S_BLACK); + w = min(tft.width(), tft.height()); + start = micros(); + for(i=0; i25; i-=6) { + i2 = i / 2; + tft.fillRoundRect(cx-i2, cy-i2, i-20, i-20, i/8, tft.color565(100, i/2, 100)); + } + + return micros() - start; +} From 3f60a08695ad8eedca04199ea60a436aea2a4199 Mon Sep 17 00:00:00 2001 From: sam Date: Tue, 27 Feb 2024 16:12:51 +0100 Subject: [PATCH 3/3] Added definition of done --- teamdocumentatie/samenwerkingscontract.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/teamdocumentatie/samenwerkingscontract.md b/teamdocumentatie/samenwerkingscontract.md index e03f64a..6b901bf 100644 --- a/teamdocumentatie/samenwerkingscontract.md +++ b/teamdocumentatie/samenwerkingscontract.md @@ -7,6 +7,14 @@ Afspraken documenten delen Gitlab, discord Geen spaties in gitlab documenten/mappen Procedure bij niet-nakomen afspraken Communicatie is sleutel +Definition of done: +- Code is geschreven +- Code is getest +- Code is gereviewd +- Code is gedocumenteerd +- Code Werkt +- Code is geïntegreerd + Taakverdeling Veranderd elke sprint