Stap 21: Gebruik de GPIO pinnen te knipperen van LED (Light Emitting Diodes)
U kunt zien hoe het was gesoldeerd in het bovenste linker gedeelte van de afbeelding. Wanneer u de app trakrmotorcontrol uitvoert en geen knop wordt gedrukt, verlicht niets. Wanneer de knop A is ingedrukt, brandt de groene LED; Wanneer B-knop is ingedrukt, brandt de rode LED.
C Language code:
////////////////////////////////////////////
Programma LED flash voor Spy Video TRAKR
Programma scant om te zien als knop A was
gedrukt op TRAKR externe en sets GPC0 hoog
en lage GPC1 voor het verzenden van huidige via LED
in voorwaartse bias richting (ingeschakeld).
//
Als de knop B wordt ingedrukt, daarin GPC0 laag
en te verzenden door hoge GPC1
LED in omgekeerde richting (uitgeschakeld).
///////////////////////////////////////////
#include "svt.h" //include officiële API
#include "JAPI.h" //include "Geheime saus" API
#define GPC0 (1 << 0) //bitmask voor pin GPC0 = 00000001
#define GPC1 (1 << 1) //bitmask voor pin GPC1 = 00000010
#define GPC2 (1 << 2) //bitmask voor pin GPC2 00000100 =
#define GPC3 (1 << 3) //bitmask voor pin GPC3 00001000 =
#define GPC4 (1 << 4) //bitmask voor pin GPC4 00010000 =
#define GPC5 (1 << 5) //bitmask voor pin GPC5 00100000 =
#define GPC6 (1 << 6) //bitmask voor pin GPC6 01000000 =
#define GPC7 (1 << 7) //bitmask voor pin GPC7 10000000 =
int keyState; define "keystate" als geheel getal
VOID Start()
{
JAPI_SetIoOutputMode(GPC0+GPC1); //Set uitvoermodus voor PIN GPC0 en GPC1
}
BOOL Run()
{
keyState=GetRemoteKeys(); TRAKR-toets van de afstandsbediening ingedrukt
toewijzen aan keystate
Als (keyState > 0)
{//if keystate groter is dan 0
if(keyState&KEY_INPUT1)
{//Button een geperst (motor uit)
JAPI_SetIoHigh (GPC0), //Set GPC0 pin high (3,3 v)
} else {}
JAPI_SetIoLow(GPC0); Schakel pin GPC0
}
if(keyState&KEY_INPUT2)
{//Button B ingedrukt (motor omgekeerde)
JAPI_SetIoHigh (GPC1), //Set GPC1 pin high (3,3 v)
} else {}
JAPI_SetIoLow(GPC1); Schakel pin GPC1
}
if(keyState&KEY_HOME)
{//if thuisknop ingedrukt
return false; Dit zal het einde van de lus
}
}
return true; lus zal herhalen tot vals
}
VOID End()
{//Program einde - Schakel beide pins
JAPI_SetIoLow(GPC0+GPC1);
}
Bestand maken:
# Makefile voor TRAKR speelgoed
# Trakr Project
TRACKR_PATH = C:/Trackr
Programmanaam = trakrmotorcontrol
PRETTY_NAME = trakrmotorcontrol
OUTPUT_PATH =. / Intermediate
OUTPUT_NAME = $(OUTPUT_PATH) / $(programmanaam) elf
INTERNALS_PATH =... / Internals
BRONNEN = app.c
S_OBJECTS = $(OUTPUT_PATH)/app.o
OBJECTEN = $(S_OBJECTS) $(INTERNALS_PATH)/trakr.a
SHELL = sh
CC = arm-elf-gcc
AS = arm-elf-as
BIN = arm-elf-ld
LD = arm-elf-ld
TOPMEMORY = 0XFFE7C000
CFLAGS = - O0-IK... / Internals/Include-ik... / Internals-wand - 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,-kaart -Wl, $(basename $ - nostartfiles-static
alle: voorbereidende build maken van $(OUTPUT_NAME) postbuild
$(OUTPUT_NAME): $(OBJECTS)
"Link... "
"Het creëren bestand $
-u _start -o $@ $(INTERNALS_PATH)/trakr_start.a $(OBJECTS) $(TARGET_FLAG) $(LDFLAGS)
$(OUTPUT_PATH)/app.o:app.c Makefile
"Samenstellen van $<"
-c -o "$" $< "$(TARGET_FLAG) $(CFLAGS)
. NEP: schoon prebuild postbuild
schoon:
$(RM) -f $(programmanaam) .bin
$(RM) -f "$(PRETTY_NAME) .bin"
$(RM) -f $(OUTPUT_PATH)/app.o
$(RM) -f $(OUTPUT_NAME)
$(RM) -f $(MKDEPFILE)
postbuild:
kunnen worden arm-elf-objcopy - O binaire $(OUTPUT_NAME) "$(PRETTY_NAME) .bin"
[ -d "E:/" ] ; vervolgens \
CP "$(PRETTY_NAME) .bin" e:/APPS /; \
fi
voorbereidende build maken van:
# Einde van Makefile
Wanneer u compileert de bovenstaande code met het bovenstaande bestand maken, hierdoor ontstaat een Trakr App bestand met de naam "trakrmotorcontrol.bin" en het bestand moet worden gekopieerd naar de Trakr. Zorg ervoor dat de Trakr uitstaat en aansluiten op uw computer met behulp van de gele USB-kabel die bij de Trakr. Kopieer trakrmotorcontrol.bin naar de APPS-map in de map Trakr. De Trakr van de computer loskoppelt en zet de Trakr. Schakel de externe Trakr, klik op de home-knop en selecteer trakrmotorcontrol uit het menu.
De trakrmotorcontrol app kunt u controle van vele verschillende types van elektrische apparaten... motoren, lichten, Relais, enz.