В Attiny85 аналоговый сигнал выдать в двоичном коде

holl
Offline
Зарегистрирован: 01.02.2019

Добрый вечер! как всегда задаю вопрос спецам высокого уровня...

как можно перевести  значение  полученное с помощью analogRead(...) в двоичный код и потом этот код выдать на какой нибудь порт?

спасибо

 

sadman41
Offline
Зарегистрирован: 19.10.2016

какой-то_порт.print(analogRead(...), BIN);

b707
Offline
Зарегистрирован: 26.05.2017

holl пишет:

как можно перевести  значение  полученное с помощью analogRead(...) в двоичный код

 

а из аналогРид() оно в каком коде выходит, не в двоичном? :)

 

вопрос месяца прям....

Дорогой holl, рискну предположить что вам явно не нужен никакой "двоичный код" (ну или вы неверно выразились). Не стоит прикидываться умнее, чем вы есть - обьясните простыми словами. в чем задача-то?

holl
Offline
Зарегистрирован: 01.02.2019

спасибо, сейчас попробую

holl
Offline
Зарегистрирован: 01.02.2019

b707 пишет:

holl пишет:

как можно перевести  значение  полученное с помощью analogRead(...) в двоичный код

 

а из аналогРид() оно в каком коде выходит, не в двоичном? :)

 

вопрос месяца прям....

ну где то в мк хранится в двоичном, но мне его нужно выдать на выход

b707
Offline
Зарегистрирован: 26.05.2017

holl пишет:

мне его нужно выдать на выход

на какой выход? И зачем именно в двоичном?

holl
Offline
Зарегистрирован: 01.02.2019

b707 пишет:

holl пишет:

мне его нужно выдать на выход

на какой выход? И зачем именно в двоичном?

запись параметров ведется лог анализатором и  параметр напряжения я там могу увидеть только в двоичном коде  

b707
Offline
Зарегистрирован: 26.05.2017

holl пишет:

запись параметров ведется лог анализатором и  параметр напряжения я там могу увидеть только в двоичном коде  

я так и знал :)

Теперь знайте и вы - для логанализатора разницы между этими тремя строчками нет:

print(255)

print(0xFF)

print(0b11111111)

 

разница между двоичными, десятичными и шестнадцатиричными числами существует только при чтении их ЧЕЛОВЕКОМ, для компа они все равнозначны.

Вообще я сразу был уверен, что услышу что-то подобное, поэтому и просил вас озвучить саму задачу, а не путь решения.  Вопрос очень распространенный, новички, не знающие компа, часто пытаются "конвертировать числа из одной системы в другую", не понимая. что это абсолюно ненужная работа

 

 

holl
Offline
Зарегистрирован: 01.02.2019

вот вернула функция чтения 255 как я это могу увидеть на логическом анализаторе?

Подскажите как это синтаксически правильно реализовать.

holl
Offline
Зарегистрирован: 01.02.2019
int in = 2;
int out = 4;
int ledPin = 3;
void setup() {
              pinMode(in, INPUT);
              pinMode(out, OUTPUT);
              pinMode(ledPin, OUTPUT);
}

void loop() {
             out.print(analogRead(), BIN);
             digitalWrite(ledPin, HIGH);   
             delay(1000);                  
             digitalWrite(ledPin, LOW);    
             delay(1000);
}

 

holl
Offline
Зарегистрирован: 01.02.2019

request for member 'print' in 'out', which is of non-class type 'int'

 

b707
Offline
Зарегистрирован: 26.05.2017

holl пишет:

вот вернула функция чтения 255 как я это могу увидеть на логическом анализаторе?

вы какой порт-то логанализатором читаете? Serial ?

holl
Offline
Зарегистрирован: 01.02.2019

b707 пишет:

holl пишет:

вот вернула функция чтения 255 как я это могу увидеть на логическом анализаторе?

вы какой порт-то логанализатором читаете? Serial ?

я использую тиньку 85

