прошу помощи в доработке кода
- Войдите на сайт для отправки комментариев
Ср, 15/11/2017 - 14:21
имеиться код
#include <IRremote.h> int RECV_PIN = A0; IRrecv irrecv(RECV_PIN); decode_results results; void setup() { irrecv.enableIRIn(); Serial.begin(9600); pinMode(2, OUTPUT); //Relay 1 pinMode(3, OUTPUT); //Relay 2 pinMode(4, OUTPUT); //Relay 3 pinMode(5, OUTPUT); //Relay 4 pinMode(6, OUTPUT); //Relay 5 pinMode(7, OUTPUT); //Relay 6 pinMode(8, OUTPUT); //Relay 7 pinMode(9, OUTPUT); //Relay 8 digitalWrite(2, HIGH); digitalWrite(3, HIGH); digitalWrite(4, HIGH); digitalWrite(5, HIGH); digitalWrite(6, HIGH); digitalWrite(7, HIGH); digitalWrite(8, HIGH); digitalWrite(9, HIGH); } void loop() { if (irrecv.decode(&results)) { Serial.println(results.value, HEX); irrecv.resume(); } if (results.value == 0xFE807F) {//1 num1(); results.value = 0x00000000; } if (results.value == 0xFE40BF) {//2 num2(); results.value = 0x00000000; } if (results.value == 0xFEC03F) {//3 num3(); results.value = 0x00000000; } if (results.value == 0xFE20DF) {//4 num4(); results.value = 0x00000000; } if (results.value == 0xFEA05F) {//5 num5(); results.value = 0x00000000; } if (results.value == 0xFE609F) {//6 num6(); results.value = 0x00000000; } if (results.value == 0xFEE01F) {//7 num7(); results.value = 0x00000000; if (results.value == 0xFE10EF) {//8 num8(); results.value = 0x00000000; } } } void num1() { static int m = HIGH; m = !m; digitalWrite(2, m); } void num2() { static int m = HIGH; m = !m; digitalWrite(3, m); } void num3() { static int m = HIGH; m = !m; digitalWrite(4, m); } void num4() { static int m = HIGH; m = !m; digitalWrite(5, m); } void num5() { static int m = HIGH; m = !m; digitalWrite(6, m); } void num6() { static int m = HIGH; m = !m; digitalWrite(7, m); } void num7() { static int m = HIGH; m = !m; digitalWrite(8, m); } void num8() { static int m = HIGH; m = !m; digitalWrite(9, m); }
при посылки сигнала 1 с пульта работает реле №1 в скетче (num1)
задача: заставить скетч работать такпри получении сигнала с пульта включались только определенные реле а осталые отключались не важно в каком состоянии они были до получения сигнала
вот пои коды кнопок и какие реле надо включать:
FE48B7 (отключает все реле )
FE00FF (включает только 2, 3, 4, 7, 8)
FE807F (включает только 2, 3)
FE40BF (включает только 2, 4, 5, 6, 8)
FEC03F (включает только 2, 3, 4, 5, 6)
FE20DF (включает только 2, 3, 5, 7)
FEA05F (включает только 3, 4, 5, 6, 7)
FE609F (включает только 3, 4, 5, 6, 7, 8)
FEE01F (включает только 2, 3, 4)
FE10EF (включает только 2, 3, 4, 5, 6, 7, 8)
FE906F (включает только 2, 3, 4, 5, 6, 7)
прошу помощи кто напишет или допишит скетч как мне нужно, гарантирую маленькое вознаграждение=)
Вы ошиблись разделом. Вам сюда.
Не проверял, мне это не интересно
Сдаётся мне, что классы этому скетчу никак не помогут. Он как не работал, так и не будет из-за одной небольшой ошибки, сделанной из-за бездумного копипастинга.
sadman, согласен. Мне просто облом искать там ошибки. А без классов я уже писать не могу. Так я еще и свои напихаю.
sadman, согласен. Мне просто облом искать там ошибки. А без классов я уже писать не могу. Так я еще и свои напихаю.
Ну раз уж взялись за ОО, почему бы не использовать все его преимущества? К примеру куда приятенее ваш код сделать так:
Кстати, при создании экземпляров в Setup - от метода init вообще надо избавляться и все делать в конструкторе
задача: заставить скетч работать такпри получении сигнала с пульта включались только определенные реле а осталые отключались не важно в каком состоянии они были до получения сигнала
вот пои коды кнопок и какие реле надо включать:
FE48B7 (отключает все реле )
Попробуйте так
Это Калапуций запретил или в наставлениях по кошерному коду написано? Если "баран в зеркале" такой идиот,
что вынесши работу с аппаратной частью в конструктор, создает экземпляр в описании, то кто мешает ему яйца клавиатурой защемить?
Или что-то другое имелось ввиду? Фраза "иницировать в конструкторе объекты" сильно отдает неграмотностью в программировании, не сказать еще больше.
К слову, сказать, не видел ни одного тру-эмбедера, который приветствовал бы использование ++.
Всем привет вот что добился с дугом, типично но работает)
Шо, съели, плюсофилы?
Хоть упишитесь своими классами, а индусский код и меняемые в ходе игры правила всегда выставят вас фриками, которые на своем птичьем языке качество своего помёта обсуждают ))
Всем привет вот что добился с дугом, типично но работает)
Не могу смотреть, крофь из глаз. Нада напица.
Шо, съели, плюсофилы?
не совсем понимаю сути твоего восторга - ты расписал в ифах, что должно происходить при получении кода с пульта, и шо?
при чём плюсофилы и классы?
напиши тоже самое без ифов и класса IRremote, если желаешь доказать свою независимость от плюсов и классов.
Иди проспись, динозавор - ты уже всех авторов постов перепутал.
Иди проспись, динозавор - ты уже всех авторов постов перепутал.
как по мне - все тараканы на одно лицо.
Вот так тоже работать должно
Дальше будем оптимизировать?
Да, можно сделать красиво и в array of struct завернуть codes[] и pin_states[].
Дальше будем оптимизировать?
На чистый С переходить? Без богомерзкого класса IRrecv?
На чистый С переходить? Без богомерзкого класса IRrecv?
сразу в пропасть.
А я рад человека, написал сам и главное что работает так как ему надо а остальное придет!!!
А я рад человека, написал сам и главное что работает так как ему надо а остальное придет!!!
Если, человек не имеет представление о циклах и массивах - ничего у него не придет. Меня поражает другое - подобные задачи сейчас являются обязательными на ГИА общеобразовательной школы. Т.е. предполагается, что каждый 9-ти классник должен мочь элементарную булеву алгебру и алгоритмы с массивами и циклами писать в одном из 3-х языков в зависимости от школы (Паскаль, Си, Питон). Про задачи на ЕГЭ я уже и молчу.
Откуда появляются такие коды, как у топикстартера?
Откуда появляются такие коды, как у топикстартера?
Ис мосху, мысль , она вариативна !
Т.е. предполагается, что каждый 9-ти классник должен мочь...
не должен мочь - у нас свободная деморкатическая страна, в отличии от, прости Аллах, Омерки и Гейропейского Союза геев.
каждый волен быть дыбилом. О_О
Да, можно сделать красиво и в array of struct завернуть codes[] и pin_states[].
Не.... Красивее pin_states засунуть старшим байтом в неиспользованый байт codes...
Но главного добиться не удалось - у программы остались какие-то мизерные признаки читаемости :(
Набросились, гнобители. Этот то хоть сам что то пытаеца, надо просто подсказать и направить. Хуже, когда думать и делать не хотят. Эй, форум из ларца, сделайте мне код. И плюшками набейте.
Набросились, гнобители. Этот то хоть сам что то пытаеца, надо просто подсказать и направить.
Не, ну так то оно - так, но задавать вопросы по программированию не владея алгоритмизацией даже на уровне незаконченной средней школы это тоже ни разу не радует.
Причем, он даже не попытался распросить по предаставленным ему вариантам, что тоже как бы намекает..
Но главного добиться не удалось - у программы остались какие-то мизерные признаки читаемости :(
Так есть же инструментарий!!!
Так есть же инструментарий!!!
Не, ну это Вы с козырей зашли.... Думаю, достаточно будет перевести все двочино/шеснадцетиричные действия в моем скетче в десятичные результаты и отладка программы станет требовать почти бесконечного времени, что уже не плохо и без брайнфака.
Хотя если без шуток, очень хороший пример, на мой взгляд, когда в оптимизации надо остановиться заренее.
Я бы даже в своем изначальном скетче использовал бы не работу с регистрами, а wire и на этом бы остановился.