Бред

Ответить в тред Ответить в тред
Аноним # OP 21/09/20 Пнд 02:56:38 2294023381
image.png 87Кб, 1471x1163
1471x1163
АРДУИНЩИКИ СПЯТ?

А я нет! Пытаюсь запустить эту блядскую ебанину, но нихуя не получается
Значит, эта хрень должна заставить фотоаппарат делать фото с определенным промежутком времени - это происходит за счет digitalWrite (HIGH)
Сейчас вместо камеры стоит светодиод, потому что это удобнее

При помощи энкодера задаются две переменные
step - пауза между снимками
photo - количество снимков
Простая кнопочка должна включать процесс съемки

Итак, я написал код для энкодера и кнопки, также написал отдельно функции выполняющую съемку (startPhoto)
Как мне включать эту функции при помощи "button"?

я уже с ума схожу блять
Аноним # OP 21/09/20 Пнд 02:57:17 2294023512
image.png 1408Кб, 1000x1000
1000x1000
Бамп
Аноним # OP 21/09/20 Пнд 02:57:38 2294023603
Собрал всё это на макетной плате, ага
21/09/20 Пнд 02:59:14 2294024004
>>229402338 (OP)
Зачем ты так все усложняешь? Задача у тебя в чем состоит? Нажал на кнопку - делаешь фотографии с заданным интервалом, нажал еще раз - ничего не делаешь. Я правильно понял?
Аноним # OP 21/09/20 Пнд 02:59:26 2294024095
image.png 60Кб, 720x1065
720x1065
Сейчас ситуация такая
Если код выглядит вот так, то он выполняет всё и сразу, из-за чего ардуинка начинает тупить. Логично, что так происходит, но как это исправить?
Аноним # OP 21/09/20 Пнд 03:00:26 2294024326
>>229402400
Энкодером задаешь количество кадров и промежуток времени между каждым фото
Кнопка должна этот процесс включать после того, как высталены настройки
Аноним # OP 21/09/20 Пнд 03:01:33 2294024567
Бамп
Аноним # OP 21/09/20 Пнд 03:02:19 2294024738
image.png 548Кб, 1000x1000
1000x1000
Бамп
Аноним 21/09/20 Пнд 03:02:41 2294024819
>>229402338 (OP)
Хм, код вроде выглядит не сложно. Тоже что-ли в пердуинщики вкатиться?
21/09/20 Пнд 03:03:12 22940249510
>>229402432
Вынеси код для обработки этого энкодера в функцию, например. А то это дерьмо нечитабельно. Изначально установи интервал ненулевой.
Аноним # OP 21/09/20 Пнд 03:03:34 22940250111
>>229402481
Он выглядит просто потому что не работает
Аноним # OP 21/09/20 Пнд 03:05:17 22940254312
>>229402495
Переделываю
Блять, такая мелочь с этими нулями. Только после твоего указания дошло, что начинать с нуля было плохой идеей
Аноним 21/09/20 Пнд 03:05:52 22940256513
У тебя в конце цикла функция startPhoto не вызывается, круглые скобки и аргументы забыл
Аноним 21/09/20 Пнд 03:07:23 22940261014
>>229402501
Да не, я сначала думал что всю хуйню на асме пишут или типо того, а тут всё проще оказывается.
21/09/20 Пнд 03:07:42 22940261915
>>229402543
Но ты вообще такую хуйню пишешь - бесполезные условия, которые ничего не вызывают; функции без параметров пытаешься еще вызывать; брейки, которые никогда не выполнятся у тебя точно.
21/09/20 Пнд 03:09:16 22940266516
203211-1-16.mp4 5987Кб, 480x360, 00:01:33
480x360
>>229402543
>>229402619
Еще параметры местами путаешь. Может, пойдешь отдохнешь?
Аноним 21/09/20 Пнд 03:09:26 22940266717
>>229402338 (OP)
>Как мне включать эту функции при помощи "button"?
Если кнопка нажата, запускаешь свой цикл.

