jemi Skrevet 1. mai 2009 Del Skrevet 1. mai 2009 hei. stusset over en oppgave hvor en skal simulere en dørlås med alarm. Når alarmen slås på må brukere få litt tid til å forlate huset og låse. Åpning av dør simuleres med trykk på en bryter. Etter åpning har bruker en gitt tid på seg (for eksempel 10 sekunder) til å slå en kode, for eksempel 4 brytere som skal trykkes i gitt rekkefølge. Du kan også bestemme at åpning av vindu skal gi alarm uansett om koden trykkes. Har skrevet litt og prøvd meg fram :/ , trenger kanskje litt tips til å fullføre oppgaven.. =] while (1) { printf ("Vennligst tast inn koden: \n"); scanf ("%d", &code); teller = 0; while (PIND.6 == 0) { if ( alarm == 1 && code == kodeok[i] ) { printf ("Du tastet inn riktig kode\n"); alarmtid = 0; alarm = 0; } else { printf ("Du tastet inn feil kode"); alarm == 1; } while (PIND.6 == 1) { delay_ms(15000); teller = 1; telt = 1; ? Lenke til kommentar
[kami] Skrevet 2. mai 2009 Del Skrevet 2. mai 2009 ja.. dette ser jo ikke ut til å kompilere en gang.. hva trenger du hjelp til og hva er det du ikke forstår? Lenke til kommentar
jemi Skrevet 2. mai 2009 Forfatter Del Skrevet 2. mai 2009 glemte å nevne at her brukes det codevision til å compilere og kjører programmet med stk500.. Det jeg lurte på her var om det gikk ann å lage en array som innholder kombinasjon av "riktig" code, deretter sammenligne array med "code". en annen ting var hvordan skal jeg få alarm til å telle ned? holder det med at jeg setter variablen ( alarmtid=15; og hvis teller = 1; alarmtid-- ) ?? (kan det funke ? ) #include<stdio.h> #include<stdlib.h> //#include<delay.h> #include<windows.h> int main(void) { char kodeok[80]={3,4,5,6}; // array med kombinasjonen int alarmtid=15; // alarm tid 15 s... ? int teller; int telt; int alarm; int code; while (1) { printf ("Vennligst tast inn koden: \n"); scanf ("%d", &code); teller = 1; // starter telling.. while (PIND.6==0) { if ( alarm == 1 && code == kodeok[i] ) // alarm på OG code er det samme som kodeok { printf ("Du tastet inn riktig kode\n\n"); teller = 0; // slår av telling. alarm = 0; // alarm skrus av } else { printf ("Du tastet inn feil kode\n"); alarm == 1; // alarm skrus på teller==1; // starter telling; if (alarmtid<=0) printf ("Politiet blir tilkalt!"); } while (PIND.6==1) { delay_ms(15000); teller = 1; // starter telling if( teller == 1) alarmtid--; // teller ned??? printf ("Alarmen er nå slått av!"); } return 0; } Lenke til kommentar
Nickless Skrevet 2. mai 2009 Del Skrevet 2. mai 2009 (endret) en annen ting var hvordan skal jeg få alarm til å telle ned? holder det med at jeg setter variablen ( alarmtid=15; og hvis teller = 1; alarmtid-- ) ?? (kan det funke ? ) Hvorfor ikke bare include <time.h> der har du en tid funksjon di kan bruke. Du kan sette alarmtid = 15; og hvis teller = 1; så alarmtid-- Men dette vil ikke bli sekunder da hvis du gjør det på den måten, vil jo bli antall forsøk man får, alarmtid blir 14, og man kan omså vente en time før man prøver igjen, da vil alarmtid bli 13 hvis man feiler igjen. Så anbefaler deg time.h eventuelt gjøre det så enkelt som: int svar = 1234; int code; start klokken din (kan ikke funksjonen i hodet). scanf("%d", &code); while(code != svar){ if(klokken => 15){ printf("Tiden er ute, politiet er tilkallt!"); }else printf("Koden du skrev er feil, vennligst prøv igjen"); scanf("%d", &code); } printf("Koden du skrev viser seg å være rett!"); Endret 2. mai 2009 av Nickless Lenke til kommentar
aC Skrevet 4. mai 2009 Del Skrevet 4. mai 2009 Avr har ingen kjenskap til time.h bruk util/delay.h og kall funksjonen _delay_ms(double ms); Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå