Automatisk kontrollant för ledde trappor (3 / 4 steg)
Steg 3: Algoritmen fungerar
Uppgiften var följande.
När de passerar den infraröda strålen längst ner i trappan - ljus lysdioderna smidigt på uppåt.
När passerar IR stråle på toppen av trappan - lysdioderna ljus på ner smidigt.
I de fall när båda balkar korsas vid samma tid - tända alla lampor på smidigt
Efter en viss tid, förinställda med skärmen och tangentbordet LEDs ljuset ner smidigt i samma riktning, där det har aktiverats.
Alla förseningar in och kontrolleras av displayen.
Flera belysa effekter kan vara hitta i menyn.
Och valet av utgångar (1-16)
Programmet skrevs i CodeVisionAVR.
Jag kommer inte lägga hela koden, men här är några huvudsakliga punkter:
unsigned char mask;
void processUp() {
IF(datUp==0) {
delay_ms(50);
för (mask = 0x01, mask, mask << = 1)
{
PORTC | = mask;
wait1(); /
}
dröjsmål
wait1(); fördröjning innan belysning ner
nu lyser upp (i samma riktning)
för (mask = 0x01, mask, mask << = 1)
för motsatt riktning:
för (mask = 0x80, mask, mask >> = 1)
{
PORTC & = ~ mask;
wait1();
}
}
}