Stap 3: Nu met Text-To-Speech
We onze prototype TTS schild toegevoegd, en maakte enkele kleine aanpassingen aan de code. Nu is de temperatuur en de vochtigheid hardop gesproken. Dit kan krijgen vervelend, zodat u kunt een knop voor spraak toevoegen op aanvraag! We veranderd de DHT-22 pin tot en met 6, zoals de originele pin 2 met het SpeakEasy schild interfereert. Het schild van de SpeakEasy (voor ons geproduceerd door http://www.hacktronics.com) is gebaseerd op de SpeakJet en TTS256-chips, met een ingebouwde versterker.
Spreken van eenvoudige installatie
#include < SoftwareSerial.h >
#define txPin 2
#define rxPin 5
SoftwareSerial sjSerial = SoftwareSerial (rxPin, txPin);
int bufferPin = 4; controleren van buffer half volledig, of bezet (jmp2)
/*
Voorbeeld van de tekst van de Arduino TFT
In het volgende voorbeeld ziet u hoe tekst worden getekend op de
TFT met een Arduino. De Arduino leest de waarde
van een analoge sensor gekoppeld aan pin A0, en schrijft
de waarde naar het LCD-scherm, bijwerken van elke
tweede kwartaal.
Deze voorbeeldcode is in het publieke domein
Gemaakt van 15 April 2013 door Scott Fitzgerald
http://Arduino.CC/en/tutorial/TFTDisplayText
*/
#include / / Arduino LCD-bibliotheek
#include
PIN definitie voor de Uno
#define cs 10
#define dc 9
#define rst 8
PIN definitie voor het Leonardo
#define cs 7
#define dc 0
#define rst 1
Maak een instantie van de bibliotheek
TFT TFTscreen = TFT (cs, dc, rst);
char matrix af te drukken op het scherm
char tempPrintout [6];
char humPrintout [6];
Voorbeeld testen schets voor diverse DHT luchtvochtigheid/temperatuur sensoren
Geschreven door ladyada, openbaar
Fahrenheit conversie toegevoegd door Steve Spence, http://arduinotronics.blogspot.com
#include
#define DHTPIN 6 / / welke pin wij verbonden bent met
Uncomment welke type u!
#define DHTTYPE DHT11 / / DHT 11
#define DHTTYPE DHT22 / / DHT 22 (AM2302)
#define DHTTYPE DHT21 / / DHT 21 (AM2301)
Aansluiten pin + (midden) van de sensor + 5V
Verbinden met pin S (aan de rechterkant) van de sensor wat uw DHTPIN is
Pin - (aan de linkerkant) van de sensor verbinden met grond
Verbinding maken met 10 k ohm weerstand tussen S en +
int cycleTime = 2000;
DHT dht (DHTPIN, DHTTYPE);
float h;
float t;
VOID Setup {}
initialiseren van de seriële communicatie met de SpeakJet-TTS256
Serial.begin (9600);
pinMode (rxPin, INPUT);
pinMode (txPin, OUTPUT);
pinMode (bufferPin, INPUT);
sjSerial.begin(9600); / / set de gegevenssnelheid voor de SoftwareSerial-poort
Zet deze lijn aan het begin van elke schets die gebruikmaakt van de GLCD:
TFTscreen.begin();
Schakel het scherm met een zwarte achtergrond
TFTscreen.background (0, 0, 0);
de statische tekst op het scherm schrijven
kleur van het lettertype ingesteld op wit
TFTscreen.stroke(255,255,255);
de lettergrootte instellen
TFTscreen.setTextSize(2);
schrijven van de tekst naar de linker bovenhoek van het scherm
TFTscreen.text ('Temp (F)', 0, 0);
schrijven van de tekst naar de linker bovenhoek van het scherm
TFTscreen.text ("vochtigheid (%)", 0,60);
ste groot voor de lus op de grootte van het lettertype
TFTscreen.setTextSize(4);
DHT.begin();
}
void loop {}
Luiden naar de waarde van de sensor temp/vochtigheid op D2
Lezing temperatuur of vochtigheid neemt ongeveer 250 milliseconden!
Sensor lezingen kan maximaal 2 seconden 'oude' (het is een zeer langzame sensor)
h = dht.readHumidity();
t = dht.readTemperature();
t = (t * 1.8) + 32; C naar F conversie
TempVal koord = doubleToString (v, 0);
HumVal koord = doubleToString (h, 0);
SensorVal koord = String(1.234);
de lezing omzetten in een char-matrix
tempVal.toCharArray (tempPrintout, 6);
humVal.toCharArray (humPrintout, 6);
de tekstkleur instellen
TFTscreen.stroke(255,255,255);
afdrukken van de sensor-waarde
TFTscreen.text (tempPrintout, 0, 25);
TFTscreen.text (humPrintout, 0, 85);
wachten op een moment
delay(cycleTime);
wissen van de tekst die u enkel schreef
TFTscreen.stroke(0,0,0);
TFTscreen.text (tempPrintout, 0, 25);
TFTscreen.text (humPrintout, 0, 85);
sjSerial.print ("tempratuur");
delay(250);
sjSerial.print(tempPrintout);
delay(500);
sjSerial.print ("vochtigheid");
delay(250);
sjSerial.println(humPrintout);
}
Rondes neer (via intermediaire integer conversie truncatie)
String doubleToString (dubbele invoer, int decimalPlaces) {}
if(decimalPlaces!=0) {}
String string = String((int)(input*pow(10,decimalPlaces)));
if(ABS(input) < 1) {}
if(input>0)
tekenreeks = '0' + koord;
anders if(input<0)
tekenreeks = string.substring(0,1)+"0"+string.substring(1);
}
keren string.substring(0,string.length()-decimalPlaces) + "." + string.substring(string.length()-decimalPlaces);
}
else {}
Return String((int)input);
}
}