Вот это код у меня работает. Реле щелкают в зависимости от строки rele.
int ledPins[] = {
2, 3, 4, 5, 6, 7, 8, 9
}; // an array of pin numbers to which LEDs are attached
int pinCount = 8; // the number of pins (i.e. the length of the array)
String rele = "{0,0,0,1,0,1,0,1}"; // пришел код
void setup()
{
for (int thisPin = 0; thisPin < pinCount; thisPin++) {
pinMode(ledPins[thisPin], OUTPUT);
}
}
void loop() {
// loop from the lowest pin to the highest:
int nr=0;
for (int i = 0; rele.length()-1; i++)
{
if (rele.charAt(i)=='0') {digitalWrite(ledPins[nr], LOW); nr++;};
if (rele.charAt(i)=='1') {digitalWrite(ledPins[nr], HIGH); nr++;};
}
}
Именно эту строку или вы скобки и запятые сами дописали?
Ник182, а надо чтобы он строку со скобками и запятыми отправлял - я могу так сделать или без скобок и запятых отправлял ?
Да всё равно. Сейчас он реагирует только на 0 и 1 в строке. Строку надо собрать в цикле приёма ответа от сервера.
Спасибо за код, только у меня все реле горят, пытался менять String rele как на все нули так и на все единицы, а они все равно не работают хз, что делать?
именно полсекунды, что бы набилось в буфер нулей и единиц пару сотен
Это модифицированный кусочек из поста #34. А вообще не набъется. Это ответ на запрос. Одна строка. По хорошему надо ждать первого символа с таймаутом на интернет транзакцию.
собирает количество символов '0' и '1' равное количеству подключенных реле/светодиодов.
если пришло, что-то отличное от '0' и '1' или до того как принято нужное количество символов, то начинаем с начала собирать нужный массив.
DigiUSB. заменить на свой client.
надеюсь, не втулишь этот код среди делеев, иначе не гарантирую, что всё не станет колом и не будешь терять инфу.
что бы не путаться, если принял конец прошлого массива и начало текущего - отправляй комбинации нулей и единиц в виде x0001100, где "x" - любой отличный от 0 или 1 символ, приём которого приведёт к обнулению счётчика принятых символов, на случай, если прошлый раз что-то пошло не так.
#include <DigiUSB.h>
byte pinCount = 7; // количество подключенных светодиодов
byte ledPins[] = { 0, 1,10,11,12,13,15}; // массив пинов светодиодов
boolean rele[] = { 0, 0, 0, 0, 0, 0, 0}; // массив логических состояний пинов светодиодов
void setup() {
DigiUSB.begin(); // представь, DigiUSB - что это твой инет-клиент
for (int thisPin = 0; thisPin < pinCount; thisPin++) {
pinMode(ledPins[thisPin], OUTPUT);
// digitalWrite(ledPins[thisPin], 1); // если светодиоды загораются при первом включении, то расскомментировать
}
}
void loop() {
if (DigiUSB.available()) { // в приёмном буфере что-то есть
char RX_s = DigiUSB.read(); // запись принятого символа в переменную
static byte n = 0; ++n; // счётчик принятых символов
if (RX_s == '0') {rele[n - 1] = 0;} // запись 0 в массив rele[]
if (RX_s == '1') {rele[n - 1] = 1;} // запись 1 в массив rele[]
if (RX_s != '0' && RX_s != '1') {n = 0;} // если пришло что-то отличное от '0' или '1', то сбросить счётчик принятых символов
if (n == pinCount) {n = 0; // приняты все символы в массив rele[], обнуление счётчика принятых символов
for (int thisPin = 0; thisPin < pinCount; thisPin++) { // обновление состояния пинов светодиодов в актуальное массиву rele[]
digitalWrite(ledPins[thisPin], rele[thisPin]); // если при вводе 0000000 загораются светодиоды, то закомментировать.
// digitalWrite(ledPins[thisPin], !rele[thisPin]); // если при вводе 0000000 загораются светодиоды, то расскомментировать.
}
}
}
DigiUSB.delay(1);
}
Спасибо за труды)
То есть библиотеку ethernet оставляем, а digiusb имея стабильное соединение интернет начинает общаться удаленно с сервер скриптом.php откуда и получает нулики и единички, которые в последствии обрабатывает?
Клапауций 232 пишет:
кароче.
собирает количество символов '0' и '1' равное количеству подключенных реле/светодиодов.
если пришло, что-то отличное от '0' и '1' или до того как принято нужное количество символов, то начинаем с начала собирать нужный массив.
DigiUSB. заменить на свой client.
надеюсь, не втулишь этот код среди делеев, иначе не гарантирую, что всё не станет колом и не будешь терять инфу.
что бы не путаться, если принял конец прошлого массива и начало текущего - отправляй комбинации нулей и единиц в виде x0001100, где "x" - любой отличный от 0 или 1 символ, приём которого приведёт к обнулению счётчика принятых символов, на случай, если прошлый раз что-то пошло не так.
#include <DigiUSB.h>
byte pinCount = 7; // количество подключенных светодиодов
byte ledPins[] = { 0, 1,10,11,12,13,15}; // массив пинов светодиодов
boolean rele[] = { 0, 0, 0, 0, 0, 0, 0}; // массив логических состояний пинов светодиодов
void setup() {
DigiUSB.begin(); // представь, DigiUSB - что это твой инет-клиент
for (int thisPin = 0; thisPin < pinCount; thisPin++) {
pinMode(ledPins[thisPin], OUTPUT);
// digitalWrite(ledPins[thisPin], 1); // если светодиоды загораются при первом включении, то расскомментировать
}
}
void loop() {
if (DigiUSB.available()) { // в приёмном буфере что-то есть
char RX_s = DigiUSB.read(); // запись принятого символа в переменную
static byte n = 0; ++n; // счётчик принятых символов
if (RX_s == '0') {rele[n - 1] = 0;} // запись 0 в массив rele[]
if (RX_s == '1') {rele[n - 1] = 1;} // запись 1 в массив rele[]
if (RX_s != '0' && RX_s != '1') {n = 0;} // если пришло что-то отличное от '0' или '1', то сбросить счётчик принятых символов
if (n == pinCount) {n = 0; // приняты все символы в массив rele[], обнуление счётчика принятых символов
for (int thisPin = 0; thisPin < pinCount; thisPin++) { // обновление состояния пинов светодиодов в актуальное массиву rele[]
digitalWrite(ledPins[thisPin], rele[thisPin]); // если при вводе 0000000 загораются светодиоды, то закомментировать.
// digitalWrite(ledPins[thisPin], !rele[thisPin]); // если при вводе 0000000 загораются светодиоды, то расскомментировать.
}
}
}
DigiUSB.delay(1);
}
Спасибо за труды) То есть библиотеку ethernet оставляем, а digiusb имея стабильное соединение интернет начинает общаться удаленно с сервер скриптом.php откуда и получает нулики и единички, которые в последствии обрабатывает?
не digiusb - твой клиент
у тебя (client.available())
у меня (DigiUSB.available())
ты с одной железки символы собираешь, я с другой, т.к. нет у меня твоей инет-балалайки.
просто замени в коде мой DigiUSB на свой client со всей положенной этому клиенту обвязкой.
Спасибо за труды) То есть библиотеку ethernet оставляем, а digiusb имея стабильное соединение интернет начинает общаться удаленно с сервер скриптом.php откуда и получает нулики и единички, которые в последствии обрабатывает?
не digiusb - твой клиент
у тебя (client.available())
у меня (DigiUSB.available())
ты с одной железки символы собираешь, я с другой, т.к. нет у меня твоей инет-балалайки.
просто замени в коде мой DigiUSB на свой client со всей положенной этому клиенту обвязкой.
Ник182, а надо чтобы он строку со скобками и запятыми отправлял - я могу так сделать или без скобок и запятых отправлял ?
Вот это код у меня работает. Реле щелкают в зависимости от строки rele.
Ник182, а надо чтобы он строку со скобками и запятыми отправлял - я могу так сделать или без скобок и запятых отправлял ?
Да всё равно. Сейчас он реагирует только на 0 и 1 в строке. Строку надо собрать в цикле приёма ответа от сервера.
Ник182, а надо чтобы он строку со скобками и запятыми отправлял - я могу так сделать или без скобок и запятых отправлял ?
Да всё равно. Сейчас он реагирует только на 0 и 1 в строке. Строку надо собрать в цикле приёма ответа от сервера.
Спасибо за код, только у меня все реле горят, пытался менять String rele как на все нули так и на все единицы, а они все равно не работают хз, что делать?
Плата какая? У меня нано.
Просто короткий код типа digitalWrite(2,HIGH); digitalWrite(3,LOW);.... щелкает реле? Ну или диоды зажигает?
собирать строку надо так
Я понимаю, что должно работать - но не работает Хз почему см видео https://youtu.be/U-9m7RVrkMc
собирать строку надо так
именно полсекунды, что бы набилось в буфер нулей и единиц пару сотен
Я понимаю, что должно работать - но не работает
я понимаю, что ты понимаешь, но у меня работает на двух светодиодах - я проверял
не думаю, что на восьми, внезапно перестанет работать - ты пин восьмого светодиода добавил?
02
int
ledPins[8] = {2, 3, 4, 5, 6, 7, 8};
// куда проепался 8-й светодиод?
Плата какая? У меня нано.
Просто короткий код типа digitalWrite(2,HIGH); digitalWrite(3,LOW);.... щелкает реле? Ну или диоды зажигает?
С обычным блинком работает - плата RobotDyn uno пример платы со скейтчем Клапауций 232 https://youtu.be/U-9m7RVrkMc
собирать строку надо так
именно полсекунды, что бы набилось в буфер нулей и единиц пару сотен
Это модифицированный кусочек из поста #34. А вообще не набъется. Это ответ на запрос. Одна строка. По хорошему надо ждать первого символа с таймаутом на интернет транзакцию.
Я понимаю, что должно работать - но не работает
я понимаю, что ты понимаешь, но у меня работает на двух светодиодах - я проверял
не думаю, что на восьми, внезапно перестанет работать - ты пин восьмого светодиода добавил?
02
int
ledPins[8] = {2, 3, 4, 5, 6, 7, 8};
// куда проепался 8-й светодиод?
У меня реле модуль из 4х реле - и все работаю в положение вкл
Что то на экране скетч какой то левый. Полная извините не соответствие тому, что я писал.
У меня реле модуль из 4х реле - и все работаю в положение вкл
у меня два светодиода и всё работает - убейся ап стену.
У меня реле модуль из 4х реле - и все работаю в положение вкл
у меня два светодиода и всё работает - убейся ап стену.
Брат, спасибо большое - заработало )))
Что то на экране скетч какой то левый. Полная извините не соответствие тому, что я писал.
Nik182, там скейтч пример платы со скейтчем Клапауций 232
Там с другим его скейтчем заработало, сейчас буду в большой код это все впихивать)
Уважаемый Клапауций 232 ноги A0 A1 в скетче описал. А на видео совсем другие ноги воткнуты. Да и получать вы будете не bool а char.
Уважаемый Клапауций 232 ноги A0 A1 в скетче описал. А на видео совсем другие ноги воткнуты. Да и получать вы будете не bool а char.
с ногами 14 и 15 - это моя железка с двумя светодиодами.
получать он будет чар '0' и '1' и по порядку писать 0 или 1 в boolean rele[4]
не вижу необходимости лепить строки из символов
Клапауций232, а как предложишь - эту строку собирать(см. код ниже - код ответственный за приемку и запись в переменную) nik182 - предложил так собрать
собирать строку надо так
Спасибо за труды)
То есть библиотеку ethernet оставляем, а digiusb имея стабильное соединение интернет начинает общаться удаленно с сервер скриптом.php откуда и получает нулики и единички, которые в последствии обрабатывает?
не digiusb - твой клиент
у тебя (client.available())
у меня (DigiUSB.available())
ты с одной железки символы собираешь, я с другой, т.к. нет у меня твоей инет-балалайки.
просто замени в коде мой DigiUSB на свой client со всей положенной этому клиенту обвязкой.
Понял))
не digiusb - твой клиент
у тебя (client.available())
у меня (DigiUSB.available())
ты с одной железки символы собираешь, я с другой, т.к. нет у меня твоей инет-балалайки.
просто замени в коде мой DigiUSB на свой client со всей положенной этому клиенту обвязкой.