holl
Offline
Зарегистрирован: 01.02.2019

ею измеряю и с нее же и хочу отправлять измерения на анализатор

b707
Offline
Зарегистрирован: 26.05.2017

holl пишет:

int in = 2;
int out = 4;
int ledPin = 3;
void setup() {
              pinMode(in, INPUT);
              pinMode(out, OUTPUT);
              pinMode(ledPin, OUTPUT);
}

void loop() {
             out.print(analogRead(), BIN);
             digitalWrite(ledPin, HIGH);   
             delay(1000);                  
             digitalWrite(ledPin, LOW);    
             delay(1000);
}

request for member 'print' in 'out', which is of non-class type 'int'

пипец дорогая редакция...

Вы что пытаетесь сделать, печатать оператором print в цифровой пин? Вы хоть чуть понимаете, как работает МК?

holl
Offline
Зарегистрирован: 01.02.2019

sadman41 пишет:

какой-то_порт.print(analogRead(...), BIN);

как тут подсказали так и пытаюсь

b707
Offline
Зарегистрирован: 26.05.2017

holl пишет:

ею измеряю и с нее же и хочу отправлять измерения на анализатор

ничего не выйдет. Даже если отвечься от того, что запись числа в пин - это неистовый бред.... то еще

Логанализатор умеет читать только известные протоколы - Serial i2c spi

b707
Offline
Зарегистрирован: 26.05.2017

holl пишет:

как тут подсказали так и пытаюсь

вы бредите.

holl
Offline
Зарегистрирован: 01.02.2019

b707 пишет:

holl пишет:

как тут подсказали так и пытаюсь

вы бредите.

Вы глубоко ошибаетесь!!!

b707
Offline
Зарегистрирован: 26.05.2017

holl пишет:

Вы глубоко ошибаетесь!!!

может я и ошибаюсь - но у вас ничего не выйдет

holl
Offline
Зарегистрирован: 01.02.2019

b707 пишет:

holl пишет:

ею измеряю и с нее же и хочу отправлять измерения на анализатор

ничего не выйдет. Даже если отвечься от того, что запись числа в пин - это неистовый бред.... то еще

Логанализатор умеет читать только известные протоколы - Serial i2c spi

при чем читать или писать????

мне просто надо на выход отправить набор 1 и 0. 

b707
Offline
Зарегистрирован: 26.05.2017

holl пишет:

мне просто надо на выход отправить набор 1 и 0. 

напишите программу для этого, метод print для этого не подходит

похоже вы куда более дере...новичок, чем я думал...

holl
Offline
Зарегистрирован: 01.02.2019

более глубже опишу задачу.

я буду фиксировать пакеты которые отправляются на плату инверторного компрессора холодильника. Но так как он работает на разных оборотах(соответсвенно разный ток потребления) то через гальваническую развязку мне нужно контролировать этот ток и потом проанализировать эти пакеты...

А ток контролировать нужно для того что бы я знал когда именно изменились отправляемые пакеты так как по времени запись будет вестись около 3 часов

b707
Offline
Зарегистрирован: 26.05.2017

holl пишет:

более глубже опишу задачу.

Не очень понял, как именно вы собрались ловить пакеты - уж не оператором ли аналогРид() ? - с вас станется... Но ладно, это пока несущественно

возьмите внешнюю ЕЕПРОМ типа at24xx и пишите на нее в обычном цифровом формате

То что вы придумали - это дурость несусветная

holl
Offline
Зарегистрирован: 01.02.2019

b707 пишет:

holl пишет:

более глубже опишу задачу.

возьмите внешнюю ЕЕПРОМ типа at24xx и пишите на нее в обычном цифровом формате

То что вы придумали - это дурость несусветная

это только усложнит мою задачу. Мне нужно проанализировать пакеты на экране монитора, а не в памяти EEPROM

b707
Offline
Зарегистрирован: 26.05.2017

holl пишет:

