ARDUINO Ошибка компиляции для платы Arduino Pro or Pro Mini 168

+79640226677

✩✩✩✩✩✩✩
25 Июн 2020
6
0
Диммер - управление переменным током на Arduino

Ошибка компиляции для платы Arduino Pro or Pro Mini 168 не компиляции а на Pro Mini 328 копилируется.
спосибо.
скетч

/*
Диммер переменки на Arduino. Симистор через оптопару
подключен к 4 пину, детектор нуля ко 2 пину.
Переменная Dimmer - величина диммирования, от 0 до 255
В этом коде на пин А0 подключен потенциометр для управления яркостью
Также можно вводить число для переменной Dimmer через
монитор порта, для этого в лупе надо раскомментировать код
*/

#define dimPin 4
#define zeroPin 2
#include <CyberLib.h> // шустрая библиотека для таймера
volatile int tic, Dimmer;

void setup() {
Serial.begin(9600);
pinMode(dimPin, OUTPUT);
digitalWrite(dimPin, 0);
pinMode(zeroPin, INPUT); // настраиваем порт на вход для отслеживания прохождения сигнала через ноль
attachInterrupt(0, detect_up, FALLING); // настроить срабатывание прерывания interrupt0 на pin 2 на низкий уровень

StartTimer1(timer_interrupt, 40); // время для одного разряда ШИМ
StopTimer1(); // остановить таймер

Serial.println("Start");
}

void loop() {

// раскомментировать для ввода числа диммирования чеерез монитор порта (0 - 255)
if (Serial.available()) {
Dimmer = Serial.parseInt();
Serial.println(Dimmer);
}

// раскомментировать для управления потенциометром (аналоговый А0)
// Dimmer = map(analogRead(0), 0, 1023, 240, 0);
}

//----------------------ОБРАБОТЧИКИ ПРЕРЫВАНИЙ--------------------------
void timer_interrupt() { // прерывания таймера срабатывают каждые 40 мкс
tic++; // счетчик
if (tic > Dimmer) // если настало время включать ток
digitalWrite(dimPin, 1); // врубить ток
}

void detect_up() { // обработка внешнего прерывания на пересекание нуля снизу
tic = 0; // обнулить счетчик
ResumeTimer1(); // перезапустить таймер
attachInterrupt(0, detect_down, RISING); // перенастроить прерывание
}

void detect_down() { // обработка внешнего прерывания на пересекание нуля сверху
tic = 0; // обнулить счетчик
StopTimer1(); // остановить таймер
digitalWrite(dimPin, 0); // вырубить ток
attachInterrupt(0, detect_up, FALLING); // перенастроить прерывание
}
//----------------------ОБРАБОТЧИКИ ПРЕРЫВАНИЙ--------------------------
 

b707

★✩✩✩✩✩✩
4 Июн 2020
54
18
скопируйте в форум полный текст ошибки, только не надо скриншот. копируйте текстом
 

+79640226677

✩✩✩✩✩✩✩
25 Июн 2020
6
0
C:\Users\Z1\AppData\Local\Temp\ccSFHd1r.ltrans0.ltrans.o: In function `detect_down()':
C:\Users\Z1\Desktop\AC 220v_Dimmer-master\Sketches\dimmer_timer/dimmer_timer.ino:55: undefined reference to `StopTimer1()'
C:\Users\Z1\AppData\Local\Temp\ccSFHd1r.ltrans0.ltrans.o: In function `detect_up()':
C:\Users\Z1\Desktop\AC 220v_Dimmer-master\Sketches\dimmer_timer/dimmer_timer.ino:49: undefined reference to `ResumeTimer1()'
C:\Users\Z1\AppData\Local\Temp\ccSFHd1r.ltrans0.ltrans.o: In function `setup':
C:\Users\Z1\Desktop\AC 220v_Dimmer-master\Sketches\dimmer_timer/dimmer_timer.ino:22: undefined reference to `StartTimer1(void (*)(), unsigned long)'
C:\Users\Z1\Desktop\AC 220v_Dimmer-master\Sketches\dimmer_timer/dimmer_timer.ino:23: undefined reference to `StopTimer1()'
collect2.exe: error: ld returned 1 exit status
exit status 1
Ошибка компиляции для платы Arduino Pro or Pro Mini.
 

b707

★✩✩✩✩✩✩
4 Июн 2020
54
18
@+79640226677, не будет оно компилироваться для вашей платы
CyberLib.h для большинства функций поддерживает только Атмегу 328. Атмега168 не поддерживается вовсе
откройте исходник библиотеки и посмотрите, счего она начинается:
C++:
#if defined (__AVR_ATmega328__) || defined (__AVR_ATmega328P__)
 
Изменено:

+79640226677

✩✩✩✩✩✩✩
25 Июн 2020
6
0
//*************************************************Все на 328 процессоре**********************************
//********************************************************************************************************
//********************************************************************************************************
#if defined (AVR_ATmega328) || defined (AVR_ATmega328P) || defined(AVR_ATmega168) || defined(AVR_ATmega88)
//***INPUT PINS

в библиотеке есть такая строка
 

b707

★✩✩✩✩✩✩
4 Июн 2020
54
18
@+79640226677, ну что спорить-то? Ошибки, которые вам выдал компилятор - однозначно говорят. что функция StartTimer1 для вашей платы не поддерживается
Вместо спора давно б переписали скетч без использования CyberLib. у вас в коде, кроме таймера. библиотека нигде не нужна
 

+79640226677

✩✩✩✩✩✩✩
25 Июн 2020
6
0
спосибо большое за помощ.
я не умею писать скетч я новичок.
 

+79640226677

✩✩✩✩✩✩✩
25 Июн 2020
6
0
было 2 штуки исползуются gsm термометр в подвале, и еще 1 в проекте ,осталось пока 168.
328 жду с китая.