Цитата:
Сообщение от Admin
А библиотека CyberLib установлена?
|
Использую вот этот скетч
PHP код:
#include <cyberpins.h> //быстрое управление пинами
#include <TimerOne.h> //использует Timer1
volatile uint8_t tic, Dimmer1, Dimmer2, Dimmer3;
char unitID_in[10];
char command_in[10];
char data_in[100];
void setup()
{
Serial.begin(9600);
D4_Out; //Настраиваем порт на выход Dimmer1
D5_Out; //Настраиваем порт на выход Dimmer2
D6_Out; //Настраиваем порт на выход Dimmer3
D4_LOW; D5_LOW; D6_LOW; //установить на выходах низкий уровень сигнала
D2_In; //настраиваем порт на вход для отслеживания прохождения сигнала через ноль
attachInterrupt(0, detect_up, FALLING); // настроить срабатывание прерывания int0 на pin 2
Timer1.initialize(40); // Интервал срабатывания таймера в мкс
Timer1.attachInterrupt(halfcycle); //будет вызыватся каждый раз при отсчете заданого времени
Timer1.stop();
}
//********************обработчики прерываний*******************************
void halfcycle() //прерывания таймера
{
tic++; //счетчик
if(Dimmer1 < tic ) D4_HIGH; //управляем выходом
if(Dimmer2 < tic ) D5_HIGH; //управляем выходом
if(Dimmer3 < tic ) D6_HIGH; //управляем выходом
}
void detect_up() // обработка внешнего прерывания. Сработает по переднему фронту синусоиды
{
tic=0; //обнулить счетчик
Timer1.resume(); //запустить таймер
attachInterrupt(0, detect_down, RISING); //перепрограммировать прерывание на другой обработчик
}
void detect_down() // обработка внешнего прерывания. Сработает по заднему фронту синусоиды
{
Timer1.stop(); //остановить таймер
D4_LOW; D5_LOW; D6_LOW; //логический ноль на выходы
tic=0; //обнулить счетчик
attachInterrupt(0, detect_up, FALLING); //перепрограммировать прерывание на другой обработчик
}
//*************************************************************************
void loop()
{
int i=0;
char buffer[100];
//если есть данные - читаем
if(Serial.available()){
delay(100);
//загоняем прочитанное в буфер
while( Serial.available() && i< 99) {
buffer[i++] = Serial.read();
}
//закрываем массив
buffer[i++]='\0';
}
//если буфер наполнен
if(i>0){
//разбираем его на части отделенные запятой
// sscanf(buffer, "%[^'h']h%[^'h']%s", &unitID_in, &command_in, &data_in);
sscanf(buffer, "%s%s%d",&unitID_in,&command_in, &data_in);
}
//Исполнительная часть
//Проверяем какому устройству пришли данные
// Выполнение команды устройством 001
if ((String)unitID_in == "001"){
if ((String)command_in == "0"){Dimmer1=0;}
if ((String)command_in == "1"){Dimmer1=1;}
if ((String)command_in == "2"){Dimmer1=2;}
if ((String)command_in == "3"){Dimmer1=3;}
if ((String)command_in == "4"){Dimmer1=4;}
if ((String)command_in == "5"){Dimmer1=5;}
if ((String)command_in == "6"){Dimmer1=6;}
if ((String)command_in == "7"){Dimmer1=7;}
if ((String)command_in == "8"){Dimmer1=8;}
if ((String)command_in == "9"){Dimmer1=9;}
if ((String)command_in == "10"){Dimmer1=10;}
if ((String)command_in == "11"){Dimmer1=11;}
if ((String)command_in == "12"){Dimmer1=12;}
if ((String)command_in == "13"){Dimmer1=13;}
if ((String)command_in == "14"){Dimmer1=14;}
if ((String)command_in == "15"){Dimmer1=15;}
if ((String)command_in == "16"){Dimmer1=16;}
if ((String)command_in == "17"){Dimmer1=17;}
if ((String)command_in == "18"){Dimmer1=18;}
if ((String)command_in == "19"){Dimmer1=19;}
if ((String)command_in == "20"){Dimmer1=20;}
if ((String)command_in == "21"){Dimmer1=21;}
if ((String)command_in == "22"){Dimmer1=22;}
if ((String)command_in == "23"){Dimmer1=23;}
if ((String)command_in == "24"){Dimmer1=24;}
if ((String)command_in == "25"){Dimmer1=25;}
if ((String)command_in == "26"){Dimmer1=26;}
if ((String)command_in == "27"){Dimmer1=27;}
if ((String)command_in == "28"){Dimmer1=28;}
if ((String)command_in == "29"){Dimmer1=29;}
if ((String)command_in == "30"){Dimmer1=30;}
if ((String)command_in == "31"){Dimmer1=31;}
if ((String)command_in == "32"){Dimmer1=32;}
if ((String)command_in == "33"){Dimmer1=33;}
if ((String)command_in == "34"){Dimmer1=34;}
if ((String)command_in == "35"){Dimmer1=35;}
if ((String)command_in == "36"){Dimmer1=36;}
if ((String)command_in == "37"){Dimmer1=37;}
if ((String)command_in == "38"){Dimmer1=38;}
if ((String)command_in == "39"){Dimmer1=39;}
if ((String)command_in == "40"){Dimmer1=40;}
if ((String)command_in == "41"){Dimmer1=41;}
if ((String)command_in == "42"){Dimmer1=42;}
if ((String)command_in == "43"){Dimmer1=43;}
if ((String)command_in == "44"){Dimmer1=44;}
if ((String)command_in == "45"){Dimmer1=45;}
if ((String)command_in == "46"){Dimmer1=46;}
if ((String)command_in == "47"){Dimmer1=47;}
if ((String)command_in == "48"){Dimmer1=48;}
if ((String)command_in == "49"){Dimmer1=49;}
if ((String)command_in == "50"){Dimmer1=50;}
if ((String)command_in == "51"){Dimmer1=51;}
if ((String)command_in == "52"){Dimmer1=52;}
if ((String)command_in == "53"){Dimmer1=53;}
if ((String)command_in == "54"){Dimmer1=54;}
if ((String)command_in == "55"){Dimmer1=55;}
if ((String)command_in == "56"){Dimmer1=56;}
if ((String)command_in == "57"){Dimmer1=57;}
if ((String)command_in == "58"){Dimmer1=58;}
if ((String)command_in == "59"){Dimmer1=59;}
if ((String)command_in == "60"){Dimmer1=60;}
if ((String)command_in == "61"){Dimmer1=61;}
if ((String)command_in == "62"){Dimmer1=62;}
if ((String)command_in == "63"){Dimmer1=63;}
if ((String)command_in == "64"){Dimmer1=64;}
if ((String)command_in == "65"){Dimmer1=65;}
if ((String)command_in == "66"){Dimmer1=66;}
if ((String)command_in == "67"){Dimmer1=67;}
if ((String)command_in == "68"){Dimmer1=68;}
if ((String)command_in == "69"){Dimmer1=69;}
if ((String)command_in == "70"){Dimmer1=70;}
if ((String)command_in == "71"){Dimmer1=71;}
if ((String)command_in == "72"){Dimmer1=72;}
if ((String)command_in == "73"){Dimmer1=73;}
if ((String)command_in == "74"){Dimmer1=74;}
if ((String)command_in == "75"){Dimmer1=75;}
if ((String)command_in == "76"){Dimmer1=76;}
if ((String)command_in == "77"){Dimmer1=77;}
if ((String)command_in == "78"){Dimmer1=78;}
if ((String)command_in == "79"){Dimmer1=79;}
if ((String)command_in == "80"){Dimmer1=80;}
if ((String)command_in == "81"){Dimmer1=81;}
if ((String)command_in == "82"){Dimmer1=82;}
if ((String)command_in == "83"){Dimmer1=83;}
if ((String)command_in == "84"){Dimmer1=84;}
if ((String)command_in == "85"){Dimmer1=85;}
if ((String)command_in == "86"){Dimmer1=86;}
if ((String)command_in == "87"){Dimmer1=87;}
if ((String)command_in == "88"){Dimmer1=88;}
if ((String)command_in == "89"){Dimmer1=89;}
if ((String)command_in == "90"){Dimmer1=90;}
if ((String)command_in == "91"){Dimmer1=91;}
if ((String)command_in == "92"){Dimmer1=92;}
if ((String)command_in == "93"){Dimmer1=93;}
if ((String)command_in == "94"){Dimmer1=94;}
if ((String)command_in == "95"){Dimmer1=95;}
if ((String)command_in == "96"){Dimmer1=96;}
if ((String)command_in == "97"){Dimmer1=97;}
if ((String)command_in == "98"){Dimmer1=98;}
if ((String)command_in == "99"){Dimmer1=99;}
if ((String)command_in == "100"){Dimmer1=100;}
}
Dimmer2=50; //200=мин. 0=макс 255=выкл
Dimmer3=90; //200=мин. 0=макс 255=выкл
}