Можно на компаратор подать через сопротивление побольше - он будет определять знак. А "по честному" сделать на ОУ сдвиг и масштабирование сигнала в нужный диапазон. Но... че то я сомневаюсь :)
Почему не канает то ? Потому что тахогенератор уже стоит ? Я думаю с него можно и частоту снять при желании.
Если вы про переполнение, то варианты разные есть. К примеру если у вас переменные int, а значения небольшие - вы на такое просто не нарветесь, а если byte и значения могут быть 250-255, то можно условие записать if (x -10 >= y) { }
int занимает 2 байта памяти, и может хранить числа от -32 768 до 32 767
попробуйте его переполнить ШИМом, а вот отправлять на ШИМ такое бесполезно, нужно приводить к байту и слидить за переполнением. В общих чертах, если я правильно понял вопрос.
Нет, просто такое условие будет работать корректно для того случая выше с byte. Если хотите именно ограничить, то if (x>=240) x = 240; или map() или еще какая нибудь математика.
Если Int может хранить и отрицательные числа значит можно по налоговому входу переводить например от 0 до 600 это минус 125 а от 600 до 1200 плюс 125 ?
Баловаться числами можно как угодно, но измерить отрицательное напряжение внутренним АЦП ардуины не получится, нужно собрать на ОУ схему сдвига уровня и запитать ее двуполярным напряжением или хитрозадый вариант - выпрямительный мост + детектор полярности напряжения на компараторе ардуины или какой то внешней схемой.
Аналоговые пины использовать для контроля оборотов... Оригинально. И чего люди прерывания используют, подключил и измеряй время между импульсами энкодера. Нет. Лучше сдвигать напряжение, только не понял какое напряжение. Двигатель периодически отключать и измерять вырабатываемое напряжение? Извращение в чистом виде
//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();
}
Но как выводить значения какойто переменной подскажите ?
Вас смутило изобилее способов в вашем примере? так выкиньте лишние и используйте только один - удобный для вашего случая. и вообще удалось запустить индикатор с вашим примером?
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);
а я смотрю. Мага, ты не меняешься. Все как всегда - сам ничего читать не желаешь, только канючишь готовый код у других. И - тоже как всегда - врешь что у тебя "все работает", а в следующем же сообщении опровергаешь это.
Тахогенератор , энкодер не капает
Можно на компаратор подать через сопротивление побольше - он будет определять знак. А "по честному" сделать на ОУ сдвиг и масштабирование сигнала в нужный диапазон. Но... че то я сомневаюсь :)
Почему не канает то ? Потому что тахогенератор уже стоит ? Я думаю с него можно и частоту снять при желании.
Думаю что энкодер все же подойдет . Как в случае не выполнения условия увиличивать шим ???
С увеличением зим помогла под. Библиотека.
Подскажите как написать условие если х больше у на какое-то число к примеру на десять.
if (x >= y + 10)
Погуглите эту тему - "поддержание оборотов коллекторного двигателя на ардуино". Есть что посмотреть.
Благодарю.
вот вариации на тему:
необходимо всегда помнить о переполнении переменно!!!
на пример:
-----------------
byte x, y;
y= 250;
if (x >= y + 10) { } // компилятор ошибки не покежет!!!! а работать не будет!!!!
-------------
if (x >= y + 10 || x <= y - 10) { } // больше или меньше т.е. не попали в ворота
ну и так далее.
эт да
Вы имеете в виду 250 ?
Нужно условие только если больше нужно как то ограничить чтоб не было больше 250 .
Если вы про переполнение, то варианты разные есть. К примеру если у вас переменные int, а значения небольшие - вы на такое просто не нарветесь, а если byte и значения могут быть 250-255, то можно условие записать if (x -10 >= y) { }
То есть в любом раскладе х будет максимум 240 ?
И почему если int то не может переполнится?
int занимает 2 байта памяти, и может хранить числа от -32 768 до 32 767
попробуйте его переполнить ШИМом, а вот отправлять на ШИМ такое бесполезно, нужно приводить к байту и слидить за переполнением. В общих чертах, если я правильно понял вопрос.
Нет, просто такое условие будет работать корректно для того случая выше с byte. Если хотите именно ограничить, то if (x>=240) x = 240; или map() или еще какая нибудь математика.
Или constrain ?
Если Int может хранить и отрицательные числа значит можно по налоговому входу переводить например от 0 до 600 это минус 125 а от 600 до 1200 плюс 125 ?
Баловаться числами можно как угодно, но измерить отрицательное напряжение внутренним АЦП ардуины не получится, нужно собрать на ОУ схему сдвига уровня и запитать ее двуполярным напряжением или хитрозадый вариант - выпрямительный мост + детектор полярности напряжения на компараторе ардуины или какой то внешней схемой.
А схему не подкините?
Аналоговые пины использовать для контроля оборотов... Оригинально. И чего люди прерывания используют, подключил и измеряй время между импульсами энкодера. Нет. Лучше сдвигать напряжение, только не понял какое напряжение. Двигатель периодически отключать и измерять вырабатываемое напряжение? Извращение в чистом виде
Поискать / почитать "сдвиг уровня оу ацп". Вот тут вроде что то похожее http://md4u.ru/viewtopic.php?t=2400
Кстати да. Вы же согласились на энкодер.
Хочется все же что без энкодера и таходатчиков. Подкинул два провода к двигателю и все.
Ага. Проще некуда. Ладно подожду когда сделаешь или бросишься эту затею
Да ладно такое делали в советском союзе на аналоговых компонентах.
Так зачем тогда тебе ардуина. Делай на аналоговых компонентах все
Хочу на ардуино размеры меньше возможностей больше .
Так ты не хочешь ими пользоваться)))
Нет хочу сделать свое.
Кто весел - тот смеется,
Кто хочет - тот добьется,
Кто ищет - тот всегда найдет!
:)
Истину глаголиш
Всех с праздником ПАСХИ !!!!
Братья, привет! Подскажите как выводить значение переменной на 4 сегментный экран , красненький такой на 4 цифры ?
способов слишком много, чего есть в наличии? То, что написано вообще не очем не сказано - это не технические данные.
Есть 4 разрядный 7 сегментный индикатор. На 12 пинов хочу на него выводить данные ( то есть значения переменных типа как в ком порт).
купить себе такой или похожий и жить станет значительно легче...
Ок. Куплю отпишусь.
Купил 6 сегментный индикатор на двух микросхемах hc595 как его подключить ?
Нашел такой пример
Но как выводить значения какойто переменной подскажите ?
Народ как вывести значение переменной на надо ???
Нашел такой пример....
Но как выводить значения какойто переменной подскажите ?
в вашем примере все написано, чего еще Вам сказать, даже не представляю... могу повторить заезженную фразу:
учите матчасть
учите матчасть
Учите матчасть!
Вас смутило изобилее способов в вашем примере? так выкиньте лишние и используйте только один - удобный для вашего случая. и вообще удалось запустить индикатор с вашим примером?
Да все работает. Это мой первый индикатор. Подскажите как вывести значение с потенцыометра например. Буду на благодарен.
Ты уже научился выводить значение с потенциометра в монитор порта (serial) ?
Да.
Я так понимаю смысл с экраном похожий ? Но как конкретно это сделать подскажите ???
Напрвление хоть правильно ??
????
а я смотрю. Мага, ты не меняешься. Все как всегда - сам ничего читать не желаешь, только канючишь готовый код у других. И - тоже как всегда - врешь что у тебя "все работает", а в следующем же сообщении опровергаешь это.
Я п таких гнал с форума ссаными тряпками.
Я имел в виду что индикатор хоть что то показывает.