Проект туалет для умного кота

andryushik
Offline
Зарегистрирован: 21.07.2018

Всем привет!

Знаю что тут неоднократно тема поднималась но я так и не нашел окончательного работающего кода.

Имеется кот который ходит на унитаз, хотелось бы чтобы в мое отсутствие за ним унитаз смывал сам. Знаю есть готовые решения, но увы дорого и скучно.

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

Это ваш проект?
Вариантов два: сделать самому, попутно изучив программирование и пайку, или зайти в "ищу исполнителя".

andryushik
Offline
Зарегистрирован: 21.07.2018

Я попросил помочь найти ошибку в коде. Совета я просил, а не делать за меня. Для этого в общем форум и есть. Интересно найти ошибку и разобраться самому. Если бы мне было нужно готовое изделие я бы заказал за 80$ на али и все. 

 

sadman41
Онлайн
Зарегистрирован: 19.10.2016

Найдите сами ошибку в невидимом коде, разберитесь и опубликуйте результаты. Да, вы потратите в несколько раз больше, чем $80, но и удовольствия получите немерянно. Для этого форумы и существуют - чтобы делиться опытом.

andryushik
Offline
Зарегистрирован: 21.07.2018

 Я написал в тексте весь код но он удалился, поэтому и не видно. Как его тут добавить если нельзя просто текстом?

//toilet flush for Casper
 
#include <Servo.h>
Servo servo1; 
const int trigPin = 2, echoPin = 3;
int startFlush = 0;
 
void setup() {
  servo1.attach(9);
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  Serial.println("Startup Initiated");
}
 
void loop()
{
  long duration, inches; // establish variables for duration of the ping, and the distance result in inches 
 
  // The sensor is triggered by a HIGH pulse of 2 or more microseconds.
  servo1.write(20);
  Serial.begin(9600);
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  
  inches = pulseIn(echoPin, HIGH)/ 74 / 2; //read from the pin, divide by 74 to account for the speed of sound, then by 2 to account for the return trip)
  
  if (inches<10) { //if less than 10 inches, wait 5 seconds then check again
    Serial.println("Object in range");
    delay(5000);
    if (inches<10) {
      Serial.println("Flush ready");
      startFlush = 1;
    } //if the reading is less than 10 inches start the flush function
    else { //just someone pass go back to start
      Serial.println("Object pass");
      startFlush = 0;
    }
  }
 
  if (startFlush==1) {
    delay(5000);
    if (inches>10) {
      Serial.println("Flush activated");
      servo1.write(180);//put servo in far left position
      delay(2000);
      servo1.write(20); //put servo in far right position
      delay(3000);
      startFlush = 0;//reset
      Serial.println("Reset");
    }   
  }
}
andryushik
Offline
Зарегистрирован: 21.07.2018

Проблема в том чтобы исключить ложные срабатывания когда он просто носится мимо. Датчик обнаружил объект, потом ждет 5 секунд и если объект еще на месте значит ждем когда уйдет и смываем, а если нет тогда просто ложная тревога. На данном этапе смывает даже когда ложная тревога. Где-то мелочь какая то мешает. 

sadman41
Онлайн
Зарегистрирован: 19.10.2016

Примерно 50% кода нужно переписать заново.

andryushik
Offline
Зарегистрирован: 21.07.2018

sadman41 пишет:

Примерно 50% кода нужно переписать заново.

Отличное предложение, только нужно знать почему?)

sadman41
Онлайн
Зарегистрирован: 19.10.2016

Почему переписывать нужно? Чтобы работало в соответствии с описанием. 

Почему я так считаю? Потому что имею опыт и умею читать код.

 

andryushik
Offline
Зарегистрирован: 21.07.2018

Это очень круто, что вы такой опытный. Я тоже имею опыт кой в чем другом. Только я просил о помощи, а не о критике. Критика без аргументов бессмысленна. Не теряйте своё время на такие комментарии. Спасибо 

sadman41
Онлайн
Зарегистрирован: 19.10.2016

Где тут критика? Это констатация факта. Код работает как его написали - в целом без ошибок. Но к поставленной задаче он не подходит в том числе и алгоритмически. Еще необоснованные предъявы имеются?

DetSimen
DetSimen аватар
Онлайн
Зарегистрирован: 25.01.2017

Судя по коду, его сам кот и писал.

andryushik
Offline
Зарегистрирован: 21.07.2018

Я уже понял что здесь все гении Ардуино собрались один я новичок. Только зачем тогда этот форум, чтобы затролить новичков и показать свой пушистый хвост? Или для реального общения и помощи? 

sadman41
Онлайн
Зарегистрирован: 19.10.2016

Именно для того, чтобы показать свой пушистый хвост.

andryushik
Offline
Зарегистрирован: 21.07.2018

sadman41 пишет:

