Радиоуправление на Ардуино.

mag155
Offline
Зарегистрирован: 21.12.2017

Тахогенератор , энкодер не капает

Morroc
Offline
Зарегистрирован: 24.10.2016

Можно на компаратор подать через сопротивление побольше - он будет определять знак. А "по честному" сделать на ОУ сдвиг и масштабирование сигнала в нужный диапазон. Но... че то я сомневаюсь :)

Почему не канает то ? Потому что тахогенератор уже стоит ? Я думаю с него можно и частоту снять при желании.

mag155
Offline
Зарегистрирован: 21.12.2017

Думаю что энкодер все же подойдет . Как в случае не выполнения условия увиличивать шим ???

mag155
Offline
Зарегистрирован: 21.12.2017

С увеличением зим помогла под. Библиотека.

mag155
Offline
Зарегистрирован: 21.12.2017

Подскажите как написать условие если х больше у на какое-то число к примеру на десять.

Morroc
Offline
Зарегистрирован: 24.10.2016

if (x >= y + 10)

Погуглите эту тему - "поддержание оборотов коллекторного двигателя на ардуино". Есть что посмотреть.

mag155
Offline
Зарегистрирован: 21.12.2017

Благодарю.

Гриша
Offline
Зарегистрирован: 27.04.2014

вот вариации на тему:

mag155 пишет:
Подскажите как написать условие если х больше у на какое-то число к примеру на десять.

необходимо всегда помнить о переполнении переменно!!!

на пример:

-----------------

byte x, y;

y= 250;

if (x >= y + 10)  { }   // компилятор ошибки не покежет!!!! а работать не будет!!!!

-------------

if (x >= y + 10 || x <= y - 10)  { }  // больше или меньше т.е. не попали в ворота

ну и так далее.

Morroc
Offline
Зарегистрирован: 24.10.2016

эт да

mag155
Offline
Зарегистрирован: 21.12.2017

Вы имеете в виду 250 ?

mag155
Offline
Зарегистрирован: 21.12.2017

Нужно условие только если больше нужно как то ограничить чтоб не было больше 250 .

Morroc
Offline
Зарегистрирован: 24.10.2016

Если вы про переполнение, то варианты разные есть. К примеру если у вас переменные int, а значения небольшие - вы на такое просто не нарветесь, а если byte и значения могут быть 250-255, то можно условие записать if (x -10 >= y)  { }

mag155
Offline
Зарегистрирован: 21.12.2017

То есть в любом раскладе х будет максимум 240 ?

mag155
Offline
Зарегистрирован: 21.12.2017

И почему если int то не может переполнится?

Гриша
Offline
Зарегистрирован: 27.04.2014

mag155 пишет:
И почему если int то не может переполнится?

int занимает 2 байта памяти, и может хранить числа от -32 768 до 32 767

попробуйте его переполнить ШИМом, а вот отправлять на ШИМ такое бесполезно, нужно приводить к байту и слидить за переполнением. В общих чертах, если я правильно понял вопрос.

Morroc
Offline
Зарегистрирован: 24.10.2016

mag155 пишет:
То есть в любом раскладе х будет максимум 240 ?

Нет, просто такое условие будет работать корректно для того случая выше с byte. Если хотите именно ограничить, то if (x>=240) x = 240; или map() или еще какая нибудь математика.

mag155
Offline
Зарегистрирован: 21.12.2017

Или constrain ?

mag155
Offline
Зарегистрирован: 21.12.2017

Если Int может хранить и отрицательные числа значит можно по налоговому входу переводить например от 0 до 600 это минус 125 а от 600 до 1200 плюс 125 ?

Morroc
Offline
Зарегистрирован: 24.10.2016

Баловаться числами можно как угодно, но измерить отрицательное напряжение внутренним АЦП ардуины не получится, нужно собрать на ОУ схему сдвига уровня и запитать ее двуполярным напряжением или хитрозадый вариант - выпрямительный мост + детектор полярности напряжения на компараторе ардуины или какой то внешней схемой.

mag155
Offline
Зарегистрирован: 21.12.2017

А схему не подкините?

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

Аналоговые пины использовать для контроля оборотов... Оригинально. И чего люди прерывания используют, подключил и измеряй время между импульсами энкодера. Нет. Лучше сдвигать напряжение, только не понял какое напряжение. Двигатель периодически отключать и измерять вырабатываемое напряжение? Извращение в чистом виде

Morroc
Offline
Зарегистрирован: 24.10.2016

mag155 пишет:
А схему не подкините?

Поискать / почитать "сдвиг уровня оу ацп". Вот тут вроде что то похожее http://md4u.ru/viewtopic.php?t=2400

Кстати да. Вы же согласились на энкодер.

mag155
Offline
Зарегистрирован: 21.12.2017

Хочется все же что без энкодера и таходатчиков. Подкинул два провода к двигателю и все.

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

Ага. Проще некуда. Ладно подожду когда сделаешь или бросишься эту затею

 

mag155
Offline
Зарегистрирован: 21.12.2017

Да ладно такое делали в советском союзе на аналоговых компонентах.

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

Так зачем тогда тебе ардуина. Делай на аналоговых компонентах все

mag155
Offline
Зарегистрирован: 21.12.2017

Хочу на ардуино размеры меньше возможностей больше .

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

Так ты не хочешь ими пользоваться)))

mag155
Offline
Зарегистрирован: 21.12.2017

Нет хочу сделать свое.

Morroc
Offline
Зарегистрирован: 24.10.2016

Кто весел - тот смеется,
Кто хочет - тот добьется,
Кто ищет - тот всегда найдет!

:)

 

mag155
Offline
Зарегистрирован: 21.12.2017

Истину глаголиш

