Ви не увійшли.
Сегодня заберу свой пк с visualsrudio. Работаю неделю на подменном попробуют в среде C#/
Это контрольный выстрел в мой раненый мозг...
Сегодня заберу свой пк с visualsrudio. Работаю неделю на подменном попробуют в среде C#/
https://doc.arduino.ua/ru/prog/Array
ничего нового не узнал. Все как на шарпе
Ну, если так, то после
int arr [7]; //определяем массив на 8 элементов
arr[i - 12] = digitalRead(i); //здесь в делаю сдвиг в массиве и благодаря этому чтение начинается с 12 пина
Тебе трудно помочь.
Кстати, на шарпе это тоже никак работать не может.
https://doc.arduino.ua/ru/prog/Array
ничего нового не узнал. Все как на шарпе
Может я не правильно выразился. i перебирает коллекции массива и с помощью цикла for сравнивает их с нынешним состоянием портов
pinMode(i, INPUT); //создаю переменную i для хранения в ней значения при чтении данных из цикла
тут мой мозг поломался ...
int arr [7]; //определяем массив на 8 элементов
arr[i - 12] = digitalRead(i); //здесь в делаю сдвиг в массиве и благодаря этому чтение начинается с 12 пина
https://doc.arduino.ua/ru/prog/DigitalRead
Читаем внимательно до просветления !!!
int arr [7]; //определяем массив на 8 элементов
https://doc.arduino.ua/ru/prog/Array
Читаем внимательно до просветления !!!
Может естьсреда разработки как для C# типа visual studio? Для запуска программы в дебаге и ловли ошибок?
Прошу прощения. Код правильно отредактировал . Вот:
#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(); // ожидаем следующий сигнал с ИК приёмника
}
}
int arr [7]; //определяем массив на 8 элементов
for (int i = 0; i <= 8; i++)
arr[i - 8] = digitalRead(i);
объясните это !?!
Прошу прощения. Не было времени для описания.
Вот время снова появилось и решил продолжить проект.
Так и не получается добиться результата.
Подскажите где ошибка?
#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();
}
}
А нет, вот указано
После того как он опросил порты и присвоил их значение(высокий или низкий уровень) переменным ,он(микроконтроллер) должен и дальше следить за состоянием портов и если какой либо из них изменит своё состояние(с высокого на низкий уровень или на оборот), то на исходящем пине d4 - d9(например) будет высокий уровень сигнала. Вторая кнопка пульта отключает ардуино (т.е. при её нажатии как по типу сигнализации первая кнопка включает слежение за портами , а вторая отключает
т.е. все-таки ТС пофиг какой порт сработал.
А потом что? Если ещё один элемент не равен? Ещё раз включаем и вызываем?
А потом ничего. Я дал пример как можно. ТС же сказал
Код я потом оформлю сам.
Вот пусть и оформляет как ему нужно. Мой ХШ на каникулах. Я не знаю нужно ли ТС реагировать на каждый сигнал по отдельности или пофиг какой сработал, главное чтобы заорало.
for (int i = 14; i <= 19; i++) { if (arr[i - 14] != digitalRead(i)) { //включаем сирену и вызываем спецназ } }
А потом что? Если ещё один элемент не равен? Ещё раз включаем и вызываем?