Paso 2: Paso dos controlador
Arduino conectado al teléfono
[cita]
#include #include < [color = #CC6600] .h SPI [/ color] >
[color = #7E7E7E] / / cada objeto en la pantalla debe ser declarado como este [/ color]
[color = #CC6600] anular [/ color] [{color=#CC6600][b]setup[/b][/color]()}
setInitialData(); [color = #7E7E7E] / / llamar a esta función para definir los objetos [/ color]}
[color = #CC6600] anular [/ color] setInitialData()
{
bluerange.setType(DATA_OUT); [color = #7E7E7E] / / define el objeto como una exhibición de box [/ color] nameOfObjectA.setLocation(0,0,FULL); [color = #7E7E7E] / / primera fila, extremo izquierdo, todo el ancho [/ color] nameOfObjectA.setTitle ([color = #006699] "Esto es para la bar"[/color]) del título; nameOfObjectA.setData ([color = #006699] "Esto es para la area"[/color]) de datos; nameOfObjectA.setUnit ([color = #006699] "Esto es para el área de texto en la parte inferior de su box"[/color]);
nameOfObjectB.setId(1); [color = #7E7E7E] / / cada objeto debe asignarse a un único ID número [/ color] nameOfObjectB.setType(DATA_OUT); [color = #7E7E7E] / / define el objeto como una exhibición de box [/ color] nameOfObjectB.setLocation(1,0,FULL); [color = #7E7E7E] / / segunda fila, de izquierda, completo ancho [/ color] nameOfObjectB.setTitle([color=#006699]"Hello"[/color]); nameOfObjectB.setData ([color = #006699] "¡ mundo!" [/ color]); [color = #7E7E7E] / setUnit es opcional. No es necesario mostrarlo todo el tiempo [/ color]
}
[color = #CC6600] anular [/ color] [color=#CC6600][b]loop[/b][/color]() {nameOfObjectA.update(); [color = #7E7E7E] / llame a update() para que aparezca en pantalla [/ color] nameOfObjectB.update(); [color = #7E7E7E] / / y para refrescar su pantalla [/ color]
[color=#CC6600]delay[/color](500); [color = #7E7E7E] / retardo de 500ms (0,5 segundos) antes de repetir el código anterior [/ color]}
[color = #CC6600] anular [/ color] [color=#CC6600][b]setup[/b][/color]() {Andee. [ color=#CC6600]Begin[/color](); [color = #7E7E7E] / / configurar la comunicación entre Annikken Andee y Arduino [/ color] Andee. [color=#CC6600]clear[/color](); [color = #7E7E7E] / / borrar la pantalla de cualquier anterior currentPosition muestra [/ color] = 0; [color = #7E7E7E] / / inicializar la posición de 0 [/ color] theServo. [color=#CC6600]attach[/color](servoPin); [color = #7E7E7E] / / Arduino Dile que prender el servo se conecta al theServo [/ color]. [color=#CC6600]write[/color](currentPosition); [color = #7E7E7E] / / Set servo en la posición 0 [/ color] setInitialData(); [color = #7E7E7E] / / definir tipos de objetos y su apariencia [/ color]} [color = #CC6600] anular [/ color] setInitialData() {btnTurnLeft.setId(0); btnTurnLeft.setType(BUTTON_IN); btnTurnLeft.setLocation(0,0,HALF); btnTurnLeft.setTitle ([color = #006699] "gire a la Left"[/color]); btnTurnLeft.requireAck([color=#CC6600]false[/color]); [color = #7E7E7E] / / necesita esta línea para permitir múltiples botón Prensas [/ color] btnTurnRight.setId(1); btnTurnRight.setType(BUTTON_IN); btnTurnRight.setLocation(0,1,HALF); btnTurnRight.setTitle ([color = #006699] "gire a la Right"[/color]); btnTurnRight.requireAck([color=#CC6600]false[/color]); [color = #7E7E7E] / / necesita esta línea para permitir múltiples botón Prensas [/ color] btnCustomPosition.setId(2); btnCustomPosition.setType(KEYBOARD_IN); [color = #7E7E7E] / / conjuntos de objetos como un texto botón input [/ color] btnCustomPosition.setLocation(1,0,FULL); btnCustomPosition.setTitle ([color = #006699] "ir rápidamente a la posición de costumbre (0 - 180)"[/color]); btnCustomPosition.setKeyboardType(ANDEE_NUMERIC_A);
displaybox.setId(3); displaybox.setType(DATA_OUT); [color = #7E7E7E] / / conjuntos de objetos como un texto botón input [/ color] displaybox.setLocation(2,0,FULL); displaybox.setTitle ([color = #006699] "Position"[/color]) actual; displaybox.setData(0); } [color = #CC6600] anular [/ color] [color=#CC6600][b]loop[/b][/color]() {[color = #CC6600] si [/ color] (btnCustomPosition. [ color=#CC6600]IsPressed[/color]()) {memset (userPos, 0 x 00, 4); [color = #7E7E7E] / / vaciar el contenido de la cadena antes de recibir el usuario entrada [/ color] btnCustomPosition.ack(); [color = #7E7E7E] / / reconocer la pulsación o de lo contrario quedará teléfono espera [/ color] btnCustomPosition.getKeyboardMessage(userPos); [color = #7E7E7E] / Mostrar teclado y almacenar entrada en userInput [/ color]
nuevPosicion = atoi(userPos); [color = #7E7E7E] / / convertir el valor de cadena de valor entero [/ color] [color = #7E7E7E] / / Dile Arduino x Andee qué hacer si el usuario las teclas en los ridículos valores [/ color] [color = #CC6600] si [/ color] newPosition (newPosition < 0) = 0; [color = #CC6600] si [/ color] newPosition (newPosition > 180) = 180; currentPosition = newPosition; [color = #7E7E7E] / / Esto es cómo hacer una vuelta rápida [/ color] theServo. [color=#CC6600]write[/color](currentPosition); [color = #7E7E7E] / girar el servo a la nueva posición [/ color] displaybox.setData(currentPosition); [color = #7E7E7E] / / actualización nueva posición [/ color]} [color = #CC6600] si [/ color] (btnTurnLeft.getButtonPressCount() > 0) [color = #7E7E7E] / / mientras se presiona el botón izquierdo [/color] {btnTurnLeft.ack(); [color = #7E7E7E] / / reconocer la pulsación o de lo contrario quedará teléfono newPosition espera [/ color] = currentPosition - turnResolution; [color = #7E7E7E] / / Set nueva posición [/ color] [color = #CC6600] si [/ color] newPosition (newPosition < 0) = 0; [color = #7E7E7E] / / se establece en 0 si la nueva posición va por debajo de 0 [/ color] [color = #7E7E7E] / / Esto es como se hace un giro lento: [/ color] [color = #CC6600] para [/ color] (currentPosition; currentPosition > newPosition; currentPosition--) {theServo. [ color=#CC6600]Write[/color](currentPosition); displaybox.setData(currentPosition); [color = #7E7E7E] / / posición del servo en la pantalla de actualización resulta [/ color] displaybox.update(); [color=#CC6600]delay[/color](15); [color = #7E7E7E] / / se puede cambiar el valor de retardo. Valor más grande significa más lentas vueltas [/ color] [color = #7E7E7E] / / no establezca su retraso 0 cuando usted está haciendo esto. Corres la posibilidad de [/ color] [color = #7E7E7E] / / dañar el servo. O usted podría apenas ser más irritable. [/ color]} } [color = #CC6600] si [/ color] (btnTurnRight.getButtonPressCount() > 0) [color = #7E7E7E] / / mientras se presiona el botón derecho [/color] {btnTurnRight.ack(); [color = #7E7E7E] / / reconocer la pulsación o de lo contrario quedará teléfono newPosition espera [/ color] = currentPosition + turnResolution; [color = #7E7E7E] / / Set nueva posición [/ color] [color = #CC6600] si [/ color] newPosition (newPosition > 180) = 180; [color = #7E7E7E] / / Set a 180 si el nuevo cargo supera 180 [/ color] [color = #CC6600] para [/ color] (currentPosition; currentPosition < newPosition; currentPosition ++) {theServo. [ color=#CC6600]Write[/color](currentPosition); displaybox.setData(currentPosition); [color = #7E7E7E] / / posición del servo en la pantalla de actualización resulta [/ color] displaybox.update(); [color=#CC6600]delay[/color](15); [color = #7E7E7E] / / se puede cambiar el valor de retardo. Valor más grande significa más lentas vueltas [/ color]}} btnTurnLeft.update(); [color = #7E7E7E] / / Recuerde que actualizar para que el nuevo contenido será mostrado [/ color] btnTurnRight.update(); btnCustomPosition.update(); displaybox.Update(); [color=#CC6600]delay[/color](500); }
[/quote]