Если хочешь отключать и включать на кнопку съёмку, то сделай цикл в котором проверяется переменная, включено или нет.
Если включено - запускаешь цикл.
Если не включено, то ничего не делаешь, а дальше проверяешь состояние переменной.
Аноним 21/09/20 Пнд 03:10:18 22940269018
>>229402338 (OP)
Железячники все такие ебанутые, что пишут нечитаемый код с кучей ифов? Или там по-другому нельзя?
21/09/20 Пнд 03:13:52 22940277419
>>229402543
>>229402665
Пиздец, я сейчас вчитался в это дерьмо, как оно у тебя вообще скомпилировалось?
Аноним # OP 21/09/20 Пнд 03:16:49 22940285120
Охуенно, впервые за тысячу лет у меня пропал интернет
Аноним # OP 21/09/20 Пнд 03:17:18 22940285821
21/09/20 Пнд 03:18:13 22940288022
>>229402858
С самого начала тогда переписывай, это никуда не годится!
Аноним # OP 21/09/20 Пнд 03:18:15 22940288223
image.png 76Кб, 1097x1337
1097x1337
>>229402774
Спокойно и без задней мысли
Аноним # OP 21/09/20 Пнд 03:18:42 22940289224
>>229402880
Окей, согласен, начинаю с самого начала
Аноним # OP 21/09/20 Пнд 03:23:33 22940301825
image.png 43Кб, 791x836
791x836
Итак, с самого начала, буду продумывать каждый шаг

Подключаю библиотеку
Задаю переменные
unsigned long int step=1 интервал между фото
int photo=1 - количество фото

Порт А1 - кнопка
Пин 7 - выход на светодиод
Аноним # OP 21/09/20 Пнд 03:24:36 22940304326
>>229403018
>>229402880

Дальше мне данные с энкодера прописывать, кнопку или что?
Аноним 21/09/20 Пнд 03:24:45 22940304627
Аноним # OP 21/09/20 Пнд 03:26:10 22940308628
>>229403046
Похуй, надо сделать и нахуй удалить
Аноним # OP 21/09/20 Пнд 03:28:50 22940316129
Бамп
21/09/20 Пнд 03:32:20 22940328130
>>229403043
Какой ты пидорас, а. Держи хоть такой говно-код.

#define CLK 2
#define DT 3
#define SW 3

#include <GyverEncoder.h>
Encoder enc(CLK, DT, SW);

long int step = 1000;
int photo=0;
boolean button=false;

void setup(){
Serial.begin(9600);
enc.setType(TYPE2);
pinMode(A1, INPUT_PULLUP);
pinMode(7, OUTPUT);
}

void UpdEnc(){
if (enc.isRight()) step -= 1000;
if (enc.isLeft()) step += 1000;
if (enc.isRightH()) photo -= 1;
if (enc.isLeftH()) photo += 1;

if (photo < 0) photo=0;
if (step <= 0) step=1000;

button = !digitalRead(A1);

//Сам пиши вывод!
}

void loop(){
enc.tick();
UpdEnc();

if (button){
for(int i = 0; i != photo; i++){
digitalWrite(7, HIGH);
delay(10);
digitalWrite(7, LOW);
delay(step);
}
}
delay(1000);

}
21/09/20 Пнд 03:35:20 22940337331
>>229403086
Ну и куда ты пропал, хуесос? Скажи хоть - нахуй тебе этот таймлапс сдался?
Аноним # OP 21/09/20 Пнд 03:36:35 22940341132
>>229403373
Пытаюсь твой код загрузить
Аноним # OP 21/09/20 Пнд 03:41:08 22940352133
>>229403373
Блять, ты ничего толком и не поменял, только строчки симпатично расставил
Они в первой версии так и стояли, пока я не начал во все стороны всякое говно перемещать


У знакомой старая зеркалка кенон, на неё нельзя прошивку с таймлапсом поставить, приходится вот такую хуйню по гайдам строить
Аноним # OP 21/09/20 Пнд 03:42:24 22940354934
>>229403373
Вопрос до сих пор открыт
Как блять включить loop при помощи кнопки?
21/09/20 Пнд 03:42:54 22940356335
>>229403521
Ну и пошел нахуй тогда. Мажься сам своим говном.
Аноним # OP 21/09/20 Пнд 03:44:31 22940360036
>>229403563
Капец ты крутой, столько всего полезного сделал, обосраться прям
Аноним # OP 21/09/20 Пнд 03:47:15 22940365337
бамп
Аноним # OP 21/09/20 Пнд 03:49:52 22940371338
Бамп
Аноним 21/09/20 Пнд 03:52:09 22940375239
Оп, давай сюда техзадание, разбери полный алгоритм работы со стороны пользователя, по типу: выбрать интервал энкодером, нажать на кнопку, еблысть чё происходить должно. Воот. После этого самому понятнее станет, а уж мне тем более. Ну и помогу советом как минимум. А как максимум - кодом.
Мимо-анон-написавший-бортовой-компьютер-для-своей-ласточки-на-stm32f103c8t6
21/09/20 Пнд 03:52:14 22940375440
>>229403600
Падла ты ебаная, там нехуй делать. Всю ту хуйню, что ты настрочил можно этим заменить:

boolean button=false;

void setup(){
Serial.begin(9600);
pinMode(A1, INPUT_PULLUP);
pinMode(7, OUTPUT);
}

void loop(){

button = !digitalRead(A1);

if (button){
digitalWrite(7, HIGH);
delay(100);
digitalWrite(7, LOW);
}
delay(1000);

}

Достаточно не быть уебком тупым, только вот у тебя это не вышло.
Аноним 21/09/20 Пнд 03:54:34 22940380741
>>229403754
А HIGH и LOW булево значение имеют, их не надо преобразовывать в парашу типа (value == HIGH)?
мимо-раз-моргал-светодиодами
Аноним # OP 21/09/20 Пнд 03:54:35 22940380942
>>229403754
Ты ебнутый? Там энкодер нужен
Аноним 21/09/20 Пнд 03:56:53 22940386443
>>229403754
>boolean
>digitalWrite
>delay(1000)
Уебанский процессинг-вайринг. Говно без задач

>>229403807
Нахуй вы ебётесь со своими труфолс и лоухай? Ебашь 1 и 0, понятно и везде работает. Через регистры лезь, в конце концов. А лучше вместо boolean юзать uint8_t, так хоть размерность известна. И вообще нахуй c++, ему в embedded не место вообще, только голый си или асм вообще.
21/09/20 Пнд 03:57:31 22940388444
>>229403809
Ну так добавь его, в чем проблема? Или ты совсем дегенерат отбитый?

>>229403807
Хуй знает, кому вообще это говно сдалось?
Аноним # OP 21/09/20 Пнд 03:58:12 22940389145
>>229403752
Значит

При помощи поворота энкодера задается количество фотографий, которые надо сделать (photo)
Если энкодер нажат и поворачивается, то изменяется интервал между фотографиями (step)
После того, когда настроены интервал и количество фото, нажатие кнопки включает съемку
Фотоаппарат будет делать выбранное количество фото с указанным интервалом

Фото делается за счет "digitalWrite(7, HIGH)"
Аноним 21/09/20 Пнд 03:59:47 22940391846
>>229403891
Ага, вот теперь понятно.
В течении 10 минут жди код, мб даже заработает как надо, лул.
Аноним 21/09/20 Пнд 04:03:26 22940399747
>>229403864
>понятно и везде работает
>лучше вместо boolean юзать uint8_t
> асм вообще.
Мне стыдно за тебя.

>>229403884
>кому вообще это говно сдалось?
Мне интересно стало, по доке digitalRead возвращает лоухай, а ты ебошишь !digitalRead. C точки зрения типизации это хуета, но не знаю, как там у ардуинщиков принято.
Аноним # OP 21/09/20 Пнд 04:03:50 22940400448
>>229403754
У меня теперь складывается ощущение, что ты вообще нихуя не понимаешь в том, что я делаю, но чисто по приколу вкидываешь случайную хуйню
21/09/20 Пнд 04:06:00 22940405349
>>229403997
Я с этой железякой не игрался никогда, просто немного его код почистил.
Аноним 21/09/20 Пнд 04:06:19 22940406250
>>229403997
>Мне стыдно за тебя
Ну так поясни, в чём мой проёб?

Лоухай - это по сути дефайн на 0 и 1, логические операции работают с ним.
Аноним # OP 21/09/20 Пнд 04:10:12 22940414451
бамп
Аноним # OP 21/09/20 Пнд 04:13:02 22940419952
бамп
Аноним # OP 21/09/20 Пнд 04:16:43 22940425353
бамп
Аноним # OP 21/09/20 Пнд 04:20:00 22940430554
бамп
Аноним # OP 21/09/20 Пнд 04:23:45 22940438755
бамп
Аноним 21/09/20 Пнд 04:23:46 22940438956
>>229404062
Вообще, зависит от потрохов компилятора, но имхо юзать вместо булева 1 и 0 охуенно дико. Опять же
>не знаю, как там у ардуинщиков принято.
Дрочитьупоминать на асму, когда есть достаточно удобная среда для разработки - ну такое.
>нахуй c++
Чтобы не ебаться с си, разумеется. Свистоперделки пилить ещё ладно, но библиотеки писать на си без необходимости имхо лишний геммор.
>регистры
Насколько я помню, можно проебаться с операциями в коде и из-за этого у тебя будет проебанные регистры после компиляции но вроде это грозит по большей части для double. Опять же, зависит от потрохов.
Аноним 21/09/20 Пнд 04:25:35 22940441157
>>229403891
>>229403918
Смотри, анон. Выкинь лишнюю кнопку, всё делается энкодером. Потом как выставил просто кликни им и всё.
#include <GyverEncoder.h>
Encoder enc(CLK, DT, SW);

word set_shotCount = 0;
unsigned long set_shotInterval = 0;
boolean lastButtonState = 0; //Положение кнопки в предыдущий проход цикла
boolean btn_pressed = 0;
boolean btn_clicked = 0;
long btn_active_encoder_change = 0;


void setup() {
Serial.begin(9600);
enc.setType(TYPE2);
pinMode(SW, INPUT_PULLUP);
pinMode(7, OUTPUT);
}


void loop() {
if (millis() % 10 == 0) {
if (digitalRead(SW) && !lastButtonState) {
lastButtonState = true;
btn_pressed = true;
} else if (lastButtonState) {
btn_pressed = false;
if (btn_active_encoder_change == 0) btn_clicked = true;
lastButtonState = false;
}
}
enc.tick();
if (enc.isTurn()) {
if (btn_pressed) {
if (enc.isRight()) {
set_shotInterval += 1000;
btn_active_encoder_change++;
} else if (enc.isLeft()) {
if (set_shotInterval >= 1000) {
set_shotInterval -= 1000;
}
btn_active_encoder_change++;
}
Serial.print("set interval: ");
Serial.println(set_shotInterval);
} else {
if (enc.isRight()) {
set_shotCount++;
} else if (enc.isLeft()) {
if ( set_shotCount >= 1) {
set_shotCount--;
}
}
Serial.print("set count: ");
Serial.println(set_shotCount);
}
}
if (btn_clicked) take_shots();
}

void take_shots() {
for(word i = 0; i < set_shotCount; i++) {
Serial.println(i);
digitalWrite(7, 1);
delay(100);
digitalWrite(7, 0);
delay(set_shotInterval);
}
btn_clicked = 0;
}
Аноним 21/09/20 Пнд 04:27:20 22940443058
>>229404411
И сразу самофикс
#include <GyverEncoder.h>
Encoder enc(CLK, DT, SW);

word set_shotCount = 0;
unsigned long set_shotInterval = 0;
boolean lastButtonState = 0; //Положение кнопки в предыдущий проход цикла
boolean btn_pressed = 0;
boolean btn_clicked = 0;
long btn_active_encoder_change = 0;


void setup() {
Serial.begin(9600);
enc.setType(TYPE2);
pinMode(SW, INPUT_PULLUP);
pinMode(7, OUTPUT);
}



