управление цифровым дисплеем

maxo127
Offline
Зарегистрирован: 11.12.2013

Задача: управление дисплея валютообменного пункта с компютера на расстоянии ок. 20 м (WiFi, LAN).

Skype: maxo127

Email: maxo127 на мейл ру

http://i016.radikal.ru/1312/8e/a99462a7347a.jpg

http://s52.radikal.ru/i137/1312/7f/3ced61cdea5f.png

 

JollyBiber
JollyBiber аватар
Offline
Зарегистрирован: 08.05.2012

Краткость - сестра таланта.

 

maxo127
Offline
Зарегистрирован: 11.12.2013

Моя то есть?

А что там распространятся - надо иметь возможность с РС менять число и все.

 

Tomasina
Tomasina аватар
Offline
Зарегистрирован: 09.03.2013

ГМ, а зачем? Все эти табло в комплекте имеют пульт ДУ.

maxo127
Offline
Зарегистрирован: 11.12.2013

Не все. Например, то которое я собираюсь сделать, не будет иметь. Ну если сам же не сделаю :)

teodor4ik
Offline
Зарегистрирован: 04.11.2013

Тоже таким сношаю себе мосх.

Потому рискну дополнить ТСа

Железо: 328Р+W5100+Х*(max7219+8 1.5" семисегментника) пара-тройка резисторов/кондеев. (Буржуи пишут что для 343 (1.5") семисегментов при 8*"8." мощи макса вполне хватает на шиме 10/16 без дополнительного внешнего усиления.)

Пульт это карашо, но при поднятом серваке на дуине, можно менять курсы, хоть из другого города не выходя на улицу и не дублируя аппаратные экраны. Также можна еще одним контроллером поменять все курсы по стране в один клик. Дороже по железу на котейки. Если автор решит городить сам, подкину идеек :) Сам пока жду прихода от китайцев, потому только в теории.

maxo127
Offline
Зарегистрирован: 11.12.2013

teodor4ik

Правда ничего не понял, но в целом согласен :)

 

Нагрузка на сегменте будет ок 35 ма. Может кто подскажет что кроме самого Ардуино нужно для управления - микросхемы какие и сколько, в соединениях сам разберусь, просто подскажите оптимальное решение.

Ардуино получил уже, вникаю потихоньку.

 

teodor4ik
Offline
Зарегистрирован: 04.11.2013

Валют сколько? Какие конкретно семисегментники? Почитай это: 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 можна поднять вебсервер простенький и не очень. Вводимые в форму поля можна передать на  экран. Я планирую писать их в ЕЕПРОМ и перегружать железку. В сетапе считывать с ЕЕПРОМа, вываливать не экран и более к нему не возвращатся до следующего ребута. (Даже отключение проца не помешает экрану работать). В луупе только вебсервер.

maxo127
Offline
Зарегистрирован: 11.12.2013

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 на каждую четверку - тоже можно, но негуманно как-то. Как-никак, почти тезка мне :)

Проблемы тут:

1. Как соединить 2 шт MAX7219 к ардуино уно (можно чтоб получились 4 независимые числа?)
2. Написать скеч 
3. Как сделать так, чтобы с компа было удобно замена чисел
 
Про вебсервер - интересно но непонятно :(

 

 

teodor4ik
Offline
Зарегистрирован: 04.11.2013

Я ж дал ссылку на темку. Там есть ссыль на даташит к максам и схема включения светодиодов... они включаются последовательно, по 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". Тут они это обошли, а нам оно буит надо. Но, в конце концов все равно надо разбирать строку на составляющие полюбому, а там ужо и заготовочка есть. Отдельная кака: ИП адрес - его надо либо через ДХЦП получить и пробить у сисадмина по маку, либо предусмотреть изменение в процессе руками.

Также рекомендую почитать про работу с ЕЕПРОМом, там не слишком сложно, но пригодится.

maxo127
Offline
Зарегистрирован: 11.12.2013

Да, все просто когда есть опыт. Ладно поковыряюсь сам когда придут материалы, никто за это не возмется кажется, а самому со временем не очень, за полночь к компу попадаю только, а иногда и спать надо :)

С лентами это не от хорошей жизни - семисегментики в 25 см я не нашел просто. Есть модули, но даже в китае ок 30 усд, цена невозможная, плюс еще транспортировка с растаможкой - до 50 наберется. А с равномерностью - ничего, там с близка смотреть и не надо, я сделал одно цифру, 12 ледов в высоту - четко все видно. приемлемо по крайней. Если и оргстекло удачно подберется - совсем хорошо будет.

А вот плата точно пригодилось бы, но нету счас у них, да и гнут с транспортировкой.

С компа  - одно не пойму: даже не в методе соединения, а просто интерфейс - что надо будет делать чтоб цифру заменить на другое? Не будет же оператор скетч редактировать и загружать в Арду?

 

 

 

