Paso 21: Use los pines GPIO para Flash LED (diodos emisores de luz)
Puedes ver cómo fue soldado en la parte superior izquierda de la imagen. Cuando se ejecuta la aplicación trakrmotorcontrol y se presiona ningún botón, nada se ilumina. Cuando se presiona el botón A, el LED verde se enciende; Cuando se presiona el botón B, el LED rojo se enciende.
Código de lenguaje C:
////////////////////////////////////////////
Programa flash LED para Spy Video TRAKR
Analiza el programa para ver si era el botón A
TRAKR prensado en remoto y sistemas de GPC0 alta
y GPC1 baja para enviar corriente a través de LED
en dirección diagonal hacia adelante (marcha).
//
Si se presiona el botón B, establece GPC0 bajo
y GPC1 alta para enviar corriente a través de
LED en la dirección contraria (apagada).
///////////////////////////////////////////
#include "svt.h" //include API oficial
#include "JAPI.h" //include "Salsa secreta" API
#define GPC0 (1 << 0) //bitmask PIN GPC0 = 00000001
#define GPC1 (1 << 1) //bitmask PIN GPC1 = 00000010
#define GPC2 (1 << 2) //bitmask PIN GPC2 = 00000100
#define GPC3 (1 << 3) //bitmask PIN GPC3 = 00001000
#define GPC4 (1 << 4) //bitmask PIN GPC4 = 00010000
#define GPC5 (1 << 5) //bitmask PIN GPC5 = 00100000
#define GPC6 (1 << 6) //bitmask PIN GPC6 = 01000000
#define GPC7 (1 << 7) //bitmask PIN GPC7 = 10000000
int keyState; definir "keystate" como entero
void Start()
{
JAPI_SetIoOutputMode(GPC0+GPC1); //Set modo de salida de los pines GPC0 y GPC1
}
bool Run()
{
keyState=GetRemoteKeys(); Tecla de control remoto TRAKR
asignar a keystate
Si (keyState > 0)
{//if keystate es mayor que 0
if(keyState&KEY_INPUT1)
{//Button un prensado (motor delantero)
JAPI_SetIoHigh (GPC0); //Set GPC0 pin alta (3,3 v)
} else {}
JAPI_SetIoLow(GPC0); Apagar pin GPC0
}
if(keyState&KEY_INPUT2)
{//Button B presionado (motor atrás)
JAPI_SetIoHigh (GPC1); //Set GPC1 pin alta (3,3 v)
} else {}
JAPI_SetIoLow(GPC1); Apagar pin GPC1
}
if(keyState&KEY_HOME)
{//if botón home presionado
devuelven el valor false; Esto va a terminar el bucle
}
}
verdaderas; bucle se repetirá hasta falso
}
End() vacío
{Fin de //Program - desconectar los pines
JAPI_SetIoLow(GPC0+GPC1);
}
Hacer el archivo:
# Makefile para juguete TRAKR
# Proyecto Trakr
TRACKR_PATH = C:/Trackr
PROGRAM_NAME = trakrmotorcontrol
PRETTY_NAME = trakrmotorcontrol
OUTPUT_PATH =. / intermedio
OUTPUT_NAME = $(OUTPUT_PATH) / $(PROGRAM_NAME) .elf
INTERNALS_PATH =... / Funcionamiento interno
FUENTES = app.c
S_OBJECTS = $(OUTPUT_PATH)/app.o
OBJETOS = $(S_OBJECTS) $(INTERNALS_PATH)/trakr.a
SHELL = sh
CC = gcc-elf-brazo
COMO = brazo-elf-como
BIN = brazo-elf-ld
LD = brazo-elf-ld
TOPMEMORY = 0XFFE7C000
CFLAGS = - O0-ME... / Internos/Include-me... / Funcionamiento interno-pared - gstabs +
TARGET_FLAG = - mcpu = arm926ejs - mapcs-32 - mlittle-endian - specs=specs.semi
LDFLAGS = -T... /Internals/WJ_APP_8M.LD -Wl,--defsym-Wl,__stack_base=$(TOPMEMORY) -Wl,-mapa -Wl, $(basename $ - nostartfiles-estática
todos: prebuild $(OUTPUT_NAME) así
$(OUTPUT_NAME): $(OBJECTS)
"Enlazan a... "
"Crear archivo $
-u _start -o $@ $(INTERNALS_PATH)/trakr_start.a $(OBJECTS) $(TARGET_FLAG) $(LDFLAGS)
$(OUTPUT_PATH)/app.o:app.c Makefile
"Compilación de $<"
-c -o "$" $< "$(TARGET_FLAG) $(CFLAGS)
. PHONY: limpiar así los
limpiar:
$(RM) -f $(PROGRAM_NAME) .bin
$(RM) -f "$(PRETTY_NAME) .bin"
$(RM) -f $(OUTPUT_PATH)/app.o
$(RM) -f $(OUTPUT_NAME)
$(RM) -f $(MKDEPFILE)
así:
brazo-elf-objcopy - O binario $(OUTPUT_NAME) "$(PRETTY_NAME) .bin"
[ -d "E:/" ] ; entonces \
CP "$(PRETTY_NAME) .bin" e:/aplicaciones /; \
fi
prebuild:
# Fin de archivo make
Al compilar el código anterior con el anterior hacer archivo, esto creará un archivo de Trakr App llamado "trakrmotorcontrol.bin" y el archivo tendrá que copiar en el Trakr. Asegúrese de que el Trakr está desconectado y conectarlo a su ordenador utilizando el cable USB amarillo que vino con el Trakr. Copie trakrmotorcontrol.bin a la carpeta de aplicaciones dentro de la carpeta de Trakr. Desconecte el Trakr del ordenador y conecte el Trakr. Encienda el Trakr remoto, haga clic en el botón Inicio y seleccionar trakrmotorcontrol del menú.
Puede utilizar la aplicación trakrmotorcontrol para el control de muchos tipos diferentes de dispositivos eléctricos... motores, luces, relés, etc..