Мне нужно проанализировать пакеты на экране монитора, а не в памяти EEPROM

пакеты состоят из 0 и 1 ? - значит это числа и совершенно незачем их читать с экрана, можно преоразовать в числа и записать в память

Вообще у меня впечатление, что я разговариваю с третьеклассником, который спрашивает, как построить синхрофазотрон. Вы хоть чуть-чуть в компьютерах разбираетесь или вы просто мастер по ремонту холодильников, который польстился на рекламу "ардуина - это просто" ?

holl
Offline
Зарегистрирован: 01.02.2019

тогда по простому....

как мне выдать на ногу байт значения полученного функцией analogRead?

holl
Offline
Зарегистрирован: 01.02.2019

Физческий факультет РГУ цифровые методы формирования и обработки сигналов закончил 20 лет назад

holl
Offline
Зарегистрирован: 01.02.2019

вот я иногда думаю что очень простой(для вас) вопрос рождает такую палемику и наводит на мысль что вы тут находитесь только для того чтобы блестнуть своей чешуей. Видите же что человек не знает каких то моментов и вы давай насыпать (аааа....не знаешь.  аааа школьник)это вы себя как пацаны вчерашние ведете хвастунишки. 

я зашел в раздел песочница, поэтому не надо пальцы гнуть

sadman41
Offline
Зарегистрирован: 19.10.2016

В тиньке сериала нет что ли? Я не совсем в курсе.

b707
Offline
Зарегистрирован: 26.05.2017

holl пишет:

как мне выдать на ногу байт значения полученного функцией analogRead?

написать программу.

Разбиваете байт на биты и "мигаете" пином, как светодиодом

b707
Offline
Зарегистрирован: 26.05.2017

sadman41 пишет:
В тиньке сериала нет что ли? Я не совсем в курсе.

про сериал я ему намекал :)

ему не нужен сериал, он хочет голым пином посылать сигнал в пространство

b707
Offline
Зарегистрирован: 26.05.2017

holl пишет:

Физческий факультет РГУ цифровые методы формирования и обработки сигналов закончил 20 лет назад

тем более удивительно

Диплом купил, наверно?

nik182
Offline
Зарегистрирован: 04.05.2015

На сайте есть раздел программирование. Прочитал бы раз вопроса не было бы. Наводка - shiftOut.

holl
Offline
Зарегистрирован: 01.02.2019

b707 пишет:

holl пишет:

как мне выдать на ногу байт значения полученного функцией analogRead?

написать программу.

Разбиваете байт на биты и "мигаете" пином, как светодиодом

в том то и дело что именно это я и хотел спросить синтаксис этой операции

b707
Offline
Зарегистрирован: 26.05.2017

holl пишет:

в том то и дело что именно это я и хотел спросить синтаксис этой операции

синтаксис языка Си. А программу вы должны написать сами, полностью готового нет.

Хотя некоторые варианты вам уже накидали - можно использовать shiftOut(), можно вывод в Сериал, но работу с данными все равно придется писать самому.

sadman41
Offline
Зарегистрирован: 19.10.2016

Не проще ли выводить все в терминал без наворотов с логанализатором, пишущим три часа кряду?

holl
Offline
Зарегистрирован: 01.02.2019

sadman41 пишет:
Не проще ли выводить все в терминал без наворотов с логанализатором, пишущим три часа кряду?

а как я потом это буду анализировать?

я не знаю некоторых терминов. Например терминал

holl
Offline
Зарегистрирован: 01.02.2019

b707 пишет:

holl пишет:

в том то и дело что именно это я и хотел спросить синтаксис этой операции

синтаксис языка Си. А программу вы должны написать сами, полностью готового нет.

Хотя некоторые варианты вам уже накидали - можно использовать shiftOut(), можно вывод в Сериал, но работу с данными все равно придется писать самому.

абсолютно согласен, я не прошу написать мне программу. 

shiftOut(dataPin, clock, MSBFIRST, (data >> 8));

