/***************************************************
****************************************************/
#include "SPI.h"
#include "Adafruit_GFX.h"
#include "Adafruit_ILI9341.h"
#define PI 3.1415926535897932384626433832795
#define _cs 15
#define _dc 2
#define _mosi 23
#define _sclk 18
#define _rst 4
#define _miso 19
Adafruit_ILI9341 tft = Adafruit_ILI9341(_cs, _dc, _mosi, _sclk, _rst);
typedef struct {int xa; int ya; int xe; int ye;} linekoords;
linekoords lines [180];
int screenW=320;
int screenH=240;
int screenWdiv2=160;
int screenHdiv2=120;
int offset = 0;
void setup() {
Serial.begin(9600);
Serial.println("ILI9341 Test!");
tft.begin();
tft.setRotation(1);
//tft.fillScreen(ILI9341_BLACK);
tft.setCursor(0, 10);
tft.setTextColor(ILI9341_WHITE);
tft.setTextSize(2);
tft.println("Hallo Welt!");
for (int i = 0; i < 180; i++) {
lines[i].xa = screenWdiv2 - (160 * sin((i + 90) * PI / 180));
lines[i].ya = screenHdiv2 + (10 * sin(i * PI / 180));
lines[i].xe = screenWdiv2 - (160 * sin((i + 90) * PI / 180));
lines[i].ye = screenHdiv2 + (30 * sin(i * PI / 180));
tft.drawLine(lines[i].xa, lines[i].ya, lines[i].xe, lines[i].ye, ILI9341_WHITE);
}
delay(1000);
}
void loop() {
for (int i=60; i<120;i++) {
drawGradLines(i);
}
}
void drawGradLines(int iGrad)
{
int linef;
int hAdd;
int cGrad;
hAdd = iGrad % 100;
if (hAdd >= 10) hAdd = hAdd % 10;
//Serial.println( hAdd);
cGrad = 90 - iGrad + hAdd;
if (cGrad < 0) cGrad = cGrad + 360;
for (int i = 0; i < 180; i+=5) {
if((i+cGrad)%5 == 0) linef=10;
if((i+cGrad)%10 == 0) linef=20;
if((i+cGrad)%30 == 0) linef=30;
// das erste drawLine hat noch die alten werte aus der Initialisierung?
// prüfen und erf. ändern
tft.drawLine(lines[i].xa, lines[i].ya, lines[i].xe, lines[i].ye, ILI9341_BLACK);
lines[i].xa = screenWdiv2 - (160 * sin((i + hAdd + 90) * PI / 180));
lines[i].ya = screenHdiv2 - (linef * sin((i + hAdd) * PI / 180));
lines[i].xe = screenWdiv2 - (160 * sin((i + hAdd + 90) * PI / 180));
lines[i].ye = screenHdiv2 - (1 * sin((i + hAdd) * PI / 180));
//delay(500);
//Serial.println( sin((i + 90) * PI / 180));
tft.drawLine(lines[i].xa, lines[i].ya, lines[i].xe, lines[i].ye, ILI9341_WHITE);
//delay(500);
}
}