#1 2020-10-04 21:30:07

Иракли
Учасник
Зареєстрований: 2020-10-04
Повідомлень: 11

Нужно помощь доделать скетч

Ребята я не знаю пост по теме или нет по этому приношу извинения. Где я могу найти ребят которые шарят в скетче возникло несколько проблем и не знаю как ее решить может подскажете место для обсуждений. Спасибо
Если все таки можно здесь обсуждать то я опишу проблему.
1)у меня 8 канальный реле напряжения при подключении питания к ардуйно автоматически включается реле и это проблематично так как отключить то ее можно с помощью ИК пульта но если пропадет свет и буду не дома то при восстановлении электропитании опять все каналы включатся а это блин опасно 220водьт все таки + не хочу чтоб включалась нагрузка.
И вторая проблема я написал сует для ИК пульта и для включения и отключения реле напряжения и я не знаю как написать код для одновременно включения всех 8 каналов и их отключения по одному я сделала а вот вместе не знаю. Спасибо большое.


#include "IRremote.h"
IRrecv irrecv(A5);
decode_results results;
int led1=0;
int led2=0;
int led3=0;
int led4=0;
int led5=0;
int led6=0;
int led7=0;
void setup() {
  pinMode(2,OUTPUT);
  pinMode(3,OUTPUT);
  pinMode(4,OUTPUT);
  pinMode(5,OUTPUT);
  pinMode(6,OUTPUT);
  pinMode(7,OUTPUT);
  pinMode(8,OUTPUT);
  pinMode(9,OUTPUT);
 
  Serial.begin(9600);
  irrecv.enableIRIn();
}
void loop() {
  if ( irrecv.decode( &results )) {
    Serial.println(results.value, HEX);
   
if (results.value==0xFF30CF&&led1==0){
  digitalWrite( 2, HIGH );led1=1;results.value=0;
}
if (results.value==0xFF30CF&&led1==1){
  digitalWrite( 2, LOW );led1=0;results.value=0;
}
 
if (results.value==0xFF18E7&&led2==0){
  digitalWrite( 3, HIGH );led2=1;results.value=0;
}
if (results.value==0xFF18E7&&led2==1){
  digitalWrite( 3, LOW );led2=0;results.value=0;
}   
if (results.value==0xFF7A85&&led3==0){
  digitalWrite( 4, HIGH );led3=1;results.value=0;
}
if (results.value==0xFF7A85&&led3==1){
  digitalWrite( 4, LOW );led3=0;results.value=0;
}
   
if (results.value==0xFF10EF&&led4==0){
  digitalWrite( 5, HIGH );led4=1;results.value=0;
}
if (results.value==0xFF10EF&&led4==1){
  digitalWrite( 5, LOW );led4=0;results.value=0;
}   
if (results.value==0xFF38C7&&led5==0){
  digitalWrite( 6, HIGH );led5=1;results.value=0;
}
if (results.value==0xFF38C7&&led5==1){
  digitalWrite( 6, LOW );led5=0;results.value=0;
}
   
if (results.value==0xFF5AA5&&led6==0){
  digitalWrite( 7, HIGH );led6=1;results.value=0;
}
if (results.value==0xFF5AA5&&led6==1){
  digitalWrite( 7, LOW );led6=0;results.value=0;
}
 
if (results.value==0xFF42BD&&led7==0){
  digitalWrite( 8, HIGH );led7=1;results.value=0;
}
if (results.value==0xFF42BD&&led7==1){
  digitalWrite( 8, LOW );led7=0;results.value=0;
}

if (results.value==0xFF4AB5&&led7==0){
  digitalWrite( 9, HIGH );led7=1;results.value=0;
}
if (results.value==0xFF4AB5&&led7==1){
  digitalWrite( 9, LOW );led7=0;results.value=0;
}
irrecv.resume();   
  }
 
}

Неактивний

#2 2020-10-05 08:28:50

г0сть
Гість

Re: Нужно помощь доделать скетч

1)в Setup пропишите выключение всех 8 реле.
2)все 8 должны включаться с одной кнопки?

#3 2020-10-05 10:21:24

Иракли
Учасник
Зареєстрований: 2020-10-04
Повідомлень: 11

Re: Нужно помощь доделать скетч

г0сть пише:

1)в Setup пропишите выключение всех 8 реле.
2)все 8 должны включаться с одной кнопки?

Вот скетч я приложил там же указано int led1=0 чтоб он отключенным был или я не правильно сделал?
2)все включатся и все выключается с одной кнопки. Спасибо.