Именно для того, чтобы показать свой пушистый хвост.

Ну раз вы достигли поставленной цели предлагаю в эту тему больше не заходить. Удачи с остальными!

vvadim
Offline
Зарегистрирован: 23.05.2012

а как вы понимаете помощь - чтобы кто то взял и переписал ваш код ?

хотите обсудить - вставьте по правилам форума отформатированный код, напишите что вы от него хотите и что получилось .

wdrakula
wdrakula аватар
Онлайн
Зарегистрирован: 15.03.2016

1. Вот смотри, родное сердце: тут у нас есть входной тест на интеллект, называется "вставка кода в комментарий" .

У тебя не получилдоась пройти этот тест. Это уже "перваый звоночек" о том, что возможно, повторю - возможно, тебе не нужно заниматься программированием вообще и микроконтроллерами в частности.

Ты просил совета - это он и был.

----------------

2.Вставка кода - тест на интеллект, но всем быть Ландау и тем более Лившицами, есть тест на житейский ум - это входное поведение человека.

Если чел начинает общение с незнакомыми людьми с того, что требует помощи в стиле "Или помогай или иди нах!", то угадай, кто в итоге пойдет .... вот именно туда?

andryushik
Offline
Зарегистрирован: 21.07.2018

vvadim пишет:

а как вы понимаете помощь - чтобы кто то взял и переписал ваш код ?

хотите обсудить - вставьте по правилам форума отформатированный код, напишите что вы от него хотите и что получилось .

Вадим я уже и код вставил и написал что хочу и в чем проблема. Ошибка во второй “if” кажется. 

andryushik
Offline
Зарегистрирован: 21.07.2018

wdrakula пишет:

1. Вот смотри, родное сердце: тут у нас есть входной тест на интеллект, называется "вставка кода в комментарий" .

У тебя не получилдоась пройти этот тест. Это уже "перваый звоночек" о том, что возможно, повторю - возможно, тебе не нужно заниматься программированием вообще и микроконтроллерами в частности.

Ты просил совета - это он и был.

----------------

2.Вставка кода - тест на интеллект, но всем быть Ландао и тем более Лившицами, есть тест на житейский ум - это входное поведение человека.

Если чел начинает общение с незнакомыми людьми с того, что требует помощи в стиле "Или помогай или иди нах!", то угадай, кто в итоге пойдет .... вот именно туда?

Нет это психологический тип человека, кто-то скрупулёзно читает и следует всем занятым, а кто-то пробует. Я пишу с мобильного и все функции этого форума здесь искажены и полагаю некоторые не работают. Я не требовал помощи. Я просил.

Нормальная реакция - смотри у тебя в строке такой то ошибка нужно поменять.

Ненормальная - у тебя все неверно, нафига вообще этим занялся. А можно подумать все сразу все умели и знали)))

вот например некоторые из ответов уже длиннее этого кода. Ну да ладно...

 

ua6em
ua6em аватар
Онлайн
Зарегистрирован: 17.08.2016

andryushik пишет:

vvadim пишет:

а как вы понимаете помощь - чтобы кто то взял и переписал ваш код ?

хотите обсудить - вставьте по правилам форума отформатированный код, напишите что вы от него хотите и что получилось .

Вадим я уже и код вставил и написал что хочу и в чем проблема. Ошибка во второй “if” кажется. 


Вам же вдракула русским языком с гипертекстовой ссылкой написал, что код надо вставлять по правилам форума, сложно пройти по ссылке и исправить?

andryushik
Offline
Зарегистрирован: 21.07.2018
//toilet flush for Casper
 
#include <Servo.h>
Servo servo1; 
const int trigPin = 2, echoPin = 3;
int startFlush = 0;
 
void setup() {
  servo1.attach(9);
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  Serial.println("Startup Initiated");
}
 
void loop()
{
  long duration, inches; // establish variables for duration of the ping, and the distance result in inches 
 
  // The sensor is triggered by a HIGH pulse of 2 or more microseconds.
  servo1.write(20);
  Serial.begin(9600);
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  
  inches = pulseIn(echoPin, HIGH)/ 74 / 2; //read from the pin, divide by 74 to account for the speed of sound, then by 2 to account for the return trip)
  
  if (inches<10) { //if less than 10 inches, wait 5 seconds then check again
    Serial.println("Object in range");
    delay(5000);
    if (inches<10) {
      Serial.println("Flush ready");
      startFlush = 1;
    } //if the reading is less than 10 inches start the flush function
    else { //just someone pass go back to start
      Serial.println("Object pass");
      startFlush = 0;
    }
  }
 
  if (startFlush==1) {
    delay(5000);
    if (inches>10) {
      Serial.println("Flush activated");
      servo1.write(180);//put servo in far left position
      delay(2000);
      servo1.write(20); //put servo in far right position
      delay(3000);
      startFlush = 0;//reset
      Serial.println("Reset");
    }   
  }
}