mag155
Offline
Зарегистрирован: 21.12.2017

Всех с праздником ПАСХИ !!!!

mag155
Offline
Зарегистрирован: 21.12.2017

Братья, привет! Подскажите как выводить значение переменной на 4 сегментный экран , красненький такой на 4 цифры ?

Гриша
Offline
Зарегистрирован: 27.04.2014

mag155 пишет:
Подскажите как выводить значение переменной на 4 сегментный экран , красненький такой на 4 цифры ?

способов слишком много, чего есть в наличии? То, что написано вообще не очем не сказано - это не технические данные.

mag155
Offline
Зарегистрирован: 21.12.2017

Есть 4 разрядный 7 сегментный индикатор. На 12 пинов хочу на него выводить данные ( то есть значения переменных типа как в ком порт).

Гриша
Offline
Зарегистрирован: 27.04.2014

mag155 пишет:
Есть 4 разрядный 7 сегментный индикатор. На 12 пинов хочу на него выводить данные ( то есть значения переменных типа как в ком порт).

купить себе такой или похожий и жить станет значительно легче...

mag155
Offline
Зарегистрирован: 21.12.2017

Ок. Куплю отпишусь.

mag155
Offline
Зарегистрирован: 21.12.2017

Купил 6 сегментный индикатор на двух микросхемах hc595 как его подключить ?

mag155
Offline
Зарегистрирован: 21.12.2017

Нашел такой пример 

//We always have to include the library
#include "LedControl.h"

/*
 Now we need a LedControl to work with.
 ***** These pin numbers will probably not work with your hardware *****
 pin 12 is connected to the DataIn 
 pin 11 is connected to the CLK 
 pin 10 is connected to LOAD 
 We have only a single MAX72XX.
 */
LedControl lc=LedControl(12,11,10,1);

/* we always wait a bit between updates of the display */
unsigned long delaytime=250;

void setup() {
  /*
   The MAX72XX is in power-saving mode on startup,
   we have to do a wakeup call
   */
  lc.shutdown(0,false);
  /* Set the brightness to a medium values */
  lc.setIntensity(0,8);
  /* and clear the display */
  lc.clearDisplay(0);
}


/*
 This method will display the characters for the
 word "Arduino" one after the other on digit 0. 
 */
void writeArduinoOn7Segment() {
  lc.setChar(0,0,'a',false);
  delay(delaytime);
  lc.setRow(0,0,0x05);
  delay(delaytime);
  lc.setChar(0,0,'d',false);
  delay(delaytime);
  lc.setRow(0,0,0x1c);
  delay(delaytime);
  lc.setRow(0,0,B00010000);
  delay(delaytime);
  lc.setRow(0,0,0x15);
  delay(delaytime);
  lc.setRow(0,0,0x1D);
  delay(delaytime);
  lc.clearDisplay(0);
  delay(delaytime);
} 

/*
  This method will scroll all the hexa-decimal
 numbers and letters on the display. You will need at least
 four 7-Segment digits. otherwise it won't really look that good.
 */
void scrollDigits() {
  for(int i=0;i<13;i++) {
    lc.setDigit(0,3,i,false);
    lc.setDigit(0,2,i+1,false);
    lc.setDigit(0,1,i+2,false);
    lc.setDigit(0,0,i+3,false);
    delay(delaytime);
  }
  lc.clearDisplay(0);
  delay(delaytime);
}

void loop() { 
  writeArduinoOn7Segment();
  scrollDigits();
}

Но как выводить значения какойто переменной подскажите ?

mag155
Offline
Зарегистрирован: 21.12.2017

Народ как вывести значение переменной на надо ???

Гриша
Offline
Зарегистрирован: 27.04.2014

mag155 пишет:

Нашел такой пример....

Но как выводить значения какойто переменной подскажите ?

в вашем примере все написано, чего еще Вам сказать, даже не представляю... могу повторить заезженную фразу:

Valera19701 пишет:

 учите матчасть

ser-vasin пишет:

учите матчасть

AlexFisher пишет:

Учите матчасть!

Гриша
Offline
Зарегистрирован: 27.04.2014

mag155 пишет:
Народ как вывести значение переменной на надо ???

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

mag155
Offline
Зарегистрирован: 21.12.2017

Да все работает. Это мой первый индикатор. Подскажите как вывести значение с потенцыометра например. Буду на благодарен.

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

mag155 пишет:
Это мой первый индикатор. Подскажите как вывести значение с потенцыометра например.

Ты уже научился выводить значение с потенциометра в монитор порта (serial) ?

mag155
Offline
Зарегистрирован: 21.12.2017

Да.

mag155
Offline
Зарегистрирован: 21.12.2017

Я так понимаю смысл с экраном похожий ? Но как конкретно это сделать подскажите ???

mag155
Offline
Зарегистрирован: 21.12.2017
unsigned long delaytime=250;
#include "LedControl.h"
LedControl lc=LedControl(12,11,10,1);
//pin 12 is connected to the DataIn
//pin 11 is connected to the CLK
//pin 10 is connected to LOAD
#define potent_pin 3
int val;   

void setup() {
  lc.shutdown(0,false);
  lc.setIntensity(0,8);
  lc.clearDisplay(0);
Serial.begin(9600); 

}
void writeArduinoOn7Segment(){
 val = analogRead(potent_pin); 
  val = map(val, 0, 1200, 0, 250); 
 val = constrain(val, 0, 250);
lc.setRow(0,0,val);
 Serial.println(val);


Напрвление хоть правильно ??

mag155
Offline
Зарегистрирован: 21.12.2017

????

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

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

Я п таких гнал с форума ссаными тряпками.

mag155
Offline
Зарегистрирован: 21.12.2017

Я имел в виду что индикатор хоть что то показывает.