Skocz do zawartości

[C] Jak zrobić żeby LED zapalała się na 1sek i gasła na 5sek


Kangurek

Pomocna odpowiedź

Witam, najpierw napiszę opis działania a następnie napisze mój problem.

Program, który piszę, jest prototypem do programu, który ,,ulepszy" moją szafkę. Gdy szafka będzie zamknięta, będzie wciśnięty przycisk PD0, i będzie włączona klimatyzacja (Port PB0). Wiatraczek ma zapalać się co 40 minut i działać 5 minut i tak w kółko. Gdy szafka zostanie otwarta, przycisk PD0 zostanie zwolniony i oświeci się oświetlenie, składające się z 1 LED i kolominatora(nie wiem czy to się tak nazywa ale to coś co skupia światło, tak jak to jest w latace). Jeśli ponownie zamknę szafkę oświetlenie będzie świecić jeszcze przez 30 sekund i wszystko zaczyna się od nowa. W prototypie klimatyzacje zastępuje dioda LED podłączona do PB0 a oświetlenie dioda LED podłączona do PB1

Mój problem polega na czasowym włączaniu i wyłączaniu klimatyzacji. Do końca tego programu brakuje mi tylko tego fragmentu.

Przedstawiam mój kod programu, i proszę o modyfikacje w razie błędów, oraz dopisanie tej brakującej części:

/* "led.c" - program do ulepszenia szawki */
/* układ ATmega 1MHz */
/* PB0,PB1 - diody LED; PD0 - przycisk */

#define F_CPU 1000000L
#include <avr/io.h> 
#include <util/delay.h>                

int main(void) 
{ 
   DDRB  |= _BV(0)|_BV(1); 
   PORTB |= _BV(0); 
   PORTB &= ~_BV(0); 
   DDRD  &= ~_BV(0); 
   PORTD |=  _BV(0); 


  while(1) 
 { 
   if(!(PIND & 0x01)) 
   { 
/* Jeśli przycisk PD0 zostanie wciśnięty włącz port PB0 */
	PORTB = 0x01; 
/*Czekaj 5 sec. i włącz na 1 sec.*/

} 
else
{ 
/*Gdy przycisk PD0 zostanie zwolniony,wyłącz port PB0 a załącz port PB1 po upływie 30 sec. */
	PORTB = 0x02; 
	for(unsigned int i=0; i<3000; i++) _delay_ms(10); 

} 

 } 

} 
Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.