Skip to content
This repository has been archived by the owner on Jul 28, 2024. It is now read-only.

Commit

Permalink
Update zeitraffer.c
Browse files Browse the repository at this point in the history
  • Loading branch information
theageoflove committed Nov 14, 2022
1 parent 1edff60 commit 821671d
Showing 1 changed file with 145 additions and 116 deletions.
261 changes: 145 additions & 116 deletions zeitraffer.c
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,8 @@ int32_t zeitraffer_app(void* p) {
Gui* gui = furi_record_open(RECORD_GUI);
// Подключаем view port к GUI в полноэкранном режиме
gui_add_view_port(gui, view_port, GuiLayerFullscreen);


// Конфигурим пины
gpio_item_configure_all_pins(GpioModeOutputPushPull);

// Создаем периодический таймер с коллбэком, куда в качестве
Expand All @@ -109,127 +110,154 @@ int32_t zeitraffer_app(void* p) {
// и проверяем, что у нас получилось это сделать
furi_check(furi_message_queue_get(event_queue, &event, FuriWaitForever) == FuriStatusOk);

// Наше событие — это нажатие кнопки
if(event.type == EventTypeInput) {
if(event.input.type == InputTypeShort) {

if(event.input.key == InputKeyBack) {
if(furi_timer_is_running(timer)) { // Если таймер запущен - нефиг мацать кнопки!
notification_message(notifications, &sequence_error);
// Наше событие — это нажатие кнопки
if(event.type == EventTypeInput) {
if(event.input.type == InputTypeShort) { // Короткие нажатия

if(event.input.key == InputKeyBack) {
if(furi_timer_is_running(timer)) { // Если таймер запущен - нефиг мацать кнопки!
notification_message(notifications, &sequence_error);
}
else {
WorkCount = Count;
WorkTime = 3;
if (Count == 0) {
InfiniteShot = true;
WorkCount = 1;
}
else
InfiniteShot = false;

notification_message(notifications, &sequence_success);
}
}
else {
WorkCount = Count;
WorkTime = 3;
if (Count == 0) {InfiniteShot = true; WorkCount = 1;} else InfiniteShot = false;
notification_message(notifications, &sequence_success);
if(event.input.key == InputKeyRight) {
if(furi_timer_is_running(timer)) {
notification_message(notifications, &sequence_error);
}
else {
Count++;
notification_message(notifications, &sequence_click);
}
}
}
if(event.input.key == InputKeyRight) {
if(furi_timer_is_running(timer)) {
notification_message(notifications, &sequence_error);
if(event.input.key == InputKeyLeft) {
if(furi_timer_is_running(timer)) {
notification_message(notifications, &sequence_error);
}
else {
Count--;
notification_message(notifications, &sequence_click);
}
}
else {
Count++;
notification_message(notifications, &sequence_click);
if(event.input.key == InputKeyUp) {
if(furi_timer_is_running(timer)) {
notification_message(notifications, &sequence_error);
}
else {
Time++;
notification_message(notifications, &sequence_click);
}
}
}
if(event.input.key == InputKeyLeft) {
if(furi_timer_is_running(timer)) {
notification_message(notifications, &sequence_error);
}
else {
Count--;
notification_message(notifications, &sequence_click);
}
}
if(event.input.key == InputKeyUp) {
if(furi_timer_is_running(timer)) {
notification_message(notifications, &sequence_error);
}
else {
Time++;
notification_message(notifications, &sequence_click);
}
}
if(event.input.key == InputKeyDown) {
if(furi_timer_is_running(timer)) {
notification_message(notifications, &sequence_error);
}
else {
Time--;
notification_message(notifications, &sequence_click);
}
}
if(event.input.key == InputKeyOk) {
if(event.input.key == InputKeyDown) {
if(furi_timer_is_running(timer)) {
notification_message(notifications, &sequence_error);
}
else {
Time--;
notification_message(notifications, &sequence_click);
}
}
if(event.input.key == InputKeyOk) {

if(furi_timer_is_running(timer)) {
notification_message(notifications, &sequence_click);
furi_timer_stop(timer);
}
else {
furi_timer_start(timer, 1000);
if (WorkCount == 0) WorkCount = Count;
if (WorkTime == 0) WorkTime = 3;
if (Count == 0) {InfiniteShot = true; WorkCount = 1;} else InfiniteShot = false;
if (Count == -1) {gpio_item_set_pin(4, true); gpio_item_set_pin(5, true); Bulb = true; WorkCount = 1; WorkTime = Time;} else Bulb = false;
notification_message(notifications, &sequence_success);
if(furi_timer_is_running(timer)) {
notification_message(notifications, &sequence_click);
furi_timer_stop(timer);
}
else {
furi_timer_start(timer, 1000);

if (WorkCount == 0)
WorkCount = Count;

if (WorkTime == 0)
WorkTime = 3;

if (Count == 0) {
InfiniteShot = true;
WorkCount = 1;
}
else
InfiniteShot = false;

if (Count == -1) {
gpio_item_set_pin(4, true);
gpio_item_set_pin(5, true);
Bulb = true;
WorkCount = 1;
WorkTime = Time;
}
else
Bulb = false;

notification_message(notifications, &sequence_success);
}
}
}
}
if(event.input.type == InputTypeLong) {
// Если нажата кнопка "назад", то выходим из цикла, а следовательно и из приложения
if(event.input.key == InputKeyBack) {
if(furi_timer_is_running(timer)) {
notification_message(notifications, &sequence_error);
}
else {
notification_message(notifications, &sequence_click);
gpio_item_set_all_pins(false);
furi_timer_stop(timer);
break;
}
}
if(event.input.key == InputKeyOk) {
//notification_message(notifications, &sequence_display_backlight_on);
Backlight = !Backlight;
}
}
if(event.input.type == InputTypeRepeat) {
if(event.input.key == InputKeyRight) {
if(furi_timer_is_running(timer)) {
notification_message(notifications, &sequence_error);
}
else {
Count = Count+10;
}
}
if(event.input.key == InputKeyLeft) {
if(furi_timer_is_running(timer)) {
notification_message(notifications, &sequence_error);
}
else {
Count = Count-10;
}
}
if(event.input.key == InputKeyUp) {
if(furi_timer_is_running(timer)) {
notification_message(notifications, &sequence_error);
}
else {
Time = Time+10;
}
}
if(event.input.key == InputKeyDown) {
if(furi_timer_is_running(timer)) {
notification_message(notifications, &sequence_error);
}
else {
Time = Time-10;
}
if(event.input.type == InputTypeLong) { // Длинные нажатия
// Если нажата кнопка "назад", то выходим из цикла, а следовательно и из приложения
if(event.input.key == InputKeyBack) {
if(furi_timer_is_running(timer)) { // А если работает таймер - не выходим :D
notification_message(notifications, &sequence_error);
}
else {
notification_message(notifications, &sequence_click);
gpio_item_set_all_pins(false);
furi_timer_stop(timer);
break;
}
}
if(event.input.key == InputKeyOk) {
Backlight = !Backlight; // Нам ваша подсветка и нахой не нужна! Или нужна.
}
}
if(event.input.type == InputTypeRepeat) { // Зажатые кнопки
if(event.input.key == InputKeyRight) {
if(furi_timer_is_running(timer)) {
notification_message(notifications, &sequence_error);
}
else {
Count = Count+10;
}
}
if(event.input.key == InputKeyLeft) {
if(furi_timer_is_running(timer)) {
notification_message(notifications, &sequence_error);
}
else {
Count = Count-10;
}
}
if(event.input.key == InputKeyUp) {
if(furi_timer_is_running(timer)) {
notification_message(notifications, &sequence_error);
}
else {
Time = Time+10;
}
}
if(event.input.key == InputKeyDown) {
if(furi_timer_is_running(timer)) {
notification_message(notifications, &sequence_error);
}
else {
Time = Time-10;
}
}
}
// Наше событие — это сработавший таймер
} else if(event.type == EventTypeTick) {
}

// Наше событие — это сработавший таймер
else if(event.type == EventTypeTick) {

WorkTime--;
// Отправляем нотификацию мигания синим светодиодом
Expand All @@ -251,10 +279,11 @@ int32_t zeitraffer_app(void* p) {
WorkCount--;
view_port_update(view_port);
notification_message(notifications, &sequence_click);
// Дрыгаем ногами
//gpio_item_set_all_pins(true);
gpio_item_set_pin(4, true);
gpio_item_set_pin(5, true);
furi_delay_ms(400);
furi_delay_ms(400); // На короткие нажатия фотик плохо реагирует
gpio_item_set_pin(4, false);
gpio_item_set_pin(5, false);
//gpio_item_set_all_pins(false);
Expand All @@ -273,8 +302,8 @@ int32_t zeitraffer_app(void* p) {
WorkCount = 0;
}
}
if (Time < 1) Time = 1;
if (Count < -1) Count = 0;
if (Time < 1) Time = 1; // Не даём открутить таймер меньше единицы
if (Count < -1) Count = 0; // А тут даём, бо 0 кадров это бесконечная съёмка, а -1 кадров - BULB
}

// Очищаем таймер
Expand Down

0 comments on commit 821671d

Please sign in to comment.