Untitled
unknown
plain_text
a year ago
2.4 kB
10
Indexable
#include <xc.h>
#include <libpic30.h>
#include <stdio.h>
#include <string.h>
#include <math.h>
#include "lcd.h"
#include "buttons.h"
#include "adc.h"
// Stałe definiujące maksymalny czas i minimalny poziom mocy
#define MAX_COOK_TIME_SECONDS (600)
#define MIN_POWER_WATTS (200)
// Zmienne przechowujące stan kuchenki mikrofalowej
volatile unsigned int remainingTimeSeconds = 0;
volatile unsigned int currentPowerWatts = MIN_POWER_WATTS;
int isMicrowaveRunning = 0;
int shouldReset = 0;
// Funkcja aktualizująca wyświetlacz LCD
void displayMicrowaveStatus() {
char displayText[32];
unsigned char minutes = remainingTimeSeconds / 60;
unsigned char seconds = remainingTimeSeconds % 60;
sprintf(displayText, "Time: %02u:%02u\nPower: %dW\n", minutes, seconds, currentPowerWatts);
LCD_ClearScreen();
LCD_PutString(displayText, strlen(displayText));
}
int main(void) {
// Inicjalizacja modułów ADC i LCD
ADC_SetConfiguration(ADC_CONFIGURATION_DEFAULT);
ADC_ChannelEnable(ADC_CHANNEL_POTENTIOMETER);
TRISA = 0x0000;
LCD_Initialize();
while (!shouldReset) {
// Odczyt wartości potencjometru i obliczenie mocy
unsigned int potentiometerValue = (unsigned int)round(ADC_Read10bit(ADC_CHANNEL_POTENTIOMETER));
currentPowerWatts = potentiometerValue * 2;
// Obsługa przycisków
if (BUTTON_IsPressed(BUTTON_S4)) {
remainingTimeSeconds += 60;
if (remainingTimeSeconds > MAX_COOK_TIME_SECONDS)
remainingTimeSeconds = MAX_COOK_TIME_SECONDS;
while (BUTTON_IsPressed(BUTTON_S4)) {} // Czekaj na zwolnienie przycisku
}
if (BUTTON_IsPressed(BUTTON_S6)) {
isMicrowaveRunning = !isMicrowaveRunning; // Włącz/wyłącz mikrofalówkę
while (BUTTON_IsPressed(BUTTON_S6)) {}
}
if (BUTTON_IsPressed(BUTTON_S3)) {
shouldReset = 1;
while (BUTTON_IsPressed(BUTTON_S3)) {}
}
// Odliczanie czasu, jeśli mikrofalówka działa
if (isMicrowaveRunning && remainingTimeSeconds > 0) {
remainingTimeSeconds--;
}
// Aktualizacja wyświetlacza i krótkie opóźnienie
displayMicrowaveStatus();
__delay32(2000000);
}
return 0;
}
Editor is loading...
Leave a Comment