Mini Arduino Multi funktion styrenhet med LCD-skärm (5 / 16 steg)
Steg 5: Koden för TIMER kontroll
Denna skiss används RTC för att styra 4 reläer på oavsett cykel eller tid intervall du önskar.
Kopiera den skiss nedan och klistra in det i Arduino IDE att verifiera och köra programmet.
Denna skiss skapades med hjälp av koden från adafruit och RTC-bibliotek
RTC ANSLUTNINGAR
Ansluta RTC VCC till Arduino + 5 v
RTC GND till Arduino GND
RTC SDA till Arduino Analog stift 4
RTC SCL till Arduino Analog stift 5
LCD-DISPLAY ANSLUTNING
#define sclk 4 //connected till digital stift 4
#define mosi 5 //connected till digital PIN 5
#define cs 6 //connected till digital PIN 6
#define dc 7 //connected till digital PIN 7
#define rst 8 //connected till digital PIN 8
RELAY-ANSLUTNING
GND ansluten till Arduino GND
int Pin1 = 9. In1 ansluten till digital 9
int Pin2 = 10; IN2 ansluten till digital 10
int Pin3 = 11; IN3 ansluten till digital 11
int Pin4 = 12. IN4 ansluten till digital 12
VCC ansluten till Arduino + 5v
#include / / core grafik bibliotek
#include / / maskinvaruspecifika bibliotek
#include / / bibliotek behövs för RTC
#include / / bibliotek behövs för RTC
#include "RTClib.h" //RTC bibliotek
RTC_DS1307 RTC;
Adafruit_ST7735 tft = Adafruit_ST7735 (cs, dc, mosi, sclk, rst);
void setup(void) {
DEFINIERA PINS FÖR RELAY KONTROLL
pinMode (Pin1, OUTPUT);
pinMode (PIN2-, OUTPUT);
pinMode (Pin3, OUTPUT);
pinMode (Pin4, OUTPUT);
Wire.BEGIN();
RTC.begin();
tft.initR(INITR_BLACKTAB); initiera en ST7735S chip, svart flik
tft.fillScreen(ST7735_BLACK); Tydlig skärm
digitalWrite (Pin1, 1);
digitalWrite (Pin2, 1);
digitalWrite (Pin3, 1);
digitalWrite (Pin4, 1);
tft.setCursor(0,50);
TFT.println ("väntar 10 sekunder");
TFT.println ("för RTC Sync");
fördröjning (10000); //wait för RTC att svara, om inte inställd tid
tft.fillScreen(ST7735_BLACK); Tydlig skärm
IF (!. RTC.isrunning()) {
TFT.println ("RTC kördes inte!");
TFT.println ("┼terstΣller RTC");
följande rad anger RTC till datum & tid denna skiss sammanställdes
RTC.adjust (DateTime (__DATE__, __TIME__));
tft.fillScreen(ST7735_BLACK); Tydlig skärm
}
}
void loop() {
tft.setCursor(10,10);
tft.setTextColor(ST7735_WHITE);
tft.setTextSize(1);
TFT.println ("TIMER kontroll"),
tft.setTextColor (ST7735_YELLOW, ST7735_BLACK); //set textfärg & storlek för datum kommer från TinyRTC
tft.setTextSize(2);
tft.setCursor(5,30);
DateTime nu = RTC.now(); TA TAG I DATUM OCH TID FRÅN RTC
TFT.Print(Now.Year(), DEC);
TFT.Print('/');
TFT.Print(Now.month(), DEC);
TFT.Print('/');
TFT.Print(Now.Day(), DEC);
TFT.println(' ');
tft.setCursor(15,70);
tft.setTextColor(ST7735_GREEN,ST7735_BLACK); Ange färg för tid
tft.setTextSize (2), //set textstorleken för gången kommer från TinyRTC
TFT.Print(Now.Hour(), DEC);
TFT.Print(':');
IF(Now.Minute() < 10) {//PRINT 0 framför den minut om mindre än 10
TFT.Print('0');
TFT.Print(Now.Minute(), DEC);
}
annat {
TFT.Print(Now.Minute(), DEC);
}
TFT.Print(':');
IF(Now.Second() < 10) {//PRINT 0 framför sekunder om mindre än 10
TFT.Print('0');
TFT.Print(Now.Second(), DEC);
}
annat {
TFT.Print(Now.Second(), DEC);
}
TFT.println("");
DETTA ÄR BESLUTET ATT PORTION AV SKISS, I DET HÄR EXEMPLET ÄR EN EN MINUT CYKEL
FÖR DEMOSYFTEN: IT VÄNDER PÅ RELÄ 1 PÅ 10 SEKUNDER, SEDAN AV VID 20
DET SEDAN VÄNDER RELAY 2 OCH 4 PÅ 40 SEKUNDER OCH OFF AT 50,
PÅ 50 SEKUNDER AKTIVERAS RELÄ 1 OCH 3 SEDAN BORT VID 0
IF(Now.Second() == 10) {
tft.setCursor(0,100);
tft.setTextColor(ST7735_GREEN,ST7735_BLACK); Ange färg för tid ON
tft.setTextSize (1), //set textstorlek
TFT.Print ("Relay 1 är på");
digitalWrite (Pin1, 0);
}
IF(Now.Second() == 20) {
tft.setCursor(0,100);
tft.setTextColor(ST7735_RED,ST7735_BLACK); Ange färg för tid ON
tft.setTextSize (1), //set textstorlek
TFT.Print ("Relay 1 är");
digitalWrite (Pin1, 1);
}
IF(Now.Second() == 40) {
digitalWrite (Pin1, låg);
digitalWrite (Pin2, hög);
digitalWrite (Pin3, låg);
digitalWrite (Pin4, hög);
tft.setCursor(0,100);
tft.setTextColor(ST7735_RED,ST7735_BLACK); Ange färg för tid ON
tft.setTextSize (1), //set textstorlek
tft.setTextColor(ST7735_GREEN,ST7735_BLACK);
TFT.println ("Relay 1 är på");
tft.setTextColor(ST7735_RED,ST7735_BLACK);
TFT.println ("Relay 2 är");
tft.setTextColor(ST7735_GREEN,ST7735_BLACK);
TFT.println ("relä 3 är på");
tft.setTextColor(ST7735_RED,ST7735_BLACK);
TFT.println ("Relay 4 är avstängd");
}
IF(Now.Second() == 50) {
digitalWrite (Pin1, hög);
digitalWrite (Pin2, låg);
digitalWrite (Pin3, hög);
digitalWrite (Pin4, låg);
tft.setCursor(0,100);
tft.setTextColor(ST7735_RED,ST7735_BLACK); Ange färg för tid ON
tft.setTextSize (1), //set textstorlek
TFT.println ("Relay 1 är");
tft.setTextColor(ST7735_GREEN,ST7735_BLACK);
TFT.println ("Relay 2 är på");
tft.setTextColor(ST7735_RED,ST7735_BLACK);
TFT.println ("relä 3 är");
tft.setTextColor(ST7735_GREEN,ST7735_BLACK);
TFT.println ("Relay 4 är på");
}
IF(Now.Second() == 00) {
digitalWrite (Pin1, hög);
digitalWrite (Pin2, hög);
digitalWrite (Pin3, hög);
digitalWrite (Pin4, hög);
tft.setCursor(0,100);
tft.setTextColor(ST7735_RED,ST7735_BLACK); Ange färg för tid ON
tft.setTextSize (1), //set textstorlek
TFT.println ("Relay 1 är");
TFT.println ("Relay 2 är");
TFT.println ("relä 3 är");
TFT.println ("Relay 4 är avstängd");
}
}