управление цифровым дисплеем
- Войдите на сайт для отправки комментариев
Ср, 11/12/2013 - 14:50
Задача: управление дисплея валютообменного пункта с компютера на расстоянии ок. 20 м (WiFi, LAN).
Skype: maxo127
Email: maxo127 на мейл ру
http://i016.radikal.ru/1312/8e/a99462a7347a.jpg
http://s52.radikal.ru/i137/1312/7f/3ced61cdea5f.png
Краткость - сестра таланта.
Моя то есть?
А что там распространятся - надо иметь возможность с РС менять число и все.
ГМ, а зачем? Все эти табло в комплекте имеют пульт ДУ.
Не все. Например, то которое я собираюсь сделать, не будет иметь. Ну если сам же не сделаю :)
Тоже таким сношаю себе мосх.
Потому рискну дополнить ТСа
Железо: 328Р+W5100+Х*(max7219+8 1.5" семисегментника) пара-тройка резисторов/кондеев. (Буржуи пишут что для 343 (1.5") семисегментов при 8*"8." мощи макса вполне хватает на шиме 10/16 без дополнительного внешнего усиления.)
Пульт это карашо, но при поднятом серваке на дуине, можно менять курсы, хоть из другого города не выходя на улицу и не дублируя аппаратные экраны. Также можна еще одним контроллером поменять все курсы по стране в один клик. Дороже по железу на котейки. Если автор решит городить сам, подкину идеек :) Сам пока жду прихода от китайцев, потому только в теории.
teodor4ik
Правда ничего не понял, но в целом согласен :)
Нагрузка на сегменте будет ок 35 ма. Может кто подскажет что кроме самого Ардуино нужно для управления - микросхемы какие и сколько, в соединениях сам разберусь, просто подскажите оптимальное решение.
Ардуино получил уже, вникаю потихоньку.
Валют сколько? Какие конкретно семисегментники? Почитай это: http://arduino.ru/forum/apparatnye-voprosy/7-segmentnyi-indikator-pitanie
там особо интересны ссылки на мах7219 и его подключение через "усилители"(в пн кину с работы интересную ссылку по включению мощных семисегментов). Сам макс переваривает 500мА, а дальше считаем:
к-во фифр*к-во включеных сегментов*ток сегмента. тоесть потолок 8*7.5(точка дохлее)*35= 2.1А. На самом максе7219 есть ШИМ регулировка яркости от 1 до 16. Итого 3 можна ставить спокойно, возможно 4. Т.к. 8ки будут редко и не все, то можна смело считать 8*5.5*35=1.5, тоесть 6-7 тож должно покатить. Опять же, я уже думаю о 4х цифрах на 1 макс чтобы удвоить яркость не городя более ничего.
По сети. На *duino+w5100 можна поднять вебсервер простенький и не очень. Вводимые в форму поля можна передать на экран. Я планирую писать их в ЕЕПРОМ и перегружать железку. В сетапе считывать с ЕЕПРОМа, вываливать не экран и более к нему не возвращатся до следующего ребута. (Даже отключение проца не помешает экрану работать). В луупе только вебсервер.
teodor4ik
Две валюты, как на первой ссылке с первого поста. Т. е. всего 4 числа по 4 цифр.
Цифры собираюсь делать из ленты типа http://www.ledvista.ie/commercial-led-lighting-systems/led-strip-lighting/red-led-strip-low-power-12v-ip65-5-metres-reel
Там по 3 СД последовательно с резистором, на 12 В. Ток ок. 35 мА. Да и не с токами проблема, поставлю чтото типа ULN2004 в конце концов. по MAX7219 на каждую четверку - тоже можно, но негуманно как-то. Как-никак, почти тезка мне :)
Проблемы тут:
Я ж дал ссылку на темку. Там есть ссыль на даташит к максам и схема включения светодиодов... они включаются последовательно, по 8 цыфирь на каждый. В скетче используется библиотечка к нему. ledcontrol.h команда выглядит как вывести число на такую-то позицию, такого-то по очереди чипа.
http://embedded-lab.com/blog/?p=6862 крайне в тему... там все крайне просто описано. Но для 5в, а не 12В. Предложенную затею с лед лентой считаю глупой, т.к. добиться ровного свечения будет крайне сложно. Как по мне то готовые 7сегментники очень упростят жисть. http://embedded-lab.com/blog/?p=7628 тут для 12В и выше. В твоем случае этих схем две на 2 макса. Ну и типок их там же и продает в сборе для ленивых.
Передача с компа. Вариантов много. Ком порт(ЮСБ) - тупо в порт команду и данные предварительно прописав их отработку, например "$D1_1234" $-шас буит команда "D1"- сменить 1й сегмент, 1234 собсно данные... "$P1_2" установить точку первого сегмента на 2ю позицию ... и т.п. Плохо то что комп рядом дожен быть.
Вебсервак: http://startingelectronics.com/tutorials/arduino/ethernet-shield-web-server-tutorial/basic-web-server/ расписано для того кто в вебе и дуине 0 полный. Правда надо будет поковыряться с обработкой данных из полей "Input". Тут они это обошли, а нам оно буит надо. Но, в конце концов все равно надо разбирать строку на составляющие полюбому, а там ужо и заготовочка есть. Отдельная кака: ИП адрес - его надо либо через ДХЦП получить и пробить у сисадмина по маку, либо предусмотреть изменение в процессе руками.
Также рекомендую почитать про работу с ЕЕПРОМом, там не слишком сложно, но пригодится.
Да, все просто когда есть опыт. Ладно поковыряюсь сам когда придут материалы, никто за это не возмется кажется, а самому со временем не очень, за полночь к компу попадаю только, а иногда и спать надо :)
С лентами это не от хорошей жизни - семисегментики в 25 см я не нашел просто. Есть модули, но даже в китае ок 30 усд, цена невозможная, плюс еще транспортировка с растаможкой - до 50 наберется. А с равномерностью - ничего, там с близка смотреть и не надо, я сделал одно цифру, 12 ледов в высоту - четко все видно. приемлемо по крайней. Если и оргстекло удачно подберется - совсем хорошо будет.
А вот плата точно пригодилось бы, но нету счас у них, да и гнут с транспортировкой.
С компа - одно не пойму: даже не в методе соединения, а просто интерфейс - что надо будет делать чтоб цифру заменить на другое? Не будет же оператор скетч редактировать и загружать в Арду?
ты когда скетч залил в консоль выводишь данные(serial.write)? так же можна и с консоли получить (serial.read). Можна их получить и гет запросом по сети. Можна кодами с ИК пульта. Можна по радио с другой такой же дуины, но с экраном и кнопками, хоть смс-кой в гсм шилду.
Грубо. Задача делится на:
1. как-то получить данные (интерфейс на выбор).
2. обработать (извлечь то что надо из того что пришло).
3. сохранить в памяти.
4. вывести из памяти на экран.
Собсно далее скетч лепится из кусков, подходящих к ситуации.
Дык это... ну представим, девушка сидит в обменном пункте, ей позвонили сказали меняй курс. Она редактирует скетч и заливает в Арду?
ммм... НЕТ... она меняет переменные в памяти...
Любым из доступных ей методом из описанных выше.
Например стандартный скетч из комплекта:
01
const
int
redPin = 3;
02
const
int
greenPin = 5;
03
const
int
bluePin = 6;
04
05
void
setup
() {
06
// initialize serial:
07
Serial
.begin(9600);
08
// make the pins outputs:
09
pinMode(redPin, OUTPUT);
10
pinMode(greenPin, OUTPUT);
11
pinMode(bluePin, OUTPUT);
12
13
}
14
15
void
loop
() {
16
// if there's any serial available, read it:
17
while
(
Serial
.available() > 0) {
18
19
// look for the next valid integer in the incoming serial stream:
20
int
red =
Serial
.parseInt();
21
// do it again:
22
int
green =
Serial
.parseInt();
23
// do it again:
24
int
blue =
Serial
.parseInt();
25
26
// look for the newline. That's the end of your
27
// sentence:
28
if
(
Serial
.read() ==
'\n'
) {
29
// constrain the values to 0 - 255 and invert
30
// if you're using a common-cathode LED, just use "constrain(color, 0, 255);"
31
red = 255 - constrain(red, 0, 255);
32
green = 255 - constrain(green, 0, 255);
33
blue = 255 - constrain(blue, 0, 255);
34
35
// fade the red, green, and blue legs of the LED:
36
analogWrite(redPin, red);
37
analogWrite(greenPin, green);
38
analogWrite(bluePin, blue);
39
40
// print the three numbers in one string as hexadecimal:
41
Serial
.print(red, HEX);
42
Serial
.print(green, HEX);
43
Serial
.println(blue, HEX);
44
}
45
}
46
}
Зависимо от введеннных в консоль значений меняется яркость диодов на ногах 3,5,6 и выводится цифра назад в консоль. Подразумевается что данные о яркости идут через запятую. Консолью может выступать, например, putty или на беду гипертерминал виндовый.
Лучше LAN - открывает веб страничку а там все крупными буквами просто и понятно даже самой тупой блондинке
Ну я не блондинка и не блондин даже, лысий вообще, но не пойму как-где-какую сраничку надо открывать, может дадите ссылку где прочитать, или объясните вкратце?
http://code.google.com/p/webduino/
http://playground.arduino.cc/Main/MAX72XXHardware
вопрос только потянет мах столько диодов или нет
вобщем на 1 час работы - написать вебформу и слать на мах
вопрос только потянет мах столько диодов или нет
40 мА тянет кажется, а больше и не потребляет сегмент на 12В (там 6 диодов по3 последовательно). И выход не пробет 12В надеюсь.
вобщем на 1 час работы - написать вебформу и слать на мах
вот с этим тяжелее - хоть убей не пойму какую вебформу писать надо, как ее на мах слать, вообще что для этого нужно...
может поможете поконкретнее, ато дума какая-то получается - вроде все правильно говорим, а толку никакого :(
MAX7219 только на 5 вольт если больше надо то так http://www.maximintegrated.com/app-notes/index.mvp/id/1196
вебформу с 4 полями. http://htmlbook.ru/html/input
01
P(form) =
02
"<form>\n"
03
"<h2>Dollars</h2>\n"
04
"<label for=\"dol_buy\">Buy prise </label><input type=\"text\" size=\"5\" name=\"dol_buy\" placeholder=\"00.00\"> \n"
05
"<label for=\"dol_sell\">Sell prise </label><input type=\"text\" size=\"5\" name=\"dol_sell\" placeholder=\"00.00\"><br/>\n"
06
"<h2>Euros</h2>\n"
07
"<label for=\"eur_buy\">Buy prise </label><input type=\"text\" size=\"5\" name=\"eur_buy\" placeholder=\"00.00\"> \n"
08
"<label for=\"eur_sell\">Sell prise </label><input type=\"text\" size=\"5\" name=\"eur_sell\" placeholder=\"00.00\"><br/>\n"
09
"<inpup type=\"submit\" value=\"OK\">\n"
10
"</form>\n"
;
11
server.printP(form);
эта форма создает get запрос по тому адресу где выводится - тоесть в корне
http://192.168.0.100/?dol_buy=00.00&dol_sell=00.00&eur_buy=00.00&eur_sell=00.00
Можно конечно и текущие значения подставлять в поля но это усложняет вывод формы в программе.
Хранить в памяти можно как побайтно строку так и два байта означающие целую и дробную части
вам нужно 4 переменных char* если строки и 8 переменных byte если разделять.
ИМХО удобнее строками, но кушает больше памяти. Вобщем паяйте, читайте документацию, если лень самому сделать skype:nxn_neiron?chat