Программный код с ошибками по форме форума 

 

 

andryushik
Offline
Зарегистрирован: 21.07.2018

На iPhone форум глючил жутко. Поэтому сложновато. Но справился. 

sadman41
Онлайн
Зарегистрирован: 19.10.2016

DetSimen пишет:

Судя по коду, его сам кот и писал.

Причем - успев выучить инглиш, пока хозяин учится код вставлять в пост.

Не знаю даже - нужно ли такому коту, чтобы за ним ардуина смывала...

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

andryushik пишет:

Только зачем тогда этот форум, чтобы затролить новичков и показать свой пушистый хвост? 

Именно для этого!

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

andryushik,

После строки №30 Вы ждёте 5 секунд, а потом проверяете всё ту же самую переменную inches.

Вы не хотите обновить её значение? Выполнить здесь что-то типа строки №28?

А то ведь сама она (переменная inches), как получила значение в строке №28, так ни за что не обновится, хоть Вы 5 секунд ждите, хоть 10. Какая была до задержки, такая и останется. А потому, сейчас проверка в строке №33 у Вас всегда даёт результат "истина".

andryushik
Offline
Зарегистрирован: 21.07.2018

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

andryushik,

После строки №30 Вы ждёте 5 секунд, а потом проверяете всё ту же самую переменную inches.

Вы не хотите обновить её значение? Выполнить здесь что-то типа строки №28?

А то ведь сама она (переменная inches), как получила значение в строке №28, так ни за что не обновится, хоть Вы 5 секунд ждите, хоть 10. Какая была до задержки, такая и останется. А потому, сейчас проверка в строке №33 у Вас всегда даёт результат "истина".

сейчас попробую)))

wdrakula
wdrakula аватар
Онлайн
Зарегистрирован: 15.03.2016

andryushik пишет:

На iPhone форум глючил жутко. Поэтому сложновато. Но справился. 

Вот так, ненавязчиво, нам намекнули, что с нами, скотами, изволит беседовать не быдло с ведроидом, а владелец целого Айфона! Гы!

wdrakula
wdrakula аватар
Онлайн
Зарегистрирован: 15.03.2016

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

Вы не хотите обновить её значение? Выполнить здесь что-то типа строки №28?

Недобрый ты, Женя, человек! Он ведь и правда ТОЛЬКО строку 28 продублирует.

Ну хоть весело будет... Что может быть прятнее, чем глумиться над ближним своим? ;) (это была ирония, ежли чо)

sadman41
Онлайн
Зарегистрирован: 19.10.2016

wdrakula пишет:

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

Вы не хотите обновить её значение? Выполнить здесь что-то типа строки №28?

Недобрый ты, Женя, человек! Он ведь и правда ТОЛЬКО строку 28 продублирует.

Товарищ хотел непременно получить  номер строки - он его получил...

ua6em
ua6em аватар
Онлайн
Зарегистрирован: 17.08.2016

wdrakula пишет:

andryushik пишет:

На iPhone форум глючил жутко. Поэтому сложновато. Но справился. 

Вот так, ненавязчиво, нам намекнули, что с нами, скотами, изволит беседовать не быдло с ведроидом, а владелец целого Айфона! Гы!


Здесь кто-то владелец целого дома на колёсах, а ты про какой то айфон )))

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

wdrakula пишет:

Недобрый ты, Женя, человек! Он ведь и правда ТОЛЬКО строку 28 продублирует.

Да, не, Влад, я очень добрый. Сначала я вообще не хотел писать фразу "Выполнить здесь что-то типа строки №28?", справедливо полагая, что для того, у кого есть голова. и без неё всё понятно. Но, потом доброта замучила - добавил.

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

Почитал я ваши посты и понял - главная беда это библиотеки. Писали бы на чистом си или на ассемблере и не возникало бы глупых вопросов. Были бы умные...

toc
Offline
Зарегистрирован: 09.02.2013

в 33 строке condition always evaluates to true

andryushik
Offline
Зарегистрирован: 21.07.2018

toc пишет:
в 33 строке condition always evaluates to true

Да именно, но почему? Есть же строка 37!

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

andryushik пишет:

Да именно, но почему? 

Почему - было объяснено в посте #24. Вы его не читали? Или не поняли? Вопросов по нему Вы не задавали, так что я думал, что всё понятно.

andryushik
Offline
Зарегистрирован: 21.07.2018

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

andryushik пишет:

Да именно, но почему? 

Почему - было объяснено в посте #24. Вы его не читали? Или не поняли? Вопросов по нему Вы не задавали, так что я думал, что всё понятно.

Евгений я добавил ещё 2 раза эту строку измерения. 

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

Ну, этого мы не видели, Вы это от нас в секрете держите. Как добавил? куда добавил? ХЗ!

