8 Реле и бнарный код 10000001
- Войдите на сайт для отправки комментариев
Сб, 22/10/2016 - 21:00
Всем Здрасте
Имеется: сервер от которого на ардуино приходит восьми разрядный двочный код (binary code)
так как восемь реле то и восемь разрядов в коде, которые присваивают каждому исходящему пину из 8 ми задействованых значение HIGH or LOW
Коллеги подскажите по какому принципу или каким алгоритмом это реализовывается
см.картинку ниже
Спасибо
массив (array)
Это сильно зависит. Если умудриться все реле повесить на один порт, то можно просто писать бинарный код в порт. Если на один порт не получится, то надо писить подпрограмму переводчик бинарного кода в конкретные ножки процессора. Проверять бит и в соответствии со значением включать или выключать реле. И так восемь раз.
массив (array)
Спасибо большое) только так наверное правильно будет
так как первая единица идет за нуль
А как в массив число 10000001 засунуть ?
Я думаю что программа должна перебирать значение - то есть цикл FOR (счетчик) проводт интеррацию до 256 (колличество комбинаций от 00000000 до 11111111) далее запихивает значене в массив - что-то пока как-то так, дальше пока не могу додумать...
Спасибо большое) только так наверное правильно будет
так как первая единица идет за нуль
нет. 8 - это количество элементов массива объявляемого массива. их у тебя 8-мь.
когда обращаешься к элементам массива, тогда на единицу меньше, т.к. 1-й == 0, т.е. от 0 до 7
А как в массив число 10000001 засунуть ?
ну, как как - ты же код колучаешь? сначала получаешь 1-й символ кода, затем 2-й... затем 8-й.
по мере получения увеличивай счётчик с 0 до 7 и размещай нули и единицы в rele[n] = символ.
Я думаю что программа должна перебирать значение - то есть цикл FOR (счетчик) проводт интеррацию до 256 (колличество комбинаций от 00000000 до 11111111) далее запихивает значене в массив - что-то пока как-то так, дальше пока не могу додумать...
от 0 до 7
зачем тебе считать комбинации, если результат - одна комбинация, которую тебе по факту получения необходимо реализовать в состоянии реле, воткнув в цикл от 0 до 7.
от 0 до 7
зачем тебе считать комбинации, если результат - одна комбинация, которую тебе по факту получения необходимо реализовать в состоянии реле, воткнув в цикл от 0 до 7.
Тогда что-то вроде этого
я что-то иное предложил?
от 0 до 7
зачем тебе считать комбинации, если результат - одна комбинация, которую тебе по факту получения необходимо реализовать в состоянии реле, воткнув в цикл от 0 до 7.
Я не понял 8, 7, а судя по коду ваще 6 для второго FOR?
Я правильно понял задачу, пришел байт из инета, надо включить те реле где биты равны 1 ?
А то 2 FORа делают одно и тоже, первый слева на право, второй справо на лево.
я что-то иное предложил?
просто код приходит от 00000000 до 11111111 - как с ним перебор делать?, по пинам я понял как их из массива счетчиком вытаскивать
просто код приходит от 00000000 до 11111111 - как с ним перебор делать?, по пинам я понял как их из массива счетчиком вытаскивать
ок. сначала:
что и куда "приходит"? - покажи результат прихода.
Я не понял 8, 7, а судя по коду ваще 6 ?
Я правильно понял задачу, пришел байт из инета, надо включить те реле где биты равны 1 ?
А то 2 FORа делают одно и тоже, первый слева на право, второй справо на лево.
Смотри пришел код из инета для двойного реле - значит код из двух разрядов
к примеру 10, значит первое реле переводим в значение ON а второе в OFF
Пример второй для реле из 4 штук, к примеру к нему из инета приходит код 1010 так как четыре реле то и разрядов четыре,
зходя из этого кода реле 1 в положение ON реле 2 в положение OFF реле три в положение ON а реле 4 в положение OFF
Смотри пришел код из инета
не вижу, куда пришёл код
неее, не надо меня путать
приходить БАЙТ, 8 разрядов, так ?
ок. сначала:
что и куда "приходит"? - покажи результат прихода.
в код который ниже сильно не вникаем это get запрос на сервер ниже будет код который получает данные с сервера
ниже код который получает данные с сервера и заносит их в переменную "C"
неее, не надо меня путать
приходить БАЙТ, 8 разрядов, так ?
Если 8реле то приходит число от 00000000 до 11111111 - 256комбинаций
Если 16реле то число 0000000000000000 до 1111111111111111 Хз сколько комбинаций)))
Как то так.
Вы уж опредилитесь, что вы от инета получаете
вот пример если получаете байт
во накидали пока писал :)
неее, не надо меня путать
приходить БАЙТ, 8 разрядов, так ?
Если 8реле то приходит число от 00000000 до 11111111 - 256комбинаций
Если 16реле то число 0000000000000000 до 1111111111111111 Хз сколько комбинаций)))
слушай - выбрось из головы эти комбинации. кто тебе, вообще, про комбинации в уши налил? - у тебя одна актуальная комбинация, которую тебе нужно удобоваримо принять и реализовать в комбинации состояний реле.
Спасибо большое за код, это решение - завтра попробую отпишусь ))
ниже код который получает данные с сервера и заносит их в переменную "C"
если так, то не
boolean rele[8] = {1,0,0,0,0,0,0,1};
а
char rele[9] = "10000001";
по факту получения символа '\0' врубаешь цикл привода реле в актуальное полученному состояние.
но... т.к. у тебя возможно сыпется из твоего инета не только этот код для реле, то принимаемая строка должна иметь с начала символ по которому ты будешь понимать, что это "оно" - как-то так "x10000001'\0'"
строку лепишь из принимаемых символов по факту получения символа 'x'
ниже код который получает данные с сервера и заносит их в переменную "C"
если так, то не
boolean rele[8] = {1,0,0,0,0,0,0,1};
а
char rele[9] = "10000001";
по факту получения символа '\0' врубаешь цикл привода реле в актуальное полученному состояние.
но... т.к. у тебя возможно сыпется из твоего инета не только этот код для реле, то принимаемая строка должна иметь с начала символ по которому ты будешь понимать, что это "оно" - как-то так "x10000001'\0'"
строку лепишь из принимаемых символов по факту получения символа 'x'
У меня сайт стоит на домашнем сервак - www.netherlad4crew.com
На сервак идёт отправка данных как о времени так и о погоде, данные входные записываются в файл in.txt
Эти данные отправляются на скрипт script.php скрипт прочитывает эти данные и записывает в файл In.txt далее этот же скрипт предоставляет данные от файла Out.txt где и хранится крайняя запись 10000001
У меня сайт стоит на домашнем сервак - www.netherlad4crew.com
На сервак идёт отправка данных как о времени так и о погоде, данные входные записываются в файл in.txt
Эти данные отправляются на скрипт script.php скрипт прочитывает эти данные и записывает в файл In.txt далее этот же скрипт предоставляет данные от файла Out.txt где и хранится крайняя запись 10000001
это как бы и не важно, если ты получаешь один символ, который куда-то нужно складывать
Вы уж опредилитесь, что вы от инета получаете
вот пример если получаете байт
во накидали пока писал :)
Подскажи плиз по условию
Счётчик перебирает пины 8 раз далее запятая , байтов переменная var и 1 << знак меньше (не знак а логический оператор) что обозначает, не подскажите? Мат часть почитал а там ничего не сказанно про два знака подряд ...
Википедия - Битовые операции
Википедия - Битовый сдвиг
Битовые операции
Битовые операторы
Побитовые операторы
Побитовый свдиг влево (<<), побитовый сдвиг вправо (>>)
Википедия - Битовые операции Википедия - Битовый сдвиг Битовые операции Битовые операторы Побитовые операторы Побитовый свдиг влево (<<), побитовый сдвиг вправо (>>)
Jeka_M Спасибо, а то в google забиваю и безрезультатно
Сделал тестовый скейтч на основе описанного выше, компилятор не ругается - но и скейтч не работает
Сделал тестовый скейтч на основе описанного выше, компилятор не ругается - но и скейтч не работает
не суть важно, работает или нет - зачем ты, вообще, это делаешь?
ты сам себя и читателей темы ввёл в заблуждение, заявив, что приходит восьми разрядный двочный код (binary code)
это не так - ты получаешь один символ.
о чём свидетельствует, процитированный тобой код
ниже код который получает данные с сервера и заносит их в переменную "C"
char
char
Переменная типа char занимает 1 байт памяти и может хранить один алфавитно-цифровой символ (литеру). При объявление литеры используются одиночные кавычки: 'A' (двойные кавычки используется при объявлении строки символов - тип string: "ABC").
Символ хранится в памяти как число, соответствующее коду символа в таблице кодировки символов ASCII. Т.к. символ хранится как число в памяти над ним возможно производить арифметические действия (например, 'A' + 1 будет 66, т.к. ASCII код для 'A' - 65).
Клапауций 232, дабы код заработал, мне надо его полностью отладить - сейчас скейтчем ниже, я пытаюсь отладить ту часть, которая будет обрабатывать входящую переменную. В самом начале темы было указано, что я хочу, мне нужно числом из восьми знаков (10001100 к примеру) запустить необходимую реле .
Сделал тестовый скейтч на основе описанного выше, компилятор не ругается - но и скейтч не работает
Пока скейтч выше не заработает я не смогу его вставить в работающий скейтч, переменную char c я заменю на byte c
Сделал тестовый скейтч на основе описанного выше, компилятор не ругается - но и скейтч не работает
не суть важно, работает или нет - зачем ты, вообще, это делаешь?
ты сам себя и читателей темы ввёл в заблуждение, заявив, что приходит восьми разрядный двочный код (binary code)
это не так - ты получаешь один символ.
о чём свидетельствует, процитированный тобой код
ниже код который получает данные с сервера и заносит их в переменную "C"
char
char
Переменная типа char занимает 1 байт памяти и может хранить один алфавитно-цифровой символ (литеру). При объявление литеры используются одиночные кавычки: 'A' (двойные кавычки используется при объявлении строки символов - тип string: "ABC").
Символ хранится в памяти как число, соответствующее коду символа в таблице кодировки символов ASCII. Т.к. символ хранится как число в памяти над ним возможно производить арифметические действия (например, 'A' + 1 будет 66, т.к. ASCII код для 'A' - 65).
Пока скейтч выше не заработает я не смогу его вставить в работающий скейтч, переменную char c я заменю на byte c
ок. удачи. мне надоело выслушивать глупые пререкания.
Даже для отладки цикл loop должен выглядеть как то так
В вашем скетче #30 переменная var не определена. нужно перед циклом задать var=c; Сделайте с=B101010101 реле будут щёлкать через одно.
Даже для отладки цикл loop должен выглядеть как то так
В вашем скетче #30 переменная var не определена. нужно перед циклом задать var=c; Сделайте с=B101010101 реле будут щёлкать через одно.
пока ТС не процитирует полный код приёмки "00000000" - нет смысла что-то ему советовать.
лично я подозреваю, что 00000000 он получает посимвольно, а не в виде бинарного числа
пока ТС не процитирует полный код приёмки "00000000" - нет смысла что-то ему советовать.
лично я подозреваю, что 00000000 он получает посимвольно, а не в виде бинарного числа
код сервера
ofalaleev, Вы совершенно не ориентируетесь в типах данных. Сами запутались и пытаетесь запутать окружающих.
Бинарный код состояит из битов. Биты объединяются в байты - по 8 штук. Если к Вам приходит 8 битов, значит, приходит один байт. Принять из И-нета что-то меньшее одного байта НЕВОЗМОЖНО. Т.е. невозможно принять 2 или 4 бита. Можно принять только байт целиком.
И, соответственно, байт можно записать в простую переменную, но никак не в массив. Если его записывать в массив, он займет там ровно одну ячейку, а все остальные ячейки останутся свободными (т.е. содержащими совсем не то, что нам нужно).
Чаще всего из И-нета принимают ТЕКСТ. Текст и бинарный код - совершенно разные (вплоть до того, что противоположные) вещи.
Вы можете принять из И-нета текстовую строку "10000001". Это будет строка длиной 8 символов, т.е. не один байт, а 8 байт (соответственно, 64 бита).
Соответственно, биты в байте (единственном числе) и символы в строке (массиве) обрабатываются немного по-разному.
Чтобы написать Вам, как обрабатывать, нужно знать, что именно Вы принимаете.
ок.
и как ты собрался здесь переменную char c я заменю на byte c
если у тебя клиент получает символы(чар), а не байты?
*то, что у тебя цикл, а не условие и ты всегда будешь получать последний символ - пока приторможу.
ок.
и как ты собрался здесь переменную char c я заменю на byte c
если у тебя клиент получает символы(чар), а не байты?
*то, что у тебя цикл, а не условие и ты всегда будешь получать последний символ - пока приторможу.
Полностью с вами согласен, получаю я char из 8ми символов состоящих из 1 или 0
Полностью с вами согласен, получаю я char из 8ми символов состоящих из 1 или 0
блин!
да не чар из 8-ми символов ты получаешь, а восемь раз по одному символу.
Полностью с вами согласен, получаю я char из 8ми символов состоящих из 1 или 0
ну, и?
что нужно делать, когда получен первый символ, допустим '0'?
Надо его как-то сравнивать с массивом пинов)) Хз как это реализовать я в #28 кидал, что то похожее но оно не работает ((
Полностью с вами согласен, получаю я char из 8ми символов состоящих из 1 или 0
блин!
да не чар из 8-ми символов ты получаешь, а восемь раз по одному символу.
Я просто из деревни и не могу запомнить, что char это один символ))
Полностью с вами согласен, получаю я char из 8ми символов состоящих из 1 или 0
ну, и?
что нужно делать, когда получен первый символ, допустим '0'?
Надо его как-то сравнивать с массивом пинов)) Хз как это реализовать я в #28 кидал, что то похожее но оно не работает ((
зачем его сравнивать с чем-то?
при получении первого символа равного '0' нужно записать 0 по адресу(индексу) 0 в массив boolean rele[8] = {1,0,0,0,0,0,0,1};
rele[0] = 0;
при получении символа '1' - записать 1 ...
Полностью с вами согласен, получаю я char из 8ми символов состоящих из 1 или 0
ну, и?
что нужно делать, когда получен первый символ, допустим '0'?
Надо его как-то сравнивать с массивом пинов)) Хз как это реализовать я в #28 кидал, что то похожее но оно не работает ((
зачем его сравнивать с чем-то?
при получении первого символа равного '0' нужно записать 0 по адресу(индексу) 0 в массив boolean rele[8] = {1,0,0,0,0,0,0,1};
rele[0] = 0;
при получении символа '1' - записать 1 ...
Ща загуглю как записать по адресу в массив
Да хрен с ней, с деревней. Интернет он и в африке интернет. Книги и знания в нем одинаково доступны всем. Главное объясни как минуты и секунды связаны с реле? Из кода сервера ехется только текстовый файл out-1.txt. Его содержимое можно увидеть?
я же тебе сразу всё дал, что бы ты почитал, а не ломанулся меня поправлять.
массив (array)
Присваиваем значение элементу массива:
mySensVals[0] = 10;
Возвращаем значение элемента массива:
x = mySensVals[4];
в деревне проживают умственно отсталые.
в деревне проживают умственно отсталые.
Да, это правда - я просто из деревни
А php сервер отправляет {1,0,0,0,0,0,0,1};
Теперь правильно ?
в деревне проживают умственно отсталые.
Теперь правильно ?
попроси своих городских друзей, пусть тебя усыпят.
Именно эту строку или вы скобки и запятые сами дописали?
посимвольно у него клиент получает - какая разница, что шлёт сервер
в деревне проживают умственно отсталые.
Теперь правильно ?
попроси своих городских друзей, пусть тебя усыпят.
У нас в деревне только ветеринар, но он сейчас в запое, а из городских друзей нету - опять код не пашет