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

Dimonweb

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

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

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

  1. Да-да, правильно! Заменять нужно везде. light + 8 - это номер вывода текущей лампы ЛС (переменная от 9 до 13). lampPin - это номер вывода лампы проверки бдительности (константа 8).
  2. Замени в коде HIGH на 255 и отпишись, как теперь.
  3. Отлично! Конечно, программировать "в слепую" очень интересно, но все-таки хотелось бы подержать эту ардуину в руках Расскажи пожалуйста, где ты покупал, за сколько и в какой срок доставили?
  4. Кажется, я понял, где проблема. ZDSReceiver.exe
  5. А после того, как нажимаешь "подключиться", загорается ЛБ?
  6. Качаем обновленный ZDReceiver.exe - ссылка 1) Вводим в текстовое поле номер COM-порта, к которому подключен Arduino в формате СOMX, где Х - номер порта; 2) Нажимаем "Подключиться" (должен кратковременно загореться светодиод лампы бдительности); 3) Если ввели неправильный номер, нажимаем "Отключиться" и повторяем процедуру. Обновил исходник для Arduino - теперь есть возможность выключать лок светофор (показание 0). // устанавливаем выходы 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; int i; // если доступно 3 или больше байта на входе if(Serial.available() >= 3) { light = Serial.read(); // читаем показание светофора Serial.read(); // пропускаем симваол; lamp = Serial.read(); // состаояние лампы // если показание светофора поменялось if(light != previous) { // если показание светофора - 0 (ни одна лампа не горит) if(light == 0) { // отключаем питание на выходы 9 - 13 for(i = 9; i <= 13; i++) analogWrite(i, LOW); } else { analogWrite(previous + 8, LOW); // тушим светодиод предыдущего показания analogWrite(light + 8, 255); // зажигаем новый } previous = light; // запоминаем показание } //если состояние лампы 1, зажигаем светодиод; если - 0, то тушим if(lamp == 1) analogWrite(lampPin, 255); else analogWrite(lampPin, LOW); } }
  7. Так ZDSReceiver пока ничего не передает. Сейчас схожу в магазин за мороженым и допишу его
  8. Точно, забыл поставить ";" в той строке Я отредактировал код в предыдущем посте, скопируй еще раз. Ближе к вечеру или завтра утром выложу саму ZDSReceiver.exe
  9. Я, к сожалению, с 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); } } Пробуйте, отписывайсь. Будем думать вместе
  10. Здесь нужно писать 2 разных кода: 1) ZDSReciever передает данные через USB/COM в Arduino; 2) Arduino в свою очередь принимает их и выводит на светодиоды.
  11. Вот http://rghost.ru/36344065 Написал, чтобы показания лампы бдительности отображались на светодиоде Scroll Lock. Первый шаг к выводу данных на аппаратное обеспечение сделан
  12. Требуется помощь специалистов! Так как уже не в первый раз у меня происходит обрыв в проводе 820, подскажите, пожалуйста, как устранить его?
  13. Как на ЧС4Т восстановить цепь зарядки АБ?
  14. Здесь вентиляторы как бы автоматически ставятся в длительный режим работы, что по-моему более правильно. А на стоянке нажимай F в положение "Выкл".
  15. Уже писалось, что меппер работает только с джойстиками. Поэтому ардуино необходимо настраивать, как джой.
×
×
  • Створити...

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

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