Antropex

LabArduino

Nov 6th, 2021 (edited)
520
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <Wire.h>
  2. #include <LiquidCrystal_I2C.h>
  3. #define led1Pin 3
  4. #define led2Pin 4
  5.  
  6.  
  7. LiquidCrystal_I2C lcd(0x27, 16, 2);
  8. const int FlagQ = 10;//liczba flag
  9. int FalgCounter[FlagQ];
  10. 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
  11. boolean Flag[FlagQ];
  12. int count = 0;
  13.  
  14. void setup()
  15. {
  16.   // put your setup code here, to run once:
  17.   lcd.init();
  18.   lcd.backlight(); // Ustawienie (inicjacja) wyświetlacza
  19.   pinMode(led1Pin, OUTPUT);
  20.   pinMode(led2Pin, OUTPUT);
  21.   lcd.print("Janusz");   // Wypisanie tekstu od pozycji defaultowej
  22.   lcd.setCursor(10, 1);
  23.   lcd.print("Korwin");
  24.   lcd.setCursor(0, 0);       // Ustawienie kursora w pozycji 0,0
  25.   lcd.display();
  26.   delay(1000);
  27.   resetFalgs();
  28.  
  29. }
  30. /////////////////////////////////////////////////////////////////////////////////////FLAGI///////////////////////////////////////////////////////////
  31. void resetFalgs() {//resetowanie flag
  32.   for (int i; i < FlagQ; i++) {
  33.     Flag[i] = false;
  34.     FalgCounter[i] = 0;
  35.   }
  36. }
  37. void PutDownFalgs() {//Ustawianie flag na 0
  38.   for (int i; i < FlagQ; i++) {
  39.     Flag[i] = false;
  40.   }
  41. }
  42. void countFlags() {//Zlicza cykle programu i podonosi flagi jeśli wystąpiła określona ilość powtórzeń
  43.   for (int i = 0; i < FlagQ; i++) {
  44.     FalgCounter[i]++;
  45.   }
  46.   for (int i = 0; i < FlagQ; i++) {
  47.     if (FalgCounter[i] >= FalgLimit[i] ) {
  48.       Flag[i] = true;
  49.       FalgCounter[i] = 0;
  50.     }
  51.   }
  52. }
  53. ///////////////////////////////////////////////////////////////////////////FLAGI//////////////////////////////////////////////////////////////////////
  54. ///////////////////////////////////////////////////////////////////////////FUNKCJE//////////////////////////////////////////////////////////////////////
  55. void mrugnij(int ile) //Zadanie
  56. { //Korzystając z funkcji bibliotecznych zaimplementuj mruganie wyświetlaczem
  57.   for(int i =0; i < ile;i++){
  58.   lcd.noDisplay();//Wyłącz podświetlenie
  59.   delay(500);
  60.   lcd.display();//Włącz podświetlenie
  61.   delay(500);
  62.   }
  63. }
  64.  
  65.  
  66. void scroll(int czas, String msg) {
  67.   lcd.clear();
  68.   int kek = 0;
  69.   int dlugosc, ile = 0, wroc = 0;
  70.  
  71.   dlugosc = msg.length();
  72.   /* int wroc = (16-dlugosc) / 2; //FUNKCJE TESTOWE
  73.     lcd.setCursor(0, 0);
  74.     lcd.print(dlugosc);
  75.     lcd.print("/2=");
  76.     lcd.print(wroc);
  77.     delay(2000);
  78.     lcd.clear();
  79.  
  80.     lcd.setCursor(0, 0);
  81.      lcd.print("DL:");
  82.      lcd.print(dlugosc);
  83.      delay(2000);
  84.      lcd.clear();
  85.  
  86.      lcd.setCursor(0, 0);
  87.      lcd.print("Test:");
  88.      lcd.print(msg[1]);
  89.      delay(2000);
  90.      lcd.clear();
  91.   */
  92.  
  93.   lcd.setCursor(16 - dlugosc, 0);
  94.   lcd.print(msg);
  95.   lcd.setCursor(0, 1);
  96.   delay(1000);
  97.   ile = 17 - dlugosc;
  98.   for (int positionCounter = 0; positionCounter < ile; positionCounter++) {//Przwija tekst na wyświetlaczu w lewo
  99.     kek++;
  100.     delay(czas);
  101.     lcd.scrollDisplayLeft();
  102.  
  103.  
  104.   }
  105.   for (int i = 0; i < 15; i++) {//Przwija dalej w lewo i wypisuje tekst na lini 1 (dolnej)
  106.     kek++;
  107.     if (i < dlugosc) {
  108.       lcd.setCursor(kek + 14, 1);
  109.       lcd.print(msg[i]);
  110.     }
  111.     delay(czas);
  112.     lcd.scrollDisplayLeft();
  113.   }
  114.  
  115.   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
  116.     delay(czas);
  117.     lcd.scrollDisplayRight();
  118.   }
  119.   wroc = (16 - dlugosc) / 2;//Centruje tekst cofając w lewo
  120.   for (int i = 0; i < wroc; i++) {
  121.     delay(czas);
  122.     lcd.scrollDisplayLeft();
  123.     //mrugnij();
  124.   }
  125. }
  126.  
  127.  
  128. void arrayText(int czas, String msg) {
  129.   digitalWrite(led1Pin, !digitalRead(led1Pin));//zmienia stan diody na przeciwny
  130.   lcd.clear();
  131.   int kek = 0, kursor;
  132.   int dlugosc;
  133.   String msgL2;
  134.   dlugosc = msg.length();
  135.   kursor = 16 - dlugosc;
  136.   lcd.setCursor(kursor, 0);
  137.  
  138.   for (int j = kursor; j >= 0; j--) {//wypisuje tekst na okreslonym miejscu
  139.     lcd.clear();
  140.     lcd.setCursor(j, 0);
  141.     lcd.print(msg);
  142.     led();
  143.     delay(czas);
  144.   }
  145.   for (int i = 0; i < dlugosc; i++) {//przepisuje tekst w lini 0 kasując co cykl pętli 1 znak
  146.     lcd.clear();
  147.     int podaj = 0;
  148.     for (int j = i; j < dlugosc; j++) {
  149.       lcd.print(msg[j]);
  150.       podaj++;
  151.     }
  152.     msgL2 += msg[dlugosc - podaj];//jednosczesnie przepsisując go do lini 1
  153.     lcd.setCursor(0, 1);
  154.     lcd.print(msgL2);
  155.     delay(czas);
  156.     led();
  157.   }
  158.   for (int j = 0; j < kursor; j++) {
  159.     lcd.clear();
  160.     lcd.setCursor(j, 1);
  161.     lcd.print(msgL2);
  162.     delay(czas);
  163.     led();
  164.   }
  165. }
  166. void led() {//zmienia stan ledów na przeciwny
  167.   digitalWrite(led1Pin, !digitalRead(led1Pin));
  168.   digitalWrite(led2Pin, !digitalRead(led2Pin));
  169. }
  170.  
  171. void wypisz(int wiersz, int kolumna, String s) //Zadanie
  172. { //wypisz na ekranie LCD tekst zawarty w zmiennej s w pozycji wiersz,kolumna
  173.   //  Lcd.begin(16, 2);
  174.   lcd.setCursor(kolumna, wiersz);
  175.   lcd.print(s);
  176.   delay(1000);
  177. }
  178.  
  179. ///////////////////////////////////////////////////////////////////////////FUNKCJE//////////////////////////////////////////////////////////////////////
  180. void loop() {
  181.   countFlags();//wywołanie zliczania flag
  182.   if (Flag[0] == true) {//jeżeli flaga jest podniesiona to wywołuje funkcje
  183.     arrayText(300, "Automatyka i Informatyka");
  184.     arrayText(300, "Przemyslowa");
  185.     lcd.clear();
  186.   }
  187.   if (Flag[1] == true) {
  188.     lcd.print("Semestr V");
  189.     mrugnij(4);
  190.     lcd.clear();
  191.   }
  192.   if (Flag[2] == true) {
  193.     scroll(300, "PIEKNA DRUKARKA");
  194.     lcd.clear();
  195.   }
  196.   if (Flag[3] == true) {
  197.     wypisz(1, 1, "Bedzie VI?") ;
  198.     delay(500);
  199.     lcd.clear();
  200.   }
  201.   if (Flag[4] == true) {
  202.     lcd.print("Flaga4");
  203.     delay(500);
  204.     lcd.clear();
  205.   }
  206.   if (Flag[5] == true) {
  207.     lcd.print("Flaga5");
  208.     delay(500);
  209.     lcd.clear();
  210.   }
  211.   if (Flag[6] == true) {
  212.     lcd.print("Flaga6");
  213.     delay(500);
  214.     lcd.clear();
  215.   }
  216.   if (Flag[7] == true) {
  217.     lcd.print("Flaga7");
  218.     delay(500);
  219.     lcd.clear();
  220.   }
  221.   if (Flag[8] == true) {
  222.     lcd.print("Flaga8");
  223.     delay(500);
  224.     lcd.clear();
  225.   }
  226.   if (Flag[9] == true) {
  227.     lcd.print("Flaga9");
  228.     delay(500);
  229.     lcd.clear();
  230.   }
  231.  
  232.   PutDownFalgs();
  233.  
  234. }
Add Comment
Please, Sign In to add comment