Помогите со скейтчем (я очень зеленый в этом)

Chitanist
Offline
Зарегистрирован: 15.10.2019
 
 
Moderator : пожалуйста, вставьте код правильно (новым сообщением в тему), как описано в http://arduino.ru/forum/obshchii/vstavka-programmnogo-koda-v-temukommentarii
 
 
это брут
подскажите как сделать что бы счет начинался с 0000 а не с 1111 и когда он набирал  цыфру 0 делал 10 импульсов мучаюсь уже неделю помогите. 
ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Вы не могли бы

1) Внятно объяснить что Вы собираетесь делать. Не "брут" и "кассий", а внятно, по-русски?

2) вставить код по правилам форума?

sadman41
Offline
Зарегистрирован: 19.10.2016

Да хакир он. Просто тупой кодовый замок с ардуиной не знаком и игнорирует ея.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

sadman41 пишет:

Да хакир он. Просто тупой кодовый замок с ардуиной не знаком и игнорирует ея.

так надо видимо зелёной изолентой примотать, а не синей

Chitanist
Offline
Зарегистрирован: 15.10.2019

извиняюсь если что не так просто нужно разобраться начил искать помощи

Chitanist
Offline
Зарегистрирован: 15.10.2019

на пин d2 идет счет перебор начиная 1111 заканчивая 9999 мне нужно что бы начало было с 0000 и когда вводилась цыфра 0 он давал 10 импульсов пример 1113 это в импульсах 1 импульс пауза 1 импульс пауза 1импульс пауза 3 импульса пауза а 0000 это 10импульсов пауза 10импульсов пауза 10 импульсов пауза 10 импульсов 

Chitanist
Offline
Зарегистрирован: 15.10.2019

помогите пожалуйста

bwn
Offline
Зарегистрирован: 25.08.2014

Chitanist пишет:

помогите пожалуйста

Не, не помохут, вы на самый первый ответ, сразу болт поклали.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Chitanist пишет:

на пин d2 идет счет перебор 

Какой счёт, какой перебор, Вы сами себя слышите? На пин d2 может идти только высокий или низкий уровень. Если туда идёт что-то другое, будьте любезны объяснить что именно. Если Вам лень бить пальцы об клавиши, то всем здесь тем более - проблем у Вас, а не у остальных.

Итак, второй и последний раз

1) внятно объясните что должно делаться.

2) выложите код по правилам форума.

Пока этого не будет сделано, никто Вам не поможет.

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

А за сто тыщ миллионофф?))

Ах да, это в другой раздел...

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016
 int v1 = 0;
int v2 = 0;
int v3 = 0;
int v4 = 0;

 

b707
Offline
Зарегистрирован: 26.05.2017

ua6em пишет:

 int v1 = 0;
int v2 = 0;
int v3 = 0;
int v4 = 0;

 

молодец, что вставил код правильно, чему-то все-таки форум учит...

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

Да его то что учить? Пусть ТС учится правильно вставлять))

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

ЕвгенийП пишет:

Какой счёт, какой перебор, Вы сами себя слышите? На пин d2 может идти только высокий или низкий уровень. Если туда идёт что-то другое, будьте любезны объяснить что именно. Если Вам лень бить пальцы об клавиши, то всем здесь тем более - проблем у Вас, а не у остальных.

Итак, второй и последний раз

1) внятно объясните что должно делаться.

Ну, ТС достаточно однозначно изложил, что он хочет.

Цитата:
когда вводилась цыфра 0 он давал 10 импульсов пример 1113 это в импульсах 1 импульс пауза 1 импульс пауза 1импульс пауза 3 импульса пауза а 0000 это 10импульсов пауза 10импульсов пауза 10 импульсов пауза 10 импульсов

То есть кодирование по принципу импульсного набора телефонного номера.

b707
Offline
Зарегистрирован: 26.05.2017

asam пишет:

Ну, ТС достаточно однозначно изложил, что он хочет.

и так понятно, что хочет - Кемску волость ему подавай :)

И даже видно, где ошибка - да только не укажешь никак. код без номеров строк

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

b707 пишет:

И даже видно, где ошибка - да только не укажешь никак. код без номеров строк

так с номерами строк любой сможет, он жеж к специалистам обратился )))

MaksVV
Offline
Зарегистрирован: 06.08.2015

ТС, пин код к пандоре подбираешь?

Chitanist
Offline
Зарегистрирован: 15.10.2019

да)поможешь?

Chitanist
Offline
Зарегистрирован: 15.10.2019

const int RELAY_PIN = 2; // Пин управления реле
const int LED_PIN = 4; // Пин сигнального диода
const int LED_COUNT_WRONG = 2; // Кол-во изменения состояния диода при неверном valet. Загорелся и потух это 2
const int LED_COUNTER_TIME = 8000; // Сколько времени следить за диодом после ввода пина в мс
const int DIGIT_DELAY = 2200; // Пауза между вводом чисел в мс

int v = 0;
int v1 = 1;
int v2 = 1;
int v3 = 1;
int v4 = 1;
int led_sw = 0;
char buf[20];
bool stp = true;

void setup() {
pinMode(RELAY_PIN, OUTPUT);
pinMode(LED_PIN, INPUT);
Serial.begin(9600);
}

void parseV() {
v1 = (int)(v / 1000);
v2 = (int)(v % 1000 / 100);
v3 = (int)(v % 100 / 10);
v4 = (int)(v % 10);

if (v1 == 0) v1++;
if (v2 == 0) v2++;
if (v3 == 0) v3++;
if (v4 == 0) v4++;

v = v1 * 1000 + v2 * 100 + v3 * 10 + v4;
}

void writePinDigit(int num, bool is_delay) {
int n;

for (n = 0; n < num; n++) {
digitalWrite(RELAY_PIN, HIGH);
delay(100);
digitalWrite(RELAY_PIN, LOW);
delay(100);
}

if (is_delay) delay(DIGIT_DELAY);
}

void ledCounter() {
int max = LED_COUNTER_TIME / 10;
int prev = LOW;
int sw = 0;
int n = 0;
int st;

for (n = 0; n < max; n++) {
st = digitalRead(LED_PIN);

if (st != prev) {
sw++;

prev = st;
}

delay(10);
}

if (sw != 0) {
sprintf(buf, "stop!");
Serial.println(buf);
stp = true;
}

led_sw = sw;
}

void iteration() {
writePinDigit(v1, true);
writePinDigit(v2, true);
writePinDigit(v3, true);
writePinDigit(v4, false);

ledCounter();

sprintf(buf, "code: %d, led: %d", v, led_sw);
Serial.println(buf);

if (!stp) {
v++;
parseV();
}
}

void loop() {
if (Serial.available() > 0) {
String rec = Serial.readString();

v = rec.toInt();
parseV();
stp = false;

sprintf(buf, "start code %d", v);
Serial.println(buf);
}

if (v > 0 && v < 10000 && !stp) {
iteration();
}
}

 

Chitanist
Offline
Зарегистрирован: 15.10.2019

пин d2 управляет реле

b707
Offline
Зарегистрирован: 26.05.2017

строчки 28-31 при первом же запуске превращают "0000" в "1111"

 

в общем, подсказываю - строчки 27-31 надо поправить, а строчку 33 просто выкинуть, она лишняя. И все заработает... если я что-то еще не пропустил

Chitanist
Offline
Зарегистрирован: 15.10.2019

спасибо за отзывчивость а как поправить? и что бы число 0 давало 10 импульсов сделать?

 

Chitanist
Offline
Зарегистрирован: 15.10.2019

нули получились но они дают 1 импульс (как число1)

b707
Offline
Зарегистрирован: 26.05.2017

Chitanist пишет:

нули получились но они дают 1 импульс (как число1)

угадаю - 33 строчку убрали? теперь 27-30 исправляйте

Chitanist
Offline
Зарегистрирован: 15.10.2019

после удаления 33 строки 0 дает 1 импульс 

Chitanist
Offline
Зарегистрирован: 15.10.2019
if (v1 == 0) v1++;
if (v2 == 0) v2++;
if (v3 == 0) v3++;
if (v4 == 0) v4++;

если убрать 
 v1++;
 v2++;
 v3++;
 v4++;

0 вообще молчит помоги сделать что бы 0 давал 10 импульсов

 

b707
Offline
Зарегистрирован: 26.05.2017

Chitanist - ну совсем думать не пробовали? Ну как написать условие, что если v1 равно нулю, надо сделать 10?!!

if (v1 == 0) v1 = 10;

и не стыдно?

 

Chitanist
Offline
Зарегистрирован: 15.10.2019

b707 пишет:

Chitanist - ну совсем думать не пробовали?

if (v1 == 0) v1 = 10;

я совсем новичок 

b707
Offline
Зарегистрирован: 26.05.2017

Chitanist пишет:

я совсем новичок 

причем тут новичок, это элементарная школьная логика. вы были двоечником, наверно

Chitanist
Offline
Зарегистрирован: 15.10.2019

честно троечником)

Chitanist
Offline
Зарегистрирован: 15.10.2019

непонимаю алгоритм всеравно не получается(

Chitanist
Offline
Зарегистрирован: 15.10.2019

как сделать что бы 0 был равен 10

Chitanist
Offline
Зарегистрирован: 15.10.2019

спасибо большое решил беду с 0 но он почему то не начинает счет с 0000 пишет start code 0 и молчит с 1000 идет

b707
Offline
Зарегистрирован: 26.05.2017

Chitanist пишет:

как сделать что бы 0 был равен 10

вы совсем идиот? я же вам готовую строчку написал

Chitanist
Offline
Зарегистрирован: 15.10.2019

спасибо большое решил беду с 0 но он почему то не начинает счет с 0000 пишет start code 0 и молчит с 1000 идет

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

Тут прям беда, надо на ардуино экзамен сдавать, по типу как на мопеды сейчас сдают. А то так оно и будет длиться - «поставь 10», «я уже ноль поставил», «да нет- поставь 10», «да да, спасибо, 0 уже поставил»... пипец)))

Chitanist
Offline
Зарегистрирован: 15.10.2019

да лан те я в своей сфере нормально себя проявляю тут вообще дуб дубом на форумах тоже рание не сидел ну извените если что не так все с чего то начинают а так спасибо большое хоть поругался на меня но проблему свою решил тему можно закрыть)

Chitanist
Offline
Зарегистрирован: 15.10.2019

b707 красавчик респект хоть кто то не равнодушен остался)огонь!)

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

Chitanist пишет:

да лан те я в своей сфере нормально себя проявляю тут вообще дуб дубом на форумах тоже рание не сидел ну извените если что не так все с чего то начинают а так спасибо большое хоть поругался на меня но проблему свою решил тему можно закрыть)

То что проблему решил - это хорошо. А что недопонимание на всём пути к нему детского уровня, тут я не скажу ничего. Бывает. Наверное.