Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "SPI.h"
- #include "Adafruit_GFX.h"
- #include "Adafruit_GC9A01A.h"
- #define TFT_DC 7
- #define TFT_CS 10
- // Hardware SPI on Feather or other boards
- Adafruit_GC9A01A tft(TFT_CS, TFT_DC);
- int boostPressure;
- int boostMax = 0;
- int boostMax1 = 2500;
- int boostMin = 0;
- int boostMin1 = 0;
- int ypos = 128;
- unsigned long startMillis;
- unsigned long currentMillis;
- const unsigned long period = 100;
- const int sensorHistoryLength = 128;
- int sensorHistory[sensorHistoryLength];
- int sensorHistoryPos = sensorHistoryLength - 1;
- #define DISPLAY_BACKLIGHT A9 // Pin for backlight control (-1 for none)
- #define BACKLIGHT 1
- void display_meter(float scale) {
- float angle = (PI / 1023) * analogRead(A7); // map analog in 0,1023, to 0.00,3.14
- int length = 50; // line height Ratio of Screen 0-64
- const byte x0 = 120; // x0 Line Start 0-128
- const byte y0 = 120; // y0 Line Start 0-64
- byte x1 = x0 - length * cos (angle);
- byte y1 = y0 - length * sin (angle);
- tft.drawLine(x0, y0, x1, y1, GC9A01A_GREEN); // write to screen
- }
- void Text(float scale) {
- tft.setTextColor(GC9A01A_MAGENTA, GC9A01A_BLACK );
- tft.setCursor(180, 140);
- tft.setTextSize(2);
- char cstr[6];
- dtostrf((float)boostPressure / 100 , 1, 2, cstr);
- tft.print(cstr);
- tft.setCursor(50, 140);
- //tft.print("NOW");
- tft.setCursor(180, 160);
- dtostrf((float)boostMax / 100 , 1, 2, cstr);
- tft.print(cstr);
- //tft.setCursor(50, 80);
- //tft.print("MAX");
- }
- void setup() {
- // Serial.begin(9600)
- tft.begin();
- tft.fillScreen(GC9A01A_BLACK);
- startMillis = millis();
- tft.drawLine(119, 20, 119, 40, GC9A01A_GREEN);
- tft.drawLine(120, 20, 120, 40, GC9A01A_GREEN);
- tft.drawLine(121, 20, 121, 40, GC9A01A_GREEN);
- tft.drawLine(20, 119, 40, 119, GC9A01A_GREEN);
- tft.drawLine(20, 120, 40, 120, GC9A01A_GREEN);
- tft.drawLine(20, 121, 40, 121, GC9A01A_GREEN);
- tft.drawLine(119, 220, 119, 200, GC9A01A_GREEN);
- tft.drawLine(120, 220, 120, 200, GC9A01A_GREEN);
- tft.drawLine(121, 220, 121, 200, GC9A01A_GREEN);
- tft.drawLine(200, 119, 220, 119, GC9A01A_GREEN);
- tft.drawLine(200, 120, 220, 120, GC9A01A_GREEN);
- tft.drawLine(200, 121, 220, 121, GC9A01A_GREEN);
- tft.drawLine(80, 189, 70, 206, GC9A01A_GREEN);
- tft.drawLine(80, 190, 70, 207, GC9A01A_GREEN);
- tft.drawLine(80, 191, 70, 208, GC9A01A_GREEN);
- tft.drawLine(34, 169, 51, 159, GC9A01A_GREEN);
- tft.drawLine(34, 170, 51, 160, GC9A01A_GREEN);
- tft.drawLine(34, 171, 51, 161, GC9A01A_GREEN);
- tft.drawLine(34, 69, 51, 79, GC9A01A_GREEN);
- tft.drawLine(34, 70, 51, 80, GC9A01A_GREEN);
- tft.drawLine(34, 71, 51, 81, GC9A01A_GREEN);
- tft.drawLine(70, 33, 80, 50, GC9A01A_GREEN);
- tft.drawLine(70, 34, 80, 51, GC9A01A_GREEN);
- tft.drawLine(70, 35, 80, 52, GC9A01A_GREEN);
- tft.drawLine(160, 50, 170, 33, GC9A01A_GREEN);
- tft.drawLine(160, 51, 170, 34, GC9A01A_GREEN);
- tft.drawLine(160, 52, 170, 35, GC9A01A_GREEN);
- tft.drawLine(189, 79, 207, 69, GC9A01A_GREEN);
- tft.drawLine(189, 80, 207, 70, GC9A01A_GREEN);
- tft.drawLine(189, 81, 207, 71, GC9A01A_GREEN);
- tft.drawLine(94, 216, 97, 207, GC9A01A_YELLOW);
- tft.drawLine(95, 216, 98, 207, GC9A01A_YELLOW);
- tft.drawLine(49, 191, 56, 183, GC9A01A_YELLOW);
- tft.drawLine(50, 191, 57, 184, GC9A01A_YELLOW);
- tft.drawLine(23, 146, 33, 143, GC9A01A_YELLOW);
- tft.drawLine(24, 146, 34, 143, GC9A01A_YELLOW);
- tft.drawLine(23, 94, 33, 96, GC9A01A_YELLOW);
- tft.drawLine(24, 94, 34, 96, GC9A01A_YELLOW);
- tft.drawLine(49, 49, 56, 56, GC9A01A_YELLOW);
- tft.drawLine(50, 49, 57, 56, GC9A01A_YELLOW);
- tft.drawLine(94, 23, 96, 33, GC9A01A_YELLOW);
- tft.drawLine(95, 23, 97, 34, GC9A01A_YELLOW);
- tft.drawLine(145, 23, 143, 33, GC9A01A_YELLOW);
- tft.drawLine(146, 23, 144, 34, GC9A01A_YELLOW);
- tft.drawLine(190, 49, 183, 56, GC9A01A_YELLOW);
- tft.drawLine(191, 50, 184, 57, GC9A01A_YELLOW);
- tft.drawLine(206, 96, 216, 94, GC9A01A_YELLOW);
- tft.drawLine(206, 97, 216, 95, GC9A01A_YELLOW);
- }
- void loop() {
- currentMillis = millis();
- if (currentMillis - startMillis >= period) {
- readSensorData();
- display_meter(0);
- Text(0);
- startMillis = currentMillis;
- }
- }
- float normaliseSensorData(int m) {
- return (m - 104) / 0.1638;
- }
- void readSensorData(void) {
- float absolutePressure = normaliseSensorData(analogRead(A7));
- boostPressure = (absolutePressure - 830) / 14.504 ;
- if (boostPressure > boostMax) boostMax = boostPressure;
- if (boostPressure < boostMin) boostMin = boostPressure;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement