Код 1 Теперь необходимо обозначить номера выводов. Перед строчкой const int pingPin = 7; добавляется pinMode(13, OUTPUT); // синий pinMode(12, OUTPUT); // зеленый pinMode(11, OUTPUT); // красный Теперь определяются расстояния, при которых загорается свет соответствующего цвета. Необходимо задать следующие значения: • Свыше 60 см от препятствия светодиод будет гореть зеленым; • Менее 60 см от препятствия светодиод будет гореть синим; • Менее 15 см от препятствия светодиод будет гореть красным. Код будет выглядеть таким образом: cm = microsecondsToCentimeters(duration); // show LED colors if(cm > 0 && cm <= 15) { // горит красный цвет digitalWrite(13, LOW); digitalWrite(12, LOW); digitalWrite(11, HIGH); } else if(cm <= 60 && cm > 15) { // горит голубой digitalWrite(12, LOW); digitalWrite(11, LOW); digitalWrite(13, HIGH); } else { // горит зеленый цвет digitalWrite(13, LOW); digitalWrite(11, LOW); digitalWrite(12, HIGH); } Код, приведенный выше, контролирует выходы платформы, которые отвечают за свечение светодиода определенным цветом в зависимости от расстояния до автомобиля. Эта дистанция определяется ультразвуковым датчиком. Окончательно код выглядит так: /* Ping))) Sensor Схема: * +V выход датчика подсоединяется к +5V * GND выход датчика подсоединяется к земле * SIG выход датчика подсоединяется к цифровому выводу 7 */ pinMode(13, OUTPUT); // синий pinMode(12, OUTPUT); // зеленый pinMode(11, OUTPUT); // красный const int pingPin = 7; void setup() { Serial.begin(9600); } void loop() { long duration, cm; // The PING))) is triggered by a HIGH pulse of 2 or more microseconds. // Give a short LOW pulse beforehand to ensure a clean HIGH pulse: pinMode(pingPin, OUTPUT); digitalWrite(pingPin, LOW); delayMicroseconds(2); digitalWrite(pingPin, HIGH); delayMicroseconds(5); digitalWrite(pingPin, LOW); // The same pin is used to read the signal from the PING))): a HIGH // pulse whose duration is the time (in microseconds) from the sending // of the ping to the reception of its echo off of an object. pinMode(pingPin, INPUT); duration = pulseIn(pingPin, HIGH); // конвертируем время в расстояние cm = microsecondsToCentimeters(duration); // показ определенного цвета, в зависимости от расстояния if(cm > 0 && cm <= 15) { // горит красный цвет digitalWrite(13, LOW); digitalWrite(12, LOW); digitalWrite(11, HIGH); } else if(cm <= 60 && cm > 15) { // горит голубой digitalWrite(12, LOW); digitalWrite(11, LOW); digitalWrite(13, HIGH); } else { // горит зеленый цвет digitalWrite(13, LOW); digitalWrite(11, LOW); digitalWrite(12, HIGH); Serial.print(cm); Serial.print("cm"); Serial.println(); delay(1000); } long microsecondsToCentimeters(long microseconds) { // Скорость звука 340 м/с или 29 мкс на сантиметр. // Во время измерения расстояния волна проходит туда и обратно, // поэтому нужно еще поделить пополам полученное значение от датчика return microseconds / 29 / 2; }