/*
#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "driver/gpio.h"
// Define GPIO pins
#define RELAY_PIN GPIO_NUM_18
#define BUTTON_PIN GPIO_NUM_16
void setup() {
// Initialize GPIO pins
gpio_pad_select_gpio(RELAY_PIN);
gpio_set_direction(RELAY_PIN, GPIO_MODE_OUTPUT);
gpio_pad_select_gpio(BUTTON_PIN);
gpio_set_direction(BUTTON_PIN, GPIO_MODE_INPUT);
gpio_set_pull_mode(BUTTON_PIN, GPIO_PULLUP_ONLY);
}
void toggle_relay() {
static int relay_state = 0;
// Toggle relay state
relay_state = !relay_state;
gpio_set_level(RELAY_PIN, relay_state);
printf("Relay is %s\n", relay_state ? "ON" : "OFF");
}
void app_main() {
setup();
while (1) {
// Check if button is pressed
if (gpio_get_level(BUTTON_PIN) == 0) {
// Button is pressed, toggle relay
toggle_relay();
// Wait for button release to avoid multiple toggles
while (gpio_get_level(BUTTON_PIN) == 0) {
vTaskDelay(10 / portTICK_RATE_MS);
}
}
// Delay to avoid continuous polling
vTaskDelay(100 / portTICK_RATE_MS);
}
}
*/
/*
#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "driver/gpio.h"
unsigned char period = 1;
unsigned char canReadInput = 1;
static void getInput(void *arg)
{
while (1)
{
if (gpio_get_level(GPIO_NUM_16) == 1 && canReadInput == 1)
{
canReadInput = 0;
if (period == 3)
{
period = 1;
}
else
{
period = period + 1;
}
}
else if (gpio_get_level(GPIO_NUM_16) == 0)
{
canReadInput = 1;
}
vTaskDelay(10 / portTICK_PERIOD_MS);
}
}
void app_main(void)
{
printf("POSTAVLJANJE PERIODE AKTIVIRANJA DIGITALNOG IZLAZA PREKO TIPKALA\n");
gpio_set_direction(GPIO_NUM_18, GPIO_MODE_OUTPUT);
gpio_set_direction(GPIO_NUM_16, GPIO_MODE_INPUT);
xTaskCreate(getInput, "getInput", 2048, NULL, 10, NULL);
while (1)
{
printf("Period: %d\n", period);
vTaskDelay(period * 1000 / portTICK_PERIOD_MS);
gpio_set_level(GPIO_NUM_18, 0);
printf("GPIO2: Off\n");
vTaskDelay(period * 1000 / portTICK_PERIOD_MS);
gpio_set_level(GPIO_NUM_18, 1);
printf("GPIO2: On\n");
}
}
*/
#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "driver/gpio.h"
unsigned char activate = 0;
unsigned char canReadInput = 1;
static void activateDigOutput(void *arg)
{
while (1)
{
if (gpio_get_level(GPIO_NUM_16) == 1 && canReadInput == 1)
{
canReadInput = 0;
activate = activate % 2 + 1;
}
else if (gpio_get_level(GPIO_NUM_16) == 0)
{
canReadInput = 1;
}
vTaskDelay(100 / portTICK_PERIOD_MS);
}
}
void app_main(void)
{
printf("AKTIVIRANJE RELEJA POMOĆU TIPKALA\n");
gpio_set_direction(GPIO_NUM_18, GPIO_MODE_OUTPUT);
//gpio_set_direction(GPIO_NUM_4, GPIO_MODE_OUTPUT);
gpio_set_direction(GPIO_NUM_16, GPIO_MODE_INPUT);
xTaskCreate(activateDigOutput, "activateDigOutput", 2048, NULL, 10, NULL);
while (1)
{
gpio_set_level(GPIO_NUM_18, activate == 1);
//gpio_set_level(GPIO_NUM_4, activate == 2);
vTaskDelay(100 / portTICK_PERIOD_MS);
}
}