Arduino "Talande" Temp / fukt på en TFT LCD med reläer (3 / 5 steg)
Steg 3: Nu med text till tal
Vi La våra prototyp TTS-sköld, och gjort några små ändringar i koden. Nu är temperaturen och luftfuktigheten talat högt. Detta kan bli irriterande, så du kanske vill lägga till en knapp för tal på efterfrågan! Vi ändrade DHT-22-pin till 6 eftersom den ursprungliga pin 2 stör SpeakEasy sköld. SpeakEasy sköld (producerat för oss av http://www.hacktronics.com) är baserad på SpeakJet och TTS256 marker, med inbyggda förstärkare.
Tala enkel installation
#include < SoftwareSerial.h >
#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
#define cs 10
#define dc 9
#define rst 8
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
#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 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);
}
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);
}
}