void loop() {
if (millis() % 10 == 0) {
if (digitalRead(SW) && !lastButtonState) {
lastButtonState = true;
btn_pressed = true;
} else if (lastButtonState) {
btn_pressed = false;
if (btn_active_encoder_change == 0) btn_clicked = true; else btn_active_encoder_change = 0;
lastButtonState = false;
}
}
enc.tick();
if (enc.isTurn()) {
if (btn_pressed) {
if (enc.isRight()) {
set_shotInterval += 1000;
btn_active_encoder_change++;
} else if (enc.isLeft()) {
if (set_shotInterval >= 1000) {
set_shotInterval -= 1000;
}
btn_active_encoder_change++;
}
Serial.print("set interval: ");
Serial.println(set_shotInterval);
} else {
if (enc.isRight()) {
set_shotCount++;
} else if (enc.isLeft()) {
if ( set_shotCount >= 1) {
set_shotCount--;
}
}
Serial.print("set count: ");
Serial.println(set_shotCount);
}
}
if (btn_clicked) take_shots();
}

void take_shots() {
for(word i = 0; i < set_shotCount; i++) {
Serial.println(i);
digitalWrite(7, 1);
delay(100);
digitalWrite(7, 0);
delay(set_shotInterval);
}
btn_clicked = 0;
}
Аноним # OP 21/09/20 Пнд 04:29:04 22940445659
>>229404411
Спасибо!
Мне больше нравится вариант с отдельной кнопкой, потому что количество фоток настраивается нажатым энкодером и поворотом, чтобы не было случайных запусков, подключил ещё одну кнопку
Ещё раз спасибо!!
Аноним 21/09/20 Пнд 04:30:11 22940447160
Аноним 21/09/20 Пнд 04:31:48 22940449861
>>229404456
>чтобы не было случайных запусков
Можно впилить проверку на удержание, если дольше 0.2 сек, например, то take_shots не вызывается. Чисто клики обрабатывать.
Аноним 21/09/20 Пнд 04:32:03 22940450462
>>229404471
Либа говногайвера для облегчения работы с энкодером. Интересно то, что на дуине надо библиотеку для этого писать, а на стм это 5 строчек кода и таймер сам за тебя это делает, только счётчик читай.
Аноним # OP 21/09/20 Пнд 04:35:53 22940457363
>>229404504
Надо было её покупать, хах
Аноним 21/09/20 Пнд 04:39:29 22940464964
>>229404573
Ну, для начинающих стм не вариант, там пизда поначалу всё запутанным кажется. Дуина самое то для этого. В авр регистров сто, а в стм - гораздо больше, штук 500 если не ошибаюсь, там ты заебёшься с конфигурациями. 5 строк кода светит в случае, если ты уже неделю ебёшься с блядским энкодером, и уже настолько в поздании преисполнился, что сам эти клики считаешь по шуму электронов ещё до того, как контроллер их обработает.
Аноним 21/09/20 Пнд 06:41:38 22940692165
Афтар убейся ап стену
Твая тема гавно а ты мудак
Аноним # OP 21/09/20 Пнд 06:44:44 22940698966
>>229406921
Ты-то неебаца крутой какой, послушал я уже одного такого идиота, он в итоге бесполезного кода высрал и доводен
Аноним # OP 21/09/20 Пнд 06:47:01 22940703767
Какие ардуинщики пидорасы, я просто в ахуе
Ничего сделать не могут и выёбываются
Аноним # OP 21/09/20 Пнд 06:48:04 22940704968
бамп нахуй
Аноним # OP 21/09/20 Пнд 06:52:11 22940714169
бамп
Аноним # OP 21/09/20 Пнд 06:59:06 22940728470
бамп
Аноним 21/09/20 Пнд 07:39:39 22940813371
Аноним # OP 21/09/20 Пнд 07:43:39 22940823572
>>229408133
Я в итоге свой код переделал и всё прекрасно работает
Тот имбицил не смог заметить ошибку в коде, а орал, словно он тут самый усный
Настройки X
Ответить в тред X
15000
Макс объем: 20Mб, макс кол-во файлов: 4
Кликни/брось файл/ctrl-v
X
Ваш шидевор X
Стикеры X
Избранное / Топ тредов