Untitled
unknown
plain_text
a year ago
2.4 kB
8
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