74HC595 & LCD нужна подсказка
- Войдите на сайт для отправки комментариев
Чт, 23/02/2012 - 22:06
Попробовал эту библиотеку:
http://arduino.cc/playground/Main/LiquidCrystal#Description
но что то не получается и с какого боку копать не понятно.
Может кто победил ее?
Первое, что приходит на ум - неправильное подключение микросхемы. Но на приведенной фотографии ее не видно. Что-то посоветовать невозможно.
Второе, что приходит на ум - какая-то ошибка в программе. Но программа тоже не приведена. Обсуждать нечего.
Третье, что приходит на ум - требуется рабочее решение "с нуля". Едва ли кто-то бросится решать эту задачу для вас. Остается поиск... Google и Yandex вам в помощь. Почитайте, например, что советует известный персонаж на арене Arduino - ladyada (ответ #5). Может быть, что-то прояснится.
Рекомендую для прочтения статью на Робокрафте robocraft.ru/blog/arduino/541.html - там не только увеличивают количество входов и выходов, но и переопределяют драйвера управления пинами таким образом, чтобы стандартные библиотеки работали через расширенные порты. Там и найдете решение.
Сейчас я тоже занялся lсd дисплеем через регистр. Попытался сделать как написано в статье. Тот же код так же подключил дисплей через 2 регистра. Толку 0. Стать я не очень хорошо написана. Я ничего не понял из неё. А особенно скажите откуда берётся переменная uint8_t. Я когда статью про регистры читал она тоже там присутствовала. Но не где не написано что это.
unit8_t это не переменная, это тип данных, соответствует unsigned char. У автора, наверно, хедер от атмеги подключен, и он привык к этому типу.
Статья, конечно, не подарок, но основная идея там правильная - это переопределение драйвера лонии порта при переходе на внешние регистры.
01
#include <SPI.h>
02
03
enum
{ REG_SELECT = 8 };
// пин, управляющий защёлкой (SS в терминах SPI)
04
05
void
setup()
06
{
07
/* Инициализируем шину SPI. Если используется программная реализация,
08
* то вы должны сами настроить пины, по которым будет работать SPI.
09
*/
10
SPI.begin();
11
12
pinMode(REG_SELECT, OUTPUT);
13
digitalWrite(REG_SELECT, LOW);
// выбор ведомого - нашего регистра
14
SPI.transfer(0);
// очищаем содержимое регистра
15
/* Завершаем передачу данных. После этого регистр установит
16
* на выводах QA-QH уровни, соответствующие записанным битам.
17
*/
18
digitalWrite(REG_SELECT, HIGH);
19
}
20
21
22
/* Эта функция сдвигает биты влево на одну позицию, перемещая старший бит
23
* на место младшего. Другими словами, она "вращает" биты по кругу.
24
* Например, 11110000 превращается в 11100001.
25
*/
26
void
rotateLeft(uint8_t &bits)
27
{
28
uint8_t high_bit = bits & (1 << 7) ? 1 : 0;
29
bits = (bits << 1) | high_bit;
30
}
31
32
33
void
loop()
34
{
35
static
uint8_t nomad = 1;
// это наш бегающий бит
36
37
/* Записываем значение в сдвиговый регистр */
38
digitalWrite(REG_SELECT, LOW);
39
SPI.transfer(nomad);
40
digitalWrite(REG_SELECT, HIGH);
41
/* И вращаем биты влево - в следующий раз загорится другой светодиод */
42
rotateLeft(nomad);
43
44
delay(1000 / 8);
// пробегаем все 8 светодиодов за 1 секунду
45
}
46
47
Идея то правильная. Только я не могу понять. Собрал всё также как и в статье и прошил тем же скетчем. Но не работает. А ещё забыл сказать у меня дисплей то другой. <br>Он у меня такой же как и в первом посту. 16/2. Как используя ту статью адаптироваться к моему дисплею? + я не очень понимаю как происходит обращение к регистру. <br>Можно ли как то рассказать поле подробней и понятней. Кто ни буть пробовал так вот подключить дисплей?<br>Объясните тогда как работает этот скетч. Статья про регистры.<br>А именно расскажите про каждые строки. Част строк вообще не подписаны что они делают<br>
1
Это ж просто "бегающий бит" по внешнему регистру.
В статье, на которую я указал много всего:
1. Определяется новый интерфейс:
1
class
LineDriver
2
{
3
public
:
4
virtual
void
lineConfig(uint8_t pin, uint8_t mode) = 0;
5
virtual
void
lineWrite(uint8_t pin, uint8_t value) = 0;
6
virtual
uint8_t lineRead(uint8_t pin) = 0;
7
};
2. Драйвер по-умолчанию
01
class
DefaultLineDriver:
public
LineDriver
02
{
03
public
:
04
virtual
void
lineConfig(uint8_t pin, uint8_t mode)
05
{
06
pinMode(pin, mode);
07
}
08
09
virtual
void
lineWrite(uint8_t pin, uint8_t value)
10
{
11
digitalWrite(pin, value);
12
}
13
14
virtual
uint8_t lineRead(uint8_t pin)
15
{
16
return
digitalRead(pin);
17
}
18
19
static
DefaultLineDriver* getInstance()
20
{
21
return
&g_instance;
22
}
23
24
private
:
25
static
DefaultLineDriver g_instance;
// один глобальный экземпляр драйвера
26
};
3. Расширяют (переопределяют) класс LiquidCrystal
01
// LiquidCrystalExt.h
02
class
LiquidCrystal:
public
Print
03
{
04
…
05
public
:
06
LiquidCrystal(uint8_t rs, uint8_t enable,
07
uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3,
08
LineDriver *line_driver = 0, uint8_t backlight = 0xFF);
09
…
10
protected
:
11
void
init(uint8_t fourbitmode, uint8_t rs, uint8_t rw, uint8_t enable,
12
uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3,
13
uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7,
14
LineDriver *line_driver = 0, uint8_t backlight = 0xFF);
15
…
16
LineDriver *_pins;
17
…
18
};
19
20
// LiquidCrystalExt.cpp
21
LiquidCrystal::LiquidCrystal(uint8_t rs, uint8_t enable,
22
uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3,
23
LineDriver *line_driver, uint8_t backlight)
24
{
25
init(1, rs, 0xFF, enable, d0, d1, d2, d3, 0, 0, 0, 0, backlight, line_driver);
26
}
27
28
void
LiquidCrystal::init(uint8_t fourbitmode, uint8_t rs, uint8_t rw, uint8_t enable,
29
uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3,
30
uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7,
31
uint8_t backlight, LineDriver *line_driver)
32
{
33
_pins = line_driver;
34
35
if
(!_pins)
36
_pins = DefaultLineDriver::getInstance();
37
…
38
}
4. Добавляют поддержку интерфейса LineDriver в класс для работы с SPI
01
class
SPI_Bus:
public
LineDriver
02
{
03
public
:
04
…
05
virtual
void
lineConfig(uint8_t pin, uint8_t mode)
06
{
07
/* Оставляем метод пустым, т.к. возможность управления состоянием выводов
08
* зависит от конкретного устройства.
09
*/
10
}
11
12
virtual
void
lineWrite(uint8_t line_num, uint8_t value)
13
{
14
/* Каждому байту соответствует 8 "линий данных" (виртуальных пинов).
15
* Проверяем, не превышает ли номер линии максимальный.
16
*/
17
if
(line_num < m_bandwidth * 8)
18
{
19
/* Рассчитываем номер байта в буфере и номер бита в байте */
20
const
uint8_t byte_index = line_num / 8,
21
bit_index = line_num % 8;
22
23
/* Сначала стираем нужный бит в буфере */
24
m_buffer[byte_index] &= ~(1 << bit_index);
25
/* Потом устанавливаем нужное значение бита ("уровень на линии") */
26
m_buffer[byte_index] |= (value == LOW ? 0 : 1) << bit_index);
27
28
/* Шлём изменённое содержимое буфера. Если работаем со сдвиговым
29
* регистром, то нужная ножка регистра поменяет свой уровень на
30
* тот, который задан в аргументе value.
31
*/
32
communicate(&SPI_Bus::operationSendBuffer);
33
}
34
}
35
36
virtual
uint8_t lineRead(uint8_t line_num)
37
{
38
/* Если такой линии нет, возвращаем "низкий уровень на линии" */
39
if
(line_num >= m_bandwidth * 8)
40
return
LOW;
41
42
/* Линия есть, считываем состояние линий в буфер */
43
communicate(&SPI_Bus::operationReceiveEntireBuffer);
44
45
const
uint8_t byte_index = line_num / 8,
46
bit_index = line_num % 8;
47
48
/* Читаем нужный бит из буфера и возвращаем соответствующий ему
49
* уровень на линии.
50
*/
51
return
(m_buffer[byte_index] >> bit_index) & 1 ? HIGH : LOW;
52
}
53
…
54
};
5. Передают указатель на объект сдвигового регистра в конструктор объекта LCD
1
SPI_Bus shift_register(_8bit, 10);
2
3
/* А LCD-дисплей подключен к сдвиговому регистру:
4
* RS ⇨ выход QA (0)
5
* E ⇨ QB (1)
6
* DB4-DB7 ⇨ QC-QF (2-5)
7
*/
8
LiquidCrystal lcd(0, 1, 2, 3, 4, 5, &shift_register);
P.S. Все тексты программ взяты из статьи Подключаем кучу устройств к Arduino по 5 проводам / Arduino-мания :) / RoboCraft
Это всё я уже видел. И ничего не понял из того что написано. В конечном итоге все эти манипуляции в библиотеке сводятся тому что мы её скачиваем и ставим к себе уже готовую. А что писать в скетче мне не ясно. И как подключить дисплей к регистру? Можно ли обойтись одним регистром? Об этом ничего не сказано.
Про бегающий бит тоже есть вопросы.
Как работает это
void rotateLeft(uint8_t &bits)
{
uint8_t high_bit = bits & (1 << 7) ? 1 : 0;
bits = (bits << 1) | high_bit;
}
Что значит эта строка и что она хранит
static uint8_t nomad = 1; // это наш бегающий бит
как выставляются выходы если судя по записи мы туда послали единицу?
SPI.transfer(nomad);
Это просто зацикленный сдвиг битов. Вам, как я понимаю, она Вам вообще никаким боком не нужна.
Ну а работает она просто. В первой строке проверяется наличие старшего бита (1<<7) - маска, "переводится" как 1, сдвинутый влево 7 раз. То есть это ни что иное, как 0b10000000 (двоич.) Если старший бит есть, то промежуточная переменная устанавливается в 1 (0b00000001) - для переноса при сдвиге старшего бита в позицию младшего.
Во вторй строке содержимое bits сдвигается на одну позицию влево и, если был старший бит (high_bit), то он записывается в младшую позицию.
А чтобы было понятно, что писать в скетче, нужно понимать, "как это работает". Ну или хотя бы схему и скетч "в студию" - поможем разобраться.
Послать единицу, это послать 110=000000012 - то есть в 1 установится 1 выход из 8 на регистре
С самим регистром и статьёй я разобрался. Понял как работает SPI.transfer(nomad); или
shiftOut(dataPin, clockPin, MSBFIRST, numberToDisplay) (статья); только мне непонятна эта переменная MSBFIRST. А так всё ок. Возник вопрос в shiftOut можно задать пины какие хочеш (1,2,3) а в SPI.transfer я так понял нет?
Вторая часть моего вопроса. С регистром для одного проекта разобрался но для другого необходимо 2 регистра. На одном висит монитор на другом светодиоды. Как подключить монитор (16/2) к регистру? Только необходимо монитор полностью к регистру привязать. И что писать в скетче? Ориентируюсь на статью.
Шикарно разобрался))))))
01
#include <LineDriver.h>
02
#include <SPI.h>
03
#include <SPI_Bus.h>
04
#include <LiquidCrystalExt.h>
05
SPI_Bus shift_register(_8bit, 10);
06
07
LiquidCrystal lcd(1, 2, 3, 4, 5, 6, &shift_register);
08
09
10
void
setup() {
11
12
/* Инициализируем дисплей: 2 строки по 16 символов */
13
lcd.begin(16, 2);
14
/* Выводим на дисплей традиционную фразу (: */
15
lcd.print(
"hello, world!"
);
16
17
}
18
19
void
loop() {
20
lcd.setCursor(0, 1);
21
/* Выводим на дисплей число секунд, прошедших с момента старта Arduino */
22
lcd.print(millis() / 1000);
23
}
Опять что то не работает. Перетыкал провода и снова не пашет
Я вроде разобрался с подключением и библиотеками.
Их много и разные, поэтому много путаницы.
В результате схема:
Библиотека к ней LiquidCrystal_v1.1.7.1.zip
И скетч:
01
#include <LiquidCrystal_SR.h>
02
03
LiquidCrystal_SR lcd(11,12,8);
04
// | | | Enable Pin
05
// | \-- Clock Pin
06
// \---- Data Pin
07
08
// Creat a set of new characters
09
byte
armsUp[8] = {0b00100,0b01010,0b00100,0b10101,0b01110,0b00100,0b00100,0b01010};
10
byte
armsDown[8] = {0b00100,0b01010,0b00100,0b00100,0b01110,0b10101,0b00100,0b01010};
11
12
void
setup(){
13
14
lcd.begin(16,2);
// initialize the lcd
15
16
lcd.createChar (0, armsUp);
// load character to the LCD
17
lcd.createChar (1, armsDown);
// load character to the LCD
18
19
lcd.home ();
// go home
20
lcd.print(F(
"LiquidCrystal_SR"
));
21
}
22
23
void
loop(){
24
// Do a little animation
25
for
(
int
i = 0; i <= 15; i++) showHappyGuy(i);
26
for
(
int
i = 15; i >= 0; i--) showHappyGuy(i);
27
}
28
29
void
showHappyGuy(
int
pos){
30
lcd.setCursor ( pos, 1 );
// go to position
31
lcd.print(
char
(random(0,2)));
// show one of the two custom characters
32
delay(150);
// wait so it can be seen
33
lcd.setCursor ( pos, 1 );
// go to position again
34
lcd.print(F(
" "
));
// delete character
35
}
Ну и наконец на бредборде:
Буду рад если кому то это помогло!
Всем добрый день, никак не могу разобраться с подключение lcd через регистр, может есть у кого нибудь схемка? Делал все как в статье robocraft.ru/blog/arduino/541.html, но чтото не выходит
с Arduino (назовем её мама) отправляем команды через Serial Pin (D1 - TX) символы например // Serial.println('W');..
Atmega328 (назовем её дочка) слушает команды через ВХод Serial Pin (D0 - RX) ..
В зависимости от пришедшего символа от мамы,дочка выполнит что хотим.
Таким способом через всего один пин на Arduino
мы можем управлять дополнительно 18 пинами.
Постскриптум В этом уроке я демонстрирую взаимодействия 2 ARDUINO через Serial
саму идею можно расширять до бесконечности.
Учитывая падение цен на Microcontrolle?r ATMEGA328,
получается довольно приятная альтернатива, микросхемам сдвиговым регистрам 74HC595,74HC165
------------------------------------------
скетч sketch: v.01 Arduino увеличиваем кпличество пинов Atmega328 Increase pins
http://yadi.sk/d/lIVZHuBq7GMhG
================================
что нам понадобиться.
Аппаратное:
1. Arduino -1 штука.
2. ATMEGA328P-PU Microcontrolle?r With ARDUINO UNO Bootloader -1 штука.
3. 16.000MHZ 16MHZ 16M HZ HC-49S Crystal Oscillator -1 штука.
4. Светодиоды нужны только для визуального контроля за процессом.
001
/* v.01 Arduino увеличиваем кпличество пинов Atmega328 Increase pins
002
sketch №1 мама - mother
003
004
****************************
005
урок от Дмитрия Осипова. <a href="http://www.youtube.com/user/d36073?feature=watch" title="http://www.youtube.com/user/d36073?feature=watch" rel="nofollow">http://www.youtube.com/user/d36073?feature=watch</a>
006
v.01 Arduino увеличиваем кпличество пинов Atmega328 Increase pins
007
Version 0.1-2013/07/27
008
-----------------------------
009
изменения; в Version 0.1-2013/07/27
010
1.
011
2.
012
------------------------------
013
идеология;
014
с Arduino (назовем её мама) отправляем команды через Serial Pin (D1 - TX) символы например // Serial.println('W');..
015
Atmega328 (назовем её дочка) слушает команды через ВХод Serial Pin (D0 - RX) ..
016
В зависимости от пришедшего символа от мамы,дочка выполнит что хотим.
017
Таким способом через всего один пин на Arduino
018
мы можем управлять дополнительно 18 пинами.
019
020
Постскриптум В этом уроке я демонстрирую взаимодействия 2 ARDUINO через Serial
021
саму идею можно расширять до бесконечности.
022
Учитывая падение цен на Microcontrolle?r ATMEGA328,
023
получается довольно приятная альтернатива, микросхемам сдвиговым регистрам 74HC595,74HC165
024
025
------------------------------------------
026
скетч sketch: v.01 Arduino увеличиваем кпличество пинов Atmega328 Increase pins
027
<a href="http://yadi.sk/d/lIVZHuBq7GMhG" title="http://yadi.sk/d/lIVZHuBq7GMhG" rel="nofollow">http://yadi.sk/d/lIVZHuBq7GMhG</a>
028
================================
029
что нам понадобиться.
030
Аппаратное:
031
1. Arduino -1 штука.
032
2. ATMEGA328P-PU Microcontrolle?r With ARDUINO UNO Bootloader -1 штука.
033
3. 16.000MHZ 16MHZ 16M HZ HC-49S Crystal Oscillator -1 штука.
034
4. Светодиоды нужны только для визуального контроля за процессом.
035
--------------------------------
036
программное:
037
=======================================================
038
подробную видео инструкцию выложу здесь
039
040
++++++++++++++++++++++++++++++
041
Вспомогательные видео обзоры, скетчи.....
042
043
Самый дешевый Arduino Uno 5$ Minimal Atmega328 without Arduino Board
044
<a href="http://www.youtube.com/watch?v=joSc-AT8o5k" title="http://www.youtube.com/watch?v=joSc-AT8o5k" rel="nofollow">http://www.youtube.com/watch?v=joSc-AT8o5k</a>
045
046
*/
047
048
049
void
setup
() {
050
//Инициирует последовательное соединение и задает скорость передачи данных в бит/c (бод). Для обмена данными
051
Serial
.begin(9600);
052
}
053
054
void
loop
() {
055
//отправляем дочке команды
056
Serial
.println(
'W'
);
057
delay(1000);
058
Serial
.println(
'E'
);
059
delay(1000);
060
Serial
.println(
'R'
);
061
delay(1000);
062
Serial
.println(
'T'
);
063
delay(1000);
064
Serial
.println(
'Y'
);
065
delay(1000);
066
Serial
.println(
'U'
);
067
delay(1000);
068
Serial
.println(
'I'
);
069
delay(1000);
070
Serial
.println(
'O'
);
071
delay(1000);
072
Serial
.println(
'P'
);
073
delay(1000);
074
Serial
.println(
'A'
);
075
delay(1000);
076
Serial
.println(
'S'
);
077
delay(1000);
078
Serial
.println(
'D'
);
079
delay(1000);
080
Serial
.println(
'F'
);
081
delay(1000);
082
Serial
.println(
'G'
);
083
delay(1000);
084
Serial
.println(
'H'
);
085
delay(1000);
086
Serial
.println(
'J'
);
087
delay(1000);
088
Serial
.println(
'K'
);
089
delay(1000);
090
Serial
.println(
'L'
);
091
delay(1000);
092
}
093
094
095
**************************************************************************************************************
096
097
098
/* v.01 Arduino увеличиваем кпличество пинов Atmega328 Increase pins
099
sketch №2 дочка - child
100
101
****************************
102
урок от Дмитрия Осипова. <a href="http://www.youtube.com/user/d36073?feature=watch" title="http://www.youtube.com/user/d36073?feature=watch" rel="nofollow">http://www.youtube.com/user/d36073?feature=watch</a>
103
v.01 Arduino увеличиваем кпличество пинов Atmega328 Increase pins
104
Version 0.1-2013/07/27
105
-----------------------------
106
изменения; в Version 0.1-2013/07/27
107
1.
108
2.
109
------------------------------
110
идеология;
111
с Arduino (назовем её мама) отправляем команды через Serial Pin (D1 - TX) символы например // Serial.println('W');..
112
Atmega328 (назовем её дочка) слушает команды через ВХод Serial Pin (D0 - RX) ..
113
В зависимости от пришедшего символа от мамы,дочка выполнит что хотим.
114
Таким способом через всего один пин на Arduino
115
мы можем управлять дополнительно 18 пинами.
116
117
Постскриптум В этом уроке я демонстрирую взаимодействия 2 ARDUINO через Serial
118
саму идею можно расширять до бесконечности.
119
Учитывая падение цен на Microcontrolle?r ATMEGA328,
120
получается довольно приятная альтернатива, микросхемам сдвиговым регистрам 74HC595,74HC165
121
122
------------------------------------------
123
скетч sketch: v.01 Arduino увеличиваем кпличество пинов Atmega328 Increase pins
124
<a href="http://yadi.sk/d/lIVZHuBq7GMhG" title="http://yadi.sk/d/lIVZHuBq7GMhG" rel="nofollow">http://yadi.sk/d/lIVZHuBq7GMhG</a>
125
================================
126
что нам понадобиться.
127
Аппаратное:
128
1. Arduino -1 штука.
129
2. ATMEGA328P-PU Microcontrolle?r With ARDUINO UNO Bootloader -1 штука.
130
3. 16.000MHZ 16MHZ 16M HZ HC-49S Crystal Oscillator -1 штука.
131
4. Светодиоды нужны только для визуального контроля за процессом.
132
--------------------------------
133
программное:
134
=======================================================
135
подробную видео инструкцию выложу здесь
136
137
++++++++++++++++++++++++++++++
138
Вспомогательные видео обзоры, скетчи.....
139
140
Самый дешевый Arduino Uno 5$ Minimal Atmega328 without Arduino Board
141
<a href="http://www.youtube.com/watch?v=joSc-AT8o5k" title="http://www.youtube.com/watch?v=joSc-AT8o5k" rel="nofollow">http://www.youtube.com/watch?v=joSc-AT8o5k</a>
142
143
*/
144
145
146
int
ledPin2 = 2;
147
int
ledPin3 = 3;
148
int
ledPin4 = 4;
149
int
ledPin5 = 5;
150
int
ledPin6 = 6;
151
int
ledPin7 = 7;
152
int
ledPin8 = 8;
153
int
ledPin9 = 9;
154
int
ledPin10 = 10;
155
int
ledPin11 = 11;
156
int
ledPin12 = 12;
157
int
ledPin13 = 13;
158
159
int
ledPin14 = 14;
160
int
ledPin15 = 15;
161
int
ledPin16 = 16;
162
int
ledPin17 = 17;
163
int
ledPin18 = 18;
164
int
ledPin19 = 19;
165
166
int
incomingByte;
// для хранения полученных команд от Arduino - мамы
167
168
void
setup
() {
169
//Инициирует последовательное соединение и задает скорость передачи данных в бит/c (бод). Для обмена данными
170
Serial
.begin(9600);
171
172
pinMode(ledPin2, OUTPUT);
173
pinMode(ledPin3, OUTPUT);
174
pinMode(ledPin4, OUTPUT);
175
pinMode(ledPin5, OUTPUT);
176
pinMode(ledPin6, OUTPUT);
177
pinMode(ledPin7, OUTPUT);
178
pinMode(ledPin8, OUTPUT);
179
pinMode(ledPin9, OUTPUT);
180
pinMode(ledPin10, OUTPUT);
181
pinMode(ledPin11, OUTPUT);
182
pinMode(ledPin12, OUTPUT);
183
pinMode(ledPin13, OUTPUT);
184
185
pinMode(ledPin14, OUTPUT);
186
pinMode(ledPin15, OUTPUT);
187
pinMode(ledPin16, OUTPUT);
188
pinMode(ledPin17, OUTPUT);
189
pinMode(ledPin18, OUTPUT);
190
pinMode(ledPin19, OUTPUT);
191
192
}
193
194
void
loop
() {
195
if
(
Serial
.available() > 0)
//если есть доступные данные
196
197
incomingByte =
Serial
.read();
198
199
if
(incomingByte ==
'W'
) digitalWrite(ledPin2, HIGH),delay(1000),digitalWrite(ledPin2, LOW);
200
if
(incomingByte ==
'E'
) digitalWrite(ledPin3, HIGH),delay(1000),digitalWrite(ledPin3, LOW);
201
if
(incomingByte ==
'R'
) digitalWrite(ledPin4, HIGH),delay(1000),digitalWrite(ledPin4, LOW);
202
if
(incomingByte ==
'T'
) digitalWrite(ledPin5, HIGH),delay(1000),digitalWrite(ledPin5, LOW);
203
if
(incomingByte ==
'Y'
) digitalWrite(ledPin6, HIGH),delay(1000),digitalWrite(ledPin6, LOW);
204
if
(incomingByte ==
'U'
) digitalWrite(ledPin7, HIGH),delay(1000),digitalWrite(ledPin7, LOW);
205
if
(incomingByte ==
'I'
) digitalWrite(ledPin8, HIGH),delay(1000),digitalWrite(ledPin8, LOW);
206
if
(incomingByte ==
'O'
) digitalWrite(ledPin9, HIGH),delay(1000),digitalWrite(ledPin9, LOW);
207
if
(incomingByte ==
'P'
) digitalWrite(ledPin10, HIGH),delay(1000),digitalWrite(ledPin10, LOW);
208
if
(incomingByte ==
'A'
) digitalWrite(ledPin11, HIGH),delay(1000),digitalWrite(ledPin11, LOW);
209
if
(incomingByte ==
'S'
) digitalWrite(ledPin12, HIGH),delay(1000),digitalWrite(ledPin12, LOW);
210
if
(incomingByte ==
'D'
) digitalWrite(ledPin13, HIGH),delay(1000),digitalWrite(ledPin13, LOW);
211
212
if
(incomingByte ==
'F'
) digitalWrite(ledPin14, HIGH),delay(1000),digitalWrite(ledPin14, LOW);
213
if
(incomingByte ==
'G'
) digitalWrite(ledPin15, HIGH),delay(1000),digitalWrite(ledPin15, LOW);
214
if
(incomingByte ==
'H'
) digitalWrite(ledPin16, HIGH),delay(1000),digitalWrite(ledPin16, LOW);
215
if
(incomingByte ==
'J'
) digitalWrite(ledPin17, HIGH),delay(1000),digitalWrite(ledPin17, LOW);
216
if
(incomingByte ==
'K'
) digitalWrite(ledPin18, HIGH),delay(1000),digitalWrite(ledPin18, LOW);
217
if
(incomingByte ==
'L'
) digitalWrite(ledPin19, HIGH),delay(1000),digitalWrite(ledPin19, LOW);
218
}
Тогда уж лучше связывать по SPI или TWI.
А теперь сравним быстродействие :) Ведомая ардуина имеет смысл только, если занимается еще чем-то, скажем, динамической индикачией. А просто плодить таким образом выходы... я бы не стал. Контроллер и повиснуть может...
Случаем не подскажете что может означать ошибка:
In file included from sketch_jan12a.ino:4:
E:\arduino\libraries\LiquidCrystal_SR/LiquidCrystal.h:86: error: conflicting return type specified for 'virtual void LiquidCrystal::write(uint8_t)'
C:\Program Files (x86)\Arduino\hardware\arduino\cores\arduino/Print.h:48: error: overriding 'virtual size_t Print::write(uint8_t)'
не могу найти LiquidCrystal_v1.1.7.1.zip выложите пожалуйста
Первая же ссылка в гугле - https://bitbucket.org/fmalpartida/new-liquidcrystal/downloads
спасибо большое! всё заработало
спасибо большое! всё заработало