Gå til innhold

[Løst]help... dørlås med alarm


Anbefalte innlegg

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
Videoannonse
Annonse

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

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 av Nickless
Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...