Étape 3: Maintenant avec synthèse vocale
Nous avons ajouté notre prototype TTS bouclier et fait quelques légères modifications au code. Maintenant la température et l’humidité est parlé à haute voix. Cela peut devenir ennuyeux, donc vous pouvez ajouter un bouton pour discours sur demande ! Nous avons changé la goupille de DHT-22 à 6 comme la broche originale 2 interfère avec le bouclier de bar clandestin. Le bouclier de SpeakEasy (produit pour nous par http://www.hacktronics.com) est basé sur les puces de SpeakJet et TTS256, avec un amplificateur intégré.
Speak Easy Setup
#include < SoftwareSerial.h >
#define txPin 2
#define rxPin 5
SoftwareSerial sjSerial = SoftwareSerial (rxPin, txPin) ;
int bufferPin = 4 ; surveiller le tampon moitié plein, ou occupé (jmp2)
/*
Exemple de texte Arduino TFT
Cet exemple montre comment dessiner du texte le
TFT avec un Arduino. L’Arduino lit la valeur
d’un capteur analogique attaché à broches A0 et écrit
la valeur à l’écran LCD, mise à jour chaque
quart de seconde.
Cet exemple de code est dans le domaine public
Créé le 15 avril 2013 par Scott Fitzgerald
http://Arduino.cc/en/Tutorial/TFTDisplayText
*/
#include / / bibliothèque Arduino LCD
#include
définition de broche pour l’ONU
#define cs 10
#define dc 9
#define rst 8
définition de broche pour le Leonardo
#define cs 7
#define dc 0
#define rst 1
Créez une instance de la bibliothèque
TFT TFTscreen = TFT (cs, dc, rst) ;
Tableau de caractères à imprimer à l’écran
char tempPrintout [6] ;
char humPrintout [6] ;
Exemple de test de croquis pour différents capteurs d’humidité/température DHT
Rédigé par ladyada, domaine public
Conversion Fahrenheit ajoutée par Steve Spence, http://arduinotronics.blogspot.com
#include
#define DHTPIN 6 / / quelle broche nous sommes connectés à
Décommentez peu importe le type que vous utilisez !
#define DHTTYPE DHT11 / / DHT 11
#define DHTTYPE DHT22 / / DHT 22 (AM2302)
#define DHTTYPE DHT21 / / DHT 21 (AM2301)
Connecter la broche + (celle du milieu) du capteur à + 5V
Relier la broche S (à droite) du capteur pour tout ce qui est votre DHTPIN
Relier la broche - (à gauche) du capteur au sol
Connecter 10 k résistance entre S et +
int cycleTime = 2000 ;
DHT dht (DHTPIN, DHTTYPE) ;
flotteur h ;
flotteur t ;
void setup() {}
initialiser la communication série avec le SpeakJet-TTS256
Serial.Begin (9600) ;
pinMode (rxPin, entrée) ;
pinMode (txPin, sortie) ;
pinMode (bufferPin, entrée) ;
sjSerial.begin(9600); / / définir le débit de données pour le port de SoftwareSerial
Ajoutez cette ligne au début de chaque croquis qui utilise le GLCD :
TFTscreen.begin() ;
effacer l’écran avec un fond noir
TFTscreen.background (0, 0, 0) ;
écrivez le texte statique à l’écran
Définissez la couleur de la police à blanc
TFTscreen.stroke(255,255,255) ;
définir la taille de police
TFTscreen.setTextSize(2) ;
écrire le texte dans le coin supérieur gauche de l’écran
TFTscreen.text ("Temp (F)", 0, 0) ;
écrire le texte dans le coin supérieur gauche de l’écran
TFTscreen.text ("humidité (%)", 0,60) ;
Ste très grand pour la boucle de la taille de la police
TFTscreen.setTextSize(4) ;
DHT.Begin() ;
}
void loop() {}
Lire la valeur de la sonde de temperature/HUMIDITE sur D2
Lecture de température ou humidité prend environ 250 millisecondes !
Lectures du capteur peuvent également être jusqu'à 2 secondes « ancienne » (c’est un capteur très lent)
h = dht.readHumidity() ;
t = dht.readTemperature() ;
t = (t * 1,8) + 32 ; C à la conversion de F
String tempVal = doubleToString (t, 0) ;
String humVal = doubleToString (h, 0) ;
String sensorVal = String(1.234) ;
convertir la lecture en un tableau de char
tempVal.toCharArray (tempPrintout, 6) ;
humVal.toCharArray (humPrintout, 6) ;
Définissez la couleur de police
TFTscreen.stroke(255,255,255) ;
imprimer la valeur de la sonde
TFTscreen.text (tempPrintout, 0, 25) ;
TFTscreen.text (humPrintout, 0, 85) ;
Attendez un moment
Delay(cycleTime) ;
effacer le texte que vous venez d’écrire
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 ("humidité") ;
Delay(250) ;
sjSerial.println(humPrintout) ;
}
Tours, vers le bas (par troncature de conversion entier intermédiaire)
String doubleToString (double entrée, int decimalPlaces) {}
{if(decimalPlaces!=0)}
Chaîne chaîne = String((int)(input*pow(10,decimalPlaces))) ;
if(ABS(Input) < 1) {}
if(Input>0)
String = « 0 » + string ;
d’autre if(input<0)
string = string.substring(0,1)+"0"+string.substring(1) ;
}
return string.substring(0,string.length()-decimalPlaces) + "." + string.substring(string.length()-decimalPlaces) ;
}
else {}
Return String((int)input) ;
}
}