DIY Intervalltimer för canon DLSRs (3 / 4 steg)
Steg 3: Knappen upptäckt programmering
Ta en titt på schematiskt först. -> http://imageshack.us/photo/my-images/841/4kf1.jpg...
Logik för att upptäcka.
1. först ange DDR register till insatsen. dvs, '0', t.ex DDRB = 0x0F;
Först ställs 4 stift (1111 -> F) som utgångsstift.
Återstående stiften (0000 -> 0) ställs som input stift.
2. för att läsa en nyckel/knappen, måste först ställa in stiften på hög och sedan dra det till låg genom att ansluta den andra änden av nyckelknappen till marken. Så när någonsin trycker på en knapp, blir det ansluten till marken. Spänningen över att särskild pin går från + 5v till 0v. Denna förändring i spänning upptäcker den trycker på en tangent.
7 6 5 4 3 2 1 0
1 1 1 1 0 0 0 0 - > F0 hexadecimalt värde
PB.0 = 0, O/P pin PB.5 = 1, jag / P Pin
PB.1= 0, O/P pin PB.6 = 1, jag / P Pin
PB.2= 0, O/P pin PB.7 = 1, jag / P Pin
PB.3= 0, O/P pin PB.8 = 1, jag / P Pin
T.ex.
DDRB = 0X0F; Lägre högre 4pins(0000) riktas som input stift.
PORTB = 0XFF; Inställningen indata stift så högt att upptäcka en knapptryckning.
göra
{
nyckel = PINB & & 0xF0; nyckel = F0 & & F0 = F0 om ingen tangenten nedtryckt, loop fortsätter tills den upptäcker. Förutsatt att PB.7 trycks sedan nyckel = 0x70 & & F0 = ox70, Loops-hållplatser.
} while(key == 0xF0);
Exempelkod:
Jag har definierat detta som en header-fil i mitt program.
myButton.h -> https://docs.google.com/document/d/1MLIU19IGr1liBq...
Grattis! Du slutfört steg 3, nu låter prototyp och bygga den.