amtega328 стоит дороже STM32 (по средним показателям), но STM32 куда круче по характеристикам. Просто количество готового кода, и простота ардуино иде держит всех типа меня, на ардуине.
softmart: та собственно SIM800C тоже дешевый модуль без гарантии (я у местных кроме разсыпухи ничего не беру - денег на еду не останется =).
Единственный ИМХО его плюс, это аудио (dtmf подцепить), а так... еще больше лишних выводов.
да и вопрос ну совсем не про это, у sim800c принцип работы с сетями тоже tcp, сильно захочется DTMF`a - может и куплю sim800c.
Мне бы с TCP с начало разобраться.
Neoway M590 это модем для промышленного оборудования, он и есть "нормальный модуль". И что не так с алиекспресом? Брать в нашего реселера который заказал на этом же алиекспрес?
для таких "идей" есть кнопка комментировать, а не "ответ на вопрос".
Александр Гусев: почему то " kod = mySwitch.getReceivedValue(); " не работает (последний цвет остается и все, потом только заново запускай).
Сделал:
void getkod() {
if (mySwitch.getReceivedValue() == 5592323) kod = kod1;
else if (mySwitch.getReceivedValue() == 5592332) kod = kod2;
else if (mySwitch.getReceivedValue() == 5592335) kod = kod3;
else if (mySwitch.getReceivedValue() == 5592368) kod = kod4;
else if (mySwitch.getReceivedValue() == 5592371) kod = kod5;
else if (mySwitch.getReceivedValue() == 5592380) kod = kod6;
else if (mySwitch.getReceivedValue() == 5592383) kod = kod7;
else if (mySwitch.getReceivedValue() == 5592512) kod = kod8;
else if (mySwitch.getReceivedValue() == 5592515) kod = kod9;
else if (mySwitch.getReceivedValue() == 5592524) kod = kod10;
else if (mySwitch.getReceivedValue() == 5592527) kod = kod11;
else if (mySwitch.getReceivedValue() == 5592560) kod = kod12;
}
void loop(){
getkod();
unsigned long old_code = kod;
if (kod == kod5)
for (i = 1; i < 40; i++) {
...
getkod();
if(kod > 1 && kod != old_code) break;//принуд. выход
delay(40);
}
И блин, знакомый прошареный в программировании питался почти так же сделать, только break; ми не там располагали (он у нас был в отдельном void и оттуда не работал).
Maikesteps:
в таком виде не работает:
kod = mySwitch.getReceivedValue();
А в таком работает:
if (mySwitch.getReceivedValue() == 5592323) {
kod = kod1;
}
else if (mySwitch.getReceivedValue() == 5592332) {
kod = kod2;
}
else if (mySwitch.getReceivedValue() == 5592335) {
kod = kod3;
}
else if (mySwitch.getReceivedValue() == 5592368) {
kod = kod4;
}
else if (mySwitch.getReceivedValue() == 5592371) {
kod = kod5;
}
else if (mySwitch.getReceivedValue() == 5592380) {
kod = kod6;
}
else if (mySwitch.getReceivedValue() == 5592383) {
kod = kod7;
}
else if (mySwitch.getReceivedValue() == 5592512) {
kod = kod8;
}
else if (mySwitch.getReceivedValue() == 5592515) {
kod = kod9;
}
else if (mySwitch.getReceivedValue() == 5592524) {
kod = kod10;
}
else if (mySwitch.getReceivedValue() == 5592527) {
kod = kod11;
}
else if (mySwitch.getReceivedValue() == 5592560) {
kod = kod12;
}
не пойму....
Но ладно, у меня мега, лишний код влезет - надо от задержки при переключении избавлятся.
ну по факту условие само по себе проверяется каждый цикл, а цикл где то секунд 5-7, и библиотека написана так, что приемник подключен к прериванию, и когда там есть код пульта, библиотека по mySwitch.getReceivedValue() видает последнее значение кнопки. Или не видает вопще ничего. У меня в самом начале void loop() в переменную kod записивается этот самый mySwitch.getReceivedValue(). Получается что после каждого "хамелеона" проверяется соответствует ли то что записано в kod, тому режыму который запущен.
А то что цикл идет 5-7 секунд достаточно неудобно. Бо не поймеш - это еще цикл не кончился, или это пульт глючит.
Сейчас у меня новая проблема - код который в вопросе перестал работать должный образом (цикл проходит только один раз, и останавливается на последнем цвете - вчера вроде работал xD). Но у меня есть самая первая рабочая версия - но она менее удобна в коде (ну и 5-7 секунд паузи никуда не пропадают конечно).
Написано
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.