что здесь это (data >> 8) обозначает?

v258
v258 аватар
Offline
Зарегистрирован: 25.05.2020

holl пишет:

абсолютно согласен, я не прошу написать мне программу. 

shiftOut(dataPin, clock, MSBFIRST, (data >> 8));

что здесь это (data >> 8) обозначает?

Вы просите ни много, ни мало научить вас программированию. Здесь это никому не нужно. Почитайте для начала какой-нибудь учебник, тогда вопросы типа "что такое умножение" у вас отпадут сами собой

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

b707 пишет:

 можно использовать shiftOut(), 

Для shiftOut() нужно 2 пина, а ТС хочет один. Так что тут либо Serial, либо в манчестерском коде.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

holl пишет:

shiftOut(dataPin, clock, MSBFIRST, (data >> 8));

что здесь это (data >> 8) обозначает?

Вы неудачно выбрали фрагмент кода.

Но в данном случае это именно тот байт, который в последовательном коде будет выдан на пин dataPin. Но при этом на другой пин clock должен быть выдан синхросигнал. Так что, строго говоря, Вы передаете байт не через один, а через два пина.

v258
v258 аватар
Offline
Зарегистрирован: 25.05.2020

asam пишет:

b707 пишет:

 можно использовать shiftOut(), 

Для shiftOut() нужно 2 пина, а ТС хочет один. Так что тут либо Serial, либо в манчестерском коде.

Нету на тиньке сериала

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

v258 пишет:

Цитата:

Для shiftOut() нужно 2 пина, а ТС хочет один. Так что тут либо Serial, либо в манчестерском коде.

Нету на тиньке сериала

Ну в таком случае и Манчестера тоже на тиньке нет. Serial это прототокол. А его можно и на софтверном уровне организовать.

holl
Offline
Зарегистрирован: 01.02.2019

синхронизация не важна, мне нужно примерно раз в 10 секунд видеть какое напряжение

обьясните мне пожалуйста синтаксис, ну не понимаю я его

// Последовательная передача в режиме

MSBFIRST int data = 500;

// сдвигаем и выводим старший байт

shiftOut(dataPin, clock, MSBFIRST, (data >> 8));

// сдвигаем и выводим младший байт

shiftOut(dataPin, clock, MSBFIRST, data);

кого они сдвигают и какой командой?

 

 

 

holl
Offline
Зарегистрирован: 01.02.2019

это циклическая операция или как правильно ей пользоваться?

b707
Offline
Зарегистрирован: 26.05.2017

holl пишет:

это циклическая операция или как правильно ей пользоваться?

да не факт, что оно вообще заработает.

Понимаете, вся ваша затея - это гланды через Ж.  И как мало найдется хирургов, кто имел подобный опыт  :) - так и тут у нас подобной ерундой никто не занимался.

Дурак иногда такое выдумает, что 10 мудрецов сидят репу чешут...

Так что пробуйте, потом нам расскажете.

 

Если б такая задача встала передо мной (не дай бох) - я бы все же тупо разбивал байт на 8 битов и по одному выводил бы их на пин

holl
Offline
Зарегистрирован: 01.02.2019

так как это сделать??

я с самого начала это и просил

holl
Offline
Зарегистрирован: 01.02.2019

или где это прочитать?

b707
Offline
Зарегистрирован: 26.05.2017

holl пишет:

так как это сделать??

я с самого начала это и просил

ну мало ли что вы просили, у нас тут за новичков код не пишут

Вот вам примерчик:

for (uint8_t i =0; i<8; i++) {
  digitalWrite(pin, x & 0x1);
  x = x>>1;
  delay (10);
}

выведет байт x на пин pin в порядке LSBFIRST (младший бит первым) с частотой 100 Гц примерно

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

holl пишет:
обьясните мне пожалуйста синтаксис, ну не понимаю я его

Если ты прочитал инструкцию к зелёнке, как ты думаешь, возьмут тебя на работу хирургом?