teodor4ik
Offline
Зарегистрирован: 04.11.2013

ты когда скетч залил в консоль выводишь данные(serial.write)? так же можна и с консоли получить (serial.read). Можна их получить и гет запросом по сети. Можна кодами с ИК пульта. Можна по радио с другой такой же дуины, но с экраном и кнопками, хоть смс-кой в гсм шилду.

Грубо. Задача делится на:

1. как-то получить данные (интерфейс на выбор).

2. обработать (извлечь то что надо из того что пришло).

3. сохранить в памяти.

4. вывести из памяти на экран.

 

Собсно далее скетч лепится из кусков, подходящих к ситуации.

maxo127
Offline
Зарегистрирован: 11.12.2013

Дык это... ну представим, девушка сидит в обменном пункте, ей позвонили сказали меняй курс. Она редактирует скетч и заливает в Арду?

 

teodor4ik
Offline
Зарегистрирован: 04.11.2013

ммм... НЕТ... она меняет переменные в памяти...

Любым из доступных ей методом из описанных выше.

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

const int redPin = 3;
const int greenPin = 5;
const int bluePin = 6;

void setup() {
  // initialize serial:
  Serial.begin(9600);
  // make the pins outputs:
  pinMode(redPin, OUTPUT); 
  pinMode(greenPin, OUTPUT); 
  pinMode(bluePin, OUTPUT); 

}

void loop() {
  // if there's any serial available, read it:
  while (Serial.available() > 0) {

    // look for the next valid integer in the incoming serial stream:
    int red = Serial.parseInt(); 
    // do it again:
    int green = Serial.parseInt(); 
    // do it again:
    int blue = Serial.parseInt(); 

    // look for the newline. That's the end of your
    // sentence:
    if (Serial.read() == '\n') {
      // constrain the values to 0 - 255 and invert
      // if you're using a common-cathode LED, just use "constrain(color, 0, 255);"
      red = 255 - constrain(red, 0, 255);
      green = 255 - constrain(green, 0, 255);
      blue = 255 - constrain(blue, 0, 255);

      // fade the red, green, and blue legs of the LED: 
      analogWrite(redPin, red);
      analogWrite(greenPin, green);
      analogWrite(bluePin, blue);

      // print the three numbers in one string as hexadecimal:
      Serial.print(red, HEX);
      Serial.print(green, HEX);
      Serial.println(blue, HEX);
    }
  }
}

 

Зависимо от введеннных в консоль значений меняется яркость диодов на ногах 3,5,6 и выводится цифра назад в консоль. Подразумевается что данные о яркости идут через запятую. Консолью может выступать, например, putty или на беду гипертерминал виндовый.

NeiroN
NeiroN аватар
Offline
Зарегистрирован: 15.06.2013

Лучше LAN - открывает веб страничку а там все крупными буквами просто и понятно даже самой тупой блондинке

maxo127
Offline
Зарегистрирован: 11.12.2013

Ну я не блондинка и не блондин даже, лысий вообще, но не пойму как-где-какую сраничку надо открывать, может дадите ссылку где прочитать, или объясните вкратце?

NeiroN
NeiroN аватар
Offline
Зарегистрирован: 15.06.2013

http://code.google.com/p/webduino/

http://playground.arduino.cc/Main/MAX72XXHardware

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

вобщем на 1 час работы - написать вебформу и слать на мах

 

maxo127
Offline
Зарегистрирован: 11.12.2013

NeiroN пишет:

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

40 мА тянет кажется, а больше и не потребляет сегмент на 12В (там 6 диодов по3 последовательно). И выход не пробет 12В надеюсь.

 

NeiroN пишет:

вобщем на 1 час работы - написать вебформу и слать на мах

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

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

NeiroN
NeiroN аватар
Offline
Зарегистрирован: 15.06.2013

MAX7219 только на 5 вольт если больше надо то так http://www.maximintegrated.com/app-notes/index.mvp/id/1196

вебформу с 4 полями. http://htmlbook.ru/html/input

P(form) =
"<form>\n"
"<h2>Dollars</h2>\n"
"<label for=\"dol_buy\">Buy prise </label><input type=\"text\" size=\"5\" name=\"dol_buy\" placeholder=\"00.00\">&nbsp;\n"
"<label for=\"dol_sell\">Sell prise </label><input type=\"text\" size=\"5\" name=\"dol_sell\" placeholder=\"00.00\"><br/>\n"
"<h2>Euros</h2>\n"
"<label for=\"eur_buy\">Buy prise </label><input type=\"text\" size=\"5\" name=\"eur_buy\" placeholder=\"00.00\">&nbsp;\n"
"<label for=\"eur_sell\">Sell prise </label><input type=\"text\" size=\"5\" name=\"eur_sell\" placeholder=\"00.00\"><br/>\n"
"<inpup type=\"submit\" value=\"OK\">\n"
"</form>\n";
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