Untitled

mail@pastecode.io avatar
unknown
plain_text
a month ago
2.1 kB
3
Indexable
Never
#include <xc.h>
#include <libpic30.h>
#include <stdio.h>
#include <string.h>
#include <math.h>
#include "lcd.h"
#include "buttons.h"
#include "adc.h"

#define MAX_TIME (600) 
#define MIN_POWER_LEVEL (200)
#define MIN_waga (100)
#define max_waga (1000)

volatile unsigned int current_time = 0; 
volatile unsigned int waga = MIN_waga; 
volatile unsigned int power_level = MIN_POWER_LEVEL; // Start with minimum power level
int is_running = 0; 
int reset_requested = 0; 

void update_display() {
    char buffer[32];
    unsigned char minutes = current_time / 60;
    unsigned char seconds = current_time % 60;

    sprintf(buffer, "Czas: %02u:%02u\nMoc: %dW\n", minutes, seconds, power_level);
    LCD_ClearScreen();
    LCD_PutString(buffer, strlen(buffer));
}

void update_display() {
    char buffer[32];

    sprintf(buffer, "waga: %02u\nMoc: %dW\n", waga, power_level);
    LCD_ClearScreen();
    LCD_PutString(buffer, strlen(buffer));
}

int main(void) {
    ADC_SetConfiguration(ADC_CONFIGURATION_DEFAULT);
    ADC_ChannelEnable(ADC_CHANNEL_POTENTIOMETER);

    TRISA = 0x0000;
    LCD_Initialize();

    while(!reset_requested) {
        unsigned int pot_value = (unsigned int)round(ADC_Read10bit(ADC_CHANNEL_POTENTIOMETER));
        // Calculate power level based on potentiometer value
        power_level = pot_value ;

        if (BUTTON_IsPressed(BUTTON_S4)) { 
            waga += 100; 
            if (waga > max_waga) 
                waga = max_waga;
            while (BUTTON_IsPressed(BUTTON_S4)){} 
        }
        if (BUTTON_IsPressed(BUTTON_S6)) { 
            is_running = !is_running; // Toggle start/stop state
            while (BUTTON_IsPressed(BUTTON_S6)){} 
        }
        if (BUTTON_IsPressed(BUTTON_S3)) {
            current_time = (waga + power_level)/2;
            reset_requested = 1; 
            while (BUTTON_IsPressed(BUTTON_S3)){} 
        }

        if (is_running && current_time > 0) {
            current_time--;
        }

        update_display();
        __delay32(2000000); 
    }

    return 0;
}
Leave a Comment