Всем привет, вводные следующие: есть хорошие знания в электронике, есть небольшой опыт ковыряния кода для ардуино, сам язык не знаю но пытаюсь понять, что-то получается а что-то нет. Времени на изучение языка нет совсем т.к. работаю на железке по приборам безопасности, там голова другим забита даже на выходных.
Прошу помощи у знающих. Выкружил несколько светодиодных индикаторов HDSP-2111, HDSP-2113. Нашел скетч в интернетах который выводит на индикатор текст “HELLO” несколько секунд, а далее скроллит другой текст. Так вот, вопрос следующий: я хочу на этот индикатор вывести вольтметр, спидометр, амперметр и так далее, не важно, в общем любой текст, любой параметр “прикладного” кода. Может быть есть тут добрые люди которые помогут написать код, либо ткнуть носом куда и что делать и где какаие буковки писать? Вот купил я дисплей 1602А, с ним получилось разобраться, с выводом данных на аналоговый вход телевизора тоже разобрался, а вот с этим не могу т.к. в исходном скетче нет описания как минимум. А ещё на сайте где взял скетч в описании написано что можно подключить 2 таких индикатора, что-бы они были “как один”, но тоже не понял как. Помогите, 3 день уже пытаюсь видоизменить этот скетч и ничего не получается…
Скетч который нашел в интернетах(так называемый исходный):
#include <Arduino.h>
int hdsp_a0 = 10;
int hdsp_a1 = 11;
int hdsp_a2 = 12;
int hdsp_a3 = A0;
int hdsp_a4 = A1;
int hdsp_d0 = 2;
int hdsp_d1 = 3;
int hdsp_d2 = 4;
int hdsp_d3 = 5;
int hdsp_d4 = 6;
int hdsp_d5 = 7;
int hdsp_d6 = 8;
int hdsp_d7 = 9;
int hdsp_wr = A2;
int hdsp_ce0 = A3;
int hdsp_ce1 = A4;
int e_pulse = 1;
void send_udc(int character, const char* matrix);
void setup()
{
pinMode(hdsp_a0, OUTPUT);
pinMode(hdsp_a1, OUTPUT);
pinMode(hdsp_a2, OUTPUT);
pinMode(hdsp_a3, OUTPUT);
pinMode(hdsp_a4, OUTPUT);
pinMode(hdsp_d0, OUTPUT);
pinMode(hdsp_d1, OUTPUT);
pinMode(hdsp_d2, OUTPUT);
pinMode(hdsp_d3, OUTPUT);
pinMode(hdsp_d4, OUTPUT);
pinMode(hdsp_d5, OUTPUT);
pinMode(hdsp_d6, OUTPUT);
pinMode(hdsp_d7, OUTPUT);
pinMode(hdsp_ce0, OUTPUT);
pinMode(hdsp_ce1, OUTPUT);
pinMode(hdsp_wr, OUTPUT);
digitalWrite(hdsp_ce0, HIGH);
digitalWrite(hdsp_ce1, HIGH);
digitalWrite(hdsp_wr, HIGH);
send_udc(0,
“…”
“…”
“...."
"....”
“…”
“…”
“.."
);
send_udc(1,
"..”
“.."
"..."
"..."
“…”
"..."
"..*.”
);
}
void send_byte(int chip, int data, int adr)
{
if(chip == 0) {
digitalWrite(hdsp_ce0, LOW);
digitalWrite(hdsp_ce1, HIGH);
} else {
digitalWrite(hdsp_ce0, HIGH);
digitalWrite(hdsp_ce1, LOW);
}
if(data & 0x01) digitalWrite(hdsp_d0, HIGH);else digitalWrite(hdsp_d0, LOW);
if(data & 0x02) digitalWrite(hdsp_d1, HIGH);else digitalWrite(hdsp_d1, LOW);
if(data & 0x04) digitalWrite(hdsp_d2, HIGH);else digitalWrite(hdsp_d2, LOW);
if(data & 0x08) digitalWrite(hdsp_d3, HIGH);else digitalWrite(hdsp_d3, LOW);
if(data & 0x10) digitalWrite(hdsp_d4, HIGH);else digitalWrite(hdsp_d4, LOW);
if(data & 0x20) digitalWrite(hdsp_d5, HIGH);else digitalWrite(hdsp_d5, LOW);
if(data & 0x40) digitalWrite(hdsp_d6, HIGH);else digitalWrite(hdsp_d6, LOW);
if(data & 0x80) digitalWrite(hdsp_d7, HIGH);else digitalWrite(hdsp_d7, LOW);
if(adr & 0x01) digitalWrite(hdsp_a0, HIGH);else digitalWrite(hdsp_a0, LOW);
if(adr & 0x02) digitalWrite(hdsp_a1, HIGH);else digitalWrite(hdsp_a1, LOW);
if(adr & 0x04) digitalWrite(hdsp_a2, HIGH);else digitalWrite(hdsp_a2, LOW);
if(adr & 0x08) digitalWrite(hdsp_a3, HIGH);else digitalWrite(hdsp_a3, LOW);
if(adr & 0x10) digitalWrite(hdsp_a4, HIGH);else digitalWrite(hdsp_a4, LOW);
delay(e_pulse);
digitalWrite(hdsp_wr, LOW);
delay(e_pulse);
digitalWrite(hdsp_wr, HIGH);
}
void send_text(const char* text)
{
int n=strlen(text);
if(n>8) n=8;
char buf=" “;
strncpy(buf, text, n);
for(int i=0; i<8; i++) {
send_byte(0, buf[i], 0x18+i);
}
}
void scroll_text(const char* text)
{
String output;
output.concat(” “);
output.concat(text);
output.concat(” ");
for(unsigned int i=0; i<output.length()-7; i++) {
const char outputBuf = output.c_str();
send_text(&outputBuf[i]);
delay(250);
}
}
void send_udc(int character, const char matrix)
{
if (strlen(matrix) < 35) {
return;
}
send_byte(0, character, 0x00);
send_byte(1, character, 0x00);
int adr = 0x08;
for (int line=0; line<7; line++) {
char byte = 0;
char bit = 0x10;
for (int pos=0; pos<5; pos++) {
if(matrix[line5+pos] == '') {
byte = byte | bit;
}
bit >>= 1;
}
send_byte(0, byte, adr);
send_byte(1, byte, adr);
adr++;
}
}
void loop()
{
send_byte(0, 0x06, 0x10);
send_text(“Hello!”);
delay(4000);
scroll_text(“Scrolling text and custom characters \x81\x81\x81”);
delay(1000);
}