Відповісти

Введіть повідомлення і натисніть Надіслати
Параметри

Назад

Огляд теми (нові повідомленні вгорі)

renoshnik
2021-05-15 13:18:09
ssipk пише:

Сегодня заберу свой пк с visualsrudio. Работаю неделю на подменном попробуют в среде C#/

Это контрольный выстрел в мой раненый мозг...

ssipk
2021-05-15 09:16:28

Сегодня заберу свой пк с visualsrudio. Работаю неделю на подменном попробуют в среде C#/

Kaka
2021-05-15 09:05:06
ssipk пише:

https://doc.arduino.ua/ru/prog/Array
ничего нового не узнал. Все как на шарпе

Ну, если так, то после

ssipk пише:

int arr [7]; //определяем массив на 8 элементов
arr[i - 12] = digitalRead(i); //здесь в  делаю сдвиг в массиве  и благодаря этому чтение начинается с 12 пина

Тебе трудно помочь.

Кстати, на шарпе это тоже никак работать не может.

ssipk
2021-05-14 22:59:05

https://doc.arduino.ua/ru/prog/Array
ничего нового не узнал. Все как на шарпе

ssipk
2021-05-14 22:57:38

Может  я не правильно выразился. i перебирает коллекции массива и с помощью цикла for сравнивает их с нынешним состоянием портов

renoshnik
2021-05-14 21:43:44

pinMode(i, INPUT);  //создаю переменную i для хранения в ней значения при чтении данных из цикла

тут мой мозг поломался ...  mad

renoshnik
2021-05-14 21:42:16

int arr [7]; //определяем массив на 8 элементов
arr[i - 12] = digitalRead(i); //здесь в  делаю сдвиг в массиве  и благодаря этому чтение начинается с 12 пина

https://doc.arduino.ua/ru/prog/DigitalRead

Читаем внимательно до просветления !!!

renoshnik
2021-05-14 21:34:36

int arr [7]; //определяем массив на 8 элементов

https://doc.arduino.ua/ru/prog/Array

Читаем внимательно до просветления !!!

ssipk
2021-05-14 21:15:24

Может естьсреда разработки как для C# типа visual studio? Для запуска программы в дебаге и ловли ошибок?

ssipk
2021-05-14 20:54:50

Прошу прощения. Код правильно отредактировал . Вот:

#include "IRremote.h"  // Подключаю библиотеку для работы с ик пультом
IRrecv irrecv(8);      // назначаю вывод ик приёмника на пин 8 ардуино
decode_results results;  //сохраняю результат с ИК приёмника в переменную results
int led1=0;                    // в этой переменной хранится состояние  вкл/выкл сигнализации

int arr [7]; //определяем массив на 8 элементов

void setup() {             //определяю порты ввода
   pinMode( A0, INPUT);
 pinMode( A1, INPUT);
 pinMode( A2, INPUT);
 pinMode( A3, INPUT);
 pinMode( A4, INPUT);
 pinMode( A5, INPUT);
 pinMode( 13, INPUT);
 pinMode( 12, INPUT);
 
pinMode( 3, OUTPUT);     //Пин сирены в состояние вывода 
pinMode( 8, INPUT);       //Пин ИК датчика в режим входа 
  Serial.begin(9600);     //Выставляю скорость Serial порта
  irrecv.enableIRIn();    //Включаю ИК порт
  
  for (int i = 12; i <= 19; i++)  // Создаю цикл который один раз при включении опрашивает порты от 19 до  12
  {
    pinMode(i, INPUT);  //создаю переменную i для хранения в ней значения при чтении данных из цикла 
    arr[i - 12] = digitalRead(i); //здесь в  делаю сдвиг в массиве  и благодаря этому чтение начинается с 12 пина
  }
}

