Fixes
Fixed GET_VALUES for newer FW Added range calcs
This commit is contained in:
@@ -0,0 +1,123 @@
|
||||
// Include application, user and local libraries
|
||||
#include "SPI.h"
|
||||
#include "TFT_22_ILI9225.h"
|
||||
#include "math.h"
|
||||
|
||||
#if defined (ARDUINO_ARCH_STM32F1)
|
||||
#define TFT_RST PA1
|
||||
#define TFT_RS PA2
|
||||
#define TFT_CS PA0 // SS
|
||||
#define TFT_SDI PA7 // MOSI
|
||||
#define TFT_CLK PA5 // SCK
|
||||
#define TFT_LED 0 // 0 if wired to +5V directly
|
||||
#elif defined(ESP8266)
|
||||
#define TFT_RST 4 // D2
|
||||
#define TFT_RS 5 // D1
|
||||
#define TFT_CLK 14 // D5 SCK
|
||||
//#define TFT_SDO 12 // D6 MISO
|
||||
#define TFT_SDI 13 // D7 MOSI
|
||||
#define TFT_CS 15 // D8 SS
|
||||
#define TFT_LED 2 // D4 set 0 if wired to +5V directly -> D3=0 is not possible !!
|
||||
#elif defined(ESP32)
|
||||
#define TFT_RST 26 // IO 26
|
||||
#define TFT_RS 25 // IO 25
|
||||
#define TFT_CLK 14 // HSPI-SCK
|
||||
//#define TFT_SDO 12 // HSPI-MISO
|
||||
#define TFT_SDI 13 // HSPI-MOSI
|
||||
#define TFT_CS 15 // HSPI-SS0
|
||||
#define TFT_LED 0 // 0 if wired to +5V directly
|
||||
#else
|
||||
#define TFT_RST 8
|
||||
#define TFT_RS 9
|
||||
#define TFT_CS 10 // SS
|
||||
#define TFT_SDI 11 // MOSI
|
||||
#define TFT_CLK 13 // SCK
|
||||
#define TFT_LED 3 // 0 if wired to +5V directly
|
||||
#endif
|
||||
|
||||
#define TFT_BRIGHTNESS 200 // Initial brightness of TFT backlight (optional)
|
||||
|
||||
#define ROTATE_ANGLE 10 // Angle in degrees to rotate the triangle
|
||||
|
||||
struct _point
|
||||
{
|
||||
int16_t x;
|
||||
int16_t y;
|
||||
};
|
||||
|
||||
// Use hardware SPI (faster - on Uno: 13-SCK, 12-MISO, 11-MOSI)
|
||||
TFT_22_ILI9225 tft = TFT_22_ILI9225(TFT_RST, TFT_RS, TFT_CS, TFT_LED, TFT_BRIGHTNESS);
|
||||
|
||||
// Variables and constants
|
||||
_point c1, c2, c3, cc;
|
||||
|
||||
// Setup
|
||||
void setup() {
|
||||
tft.begin();
|
||||
|
||||
// Define triangle start coordinates
|
||||
c1.x = 30; c1.y = 30;
|
||||
c2.x = 120; c2.y = 80;
|
||||
c3.x = 80; c3.y = 130;
|
||||
|
||||
// Determine the rotation point, i.e. the center of the triangle
|
||||
cc = getCoordCentroid(c1, c2, c3);
|
||||
|
||||
tft.clear();
|
||||
}
|
||||
|
||||
// Loop
|
||||
void loop() {
|
||||
// Calculate the number of steps to rotate the triangle a full rotation
|
||||
int16_t steps = (int16_t)(360 / ROTATE_ANGLE);
|
||||
|
||||
// Draw solid triangle
|
||||
tft.fillTriangle(30, 190, 80, 150, 130, 210, COLOR_BLUE);
|
||||
|
||||
for (int8_t i = 0; i < steps; i++) {
|
||||
// Draw triangle
|
||||
tft.drawTriangle(c1.x, c1.y, c2.x, c2.y, c3.x, c3.y, COLOR_GREEN);
|
||||
// Rotate triangle
|
||||
rotateTriangle(c1, c2, c3, cc, ROTATE_ANGLE);
|
||||
delay(50);
|
||||
}
|
||||
delay(5000);
|
||||
tft.clear();
|
||||
}
|
||||
|
||||
// Get centroid of triangle
|
||||
_point getCoordCentroid( _point a, _point b, _point c ) {
|
||||
_point o;
|
||||
|
||||
o.x = (int16_t)((a.x + b.x + c.x) / 3);
|
||||
o.y = (int16_t)((a.y + b.y + c.y) / 3);
|
||||
|
||||
return o;
|
||||
}
|
||||
|
||||
// Rotate triangle around point r
|
||||
void rotateTriangle( _point &a, _point &b, _point &c, _point r, int16_t deg ) {
|
||||
|
||||
// Convert degrees to radians
|
||||
float angle = (float)deg * 1000 / 57296;
|
||||
|
||||
// Rotate each individual point
|
||||
a = rotatePoint( r, angle, a);
|
||||
b = rotatePoint( r, angle, b);
|
||||
c = rotatePoint( r, angle, c);
|
||||
}
|
||||
|
||||
// Rotate each point p around c
|
||||
_point rotatePoint( _point c, float angle, _point p ) {
|
||||
_point r;
|
||||
|
||||
// 1. translate point back to origin
|
||||
// 2. rotate point
|
||||
// 3. translate point back
|
||||
|
||||
r.x = cos(angle) * (p.x - c.x) - sin(angle) * (p.y - c.y) + c.x;
|
||||
r.y = sin(angle) * (p.x - c.x) + cos(angle) * (p.y - c.y) + c.y;
|
||||
|
||||
return r;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user