Attiny13.Программирование
- Войдите на сайт для отправки комментариев
Помогите пожалуйста , скетч написанный для 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@mcuprog.ru
1500р
elf-basic@yandex.ru
2т и добавлю функцию слива унитаза.
kaida@yandex.ru
500р плюс 100р унитаз
barmaley2m@yandex.ru
htpicc@gmail.com
Я продажей не занимаюсь, это чисто для себя. Они и так в продаже готовые платы
есть.
Вы написали в раздел, где помогают платно. Причём с такой формулировкой сообщения и оформлением, попали по адресу. Если есть конструктивные вопросы, желание разобраться самому и что-то всё-таки не получается - создайте тему в "Программировании", эту закроем. Только оформите правильно, блин, код.
Подскажите пожалуйста первоисточник?
Это-ж скока аливъё нужно запихать фсибя и сколькими литрами сивухи запить, шоп такой вывихнутый экзерсис скормить кампилястору???
Иль мощь ххрибы???
1000 руб. petrovskyi.rv@gmail.com
https://www.chipdip.ru/product/rdc1-0004?from=rec_video
Спасибо.
Если еще актуально готов за 500р написать.