Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <Wire.h>
- #include <LiquidCrystal_I2C.h>
- #define led1Pin 3
- #define led2Pin 4
- LiquidCrystal_I2C lcd(0x27, 16, 2);
- const int FlagQ = 10;//liczba flag
- int FalgCounter[FlagQ];
- int FalgLimit[FlagQ] = {1, 1, 1, 2, 1, 2, 1, 2, 1, 3};//co które okrążenie programu flaga ma zostać podniesiona, należy podać tyle liczb ile jest ustawionych flag
- boolean Flag[FlagQ];
- int count = 0;
- void setup()
- {
- // put your setup code here, to run once:
- lcd.init();
- lcd.backlight(); // Ustawienie (inicjacja) wyświetlacza
- pinMode(led1Pin, OUTPUT);
- pinMode(led2Pin, OUTPUT);
- lcd.print("Janusz"); // Wypisanie tekstu od pozycji defaultowej
- lcd.setCursor(10, 1);
- lcd.print("Korwin");
- lcd.setCursor(0, 0); // Ustawienie kursora w pozycji 0,0
- lcd.display();
- delay(1000);
- resetFalgs();
- }
- /////////////////////////////////////////////////////////////////////////////////////FLAGI///////////////////////////////////////////////////////////
- void resetFalgs() {//resetowanie flag
- for (int i; i < FlagQ; i++) {
- Flag[i] = false;
- FalgCounter[i] = 0;
- }
- }
- void PutDownFalgs() {//Ustawianie flag na 0
- for (int i; i < FlagQ; i++) {
- Flag[i] = false;
- }
- }
- void countFlags() {//Zlicza cykle programu i podonosi flagi jeśli wystąpiła określona ilość powtórzeń
- for (int i = 0; i < FlagQ; i++) {
- FalgCounter[i]++;
- }
- for (int i = 0; i < FlagQ; i++) {
- if (FalgCounter[i] >= FalgLimit[i] ) {
- Flag[i] = true;
- FalgCounter[i] = 0;
- }
- }
- }
- ///////////////////////////////////////////////////////////////////////////FLAGI//////////////////////////////////////////////////////////////////////
- ///////////////////////////////////////////////////////////////////////////FUNKCJE//////////////////////////////////////////////////////////////////////
- void mrugnij(int ile) //Zadanie
- { //Korzystając z funkcji bibliotecznych zaimplementuj mruganie wyświetlaczem
- for(int i =0; i < ile;i++){
- lcd.noDisplay();//Wyłącz podświetlenie
- delay(500);
- lcd.display();//Włącz podświetlenie
- delay(500);
- }
- }
- void scroll(int czas, String msg) {
- lcd.clear();
- int kek = 0;
- int dlugosc, ile = 0, wroc = 0;
- dlugosc = msg.length();
- /* int wroc = (16-dlugosc) / 2; //FUNKCJE TESTOWE
- lcd.setCursor(0, 0);
- lcd.print(dlugosc);
- lcd.print("/2=");
- lcd.print(wroc);
- delay(2000);
- lcd.clear();
- lcd.setCursor(0, 0);
- lcd.print("DL:");
- lcd.print(dlugosc);
- delay(2000);
- lcd.clear();
- lcd.setCursor(0, 0);
- lcd.print("Test:");
- lcd.print(msg[1]);
- delay(2000);
- lcd.clear();
- */
- lcd.setCursor(16 - dlugosc, 0);
- lcd.print(msg);
- lcd.setCursor(0, 1);
- delay(1000);
- ile = 17 - dlugosc;
- for (int positionCounter = 0; positionCounter < ile; positionCounter++) {//Przwija tekst na wyświetlaczu w lewo
- kek++;
- delay(czas);
- lcd.scrollDisplayLeft();
- }
- for (int i = 0; i < 15; i++) {//Przwija dalej w lewo i wypisuje tekst na lini 1 (dolnej)
- kek++;
- if (i < dlugosc) {
- lcd.setCursor(kek + 14, 1);
- lcd.print(msg[i]);
- }
- delay(czas);
- lcd.scrollDisplayLeft();
- }
- for (int i = 0; i < kek; i++) {//Przwija cały tekst w prawo, nie ma potrzeby znów przepisywać tekstu gdyż jest on już w buforze wyświetlacza
- delay(czas);
- lcd.scrollDisplayRight();
- }
- wroc = (16 - dlugosc) / 2;//Centruje tekst cofając w lewo
- for (int i = 0; i < wroc; i++) {
- delay(czas);
- lcd.scrollDisplayLeft();
- //mrugnij();
- }
- }
- void arrayText(int czas, String msg) {
- digitalWrite(led1Pin, !digitalRead(led1Pin));//zmienia stan diody na przeciwny
- lcd.clear();
- int kek = 0, kursor;
- int dlugosc;
- String msgL2;
- dlugosc = msg.length();
- kursor = 16 - dlugosc;
- lcd.setCursor(kursor, 0);
- for (int j = kursor; j >= 0; j--) {//wypisuje tekst na okreslonym miejscu
- lcd.clear();
- lcd.setCursor(j, 0);
- lcd.print(msg);
- led();
- delay(czas);
- }
- for (int i = 0; i < dlugosc; i++) {//przepisuje tekst w lini 0 kasując co cykl pętli 1 znak
- lcd.clear();
- int podaj = 0;
- for (int j = i; j < dlugosc; j++) {
- lcd.print(msg[j]);
- podaj++;
- }
- msgL2 += msg[dlugosc - podaj];//jednosczesnie przepsisując go do lini 1
- lcd.setCursor(0, 1);
- lcd.print(msgL2);
- delay(czas);
- led();
- }
- for (int j = 0; j < kursor; j++) {
- lcd.clear();
- lcd.setCursor(j, 1);
- lcd.print(msgL2);
- delay(czas);
- led();
- }
- }
- void led() {//zmienia stan ledów na przeciwny
- digitalWrite(led1Pin, !digitalRead(led1Pin));
- digitalWrite(led2Pin, !digitalRead(led2Pin));
- }
- void wypisz(int wiersz, int kolumna, String s) //Zadanie
- { //wypisz na ekranie LCD tekst zawarty w zmiennej s w pozycji wiersz,kolumna
- // Lcd.begin(16, 2);
- lcd.setCursor(kolumna, wiersz);
- lcd.print(s);
- delay(1000);
- }
- ///////////////////////////////////////////////////////////////////////////FUNKCJE//////////////////////////////////////////////////////////////////////
- void loop() {
- countFlags();//wywołanie zliczania flag
- if (Flag[0] == true) {//jeżeli flaga jest podniesiona to wywołuje funkcje
- arrayText(300, "Automatyka i Informatyka");
- arrayText(300, "Przemyslowa");
- lcd.clear();
- }
- if (Flag[1] == true) {
- lcd.print("Semestr V");
- mrugnij(4);
- lcd.clear();
- }
- if (Flag[2] == true) {
- scroll(300, "PIEKNA DRUKARKA");
- lcd.clear();
- }
- if (Flag[3] == true) {
- wypisz(1, 1, "Bedzie VI?") ;
- delay(500);
- lcd.clear();
- }
- if (Flag[4] == true) {
- lcd.print("Flaga4");
- delay(500);
- lcd.clear();
- }
- if (Flag[5] == true) {
- lcd.print("Flaga5");
- delay(500);
- lcd.clear();
- }
- if (Flag[6] == true) {
- lcd.print("Flaga6");
- delay(500);
- lcd.clear();
- }
- if (Flag[7] == true) {
- lcd.print("Flaga7");
- delay(500);
- lcd.clear();
- }
- if (Flag[8] == true) {
- lcd.print("Flaga8");
- delay(500);
- lcd.clear();
- }
- if (Flag[9] == true) {
- lcd.print("Flaga9");
- delay(500);
- lcd.clear();
- }
- PutDownFalgs();
- }
Add Comment
Please, Sign In to add comment