Индикатором является окошко терминала (любого - хош самой IDE, хош иного происхождения) на ПК.
схемка теста:
https://img.radiokot.ru/files/20529/365ylytg02.GIF
и сама прожка: Совсем "творческо упадко"...
Код: Выделить всё
// описание(объявление) функции
char keeloq_receive (void);
// обЪявляем переменную для приема данных
char oak;
void setup() {
// put your setup code here, to run once:
// использование функции или тут
oak = keeloq_receive();
}
void loop() {
// put your main code here, to run repeatedly:
// использование функции или тут
oak = keeloq_receive();
}
// реализация функции
char keeloq_receive()
{
// объявление и иницивлизация "внутренних переменных"
char temp = 0;
// * в ардуино функция delayMicroseconds принимает unsigned int *
const unsigned int SAMPLE_A = 100; // "от фонаря"
const unsigned int SAMPLE_B = 150; // "от фонаря"
const unsigned int SAMPLE_C = 120; // "от фонаря"
//крутимся в цикле, пока на выходе приемника 0
do
{
temp = PINB & (1<<PB0);
} while (!temp); //если прочитали 1 — выходим из цикла
//окажемся здесь, когда поймаем фронт
//_delay_us (SAMPLE_A); //ждем время А
delayMicroseconds(SAMPLE_A); //ждем время А "по адуриньи"
//если в точке А прочитали 0 — значит это не килок,
//выходим из функции
if (!(PINB & (1<<PB0))) {return -1;};
//_delay_us (SAMPLE_B); //ждем время от А до B
delayMicroseconds(SAMPLE_B); //ждем время B "по адуриньи"
//если в точке B прочитали 1 — значит приняли бит данных 0,
// если прочитали 0 — то приняли бит 1.
temp = (PINB & (1<<PB0)) ? 0 : 1;
return temp;
//_delay_us (SAMPLE_С); //ждем время от B до C
delayMicroseconds(SAMPLE_C); //ждем время C "по адуриньи"
//если в точке C прочитали 1 — значит сигнал не килок, выходим.
if ((PINB& (1<<PB0))) {return -1;};
}
//------------------------------------------------------------------------
//-------------конец файла/end of file---------------------