Помогите понять в чем ошибка. Attiny85 + HC-SR501 как-то странно запускается

Когда натрахаешься, попробуй совет из #4.

А как проверить? Я прочитал, что изменение фьюзов необратимо. Т.е. если я установлю фьюз RSTDISBL, то отключить его не смогу.
И еще. Где-то в инструкциях я прочитал, что Тинька по умолчанию работает на другой частоте и что бы она заработала на нужной нужно прошить загрузчик. Ну это так просто описывается в инструкции. Этот загрузчик есть в среде Arduino IDE. Я правильно понял, что это как раз меняет какой-то фьюз?
Осталось понять как установить фьюз RSTDISBL.

Вы про этот совет? А действительно это самое простое. Надо попробовать.

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

Нет такого. Есть программаторы, которые позволяют это делать.
(менять RSTDISBL)

А можно ссылочку где его преобрести?
Думаю может прикупить. Хотя не был бя я таким ослом, оставил бы 1 контакт незадействованным. У меня как раз 1 вывод свободен.

Любой с параллельным интерфейсом должен.
У меня, к примеру, TL866, ссылку не дам, давно купил.
Сейчас есть более современные

attiny85 шьётся по последовательному соединению к счастью, только пин RESET надо поднимать до 12 вольт

1 лайк

Да, @ua6em прав. Я ошибся. ATtiny85 шьётся по сериалу, но нужен высоковольтный программатор.
TL866 умеет это делать.

да нет, просто любой высоковольтный параллельный умеет и по последовательному )))

Это да.
Но , теоретически, можно взять и “последовательный” высоковольтный прогер , без параллельного интерфейса.
Хоть я таких в продаже и не видел, но сам когда-то давно делал)))

В общем решил не трахаться и сразу воспользоваться советом из #4.
Если там не получится, то светодиод перевешу на свободный PB1, а фоторезистор тогда на А2 перевешу. Благо там дорожки в удобных местах можно порезать и просто перевесить на нужные контакты девайсы.

// ATMEL                                ATtiny 25/45/85
//                                           +-\/-+
//             !RESET PCINT5 5/A0 (D 5) PB5 1|    |8  Vcc
//  XTAL1 CLKI !OC1B  PCINT3 3/A3 (D 3) PB3 2|    |7  PB2 (D 2) 2/A1 PCINT2 USCK SCK T0   INT0 SCL  
//  XTAL2 CLKO  OC1B  PCINT4 4/A2 {D 4) PB4 3|    |6  PB1 (D 1) pwm1 PCINT1 MISO DO  OC0B AIN1
//                                      GND 4|    |5  PB0 (D 0) pwm0 PCINT0 MOSI DI  OC0A AIN0 SDA AREF
//                                           +----+

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

if ((digitalRead(DD1) == HIGH or digitalRead(DD2) == HIGH) and osv <= 100)

Но мне надо, что бы если движение во время горения произошло снова, то отсчет временеи пошел по новой. А так получается не отреагирует, т.к. освещенность будет от лампы больше 100.

Логично добавить в условие проверку состояния лампы - если включена, то ограничение на освещённость не действует.
Что-то типа этого

if(!digitalRead(RELE)  &&  osv <= 100)

P.S. При этом pinMode() переключать не надо.

Да, это понятно. Спасибо. Попробую.

if(osv < 100) { ... }

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