Microcontroller speeltjes 2

Door enermax op zondag 16 februari 2020 12:01 - Reacties (0)
Categorie: -, Views: 1.136

TT-Go display is een leuk ESP32 bordje klik. Wifi is geintegreerd maar ook een oledscherm, 2 knoppen, usb en een batterij (laad)aansluiting. In het begin had ik compiler problemen. Via deze video is het wel gelukt. Als je deze error krijgt: digitalWrite(TFT_BL, TFT_BACKLIGHT_ON); dan maak er van digitalWrite(TFT_BL, 1);
ttgo
Hulp video
TTGo


Als het je lukt bovenstaande code te flashen dan kun je zelf een plaatje maken met: Image converver 565.
Save het plaatje over het originele bmp.h plaatje. Open de file en schrijf het woord ttgo op de goede plek.
Origineel: const unsigned short 16998b6[40000] PROGMEM={
Aangepast: const unsigned short ttgo[400000] PROGMEM={

Een simpel voorbeeld waarbij het logo van Tweakers als bmp.h is opgeslagen. Met knop a of b lees je het voltage uit, of wordt er 5x tweakers geschreven.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
#include <TFT_eSPI.h>
//#include <SPI.h>
#include <Wire.h>
#include "bmp.h"

#ifndef TFT_DISPOFF
#define TFT_DISPOFF 0x28
#endif

#ifndef TFT_SLPIN
#define TFT_SLPIN   0x10
#endif

#define TFT_MOSI            19
#define TFT_SCLK            18
#define TFT_CS              5
#define TFT_DC              16
#define TFT_RST             23

#define TFT_BL          4  // Display backlight control pin
#define ADC_EN          14
#define ADC_PIN         34
#define BUTTON_1        35
#define BUTTON_2        0

TFT_eSPI tft = TFT_eSPI(135, 240); // Invoke custom library

int vref = 1100; //voltage measurement variable

//! Long time delay, it is recommended to use shallow sleep, which can effectively reduce the current consumption
void espDelay(int ms){   
    esp_sleep_enable_timer_wakeup(ms * 1000);
    esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_PERIPH,ESP_PD_OPTION_ON);
    esp_light_sleep_start();
}

void showVoltage() {
    static uint64_t timeStamp = 0;
    if (millis() - timeStamp > 1000) {
        timeStamp = millis();
        uint16_t v = analogRead(ADC_PIN);
        float battery_voltage = ((float)v / 4095.0) * 2.0 * 3.3 * (vref / 1000.0);
        String voltage = "Voltage :" + String(battery_voltage) + "V";
        Serial.println(voltage);
        tft.fillScreen(TFT_BLACK);
        tft.setTextSize(2);
        tft.setTextDatum(MC_DATUM);
        tft.drawString(voltage,  tft.width() / 2, tft.height() / 2 );
    }
}

void tweakers() {
    tft.setCursor(0, 0);
    tft.fillScreen(TFT_BLACK);  //other examples TFT_red 
    tft.setTextColor(TFT_WHITE); //set text color
    for (int i = 1; i < 6; i++) { //print tweakers different size
         tft.setTextSize(i);
         tft.println("tweakers");
    }
   tft.setTextSize(1);
}

void setup() {
    pinMode(TFT_BL, OUTPUT); // Set backlight pin to output mode
    pinMode(BUTTON_1, INPUT);
    pinMode(BUTTON_2, INPUT);
    Serial.begin(115200);
    Serial.println("Start");
    tft.init();
    tft.setRotation(1); // print horizontal or vertical
    tft.setCursor(0, 0);
    digitalWrite(TFT_BL, 1); // Turn backlight on.

    tft.setSwapBytes(true);
    tft.pushImage(0, 0,  240, 135, ttgo); //sent image to display; change dimension if needed
    tft.setCursor(0, 0);
    tft.setTextSize(2);
    tft.println("Press button A or B");
}

void loop() 
{
  if((digitalRead(BUTTON_1))==0){
    showVoltage();
  }
  if((digitalRead(BUTTON_2)==0)){
    tweakers();
  }
  espDelay(100);
}


Bonus:
Als dit alles gelukt is, tijd voor een spelletje Snake of Space invaders
https://tweakers.net/ext/f/69LxojxYHQ4h1qWGcqSvF1b8/medium.gif https://tweakers.net/ext/f/VAnsUSLBSeSxPLPQdJTk6gAd/medium.gif

Bonus 2
Een video met honderden voorbeelden voor dit bordje.

Volgende: Microcontroller speeltjes 3 16-02 Microcontroller speeltjes 3
Volgende: Microcontroller speeltjes 1 16-02 Microcontroller speeltjes 1

Reacties

Er zijn nog geen reacties op deze post


Om te kunnen reageren moet je ingelogd zijn. Via deze link kun je inloggen als je al geregistreerd bent. Indien je nog geen account hebt kun je er hier één aanmaken.