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:
Przeniosłem z "Programowanie początkujący"
[Dr.Vee]
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);
}
}
} Przeniosłem z "Programowanie początkujący"
[Dr.Vee]