на ибее есть предложения на MAX7456, тока максим их продает порядка 9 баксов, а там порядка 5-ти. смущает немного
Вид для печати
на ибее есть предложения на MAX7456, тока максим их продает порядка 9 баксов, а там порядка 5-ти. смущает немного
А с этого сайта кто пробовал?
http://orzparts.com/index.php?main_p...oducts_id=1243
Здесь кстати и датчики тока по 3 бакса http://orzparts.com/index.php?main_p...oducts_id=1519 , я много чего присмотрел тут.
поговаривают брачком приторговывают немножко
Не парьтесь . http://www.ebay.com/itm/250833287058...84.m1497.l2649 тут берите я от этого продавца 2 штуки получил .Вот только залить шрифты немогу:) поэтому толку от них нет
А есть-ли готовое решение (шилд) для arduino для формирования и обработки видео сигнала, кроме http://nootropicdesign.com/ve/ ?
Не такой навороченный...
Извините может глупость спрашиваю.А можно как нибудь инфу поступающую на дисплей типа HD44780 на мониторе продублировать
Можно, а зачем?
Собрал 5.1 декодер настройки через этот экран а он в багажнике.
Ребята, почему MAX7456 может дохнуть? Уже вторая на тот свет отправилась. Ума не приложу.
Произошла такая беда - перепрошивал max7456 - долго не получалось через hyper terminal, писал программу загрузки на python
результат следующий - вместо пробела на экране какая-то бяка см.рис.
Вложение 16547
При загрузке символов не исчезает -
Вложение 16545
можно как нибудь сбросить на дефолтные настройки ????
Вложение 16717
Добрый день, собрал, прошил шрифт, на пустом месте рисует такие треугольники, до замены шрифта такого не было, не знает никто в чем проблема? Просмотрел код, так и не понял как он считает номер символа, мне в принципе русский шрифт и не нужен, но под оригинальный оно не совпадает, где подправить не подскажите?
В таблице символов поменяйте местами пробел с треугольником
Чесно говоря я уже не помню, давно это было.
Я все делал по Datasheet
Вот правильный шрифт http://yadi.sk/d/oONQUmkfLrFvR
Парни а кто-нибудь знает как полностью слить с макса знакогенератор? Может кто скетч для ардуины писал, не поделитесь?
А max7456 должна сильно греться? Запаял, залил скетч, греется и не работает. Пока только понял, что не пишется регистр vm0 по той причине, что всегда Dmm=4, то есть, согласно даташиту, запись невозможна. А вот почему так происходит пока непонятно.
Выкладываю программку для редактирования символов MAX 7456.
Вложение 17840
Вложение 17841
В случаи совместного использования с Arduino(скетч в архиве) позволяет, записывать/читать как по символьно, так и всю EEPROM.
Программка писалась для себя, но может кому еще будет полезна, для запуска требуется наличие net framework 3.5.
В качестве подопытного была вот такая платка.
Вложение 17842
Вложение 17843
Спасибо! Полезная программа
Доброго времени суток. Собрал устройств, шрифты залил, но на экране не понятные кракозябры
Вложение 18474
В чем может быть проблема? Пробовал уже и стандартные шрифты загружать, ничего не изменилось.
Как с помощью данного кода вывести на экран значение переменной?
преобразовать переменную в ASCII
А под Arduino ESP8266 кто-нибудь цеплял это чудо? У меня в лоб не получилось:-(
Я подключал WiFi модуль ESP8266 к ардуино, крайне на стабильно работает. Постоянно подвисает
Здравствуйте. В первом посте есть программа для ардуины (скетч - не приятное слово). Так вот, при его проверке Вылезает ошибка: pinMode(VSYNC, INPUT); - эта переменная не задекларирована.
Из задекларированных:
#define DATAOUT 11//MOSI
#define DATAIN 12//MISO
#define SPICLOCK 13//sck
#define MAX7456SELECT 10//ss
Но у вас как-то работало? Или вы не собирали?
Я эту ошибку у многих в коде вижу, все откуда-то копипастили видимо. Какой это номер пина и для чего он нужен?
Сам нашел случайно в другом коде надо добавить строчку: #define VSYNC 0x02// INT0
Кто может прокомментировать код, не совсем понимаю, как происходит обмен Ардуино с MAX7456. Вначале мы присваиваем значение константам, которыми будем оперировать в коде? То есть, вызов константы например DMM_reg, даст нам значение 0х04, я правильно понимаю? Передача этого значения по SPI интерфейсу в MAX7456... тут не понимаю, что происходит. Ткните носом в литературу, а то не могу даже запрос в яндекс сформировать. Может туплю конечно.
Я хотел бы уточнить свой вопрос: как происходит в коде формирование пакета для MAX7456?
Я собирал и у меня все работало
Скорее всего при копировании первую строчку не докопировал, ага так и есть открыл скетч там все в порядке.
исправился, добавил потеряную строчку
Все остальные здесь копипастили, можете по дате размещения проверить
На момент публикации в рунете не было ни одной статьи
Проблема в том, что я пытаюсь написать свой код под Ардуино. И не могу понять, как там формируются команды для передачи в SPI для MAX7456. Сейчас перевожу даташит на MAX7456.
У меня задача в том, чтобы не символы выводить, а графическое изображение, изображение я разбил на символы, но надо не только вывести их на экран, а еще и смещать все вместе по команде с ардуино. Никаких переменных, только статическая картинка. Типа гироскопа автомобиля.
Здравствуйте, прошу прокомментировать данный кусочек кода.Не совсем понимаю, как работает.
В первой части вы создаете адреса:
(
void OSD_write_to_screen(const char s[], byte x, byte y, byte blink, byte invert)
),
а во второй отправляете их на MAX:
(
digitalWrite(MAX7456SELECT,LOW);
spi_transfer(DMM_reg);
spi_transfer(settings);
spi_transfer(DMAH_reg);
spi_transfer(char_address_hi);
spi_transfer(DMAL_reg);
spi_transfer(char_address_lo)
) ?
// ================================================== ==========
void OSD_write_to_screen(const char s[], byte x, byte y, byte blink, byte invert){ //создание функции OSD_write_to_screen
// с параметрами(числовая константа "s", байт "x", байт "y",байт "blink", байт "invert")
unsigned int linepos; //создание "linepos" без знаковой переменной
byte local_count; //создание байта "local_count"
byte settings, char_address_hi, char_address_lo; //создание байт "settings, char_address_hi, char_address_lo"
byte screen_char; //создание байта "screen_char"
local_count = 0; // Присвоение байту "local_count" значения "0"
char_address_hi = 0; // Присвоение байту "char_address_hi" значения "0"
char_address_lo = 0; // Присвоение байту "char_address_hi" значения "0"
linepos = y*30+x; // Присвоение байту "linepos" значения выражения "y*30+x" Где берутся значения для "x" и "y"
char_address_hi = linepos >> 8; // Присваивается байту "char_address_hi" значения 2х байтовой переменной "linepos".
// Вот это ">>" означает, что значение не может быть более 8 бит?
char_address_lo = linepos; //Присваивается байту "char_address_lo" значения 2х байтовой переменной "linepos"
// Я понимаю, что ждя MAX надо переслать два байта информации (старший байт и младший байт), видимо они и именуются тут
// "char_address_hi, char_address_lo". Подозреваю, что двухбайтный "linepos" содержит этот адрес из двух байт, но синтаксиса не понимаю.
settings = B00000001; // Присвоение байту "setting" значения в восьмеричной "B00000001" это 1 в десятичной
if (blink) { // если "значение параметра "blink"" - условие? условие чего, наличия параметра?
settings |= (1 << 4); //выполнить байт "setting" не равен выражению "(1 << 4)"
}
if (invert){ // если "значение параметра "invert"" - условие? условие чего, наличия параметра?
settings |= (1 << 3); //выполнить байт "setting" не равен выражению "(1 << 3)"
}
Попытался пошагово прокомментировать, чтобы понять для себя. поправьте, где ошибся пожалуйста.
Я так давно с ним разбирался, уже все забыл
По синтактаксису
Вот это ">>" это побитовый сдвиг вправо на восемь бит
char_address_hi - это старший байт адреса
char_address_lo - это младший байт адреса
settings |= (1 << 4); установить бит 4
settings |= (1 << 3); установить бит 3
- спасибо огромное, у меня завис поиск, пока пытался ему пояснить, что я хочу узнать, для чего эти знаки! Это многое объясняет, значит из двух байтовой переменной linepos вытесняется пошагово 8 бит младшего адреса, а его место занимает адрес старшего адреса, который уже укладывается в однобайтовую переменную char_address_hi.
Соответственно во втором выражении ничего не сдвигается и при присвоении linepos к char_address_lo, а т.к. char_address_lo - однобайтовая, то старший байт просто теряется и остается один байт - младший! УРА!!! :)
settings |= (1 << 4); установить бит 4 - этого пока не понял... зачем это делать, пойду поищу в интернете еще.
Вот тут вторая порция, тоже комментировал, как понял, но не все понял, я понимаю, что задолбал с дилетантскими вопросами, но вдруг кроме меня это еще кому надо, а вы, автор программы, хоть и давней, как говорится от первого лица...:rolleyes:
digitalWrite(MAX7456SELECT,LOW); // переводим MAX в режим приема данных
spi_transfer(DMM_reg); // команда отправляющая через интерфейс SPI в MAX7456 данные (DMM_reg это 0x04)
// в начале были задекларированы. почему 0х04? DMM - режим работы памяти. 04H - записываемый регистр из даташита?
spi_transfer(settings);
spi_transfer(DMAH_reg); // команда отправляющая через интерфейс SPI в MAX7456 данные (старший байт) или подготовка MAX
// к приему старшего байта адреса?
spi_transfer(char_address_hi); // команда отправляющая через интерфейс SPI в MAX7456 данные где взять символ (старший байт)
spi_transfer(DMAL_reg); // команда отправляющая через интерфейс SPI в MAX7456 данные (младший байт) или подготовка MAX
// к приему младшего байта адреса?
spi_transfer(char_address_lo); // команда отправляющая через интерфейс SPI в MAX7456 данные где взять символ (младший байт)
while(s[local_count]!='\0') // Запуск цикла с числовой константой "s" пока выражение (s[local_count]!='\0') - истина,
//будет выполнятся. синтаксис не понятен : s[local_count] - числовая константа байта "local_count"?
{
screen_char = s[local_count]; //
if(screen_char != 208 && screen_char != 209) // если байт "screen_char" не равен 208 и не равен 209 то...
//промежуток между 208 и 209 является условием... не понятно
{
spi_transfer(DMDI_reg); // отправить в MAX "DMDI_reg 0x07" вход данных памяти дисплея
spi_transfer(screen_char); // и отправить туда же байт "screen_char"
}
local_count++; // байт "local_count" +1
}
spi_transfer(DMDI_reg); // отправить в MAX "DMDI_reg 0x07" - вход данных памяти дисплея
spi_transfer(END_string); // отправить в MAX "END_string 0xff" - конец строки, это команда SPI ?
spi_transfer(DMM_reg); // отправить в MAX "DMDI_reg 0x07" - вход данных памяти дисплея
spi_transfer(B00000000); // отправить в MAX "B00000000" нуль... для сего его отправлять?
digitalWrite(MAX7456SELECT,HIGH); // конец приема данных.
нет, это команда для MAX7456Цитата:
spi_transfer(END_string); // отправить в MAX "END_string 0xff" - конец строки, это команда SPI ?
Вот это больше всего не понятно, прокомментируйте, если не сложно:
linepos = y*30+x; // Присвоение байту "linepos" значения выражения "y*30+x" Где берутся значения для "x" и "y"