Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <LiquidCrystal.h> //Dołączenie bilbioteki
- LiquidCrystal lcd(2, 3, 4, 5, 6, 7); //Informacja o podłączeniu nowego wyświetlacza
- #define BTN_PIN A0
- #define BTN1 1023
- #define BTN2 896
- #define BTN3 768
- #define BTN4 640
- #define BTN5 512
- #define BTN6 384
- #define BTN7 256
- #define BTN8 128
- double aktualnyCzas = 0;
- double zapamietanyCzas = 0;
- double roznicaCzasu = 0;
- double sredniCzas = 0;
- int latchPin = 8;
- //Pin połączony z SH_CP rejestru 74HC595
- int clockPin = 12;
- ////Pin połączony z DS rejestru 74HC595
- int dataPin = 11;
- //holder for infromation you're going to pass to shifting function
- byte data = 0;
- boolean wejscie=true;
- boolean zmiennaDoNapisow=false;
- boolean zmiennaDoOdliczania=false;
- boolean zmiennaDoPierwszejDiody=false;
- boolean zmiennaDoDrugiejDiody=false;
- boolean zmiennaDoTrzeciejDiody=false;
- boolean zmiennaDoCzwartejDiody=false;
- boolean zmiennaDoPiatejDiody=false;
- boolean zmiennaDoSzostejDiody=false;
- boolean zmiennaDoSiodmejDiody=false;
- boolean zmiennaDoOsmejDiody=false;
- boolean zmiennaDoDziewiatejDiody=false;
- boolean ocenaPoziomu=false;
- boolean czyPrzyciskWcisniety(int analogowaWar, int przyciskuWar) {
- return abs(przyciskuWar - analogowaWar) <= 30;
- }
- int czerwone[] = {1,3,5,7};
- int zielone[] = {2, 4, 6, 0};
- void setup() {
- pinMode(BTN_PIN, INPUT);
- Serial.begin(9600);
- pinMode(latchPin, OUTPUT);
- pinMode(clockPin, OUTPUT);
- pinMode(dataPin, OUTPUT);
- lcd.begin(16, 2); //Deklaracja typu
- }
- void loop() {
- int btnData = analogRead(BTN_PIN);
- if(wejscie)
- {
- intro();
- zmiennaDoNapisow=true;
- wejscie=false;
- }
- if (zmiennaDoNapisow)
- {
- lcd.setCursor(0, 0); //Ustawienie kursora
- lcd.print("Tester refleksu ");
- lcd.setCursor(0, 1); //Ustawienie kursora
- lcd.print("Wcisnij przycisk"); //Wyświetlenie tekstu
- lcd.blink(); //Włącznie kursora
- zaswiecDiode(1);
- if( czyPrzyciskWcisniety(btnData, BTN1))
- {
- zmiennaDoNapisow=false;
- zmiennaDoOdliczania=true;
- lcd.clear();
- }
- }
- if (zmiennaDoOdliczania)
- {
- for (int j = 3; j > 0; j--)
- {
- lcd.setCursor(0, 0); //Ustawienie kursora
- lcd.print(j);
- lcd.blink(); //Włącznie kursora
- delay(1000);
- }
- lcd.clear();
- lcd.setCursor(0, 0);
- lcd.print("START!"); //Wyświetlenie tekstu
- zmiennaDoOdliczania=false;
- zmiennaDoPierwszejDiody=true;
- }
- if(zmiennaDoPierwszejDiody)
- {
- zaswiecDiode(7);
- zapamietanyCzas=millis();
- if( czyPrzyciskWcisniety(btnData, BTN7))
- {
- zmiennaDoPierwszejDiody=false;
- zmiennaDoDrugiejDiody=true;
- }
- }
- if(zmiennaDoDrugiejDiody)
- {
- zaswiecDiode(3);
- if( czyPrzyciskWcisniety(btnData, BTN3))
- {
- zmiennaDoTrzeciejDiody=true;
- zmiennaDoDrugiejDiody=false;
- }
- }
- if(zmiennaDoTrzeciejDiody)
- {
- zaswiecDiode(1);
- if( czyPrzyciskWcisniety(btnData, BTN1))
- {
- zmiennaDoTrzeciejDiody=false;
- zmiennaDoCzwartejDiody=true;
- }
- }
- if(zmiennaDoCzwartejDiody)
- {
- zaswiecDiode(0);
- if( czyPrzyciskWcisniety(btnData, BTN8))
- {
- zmiennaDoPiatejDiody=true;
- zmiennaDoCzwartejDiody=false;
- }
- }
- if(zmiennaDoPiatejDiody)
- {
- zaswiecDiode(5);
- if( czyPrzyciskWcisniety(btnData, BTN5))
- {
- zmiennaDoPiatejDiody=false;
- zmiennaDoSzostejDiody=true;
- }
- }
- if(zmiennaDoSzostejDiody)
- {
- zaswiecDiode(6);
- if( czyPrzyciskWcisniety(btnData, BTN6))
- {
- zmiennaDoSiodmejDiody=true;
- zmiennaDoSzostejDiody=false;
- }
- }
- if(zmiennaDoSiodmejDiody)
- {
- zaswiecDiode(1);
- if( czyPrzyciskWcisniety(btnData, BTN1))
- {
- zmiennaDoSiodmejDiody=false;
- zmiennaDoOsmejDiody=true;
- }
- }
- if(zmiennaDoOsmejDiody)
- {
- zaswiecDiode(7);
- if( czyPrzyciskWcisniety(btnData, BTN7))
- {
- zmiennaDoDziewiatejDiody=true;
- zmiennaDoOsmejDiody=false;
- }
- }
- if(zmiennaDoDziewiatejDiody)
- {
- zaswiecDiode(2);
- if( czyPrzyciskWcisniety(btnData, BTN2))
- {
- zmiennaDoDziewiatejDiody=false;
- aktualnyCzas=millis();
- roznicaCzasu=aktualnyCzas-zapamietanyCzas;
- Serial.println(roznicaCzasu);
- sredniCzas=roznicaCzasu/1000;
- lcd.clear();
- lcd.setCursor(0, 0); //Ustawienie kursora
- lcd.print("Sredni czas: ");
- lcd.setCursor(0, 1); //Ustawienie kursora
- lcd.print(sredniCzas); //Wyświetlenie tekstu
- delay(5000);
- ocenaPoziomu=true;
- }
- }
- if(ocenaPoziomu)
- {
- if((roznicaCzasu>0)&&(roznicaCzasu<5000))
- {
- lcd.clear();
- lcd.setCursor(0, 0); //Ustawienie kursora
- lcd.print("Poziom: ROBERT ");
- delay(5000);
- ocenaPoziomu=false;
- zmiennaDoNapisow=true;
- roznicaCzasu=0;
- }
- else if((roznicaCzasu>=5000)&&(roznicaCzasu<10000))
- {
- lcd.clear();
- lcd.setCursor(0, 0); //Ustawienie kursora
- lcd.print("Poziom: SREDNIAK ");
- delay(5000);
- ocenaPoziomu=false;
- zmiennaDoNapisow=true;
- roznicaCzasu=0;
- }
- else if( roznicaCzasu>=10000)
- {
- lcd.clear();
- lcd.setCursor(0, 0); //Ustawienie kursora
- lcd.print("Poziom: EMERYT ");
- delay(5000);
- ocenaPoziomu=false;
- zmiennaDoNapisow=true;
- roznicaCzasu=0;
- }
- else
- {
- lcd.clear();
- lcd.setCursor(0, 0); //Ustawienie kursora
- lcd.print("DZIWNY POMIAR ");
- delay(5000);
- ocenaPoziomu=false;
- zmiennaDoNapisow=true;
- roznicaCzasu=0;
- }
- }
- }
- void intro()
- {
- blinkAll(1,500);
- // light each pin one by one using a function A
- for (int j = 1; j < 8; j++) {
- zaswiecDiode(j);
- delay(300);
- }
- zaswiecDiode(0);
- delay(300);
- blinkAll(2,500);
- for(int i=0; i<4; i++)
- {
- zaswiecDiode(czerwone[i]);
- delay(300);
- }
- for(int i=0; i<4; i++)
- {
- zaswiecDiode(zielone[i]);
- delay(300);
- }
- for(int i=3; i>=0; i--)
- {
- zaswiecDiode(czerwone[i]);
- delay(300);
- }
- for(int i=3; i>=0; i--)
- {
- zaswiecDiode(zielone[i]);
- delay(300);
- }
- blinkAll(2,500);
- }
- void zaswiecDiode(int p) {
- //defines a local variable
- int pin;
- //this is line uses a bitwise operator
- //shifting a bit left using << is the same
- //as multiplying the decimal number by two.
- pin = 1<< p;
- //ground latchPin and hold low for as long as you are transmitting
- digitalWrite(latchPin, LOW);
- //move 'em out
- shiftOut(dataPin, clockPin, MSBFIRST, pin);
- //return the latch pin high to signal chip that it
- //no longer needs to listen for information
- digitalWrite(latchPin, HIGH);
- }
- void lightShiftPinB(int p) {
- //defines a local variable
- int pin;
- //start with the pin = 1 so that if 0 is passed to this
- //function pin 0 will light.
- pin = 1;
- for (int x = 0; x < p; x++) {
- pin = pin * 2;
- }
- //ground latchPin and hold low for as long as you are transmitting
- digitalWrite(latchPin, LOW);
- //move 'em out
- shiftOut(dataPin, clockPin, MSBFIRST, pin);
- //return the latch pin high to signal chip that it
- //no longer needs to listen for information
- digitalWrite(latchPin, HIGH);
- }
- //blinks the whole register based on the number of times you want to
- //blink "n" and the pause between them "d"
- //starts with a moment of darkness to make sure the first blink
- //has its full visual effect.
- void blinkAll(int n, int d) {
- digitalWrite(latchPin, LOW);
- shiftOut(dataPin, clockPin, MSBFIRST, 0);
- digitalWrite(latchPin, HIGH);
- delay(200);
- for (int x = 0; x < n; x++) {
- digitalWrite(latchPin, LOW);
- shiftOut(dataPin, clockPin, MSBFIRST, 255);
- digitalWrite(latchPin, HIGH);
- delay(d);
- digitalWrite(latchPin, LOW);
- shiftOut(dataPin, clockPin, MSBFIRST, 0);
- digitalWrite(latchPin, HIGH);
- delay(d);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement