Официальный сайт компании Arduino по адресу arduino.cc
ругается
а код где?
Ведь просили не пихать ошибки картинкой? на оранжевом фоне справа есть надпись "Копировать..." Значит сможешь скопировать текстом? Ты нарочно тупишь, или в честь Рождества принял уже горячительного?
Походу парень реально зафлудить форум решил ))
#define PERIOD 3 // период работы в секундах (пример: 60*60*24*3 = 259200 - три дня!) #define WORK 30 // время работы в секундах #define MOS 6 // пин мосфета uint32_t mainTimer, myTimer; boolean state = false; #include <avr/wdt.h> #include <avr/sleep.h> #include <avr/interrupt.h> #define adc_disable() (ADCSRA &= ~(1<<ADEN)) // disable ADC (before power-off) #define adc_enable() (ADCSRA |= (1<<ADEN)) // re-enable ADC void setup() { // все пины как входы, экономия энергии for (byte i = 0; i < 6; i++) { pinMode(i, INPUT); } adc_disable(); // отключить АЦП (экономия энергии) wdt_reset(); // инициализация ватчдога wdt_enable(WDTO_1S); // разрешаем ватчдог // 15MS, 30MS, 60MS, 120MS, 250MS, 500MS, 1S, 2S, 4S, 8S WDTCR |= _BV(WDIE); // разрешаем прерывания по ватчдогу. Иначе будет резет. СТРОЧКА ПОДЧЁКИВАЕТСЯ sei(); // разрешаем прерывания set_sleep_mode(SLEEP_MODE_PWR_DOWN); // максимальный сон } void loop() { mainTimer++; if (!state) { // если помпа не включена if ((long)mainTimer - myTimer > PERIOD) { // таймер периода myTimer = mainTimer; // сброс таймера state = true; // флаг на запуск pinMode(MOS, OUTPUT); // пин как выход digitalWrite(MOS, HIGH); // врубить } } else { // если помпа включена if ((long)mainTimer - myTimer > WORK) { // таймер времени работы myTimer = mainTimer; // сброс state = false; // флаг на выкл digitalWrite(MOS, LOW); // вырубить pinMode(MOS, INPUT); // пин как вход (экономия энергии) } } sleep_enable(); // разрешаем сон sleep_cpu(); // спать! } ISR (WDT_vect) { WDTCR |= _BV(WDIE); // разрешаем прерывания по ватчдогу. Иначе будет реcет. СТРОЧКА ПОДЧЁКИВАЕТСЯ }
Код для Attiny85 а Вы для какой платы его компилируете?
UNO
Что такое "зафлудить"
вот более универсальный код, буквально пару строк поправить:
#if defined(__AVR_ATtiny85__) || defined(__AVR_ATtiny167__) #define WDTCSR WDTCR #endif #define PERIOD 3 // период работы в секундах (пример: 60*60*24*3 = 259200 - три дня!) #define WORK 30 // время работы в секундах #define MOS 6 // пин мосфета uint32_t mainTimer, myTimer; boolean state = false; #include <avr/wdt.h> #include <avr/sleep.h> #include <avr/interrupt.h> #define adc_disable() (ADCSRA &= ~(1<<ADEN)) // disable ADC (before power-off) #define adc_enable() (ADCSRA |= (1<<ADEN)) // re-enable ADC void setup() { // все пины как входы, экономия энергии for (byte i = 0; i < 6; i++) { pinMode(i, INPUT); } adc_disable(); // отключить АЦП (экономия энергии) wdt_reset(); // инициализация ватчдога wdt_enable(WDTO_1S); // разрешаем ватчдог // 15MS, 30MS, 60MS, 120MS, 250MS, 500MS, 1S, 2S, 4S, 8S WDTCSR |= _BV(WDIE); // разрешаем прерывания по ватчдогу. Иначе будет резет. СТРОЧКА ПОДЧЁКИВАЕТСЯ sei(); // разрешаем прерывания set_sleep_mode(SLEEP_MODE_PWR_DOWN); // максимальный сон } void loop() { mainTimer++; if (!state) { // если помпа не включена if ((long)mainTimer - myTimer > PERIOD) { // таймер периода myTimer = mainTimer; // сброс таймера state = true; // флаг на запуск pinMode(MOS, OUTPUT); // пин как выход digitalWrite(MOS, HIGH); // врубить } } else { // если помпа включена if ((long)mainTimer - myTimer > WORK) { // таймер времени работы myTimer = mainTimer; // сброс state = false; // флаг на выкл digitalWrite(MOS, LOW); // вырубить pinMode(MOS, INPUT); // пин как вход (экономия энергии) } } sleep_enable(); // разрешаем сон sleep_cpu(); // спать! } ISR (WDT_vect) { WDTCSR |= _BV(WDIE); // разрешаем прерывания по ватчдогу. Иначе будет реcет. СТРОЧКА ПОДЧЁКИВАЕТСЯ }
проверяю
)) Период считается не днями, а мс. Неуж то скопировать даже трудно. Извиняюсь, секундами.
код там рабочий )))
30 секунд помпа, 3 секунды период. Конечно рабочий, только не выключается.) 30/3 точнее.
а код где?
Ведь просили не пихать ошибки картинкой? на оранжевом фоне справа есть надпись "Копировать..." Значит сможешь скопировать текстом? Ты нарочно тупишь, или в честь Рождества принял уже горячительного?
Походу парень реально зафлудить форум решил ))
а код где?
Код для Attiny85 а Вы для какой платы его компилируете?
Код для Attiny85 а Вы для какой платы его компилируете?
UNO
Походу парень реально зафлудить форум решил ))
Что такое "зафлудить"
Код для Attiny85 а Вы для какой платы его компилируете?
UNO
вот более универсальный код, буквально пару строк поправить:
Код для Attiny85 а Вы для какой платы его компилируете?
UNO
вот более универсальный код, буквально пару строк поправить:
проверяю
)) Период считается не днями, а мс. Неуж то скопировать даже трудно.
Извиняюсь, секундами.
)) Период считается не днями, а мс. Неуж то скопировать даже трудно.
Извиняюсь, секундами.
код там рабочий )))
30 секунд помпа, 3 секунды период. Конечно рабочий, только не выключается.) 30/3 точнее.