Paso 3: Ahora con texto a voz
Hemos añadido nuestro prototipo de escudo de TTS y había hecho algunas ligeras modificaciones en el código. Ahora la temperatura y la humedad se habla en voz alta. Pueden ser molesto, por lo que puede que desee añadir un botón para hablar sobre la demanda! Hemos cambiado el pin de DHT-22 a 6 como el pasador original 2 interfiere con el escudo de SpeakEasy. El escudo de SpeakEasy (producido por nosotros por http://www.hacktronics.com) se basa en los chips SpeakJet y TTS256, con un amplificador incorporado.
Hablar de fácil configuración
#include < SoftwareSerial.h >
#define txPin 2
#define rxPin 5
SjSerial SoftwareSerial = SoftwareSerial (rxPin, txPin);
int bufferPin = 4; controlar buffer medio lleno, u ocupado (jmp2)
/*
Ejemplo de texto de Arduino TFT
Este ejemplo muestra cómo dibujar texto la
TFT con un Arduino. El Arduino lee el valor
de un sensor analógico conectado al pin A0 y escribe
el valor de la pantalla, actualizando cada
cuarto de segundo.
Este ejemplo de código es de dominio público
Creado el 15 de abril de 2013 por Scott Fitzgerald
http://Arduino.CC/en/Tutorial/TFTDisplayText
*/
#include / / biblioteca Arduino LCD
#include
definición de perno para la ONU
#define cs 10
#define dc 9
#define rst 8
definición de perno para Leonardo
#define cs 7
#define dc 0
#define rst 1
crear una instancia de la biblioteca
TFTscreen TFT = TFT (cs, dc, rst);
array de char a imprimir a la pantalla
char tempPrintout [6];
char humPrintout [6];
Ejemplo prueba de boceto para diferentes sensores de humedad/temperatura DHT
Escrito por ladyada, dominio público
Conversión de Fahrenheit Añadida por Steve Spence, http://arduinotronics.blogspot.com
#include
#define DHTPIN 6 / Qué pin estamos conectado a
Quite el comentario de cualquier tipo que utilizas!
#define DHTTYPE DHT11 / / DHT 11
#define DHTTYPE DHT22 / / DHT 22 (AM2302)
#define DHTTYPE DHT21 / / DHT 21 (AM2301)
Conectar pin + (media) del sensor de + 5V
Conectar el pin S (a la derecha) del sensor a lo que tu DHTPIN
Conectar el pin - (a la izquierda) del sensor de suelo
Conectar la resistencia de 10 k entre S y +
Ciclos de int = 2000;
DHT dht (DHTPIN, DHTTYPE);
Float h;
flotador t;
void setup() {}
inicializar la comunicación serial con el SpeakJet-TTS256
Serial.Begin (9600);
pinMode (rxPin, entrada);
pinMode (txPin, salida);
pinMode (bufferPin, entrada);
sjSerial.begin(9600); / / establecer la tarifa de datos para el puerto SoftwareSerial
Agrega esta línea al principio de cada dibujo que utiliza el GLCD:
TFTscreen.begin();
limpiar la pantalla con un fondo negro
TFTscreen.background (0, 0, 0);
Escriba el texto estático a la pantalla
establece el color de fuente en blanco
TFTscreen.stroke(255,255,255);
establecer el tamaño de fuente
TFTscreen.setTextSize(2);
escribir el texto en la esquina superior izquierda de la pantalla
TFTscreen.text ("Temp (F)", 0, 0);
escribir el texto en la esquina superior izquierda de la pantalla
TFTscreen.text ("humedad (%)", 0,60);
ste el tamaño de fuente muy grande para el bucle de
TFTscreen.setTextSize(4);
DHT.Begin();
}
void loop() {}
Lea el valor del sensor de temp/humedad en D2
Lectura de temperatura o la humedad toma alrededor de 250 milisegundos.
Lecturas del sensor también pueden ser hasta 2 segundos 'old' (es un sensor muy lento)
h = dht.readHumidity();
t = dht.readTemperature();
t = (t * 1.8) + 32; C conversión de F
Cadena tempVal = doubleToString (t, 0);
Cadena humVal = doubleToString (h, 0);
String sensorVal = String(1.234);
convertir la lectura en una matriz de char
tempVal.toCharArray (tempPrintout, 6);
humVal.toCharArray (humPrintout, 6);
establecer el color de la fuente
TFTscreen.stroke(255,255,255);
imprimir el valor de sensor
TFTscreen.text (tempPrintout, 0, 25);
TFTscreen.text (humPrintout, 0, 85);
Espere un momento
Delay(cycleTime);
borrar el texto que acabo de escribir
TFTscreen.stroke(0,0,0);
TFTscreen.text (tempPrintout, 0, 25);
TFTscreen.text (humPrintout, 0, 85);
sjSerial.print "(temprature del);
Delay(250);
sjSerial.print(tempPrintout);
Delay(500);
sjSerial.print ("humedad");
Delay(250);
sjSerial.println(humPrintout);
}
Rondas de abajo (a través de truncamiento de la conversión del intermediario entero)
String doubleToString (doble entrada, int LugaresDecimales (DecimalPlaces)) {}
{if(decimalPlaces!=0)}
String cadena = String((int)(input*pow(10,decimalPlaces)));
if(ABS(INPUT) < 1) {}
if(INPUT>0)
cadena = "0" + cadena;
otro if(input<0)
cadena = string.substring(0,1)+"0"+string.substring(1);
}
volver string.substring(0,string.length()-decimalPlaces) + "." + string.substring(string.length()-decimalPlaces);
}
Else {}
volver String((int)input);
}
}