Одновременное управление
- Войдите на сайт для отправки комментариев
Вс, 11/08/2013 - 20:21
Сразу прошу извинения за глупый вопрос. Что мне надо:
чтобы светодиод 1 горел пока нажата одна клавиша на клавиатуре;
чтобы светодиод 2 горел пока нажата вторая клавиша;
чтобы они оба горели пока зажаты обе клавиши.
Как мне такое осуществить? По очереди получается сделать, а чтобы оба горели - ну никак...
Подскажите пожалуйста. Заранее благодарен.
покажите ваш скетч (текст программы) , будет проще подсказать.
Для начала.. в строке 12 всегда false.
Что это за клавиатура такая?
Самая обычная. Точнее выражаясь, я в компорт отсылаю 1 и 2, вот и всё.
serial.read() читает один байт. Этот один байт не может одновременно равняться и '1' и '2'. Договоритесь о другом протоколе.
И ещё про 12 строку: логическое И это два амперсанда. http://arduino.ru/Reference/Boolean
в качестве второго аргумента для digitalWrite лучше использовать LOW или HIGH.
Во первых.
"Одновременно" у вас прийти по Serial '1' и '2' - не могут никак. Преставте себе что Serial это обычная труба. В которую вы пихаете цветные шарики. А сосед (ардуина) с другой стороны ловит эти шарики и что-то делает в зависимости от цвета.
То есть вам нужно, либо начать брать шарики трех, а не двух цветов (послайте еще символ '3' или '4'), либо объяснить соседу что-то типа такого порядка действий: Если ты получил красный шарик (нужно включить первый светодиод), ты не торопись включать. Подожди еще один шарик (но запомни какой ты получил первым). Если второй шарик будет синим, то нужно включить оба светодиода, а если красным - второй. А если второго вообще не будет - то таки первый :)
Вообщем - вначале продумайте логику и "что такой шарик и комбинация их" означает на примере соседа-трубы, а потом и в Serial это реализуете.
И еще.... что-бы там не делал ваш сосед - вы ничего не увидите. По крайней мере сейчас. С большой долей вероятсности. Вы же светик зажигаете всего на 1 миллисекунду и тут же его гасите. Я бы такое - не смог разглядеть.
И еще, вторым параметром digitalWrite ожидает HIGH/LOW, True/False, 0 или 1
255 - конечно тоже работать будет, но говорит скорее о том что вы путаете цифровые/аналоговые пины и digitalWrite/analogWrite