void loop() {
  if ( irrecv.decode( &results )) { 
    Serial.println(results.value, HEX);   //вывожу данные в 16-ричной системе исчисления
    
if (results.value==0xFF30CF&&led1==0){    //если данные совпадают и сигнализация выключена - включить её. При включении  
   for (int i = 12; i <= 19; i++)                      // запускается цикл который постоянно опращивает эти порты и если он видит отличие
  {                                                              // срабатывает сирена
    if (arr[i - 12] != digitalRead(i))
    {
      digitalWrite( 3, HIGH );led1=1;results.value=0; //включаем сирену и вызываем спецназ
   
    }
  }
  }
if (results.value==0xFF30CF&&led1==1){
      digitalWrite( 3,  LOW  );led1=0;results.value=0; //включаем сирену и вызываем спецназ
    
}  

 irrecv.resume();   // ожидаем следующий сигнал с ИК приёмника
  }
  
}
renoshnik
2021-05-14 19:53:49

int arr [7]; //определяем массив на 8 элементов
for (int i = 0; i <= 8; i++)
arr[i - 8] = digitalRead(i);

объясните это !?!

ssipk
2021-05-14 19:18:45

Прошу прощения. Не было времени для описания.
Вот время снова появилось и решил продолжить проект.
Так и не получается  добиться результата.
Подскажите где ошибка?

#include "IRremote.h"  // Подключаю библиотеку для работы с ик пультом
IRrecv irrecv(12);
decode_results results;
int led1=0;

int arr [7]; //определяем массив на 8 элементов

void setup() {
   pinMode( 0, INPUT);
 pinMode( 1, INPUT);
 pinMode( 2, INPUT);
 pinMode( 3, INPUT);
 pinMode( 4, INPUT);
 pinMode( 5, INPUT);
 pinMode( 6, INPUT);
 pinMode( 7, INPUT);
 
pinMode( 13, OUTPUT);
pinMode( 12, INPUT);
  Serial.begin(9600);
  irrecv.enableIRIn();
  
  for (int i = 0; i <= 8; i++)
  {
    pinMode(i, INPUT);
    arr[i - 8] = digitalRead(i);
  }
}

void loop() {
  if ( irrecv.decode( &results )) { 
    Serial.println(results.value, HEX);
    
if (results.value==0xFF30CF&&led1==0){
   for (int i = 0; i <= 8; i++)
  {
    if (arr[i - 8] != digitalRead(i))
    {
      digitalWrite( 13, HIGH );led1=1;results.value=0; //включаем сирену и вызываем спецназ
   
    }
  }
  }
if (results.value==0xFF30CF&&led1==1){
      digitalWrite( 13,  LOW  );led1=0;results.value=0; //включаем сирену и вызываем спецназ
    
}  

 irrecv.resume();   
  }
  
}
гIсть
2021-01-02 19:29:00

А нет, вот указано

ssipk пише:

После того как он опросил порты и присвоил их значение(высокий или низкий уровень) переменным ,он(микроконтроллер) должен и дальше следить за состоянием портов и если какой либо из них изменит своё  состояние(с высокого на низкий уровень или на оборот), то на исходящем пине d4 - d9(например) будет высокий уровень сигнала. Вторая кнопка пульта отключает ардуино (т.е. при её нажатии как по типу сигнализации первая кнопка включает слежение за портами , а вторая отключает

т.е. все-таки ТС пофиг какой порт сработал.

гIсть
2021-01-02 19:16:19
Kaka пише:

А потом что? Если ещё один элемент не равен? Ещё раз включаем и вызываем?

А потом ничего. Я дал пример как можно. ТС же сказал

ssipk пише:

Код я потом  оформлю сам.

Вот пусть и оформляет как ему нужно. Мой ХШ на каникулах. Я не знаю нужно ли ТС реагировать на каждый сигнал по отдельности или пофиг какой сработал, главное чтобы заорало.

Kaka
2021-01-02 19:03:33
гIсть пише:

  for (int i = 14; i <= 19; i++)
  {
    if (arr[i - 14] != digitalRead(i))
    {
      //включаем сирену и вызываем спецназ
    }
  }

А потом что? Если ещё один элемент не равен? Ещё раз включаем и вызываем?

Підвал форуму