Facebook
From Sławomir, 7 Months ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 311
  1. #include <LCD_I2C.h>   // Import biblioteki LCD_I2C
  2. LCD_I2C lcd(0x27, 16, 2);  // Inicjalizacja obiektu lcd z adresem I2C i rozmiarem 16x2
  3. int relay1 = 6; // Definicja pinu przekaźnika 1
  4. int relay2 = 7; // Definicja pinu przekaźnika 2
  5. int analogPin1 = A0; // Definicja pinu wejścia analogowego 1
  6. int analogPin2 = A1; // Definicja pinu wejścia analogowego 2
  7. float threshold1 = 2.5; // Inicjalizacja progu napięcia dla wejścia 1
  8. float threshold2 = 3.0; // Inicjalizacja progu napięcia dla wejścia 2
  9. unsigned long previousMillis = 0; // Inicjalizacja zmiennej do przechowywania poprzedniego czasu
  10. const long interval = 5000; // Inicjalizacja stałej interwału czasowego (5 sekund)
  11.  
  12. // Definicje pinów przycisków
  13. const int button1Pin = 8; // Definicja pinu przycisku 1
  14. const int button2Pin = 9; // Definicja pinu przycisku 2
  15.  
  16. void setup() {
  17.   pinMode(relay1, OUTPUT); // Inicjalizacja pinu przekaźnika 1 jako wyjścia
  18.   pinMode(relay2, OUTPUT); // Inicjalizacja pinu przekaźnika 2 jako wyjścia
  19.   pinMode(button1Pin, INPUT_PULLUP); // Inicjalizacja pinu przycisku 1 jako wejścia z rezystorem podciągającym
  20.   pinMode(button2Pin, INPUT_PULLUP); // Inicjalizacja pinu przycisku 2 jako wejścia z rezystorem podciągającym
  21.   lcd.begin();  // Inicjalizacja wyświetlacza LCD
  22.   lcd.setCursor(0, 0); // Ustawienie kursora na pierwszej linii LCD
  23.   lcd.print("Nap"); // Wyświetlenie tekstu na LCD
  24.   lcd.setCursor(0, 1); // Ustawienie kursora na drugiej linii LCD
  25.   lcd.print("Th1: "); // Wyświetlenie etykiety dla progu 1
  26.   lcd.setCursor(8, 1); // Ustawienie kursora na drugiej linii LCD
  27.   lcd.print("Th2: "); // Wyświetlenie etykiety dla progu 2
  28.   lcd.backlight(); // Włączenie podświetlenia LCD
  29.   Serial.begin(9600); // Inicjalizacja komunikacji szeregowej
  30. }
  31.  
  32. void loop() {
  33.   unsigned long currentMillis = millis(); // Odczyt aktualnego czasu w milisekundach
  34.   float voltage1 = analogRead(analogPin1) * (5.0 / 1023.0); // Odczyt napięcia z wejścia analogowego 1 i przeliczenie na wolt
  35.   float voltage2 = analogRead(analogPin2) * (5.0 / 1023.0); // Odczyt napięcia z wejścia analogowego 2 i przeliczenie na wolt
  36.   lcd.setCursor(0, 1); // Ustawienie kursora na drugiej linii LCD
  37.   lcd.print("        "); // Wyczyśczenie poprzednich wartości progu
  38.   lcd.setCursor(0, 1); // Ustawienie kursora na drugiej linii LCD
  39.   lcd.print(threshold1, 2); // Wyświetlenie aktualnego progu 1 z dwoma miejscami po przecinku
  40.   lcd.setCursor(12, 1); // Ustawienie kursora na drugiej linii LCD
  41.   lcd.print(threshold2, 2); // Wyświetlenie aktualnego progu 2 z dwoma miejscami po przecinku
  42.  
  43.   // Obsługa przycisków do zmiany progów
  44.   if (digitalRead(button1Pin) == LOW) {
  45.     threshold1 += 0.1; // Zwiększenie progu 1 o 0.1
  46.   }
  47.   if (digitalRead(button2Pin) == LOW) {
  48.     threshold2 += 0.1; // Zwiększenie progu 2 o 0.1
  49.   }
  50.  
  51.   // Dodatkowa obsługa przycisków do zmniejszania progów
  52.   if (digitalRead(button1Pin) == HIGH) {
  53.     threshold1 -= 0.1; // Zmniejszenie progu 1 o 0.1
  54.   }
  55.   if (digitalRead(button2Pin) == HIGH) {
  56.     threshold2 -= 0.1; // Zmniejszenie progu 2 o 0.1
  57.   }
  58.  
  59.   // Sterowanie przekaźnikami na podstawie napięć i progów
  60.   if (voltage1 < threshold1) {
  61.     digitalWrite(relay1, HIGH); // Włączenie przekaźnika 1
  62.   } else {
  63.     digitalWrite(relay1, LOW); // Wyłączenie przekaźnika 1
  64.   }
  65.   if (voltage2 < threshold2) {
  66.     digitalWrite(relay2, HIGH); // Włączenie przekaźnika 2
  67.   } else {
  68.     digitalWrite(relay2, LOW); // Wyłączenie przekaźnika 2
  69.   }
  70.   // Wysyłanie napięć przez port szeregowy (do celów debugowania)
  71.   Serial.print("Napięcie 1: ");
  72.   Serial.println(voltage1, 2); // Wyświetlenie napięcia z wejścia 1 z dwoma miejscami po przecinku
  73.   Serial.print("Napięcie 2: ");
  74.   Serial.println(voltage2, 2); // Wyświetlenie napięcia z wejścia 2 z dwoma miejscami po przecinku
  75.  
  76.   // Kontrola interwału czasowego
  77.   if (currentMillis - previousMillis >= interval) {
  78.     previousMillis = currentMillis;
  79.   }
  80. }
  81.  

Replies to Sterowanie przyciskami rss

Title Name Language When
Re: Sterowanie przyciskami Tggg c 7 Months ago.