Arduino "Talande" Temp / fukt på en TFT LCD med reläer (4 / 5 steg)
Steg 4: Lägga till en Relay Board
Vi använder en SainSmart 4 port relay board, och ansluta 4 input rader till analoga portar repurposed som digitala utgångar. För mer information, se http://arduinotronics.blogspot.com/2013/01/working-with-sainsmart-5v-relay-board.html
SainSmart 4 port relay board inställningarna
Vi är få digitala portar, återanvända så
analoga ingångar som digitala utgångar
GND ansluten till Arduino GND
int relayPin1 = A0; In1 ansluten till digital pin A0
int relayPin2 = A1; IN2 ansluten till digital pin A1
int relayPin3 = A2; IN3 ansluten till digital pin A2
int relayPin4 = A3; IN4 ansluten till digital pin A3
VCC ansluten till Arduino + 5v
Tala enkel installation
#include
#define txPin 2
#define rxPin 5
SoftwareSerial sjSerial = SoftwareSerial (rxPin, txPin);
int bufferPin = 4; övervaka buffert halv full eller upptagen (jmp2)
/*
Arduino TFT text exempel
Det här exemplet visar hur man drar texten den
TFT med en Arduino. Arduino läser värdet
en analog sensor kopplad till pin A0, och skriver
värdet till LCD-skärmen, uppdatera varje
kvartalet andra.
Denna exempelkod är offentlig
Skapad 15 April 2013 av Scott Fitzgerald
http://Arduino.cc/en/tutorial/TFTDisplayText
*/
#include / / Arduino LCD-bibliotek
#include
PIN definition för Uno
SCL hårdvara 13
SDA hårdvara 11
#define cs 10
#define dc 9
#define rst 8
skapa en instans av biblioteket
TFT TFTscreen = TFT (cs, dc, rst);
char matris skriva ut på skärmen
char tempPrintout [6].
char humPrintout [6].
Exempel testning skiss för olika DHT luftfuktighet/temperatur sensorer
Skrivet av ladyada, offentlig
Fahrenheit konvertering till av Steve Spence, http://arduinotronics.blogspot.com
#include
#define DHTPIN 6 / / vilken pin vi är ansluten till
Avkommentera oavsett vilken typ du använder!
#define DHTTYPE DHT11 / / DHT 11
#define DHTTYPE DHT22 / / DHT 22 (AM2302)
#define DHTTYPE DHT21 / / DHT 21 (AM2301)
Ansluta pin + (mitten) av sensorn till + 5V
Ansluta stift S (på rätten) av sensorn till vad din DHTPIN är
Ansluta stift - (på vänster) av sensorn till marken
Ansluta 10 k motstånd mellan S och +
int cykelnTid = 2000.
DHT dht (DHTPIN, DHTTYPE);
float h;
flottör t;
void setup() {
Initiera SainSmart Relay Board
pinMode (relayPin1, produktionen); Anger den analoga pin som digital utgång
pinMode (relayPin2, produktionen); Anger den analoga pin som digital utgång
pinMode (relayPin3, produktionen); Anger den analoga pin som digital utgång
pinMode (relayPin4, produktionen); anger de analoga PIN-koden som digital utgång
digitalWrite (relayPin1, hög); Förhindrar reläer från att starta engagerad
digitalWrite (relayPin2, hög); Förhindrar reläer från att starta engagerad
digitalWrite (relayPin3, hög); Förhindrar reläer från att starta engagerad
digitalWrite (relayPin4, hög); Förhindrar reläer från att starta engagerad
initiera den seriell kommunikationen med SpeakJet-TTS256
Serial.BEGIN (9600);
pinMode (rxPin, ingång);
pinMode (txPin, produktionen);
pinMode (bufferPin, ingång);
sjSerial.begin(9600); / / set datahastigheten för SoftwareSerial port
Lägga denna rad i början av varje sketch använder som GLCD:
TFTscreen.begin();
Rensa skärmen med svart bakgrund
TFTscreen.background (0, 0, 0);
skriva den statiska texten på skärmen
Ange teckensnittsfärg till vitt
TFTscreen.stroke(255,255,255);
Ange teckenstorleken
TFTscreen.setTextSize(2);
Skriv texten till det övre vänstra hörnet av skärmen
TFTscreen.text ("Temp (F)", 0, 0);
Skriv texten till det övre vänstra hörnet av skärmen
TFTscreen.text ("luftfuktighet (%)", 0,60);
ste teckenstorleken mycket stor för loopen
TFTscreen.setTextSize(4);
DHT.BEGIN();
}
void loop() {
Läsa av värdet av temp/luftfuktighet sensor på D2
Läst temperatur eller fuktighet tar cirka 250 millisekunder!
Sensormätningar kan också vara upp till 2 sekunder "gamla" (det är en mycket långsam sensor)
h = dht.readHumidity();
t = dht.readTemperature();
t = (t * 1,8) + 32; C till F konvertering
String tempVal = doubleToString (t, 0);
String humVal = doubleToString (h, 0);
String sensorVal = String(1.234);
konvertera behandlingen till en char-matris
tempVal.toCharArray (tempPrintout, 6);
humVal.toCharArray (humPrintout, 6);
Ange teckensnittsfärg
TFTscreen.stroke(255,255,255);
skriva ut sensorn värdet
TFTscreen.text (tempPrintout, 0, 25);
TFTscreen.text (humPrintout, 0, 85);
vänta en stund
Delay(cycleTime);
Radera texten du skrev bara
TFTscreen.stroke(0,0,0);
TFTscreen.text (tempPrintout, 0, 25);
TFTscreen.text (humPrintout, 0, 85);
sjSerial.print ("temprature");
Delay(250);
sjSerial.print(tempPrintout);
Delay(500);
sjSerial.print ("luftfuktighet");
Delay(250);
sjSerial.println(humPrintout);
IF(t>70) {
digitalWrite (relayPin1, låg); slå på AC);
digitalWrite (relayPin2, hög); Stäng av värmen);
digitalWrite (relayPin3, låg); slå på FLÄKTEN);
digitalWrite (relayPin4, hög); stänga av avfuktaren);
}
om (t < 65 & & h < 50) {
digitalWrite (relayPin1, hög); stänga av AC);
digitalWrite (relayPin2, låg); slå på värmen);
digitalWrite (relayPin3, låg); slå på FLÄKTEN);
digitalWrite (relayPin4, hög); stänga av avfuktaren);
}
om (t < 65 & & h > 50) {
digitalWrite (relayPin1, hög); stänga av AC);
digitalWrite (relayPin2, låg); slå på värmen);
digitalWrite (relayPin3, låg); slå på FLÄKTEN);
digitalWrite (relayPin4, låg); slå på avfuktare);
}
om (t > 65 & & t < 70 & & h > 50) {
digitalWrite (relayPin1, hög); stänga av AC);
digitalWrite (relayPin2, hög); Stäng av värmen);
digitalWrite (relayPin3, låg); slå på FLÄKTEN);
digitalWrite (relayPin4, låg); slå på avfuktare);
}
om (t > 65 & & t < 70 & & h < 50) {
digitalWrite (relayPin1, hög); stänga av AC);
digitalWrite (relayPin2, hög); Stäng av värmen);
digitalWrite (relayPin3, hög); stänga av FLÄKTEN);
digitalWrite (relayPin4, hög); stänga av avfuktaren);
}
}
Omgångar ner (via förmedlande heltal konvertering trunkering)
Sträng doubleToString (dubbel ingång, int decimaler) {
IF(decimalPlaces!=0) {
Sträng sträng = String((int)(input*pow(10,decimalPlaces)));
IF(ABS(input) < 1) {
IF(input>0)
string = "0" + sträng;
annat if(input<0)
sträng = string.substring(0,1)+"0"+string.substring(1);
}
Return string.substring(0,string.length()-decimalPlaces) + "." + string.substring(string.length()-decimalPlaces);
}
annat {
återvända String((int)input);
}
}