Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "TimerOne.h"
- #include "SPI.h"
- #include "Adafruit_GFX.h"
- #include "Adafruit_ILI9340.h"
- #include "UTouch.h"
- #if defined(__SAM3X8E__)
- #undef __FlashStringHelper::F(string_literal)
- #define F(string_literal) string_literal
- #endif
- #define led_wt_up_l_1 24
- #define led_wt_up_l_2 25
- #define led_wt_up_r_1 26
- #define led_wt_up_r_2 27
- #define led_wt_down_l_1 28
- #define led_wt_down_l_2 29
- #define led_wt_down_r_1 30
- #define led_wt_down_r_2 31
- #define led_ye_up 32
- #define led_ye_mid 33
- #define led_ye_down 34
- #define led_gn 35
- #define led_rd_l 36
- #define led_rd_r 37
- #define button_up 42
- #define button_down 43
- #define button_start 44
- // These are the pins used for the UNO
- // for Due/Mega/Leonardo use the hardware SPI pins (which are different)
- #define _sclk 52 //13
- #define _miso 50 //12 //für SW SPI, jedoch langsamer!
- #define _mosi 51 //11
- #define _cs 53 //10
- #define _dc 9
- #define _rst 8
- // Using software SPI is really not suggested, its incredibly slow
- //Adafruit_ILI9340 tft = Adafruit_ILI9340(_cs, _dc, _mosi, _sclk, _rst, _miso);
- // Use hardware SPI
- Adafruit_ILI9340 tft = Adafruit_ILI9340(_cs, _dc, _rst);
- const byte startfoul_sensor_l = 2;
- const byte startfoul_sensor_r = 3;
- // declare portstates for Lightsensors
- int startfoul_sensor_l_status = 0;
- int startfoul_sensor_r_status = 0;
- volatile byte state = LOW;
- unsigned long x = 0;
- unsigned long y = 0;
- unsigned long z = 0;
- int programmabschnitt = 2;
- int rundenzahl = 3;
- int sequenzende = 0;
- int runde_l = 0;
- int runde_r = 0;
- uint8_t zeit = 0;
- uint8_t startzeit = 0;
- uint8_t rennzeit_start_l = 0;
- uint8_t rennzeit_start_r = 0;
- void startfoul_l()
- {
- digitalWrite(led_rd_l, HIGH);
- digitalWrite(led_wt_up_l_1, LOW);
- digitalWrite(led_wt_up_l_2, LOW);
- digitalWrite(led_wt_up_r_1, LOW);
- digitalWrite(led_wt_up_r_2, LOW);
- digitalWrite(led_wt_down_l_1, LOW);
- digitalWrite(led_wt_down_l_2, LOW);
- digitalWrite(led_wt_down_r_1, LOW);
- digitalWrite(led_wt_down_r_2, LOW);
- digitalWrite(led_ye_up, LOW);
- digitalWrite(led_ye_mid,LOW);
- digitalWrite(led_ye_down, LOW);
- digitalWrite(led_gn, LOW);
- digitalWrite(led_rd_r, LOW);
- }
- void startfoul_r()
- {
- digitalWrite(led_rd_r, HIGH);
- digitalWrite(led_wt_up_l_1, LOW);
- digitalWrite(led_wt_up_l_2, LOW);
- digitalWrite(led_wt_up_r_1, LOW);
- digitalWrite(led_wt_up_r_2, LOW);
- digitalWrite(led_wt_down_l_1, LOW);
- digitalWrite(led_wt_down_l_2, LOW);
- digitalWrite(led_wt_down_r_1, LOW);
- digitalWrite(led_wt_down_r_2, LOW);
- digitalWrite(led_ye_up, LOW);
- digitalWrite(led_ye_mid,LOW);
- digitalWrite(led_ye_down, LOW);
- digitalWrite(led_gn, LOW);
- }
- void setup() {
- int start = digitalRead(button_start);
- int up = digitalRead(button_up);
- int down = digitalRead(button_down);
- Serial.begin(9600);
- tft.begin();
- pinMode(startfoul_sensor_l, INPUT_PULLUP);
- pinMode(startfoul_sensor_r, INPUT_PULLUP);
- pinMode(button_up, INPUT);
- pinMode(button_down, INPUT);
- pinMode(button_start, INPUT);
- pinMode(led_wt_up_l_1, OUTPUT);
- pinMode(led_wt_up_l_2, OUTPUT);
- pinMode(led_wt_up_r_1, OUTPUT);
- pinMode(led_wt_up_r_2, OUTPUT);
- pinMode(led_wt_down_l_1, OUTPUT);
- pinMode(led_wt_down_l_2, OUTPUT);
- pinMode(led_wt_down_r_1, OUTPUT);
- pinMode(led_wt_down_r_2, OUTPUT);
- pinMode(led_ye_up, OUTPUT);
- pinMode(led_ye_mid, OUTPUT);
- pinMode(led_ye_down, OUTPUT);
- pinMode(led_gn, OUTPUT);
- pinMode(led_rd_l, OUTPUT);
- pinMode(led_rd_r, OUTPUT);
- tft.setRotation(3);
- tft.fillScreen(ILI9340_BLACK);
- tft.setCursor(10, 80);
- tft.setTextColor(ILI9340_WHITE);
- tft.setTextSize(2);
- tft.print("Projektarbeit 2017/ 2018");
- tft.setCursor(10, 120);
- tft.setTextColor(ILI9340_WHITE);
- tft.setTextSize(2);
- tft.print("Technikerschule Augsburg");
- tft.setCursor(10, 160);
- tft.setTextColor(ILI9340_WHITE);
- tft.setTextSize(2);
- tft.print("K16, Markus Starke:");
- delay(5000);
- tft.fillScreen(ILI9340_BLACK);
- // Interruptroutinen
- attachInterrupt(digitalPinToInterrupt(startfoul_sensor_l), startfoul_l, RISING);
- attachInterrupt(digitalPinToInterrupt(startfoul_sensor_r), startfoul_r, RISING);
- }
- void loop(){
- while (!(digitalRead(button_start)))
- {
- void menu();
- if(digitalRead(button_start))
- int button_start1 = 1;
- if(digitalRead(button_up))
- rundenzahl++;
- tft.fillScreen(ILI9340_BLACK);
- if(digitalRead(button_down))
- rundenzahl--;
- tft.fillScreen(ILI9340_BLACK);
- tft.setCursor(165, 80);
- tft.setTextColor(ILI9340_WHITE);
- tft.setTextSize(3);
- tft.print(rundenzahl);
- }
- int button_start2 = 0;
- void startsequenz();
- }
- void startup() {
- tft.setRotation(3);
- tft.fillScreen(ILI9340_BLACK);
- tft.setCursor(10, 80);
- tft.setTextColor(ILI9340_WHITE);
- tft.setTextSize(2);
- tft.print("Projektarbeit 2017/ 2018");
- tft.setCursor(10, 120);
- tft.setTextColor(ILI9340_WHITE);
- tft.setTextSize(2);
- tft.print("Technikerschule Augsburg");
- tft.setCursor(10, 160);
- tft.setTextColor(ILI9340_WHITE);
- tft.setTextSize(2);
- tft.print("K16, Markus Starke:");
- delay(5000);
- }
- void menu()
- {
- tft.setRotation(3);
- tft.fillScreen(ILI9340_BLACK);
- tft.setCursor(20, 5);
- tft.setTextColor(ILI9340_CYAN);
- tft.setTextSize(3);
- tft.print("Men"); tft.print((char)129);
- tft.setCursor(20, 80);
- tft.setTextColor(ILI9340_WHITE);
- tft.setTextSize(3);
- tft.print("Runden:");
- tft.setCursor(40, 140);
- tft.setTextColor(ILI9340_WHITE);
- tft.setTextSize(2);
- tft.print("m/s");
- tft.setCursor(40, 205);
- tft.setTextColor(ILI9340_WHITE);
- tft.setTextSize(2);
- tft.print("km/h");
- tft.setCursor(165, 80);
- tft.setTextColor(ILI9340_WHITE);
- tft.setTextSize(3);
- tft.print(rundenzahl);
- tft.setCursor(252, 50);
- tft.setTextColor(ILI9340_WHITE);
- tft.setTextSize(3);
- tft.print("+");
- tft.setCursor(252, 110);
- tft.setTextColor(ILI9340_WHITE);
- tft.setTextSize(3);
- tft.print("-");
- tft.setCursor(200, 198);
- tft.setTextColor(ILI9340_WHITE);
- tft.setTextSize(2);
- tft.print("START");
- tft.drawRect(20,130,80,40, ILI9340_RED);
- tft.drawRect(20,190,80,40, ILI9340_RED);
- tft.drawRect(220,40,80,40, ILI9340_RED);
- tft.drawTriangle(220,40,260,20,300,40, ILI9340_RED);
- tft.drawRect(220,100,80,40, ILI9340_RED);
- tft.drawTriangle(220,140, 260,160, 300,140, ILI9340_RED);
- tft.drawRect(160,180,140,50, ILI9340_RED);
- }
- void startsequenz()
- {
- startzeit = millis();
- if(millis() >= startzeit + 9000)
- {
- digitalWrite(led_gn ,LOW);
- rennzeit_start_l = millis();
- rennzeit_start_r = millis();
- sequenzende = 1;
- }
- else if(millis() >= startzeit + 6000)
- {
- digitalWrite(led_ye_down, LOW);
- digitalWrite(led_gn, HIGH);
- }
- else if(millis() >= startzeit + 5500)
- {
- digitalWrite(led_ye_mid, LOW);
- digitalWrite(led_ye_down, HIGH);
- }
- else if(millis() >= startzeit + 5000)
- {
- digitalWrite(led_ye_up, LOW);
- digitalWrite(led_ye_mid, HIGH);
- }
- else if(millis() >= startzeit + 4500)
- {
- digitalWrite(led_wt_down_r_1, LOW);
- digitalWrite(led_wt_down_r_2, LOW);
- digitalWrite(led_ye_up, HIGH);
- }
- else if(millis() >= startzeit + 3000)
- {
- digitalWrite(led_wt_down_l_1, LOW);
- digitalWrite(led_wt_down_l_2, LOW);
- digitalWrite(led_wt_down_r_1, HIGH);
- digitalWrite(led_wt_down_r_2, HIGH);
- }
- else if(millis() >= startzeit + 2000)
- {
- digitalWrite(led_wt_up_r_1, LOW);
- digitalWrite(led_wt_up_r_2, LOW);
- digitalWrite(led_wt_down_l_1, HIGH);
- digitalWrite(led_wt_down_l_2, HIGH);
- }
- else if(millis() >= startzeit + 1000)
- {
- digitalWrite(led_wt_up_l_1, LOW);
- digitalWrite(led_wt_up_l_2, LOW);
- digitalWrite(led_wt_up_r_1, HIGH);
- digitalWrite(led_wt_up_r_2, HIGH);
- }
- else if(millis() >= startzeit)
- {
- digitalWrite(led_wt_up_l_1, HIGH);
- digitalWrite(led_wt_up_l_2, HIGH);
- }
- }
- //void renndaten()
- /* Test für Speedmessung
- lischra_1_state = digitalRead(lischra_1);
- lischra_2_state = digitalRead(lischra_2);
- if(lischra_1_state == 1){
- x = millis();
- while(lischra_2_state != 1) {
- lischra_2_state = digitalRead(lischra_2);
- }
- y = millis();
- z = (y - x);
- Serial.print(z);
- }
- else{}
- */
Advertisement
Add Comment
Please, Sign In to add comment