Attiny13.Программирование

Wilen
Offline
Зарегистрирован: 05.11.2020

Помогите пожалуйста , скетч написанный для Attiny13 переделать для Ардуино Уно.
#define RELAY 3

#define LIGHT_THRESHOLD 130

#define START_DELAY 180 //секунды
#define STOP_DELAY 120//секунды

volatile unsigned int TimeCnt = 0; //счетчик секунд
volatile boolean CntOnFlag = false; //false - счетчик выключен, true - счетчик включен
volatile boolean CntPhaseFlag = true; //false - свет включен, ожидание включения вентилятора;
//true - свет выключен, ожидание отключения вентилятора

void setup()
{
//конфигурация вывода PB3
DDRB = 1 << RELAY;
PORTB &= ~(1 << RELAY);
//PORTB |= (1 << RELAY);

//конфигурация АЦП
ADCSRA = (1 << ADEN) | (1 << ADPS2) | (1 << ADPS1) | (1 << ADPS0);
ADMUX = (1 << MUX1) | (1 << ADLAR); //ADC2
ACSR = (1 << ACD);
DIDR0 |= (1 << ADC2D);

ADCSRA |= (1 << ADSC);
while (ADCSRA & (1 << ADSC));

ADCSRA |= (1 << ADIE);
SREG |= 0x80;
ADCSRA |= (1 << ADSC);
}
//------------------------------------------------------
void loop()
{

if (CntOnFlag) //если стоит флаг включения счетчика
{
if (TimeCnt > 0) //если счетчик больше нуля
{
TimeCnt--; //уменьшение счетчика на единицу
}

else //иначе
{
CntOnFlag = false; //сброс флага включения счетчика

if (CntPhaseFlag) //если было выключение света
PORTB &= ~(1 << RELAY); //выключить реле
else //иначе, т.е. было включение света
PORTB |= (1 << RELAY); //включение реле
}

delay(1000);
}

}
//------------------------------------------------------
ISR(ADC_vect)
{
unsigned int ADCVal = ADCH * 7; //считывание показаний АЦП

//если уровень освещенности больше заданного
//и было выключение света
if ((ADCVal >= LIGHT_THRESHOLD) && (CntPhaseFlag))
{
CntPhaseFlag = false; //сброс флага выключения света
TimeCnt = START_DELAY; //счетчик равен времени задержки перед включением реле
CntOnFlag = true; //установка флага включения счетчика
}
//иначе, если уровень освещенности меньше заданного,
//и было отключение света
else if ((ADCVal < LIGHT_THRESHOLD) && (!CntPhaseFlag))
{
CntPhaseFlag = true; //установка флага выключения света
TimeCnt = STOP_DELAY; //счетчик равен времени, которое реле остается включенным после отключения света
CntOnFlag = true; //установка флага включения счетчика
}

ADCSRA |= (1 << ADSC);
}

microsystems
microsystems аватар
Offline
Зарегистрирован: 25.01.2020

А логику работы сформулировать можете? Чтобы не ковырять этот код. Тогда скетч для Ардуины можно просто написать заново. 

microsystems@mcuprog.ru

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

2т и добавлю функцию слива унитаза.

kaida@yandex.ru

Бармалей
Бармалей аватар
Offline
Зарегистрирован: 23.09.2019

500р плюс 100р унитаз

barmaley2m@yandex.ru

 

Green
Онлайн
Зарегистрирован: 01.10.2015
Wilen
Offline
Зарегистрирован: 05.11.2020

Я продажей не занимаюсь, это чисто для себя. Они и так в продаже готовые платы
есть.

Yarik.Yar
Offline
Зарегистрирован: 07.09.2014

Wilen пишет:
Я продажей не занимаюсь, это чисто для себя. Они и так в продаже готовые платы есть.

Вы написали в раздел, где помогают платно. Причём с такой формулировкой сообщения и оформлением, попали по адресу. Если есть конструктивные вопросы, желание разобраться самому и что-то всё-таки не получается - создайте тему в "Программировании", эту закроем. Только оформите правильно, блин, код.

bortnik27
Offline
Зарегистрирован: 23.06.2019

Wilen пишет:
Помогите пожалуйста , скетч написанный для Attiny13..

Подскажите пожалуйста первоисточник?

-NMi-
Offline
Зарегистрирован: 20.08.2018

Это-ж скока аливъё нужно запихать фсибя и сколькими литрами сивухи запить, шоп такой вывихнутый экзерсис скормить кампилястору???
Иль мощь ххрибы???

Roman1984
Offline
Зарегистрирован: 17.02.2017

1000 руб. petrovskyi.rv@gmail.com

Wilen
Offline
Зарегистрирован: 05.11.2020
bortnik27
Offline
Зарегистрирован: 23.06.2019

Спасибо. 

Если еще актуально готов за 500р написать.