Перейти до змісту

Dimonweb

Користувачі
  • Постів

    179
  • Зареєстровано

  • Відвідування

Весь контент Dimonweb

  1. Точно, забыл поставить ";" в той строке Я отредактировал код в предыдущем посте, скопируй еще раз. Ближе к вечеру или завтра утром выложу саму ZDSReceiver.exe
  2. Я, к сожалению, с Arduino никогда не работал. И под рукой у меня его нет. Но, полистав мануал, приблизительно понял принцип работы, поэтому постараюсь помочь. 1. Для начала поменяем местами светодиоды 9 - 13. После у нас будет совпадать направление нумерации "показание светофора - номер выхода": 1 - 9 (белый), 2 - 10 (красный), 3 - 11 (КЖ) и т.д. Это нам пригодится в коде. Если посмотреть внимательно, то номер_выхода = показание_светофора + 8 (будем пользоваться далее, чтоб не писать множество лишних проверок в коде). 2. Пока мы используем только 2 параметра из 4, будем передавать ZDReceiver'ом и принимать на Arduino только их: <показание_светофора>;<лампа> Например: 3;1 или 5;0 Таким образом мы передаем и принимаем строку размером 3 байта. 3. Код // устанавливаем выходы const int lampPin = 8; // лампа const int wPin = 9; // белый const int rPin = 10; // красный const int ryPin = 11; // КЖ const int yPin = 12; // желтый const int gPin = 13; // зеленый // переменная с предыдущим показанием локомотивного светофора // (чтобы знать, какой светодиод тушить после переключения сигнала) int previous = 1; void setup() { // устанавливаем 8 - 13 на вывод // (вообще лучше сделать циклом, но я оставил для наглядности) pinMode(lampPin, OUTPUT); pinMode(gPin, OUTPUT); pinMode(yPin, OUTPUT); pinMode(ryPin, OUTPUT); pinMode(rPin, OUTPUT); pinMode(wPin, OUTPUT); Serial.begin(9600); // устанавливаем скорость передачи 9600 бод Serial.flush(); // очищаем буфер последовательного соединения } void loop() { int light; int lamp; // если доступно 3 или больше байта на входе if(Serial.available() >= 3) { light = Serial.read(); // читаем показание светофора Serial.read(); // пропускаем симваол; lamp = Serial.read(); // состаояние лампы // если показание светофора поменялось if(light != previous) { analogWrite(previous + 8, LOW); // тушим светодиод предыдущего показания analogWrite(light + 8, HIGH); // зажигаем новый previous = light; // запоминаем показание } //если состояние лампы 1, зажигаем светодиод; если - 0, то тушим if(lamp == 1) analogWrite(lampPin, HIGH); else analogWrite(lampPin, LOW); } } Пробуйте, отписывайсь. Будем думать вместе
  3. Здесь нужно писать 2 разных кода: 1) ZDSReciever передает данные через USB/COM в Arduino; 2) Arduino в свою очередь принимает их и выводит на светодиоды.
  4. Вот http://rghost.ru/36344065 Написал, чтобы показания лампы бдительности отображались на светодиоде Scroll Lock. Первый шаг к выводу данных на аппаратное обеспечение сделан
  5. Требуется помощь специалистов! Так как уже не в первый раз у меня происходит обрыв в проводе 820, подскажите, пожалуйста, как устранить его?
  6. Как на ЧС4Т восстановить цепь зарядки АБ?
  7. Здесь вентиляторы как бы автоматически ставятся в длительный режим работы, что по-моему более правильно. А на стоянке нажимай F в положение "Выкл".
  8. Уже писалось, что меппер работает только с джойстиками. Поэтому ардуино необходимо настраивать, как джой.
×
×
  • Створити...

Важлива інформація

Ми розмістили cookie-файлы на ваш пристрій, щоб допомогти зробити цей сайт кращим. Ви можете змінити налаштування cookie-файлів, або продовжити без зміни налаштувань.