Stap 4: Meer code, voor gebruik met een mechanische tils sensor
Deze koppelingen biedt een andere interactieve patroon van de LED's, met behulp van een metalen bal in een vierkante behuizing.
Zie de grijze doos naast de atmega328. Het werd geborgen van een overleden Sony hond!
Met behulp van deze tilt sensor, moest ik een tiltcheck functie. Dit leek gemakkelijk, maar het was niet!
Het principe juist was, maar een vertraging moest worden ingevoegd de PIN patroon over te schakelen.
Zie de functie in het script:
uint8_t checkTilt() {}
uint8_t tiltPin = 0;
PORTC | = (1 << PC1);
PORTC | = (1 << PC5);
uint8_t delayTime = 50; / /---> vertraging
PORTC & = ~ _BV(PC1);
_delay_ms(delayTime); / /---> vertraging
Als ((PINC & (1 << PC4)) == 0) tiltPin = 2; //left
Als ((PINC & (1 << PC2)) == 0) tiltPin = 1; / / front
PORTC | = (1 << PC1);
_delay_ms(2*delayTime); //here een vertraging is noodzakelijk, anders lezingen zijn vreemd???
PORTC & = ~ _BV(PC5);
_delay_ms(delayTime); / /---> vertraging
Als ((PINC & (1 << PC4)) == 0) tiltPin = 5; //back
Als ((PINC & (1 << PC2)) == 0) tiltPin = 3; / / rechts
Als ((PINC & (1 << PC3)) == 0) tiltPin = 4; //mid -> top
PORTC | = (1 << PC5);
Return tiltPin;
}
http://www.contrechoc.com/Instructables/twinkle_winter_cap_project_2.zip
Nu wanneer u uw hoofd beweegt, zal de LED's patroon veranderen naar links, rechts, fron of rug. En wanneer niet geneigd zijn de bovenste LED's op.