Неактивний

#4 2020-10-05 11:34:47

г0сть
Гість

Re: Нужно помощь доделать скетч

1.В setup переl Serial.begin вставьте
for(int i=2; i < 10; i++){
digitalWrite( i, LOW );} // или HIGH в зависимости от того каким уровнем выключаются реле
2. Аналогично в коде добавьте что-то типа
if (results.value==XXXXXXXXXXX) // xxxxxxxxxxxxxxxxx - код кнопки
{for(int i=2; i < 10; i++){
digitalWrite( i, HIGH );}

#5 2020-10-05 12:34:43

Иракли
Учасник
Зареєстрований: 2020-10-04
Повідомлень: 11

Re: Нужно помощь доделать скетч

г0сть пише:

1.В setup переl Serial.begin вставьте
for(int i=2; i < 10; i++){
digitalWrite( i, LOW );} // или HIGH в зависимости от того каким уровнем выключаются реле
2. Аналогично в коде добавьте что-то типа
if (results.value==XXXXXXXXXXX) // xxxxxxxxxxxxxxxxx - код кнопки
{for(int i=2; i < 10; i++){
digitalWrite( i, HIGH );}

Спасибо большое сейчас попробую

Неактивний

#6 2020-10-05 12:47:09

Иракли
Учасник
Зареєстрований: 2020-10-04
Повідомлень: 11

Re: Нужно помощь доделать скетч

г0сть пише:

1.В setup переl Serial.begin вставьте
for(int i=2; i < 10; i++){
digitalWrite( i, LOW );} // или HIGH в зависимости от того каким уровнем выключаются реле
2. Аналогично в коде добавьте что-то типа
if (results.value==XXXXXXXXXXX) // xxxxxxxxxxxxxxxxx - код кнопки
{for(int i=2; i < 10; i++){
digitalWrite( i, HIGH );}


#include "IRremote.h"
IRrecv irrecv(A5);
decode_results results;
int led1=0;
int led2=0;
int led3=0;
int led4=0;
int led5=0;
int led6=0;
int led7=0;
void setup() {
  pinMode(2,OUTPUT);
  pinMode(3,OUTPUT);
  pinMode(4,OUTPUT);
  pinMode(5,OUTPUT);
  pinMode(6,OUTPUT);
  pinMode(7,OUTPUT);
  pinMode(8,OUTPUT);
  pinMode(9,OUTPUT);
 
  Serial.begin(9600);
  irrecv.enableIRIn();
}
void loop() {
  if ( irrecv.decode( &results )) {
    Serial.println(results.value, HEX);
   
if (results.value==0xFF30CF&&led1==0){
  digitalWrite( 2, HIGH );led1=1;results.value=0;
}
if (results.value==0xFF30CF&&led1==1){
  digitalWrite( 2, LOW );led1=0;results.value=0;
}
 
if (results.value==0xFF18E7&&led2==0){
  digitalWrite( 3, HIGH );led2=1;results.value=0;
}
if (results.value==0xFF18E7&&led2==1){
  digitalWrite( 3, LOW );led2=0;results.value=0;
}   
if (results.value==0xFF7A85&&led3==0){
  digitalWrite( 4, HIGH );led3=1;results.value=0;
}
if (results.value==0xFF7A85&&led3==1){
  digitalWrite( 4, LOW );led3=0;results.value=0;
}
   
if (results.value==0xFF10EF&&led4==0){
  digitalWrite( 5, HIGH );led4=1;results.value=0;
}
if (results.value==0xFF10EF&&led4==1){
  digitalWrite( 5, LOW );led4=0;results.value=0;
}   
if (results.value==0xFF38C7&&led5==0){
  digitalWrite( 6, HIGH );led5=1;results.value=0;
}
if (results.value==0xFF38C7&&led5==1){
  digitalWrite( 6, LOW );led5=0;results.value=0;
}
   
if (results.value==0xFF5AA5&&led6==0){
  digitalWrite( 7, HIGH );led6=1;results.value=0;
}
if (results.value==0xFF5AA5&&led6==1){
  digitalWrite( 7, LOW );led6=0;results.value=0;
}
 
if (results.value==0xFF42BD&&led7==0){
  digitalWrite( 8, HIGH );led7=1;results.value=0;
}
if (results.value==0xFF42BD&&led7==1){
  digitalWrite( 8, LOW );led7=0;results.value=0;
}

if (results.value==0xFF4AB5&&led7==0){
  digitalWrite( 9, HIGH );led7=1;results.value=0;
}
if (results.value==0xFF4AB5&&led7==1){
  digitalWrite( 9, LOW );led7=0;results.value=0;
}

if (results.value==0xFF52AD) // xxxxxxxxxxxxxxxxx - код кнопки
{for(int i=2; i < 10; i++){
digitalWrite( i, HIGH );}
irrecv.resume();
}   
  }
 
}

после того как я дописал код самом конце if (results.value==0xFF52AD) // xxxxxxxxxxxxxxxxx - код кнопки
{for(int i=2; i < 10; i++){
digitalWrite( i, HIGH );}
irrecv.resume();
}   
  }

в serial porte показывается как будто кнопка зажата на пульте хотя датчик не принимает в эот время никаких сигналов

Неактивний

#7 2020-10-05 12:51:09

Иракли
Учасник
Зареєстрований: 2020-10-04
Повідомлень: 11

Re: Нужно помощь доделать скетч

for(int i=2; i < 10; i++){
digitalWrite( i, HIGH );}

это сработала какк надо спасибо вам огромное могли бы выв если у вас есть время расписать по куском код чтоб я понял что ту просходит. типа почему i переменная равно 2 и если и меньше 10 типа 10 каналов?

и есть может какие нибудь хорошие учебники для arduino? хотелось бы научится самому писать коды

Остання редакція Иракли (2020-10-05 12:51:46)

Неактивний

#8 2020-10-05 13:04:26

г0сть
Гість

Re: Нужно помощь доделать скетч

Иракли пише:

for(int i=2; i < 10; i++){
digitalWrite( i, HIGH );}

это сработала какк надо спасибо вам огромное могли бы выв если у вас есть время расписать по куском код чтоб я понял что ту просходит. типа почему i переменная равно 2 и если и меньше 10 типа 10 каналов?

и есть может какие нибудь хорошие учебники для arduino? хотелось бы научится самому писать коды

По поводу значений переменной i - посмотрите на номера своих пинов к которым подключены реле, почитайте это https://doc.arduino.ua/ru/prog/For и, я думаю, сами все поймете. Если нет - задавайте вопросы. Будем подсказывать smile

#9 2020-10-05 19:05:40

Иракли
Учасник
Зареєстрований: 2020-10-04
Повідомлень: 11

Re: Нужно помощь доделать скетч

г0сть пише:
Иракли пише:

for(int i=2; i < 10; i++){
digitalWrite( i, HIGH );}

это сработала какк надо спасибо вам огромное могли бы выв если у вас есть время расписать по куском код чтоб я понял что ту просходит. типа почему i переменная равно 2 и если и меньше 10 типа 10 каналов?

и есть может какие нибудь хорошие учебники для arduino? хотелось бы научится самому писать коды

По поводу значений переменной i - посмотрите на номера своих пинов к которым подключены реле, почитайте это https://doc.arduino.ua/ru/prog/For и, я думаю, сами все поймете. Если нет - задавайте вопросы. Будем подсказывать smile

Вроде бы все получилось #include "IRremote.h"
IRrecv irrecv(A5);
decode_results results;
int led1=0;
int led2=0;
int led3=0;
int led4=0;
int led5=0;
int led6=0;
int led7=0;
void setup() {
  pinMode(2,OUTPUT);
  pinMode(3,OUTPUT);
  pinMode(4,OUTPUT);
  pinMode(5,OUTPUT);
  pinMode(6,OUTPUT);
  pinMode(7,OUTPUT);
  pinMode(8,OUTPUT);
  pinMode(9,OUTPUT);

for(int i=2; i < 10; i++){
digitalWrite( i, HIGH );} // или low в зависимости от того каким уровнем выключаются реле
 
  Serial.begin(9600);
  irrecv.enableIRIn();
}
void loop() {
  if ( irrecv.decode( &results )) {
    Serial.println(results.value, HEX);
   
if (results.value==0xFF30CF&&led1==0){
  digitalWrite( 2, HIGH );led1=1;results.value=0;
}
if (results.value==0xFF30CF&&led1==1){
  digitalWrite( 2, LOW );led1=0;results.value=0;
}
 
if (results.value==0xFF18E7&&led2==0){
  digitalWrite( 3, HIGH );led2=1;results.value=0;
}
if (results.value==0xFF18E7&&led2==1){
  digitalWrite( 3, LOW );led2=0;results.value=0;
}   
if (results.value==0xFF7A85&&led3==0){
  digitalWrite( 4, HIGH );led3=1;results.value=0;
}
if (results.value==0xFF7A85&&led3==1){
  digitalWrite( 4, LOW );led3=0;results.value=0;
}
   
if (results.value==0xFF10EF&&led4==0){
  digitalWrite( 5, HIGH );led4=1;results.value=0;
}
if (results.value==0xFF10EF&&led4==1){
  digitalWrite( 5, LOW );led4=0;results.value=0;
}   
if (results.value==0xFF38C7&&led5==0){
  digitalWrite( 6, HIGH );led5=1;results.value=0;
}
if (results.value==0xFF38C7&&led5==1){
  digitalWrite( 6, LOW );led5=0;results.value=0;
}
   
if (results.value==0xFF5AA5&&led6==0){
  digitalWrite( 7, HIGH );led6=1;results.value=0;
}
if (results.value==0xFF5AA5&&led6==1){
  digitalWrite( 7, LOW );led6=0;results.value=0;
}
 
if (results.value==0xFF42BD&&led7==0){
  digitalWrite( 8, HIGH );led7=1;results.value=0;
}
if (results.value==0xFF42BD&&led7==1){
  digitalWrite( 8, LOW );led7=0;results.value=0;
}

if (results.value==0xFF4AB5&&led7==0){
  digitalWrite( 9, HIGH );led7=1;results.value=0;
}
if (results.value==0xFF4AB5&&led7==1){
  digitalWrite( 9, LOW );led7=0;results.value=0;
}

if (results.value==0xFF52AD) // xxxxxxxxxxxxxxxxx - код кнопки
{for(int i=2; i < 10; i++){
digitalWrite( i, LOW );}}

if (results.value==0xFF6897) // xxxxxxxxxxxxxxxxx - код кнопки
{for(int i=2; i < 10; i++){
digitalWrite( i, HIGH );}}
irrecv.resume();   
  }
 
}

Неактивний

#10 2020-10-05 19:13:08

Иракли
Учасник
Зареєстрований: 2020-10-04
Повідомлень: 11

Re: Нужно помощь доделать скетч

г0сть пише:
Иракли пише:

for(int i=2; i < 10; i++){
digitalWrite( i, HIGH );}

это сработала какк надо спасибо вам огромное могли бы выв если у вас есть время расписать по куском код чтоб я понял что ту просходит. типа почему i переменная равно 2 и если и меньше 10 типа 10 каналов?

и есть может какие нибудь хорошие учебники для arduino? хотелось бы научится самому писать коды

По поводу значений переменной i - посмотрите на номера своих пинов к которым подключены реле, почитайте это https://doc.arduino.ua/ru/prog/For и, я думаю, сами все поймете. Если нет - задавайте вопросы. Будем подсказывать smile

Расскажите еще такое я раньше ползовалися всегда arduino nano сейчас заказал шилд avr и arduino uno и пару atmega328 скажите это рациональне дешевле удобнее лучше? может какие то хитрости посоветуете по конечной обвязке сборке и так далее. спасибо большое

Неактивний

#11 2020-10-05 20:55:37

Иракли
Учасник
Зареєстрований: 2020-10-04
Повідомлень: 11

Re: Нужно помощь доделать скетч

г0сть пише:
Иракли пише:

for(int i=2; i < 10; i++){
digitalWrite( i, HIGH );}

это сработала какк надо спасибо вам огромное могли бы выв если у вас есть время расписать по куском код чтоб я понял что ту просходит. типа почему i переменная равно 2 и если и меньше 10 типа 10 каналов?

и есть может какие нибудь хорошие учебники для arduino? хотелось бы научится самому писать коды

По поводу значений переменной i - посмотрите на номера своих пинов к которым подключены реле, почитайте это https://doc.arduino.ua/ru/prog/For и, я думаю, сами все поймете. Если нет - задавайте вопросы. Будем подсказывать smile

Ещё такой вопрос я уже сжёг второй ИК приемник Реле на 8 каналов схема такая как на фото может подскажете что то ещё может нужно добавить в схему а то в этом не шарюhttps://xn--18-6kcdusowgbt1a4b.xn--p1ai/wp-content/uploads/2016/07/podkluchenie-lampy-k-arduino.jpg

Остання редакція Иракли (2020-10-05 21:00:12)

Неактивний

Швидке повідомлення

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

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