А замечание toc было по старому коду безо всяких добавлений - по сути это было тоже. что я говорил, только у меня подробнее.

andryushik
Offline
Зарегистрирован: 21.07.2018

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

Ну, этого мы не видели, Вы это от нас в секрете держите. Как добавил? куда добавил? ХЗ!

А замечание toc было по старому коду безо всяких добавлений - по сути это было тоже. что я говорил, только у меня подробнее.

Евгений, я очень Вам благодарен за подсказку. В итоге я нашел ошибку по вашей подсказке, но всплыли другие и я решил полность переписать код.

Начал с начала со всеми отступами (не знаю как правильно называются) соблюдая все скобки (как учили в универе на паскале много лет назад) и все получилось как задумывал. 

Если вдруг решите отдыхать в Таиланде и будет нужна какая-либо помощь или вопросы - обращайтесь с удовольствием помогу, меня можно найти вконтакте Андрей Надежнов г.Паттайя, Таиланд.

Ниже инфо с монитора: 

Distance: 189.61
Distance: 188.75
Distance: 11.59
Object detected
Object pass
Reset
Distance: 189.30
Distance: 188.41
Distance: 9.26
Object detected
Flush ready
Waiting...
Waiting...
Flush activated
Reset
Distance: 188.96
Distance: 189.44

PS Всем остальным спасибо за вашу бесполезную болтовню и показ мод)))

sadman41
Онлайн
Зарегистрирован: 19.10.2016

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

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

andryushik пишет:

PS Всем остальным спасибо за вашу бесполезную болтовню и показ мод)))

И таки вовсе не бесполезная, наговариваете вы на нас. Сперва она разозлила и заставила морщиться моск. Как следствие - найденное решение.))))
Основная масса неофитов не успевает пройти последовательно все эти состояния и срывается в истерику, когда победа была уже близка.))))

andryushik
Offline
Зарегистрирован: 21.07.2018

bwn пишет:

andryushik пишет:

PS Всем остальным спасибо за вашу бесполезную болтовню и показ мод)))

И таки вовсе не бесполезная, наговариваете вы на нас. Сперва она разозлила и заставила морщиться моск. Как следствие - найденное решение.))))
Основная масса неофитов не успевает пройти последовательно все эти состояния и срывается в истерику, когда победа была уже близка.))))

Тут прямо форум психологов!!!

mobistrike
mobistrike аватар
Offline
Зарегистрирован: 19.08.2016

andryushik пишет:

bwn пишет:

andryushik пишет:

PS Всем остальным спасибо за вашу бесполезную болтовню и показ мод)))

И таки вовсе не бесполезная, наговариваете вы на нас. Сперва она разозлила и заставила морщиться моск. Как следствие - найденное решение.))))
Основная масса неофитов не успевает пройти последовательно все эти состояния и срывается в истерику, когда победа была уже близка.))))

Тут прямо форум психологов!!!

Психотерапевт - клиенту: - Ну-с, и как вы ощущаете результаты нашей с вами работы? Клиент: - Видите ли, доктор, раньше меня мучили разные вопросы, а теперь мучают разные ответы.

 

DetSimen
DetSimen аватар
Онлайн
Зарегистрирован: 25.01.2017

andryushik пишет:

Евгений, я очень Вам благодарен за подсказку. В итоге я нашел ошибку по вашей подсказке, но всплыли другие и я решил полность переписать код.

Теперь - читать сообщение #6 и сказать нам, кто неправ. 

andryushik
Offline
Зарегистрирован: 21.07.2018

DetSimen пишет:

andryushik пишет:

Евгений, я очень Вам благодарен за подсказку. В итоге я нашел ошибку по вашей подсказке, но всплыли другие и я решил полность переписать код.

Теперь - читать сообщение #6 и сказать нам, кто неправ. 

уважаемый, вы были правы, но не помогли. 

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

Чой-то с баша вспомнилось из недавнего:

Цитата:

Бостон. IT-перекур. С трудом переводимая игра слов, но я попробую. Два одмина рассуждают про разворачивание тестовых стендов (сэндбоксов, дословно "ящик с песком", песочница) для очередной кучи проектов в амазоне. Мимо ковыляет древняя бабка, из афроамериканских.
 
одмин1 (загибает пальцы): Надо сандбокс для Марио, среднего размера. Для Лесли тоже надо сэндбокс, вероятно большой. И для Миры, но там можно совсем маленькие, но два.
одмин2: угу. Еще не забудь сэндбоксы для молодежи - по одному на Майкла, Эндрю, Герита.
одмин1: Блин. Может остальные как-нибудь одним попользуются? Это ж все денег стоит.
бабка (стоит в стороне, внимательно слушала с интересом): джентльмены, это, конечно, не мое дело, но не проще ли научить всех ваших котов ссать в унитаз?