Помогите с кодом (еще одно)
- Войдите на сайт для отправки комментариев
Здравствуйте!
Хочу сделать домашний светофор для игры ZDSimulator, данные передает ZDSReceiver, но я не знаю, как писать код, чтобы arduino могла считать эти данные.
Помогите, пожалуйста, с кодом.
ZDSReceiver передает данные в таком порядке: zds=0;0;0;0 как считать их на arduino по такой схеме?
Светофор
В первом ряду кода включается цифра 1; (zds=1;0;0;0) тогда должен загораться светодиод на 13
В первом ряду кода включается цифра 2; (zds=2;0;0;0) тогда должен загораться светодиод на 12
В первом ряду кода включается цифра 3; (zds=3;0;0;0) тогда должен загораться светодиод на 11
В первом ряду кода включается цифра 4; (zds=4;0;0;0) тогда должен загораться светодиод на 10
В первом ряду кода включается цифра 5; (zds=5;0;0;0) тогда должен загораться светодиод на 9
В третьем ряду, когда включается цифра 1; (zds=0;0;1;0) тогда должен загораться светодиод на 8.
Когда цифра выключается - светодиод выключается.
Уже помогли!
// устанавливаем выходы 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); } }