Arduino "Talande" Temp / fukt på en TFT LCD med reläer (2 / 5 steg)
Steg 2: kod
Följande kod är fortfarande ett pågående arbete, men är funktionell. Låt oss veta om du hittar problem eller har förslag på förbättringar.
/*
Arduino TFT text exempel
Det här exemplet visar hur man drar texten den
TFT med en Arduino.
Denna exempelkod är offentlig
Skapad 15 April 2013 av Scott Fitzgerald
http://Arduino.cc/en/tutorial/TFTDisplayText
Modded av Steve Spence av http://arduinotronics.blogspot.com
*/
#include "SPI.h"
#include "ST7735.h"
Stift SCLK och MOSI är fasta i maskinvaran och pin 10 (eller 53)
måste vara en utgång
#define sclk 13 / / för MEGAs använda pin 52
#define mosi 11 / / för MEGAs använda pin 51
#define cs 10 / / för MEGAs du vill förmodligen detta är pin 53
#define dc 9
#define rst 8 / / du kan också ansluta detta till Arduino Återställ
PIN definition för Leonardo
#define cs 7
#define dc 0
#define rst 1
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 "DHT.h" / / https://learn.adafruit.com/dht/downloads
#define DHTPIN 2 / / 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() {
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, 2);
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);
}
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);
}
}